<!-- 
RSS generated by JIRA (9.4.2#940002-sha1:46d1a51de284217efdcb32434eab47a99af2938b) at Mon Feb 12 03:40:31 CET 2024

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary append 'field=key&field=summary' to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>Magnolia - Issue tracker</title>
    <link>https://jira.magnolia-cms.com</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-uk</language>    <build-info>
        <version>9.4.2</version>
        <build-number>940002</build-number>
        <build-date>19-01-2023</build-date>
    </build-info>


<item>
            <title>[MAGNOLIA-2828] Node Builder Task</title>
                <link>https://jira.magnolia-cms.com/browse/MAGNOLIA-2828</link>
                <project id="10000" key="MAGNOLIA">Magnolia</project>
                    <description>&lt;p&gt;I found a comment by Gregory regarding simplified Node Builder API in the &lt;a href=&quot;http://wiki.magnolia-cms.com/display/DEV/Node+builder+API&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;wiki&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&quot;I&apos;d like to propose a simple DSL/API similar to the one used to build tasks and deltas for this.&quot;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;When we had to configure the STK programmatically I created a Task to do node manipulation using a fluent language style. I would like to donate the code to the project if you like it. The following example will illustrate the usage of the Task:&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;&lt;span class=&quot;code-keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;code-keyword&quot;&gt;static&lt;/span&gt; com.aperto.magkit.module.delta.CreateConfigNodeTreeTask.*;
...
&lt;span class=&quot;code-keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;code-keyword&quot;&gt;final&lt;/span&gt; Task _configurateTemplateStkSection =
    selectConfig(&lt;span class=&quot;code-quote&quot;&gt;&quot;Config Task stkSection&quot;&lt;/span&gt;, &lt;span class=&quot;code-quote&quot;&gt;&quot;Configure stkSection template.&quot;&lt;/span&gt;, PATH_STK_TEMPLATES,
        select(&lt;span class=&quot;code-quote&quot;&gt;&quot;stkSection/mainArea&quot;&lt;/span&gt;,
            setProperty(&lt;span class=&quot;code-quote&quot;&gt;&quot;template&quot;&lt;/span&gt;, &lt;span class=&quot;code-quote&quot;&gt;&quot;/templates/xxx/pages/section/pageIntroMainArea.ftl&quot;&lt;/span&gt;),
            createNode(&lt;span class=&quot;code-quote&quot;&gt;&quot;floating&quot;&lt;/span&gt;, setProperty(&lt;span class=&quot;code-quote&quot;&gt;&quot;columns&quot;&lt;/span&gt;, &lt;span class=&quot;code-quote&quot;&gt;&quot;2&quot;&lt;/span&gt;), setProperty(&lt;span class=&quot;code-quote&quot;&gt;&quot;enabled&quot;&lt;/span&gt;, &lt;span class=&quot;code-quote&quot;&gt;&quot;&lt;span class=&quot;code-keyword&quot;&gt;true&lt;/span&gt;&quot;&lt;/span&gt;)),
            createNode(&lt;span class=&quot;code-quote&quot;&gt;&quot;opener/paragraphs/xxxTeaserOpener&quot;&lt;/span&gt;, setProperty(&lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;, &lt;span class=&quot;code-quote&quot;&gt;&quot;xxxTeaserOpener&quot;&lt;/span&gt;)),
            createNode(&lt;span class=&quot;code-quote&quot;&gt;&quot;paragraphs&quot;&lt;/span&gt;,
                createNode(&lt;span class=&quot;code-quote&quot;&gt;&quot;xxxSingleLink&quot;&lt;/span&gt;, setProperty(&lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;, &lt;span class=&quot;code-quote&quot;&gt;&quot;xxxSingleLink&quot;&lt;/span&gt;)),
                createNode(&lt;span class=&quot;code-quote&quot;&gt;&quot;stkTeaserFingerTabbed&quot;&lt;/span&gt;, setProperty(&lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;, &lt;span class=&quot;code-quote&quot;&gt;&quot;stkTeaserFingerTabbed&quot;&lt;/span&gt;)),
                createNode(&lt;span class=&quot;code-quote&quot;&gt;&quot;xxxTeaserNewsList&quot;&lt;/span&gt;, setProperty(&lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;, &lt;span class=&quot;code-quote&quot;&gt;&quot;xxxTeaserNewsList&quot;&lt;/span&gt;)),
                createNode(&lt;span class=&quot;code-quote&quot;&gt;&quot;xxxExternalTeaser&quot;&lt;/span&gt;, setProperty(&lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;, &lt;span class=&quot;code-quote&quot;&gt;&quot;xxxExternalTeaser&quot;&lt;/span&gt;)),
                createNode(&lt;span class=&quot;code-quote&quot;&gt;&quot;xxxChronicleTeaser&quot;&lt;/span&gt;, setProperty(&lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;, &lt;span class=&quot;code-quote&quot;&gt;&quot;xxxChronicleTeaser&quot;&lt;/span&gt;))),
            remove(&lt;span class=&quot;code-quote&quot;&gt;&quot;opener/paragraphs/stkTeaserOpener&quot;&lt;/span&gt;)));
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Find the source of the Task is attached to the issue.&lt;/p&gt;</description>
                <environment></environment>
        <key id="16963">MAGNOLIA-2828</key>
            <summary>Node Builder Task</summary>
                <type id="4" iconUrl="https://jira.magnolia-cms.com/secure/viewavatar?size=xsmall&amp;avatarId=10890&amp;avatarType=issuetype">Improvement</type>
                                            <priority id="3" iconUrl="https://jira.magnolia-cms.com/images/icons/priorities/major.svg">Major</priority>
                        <status id="6" iconUrl="https://jira.magnolia-cms.com/images/icons/statuses/closed.png" description="The issue is considered finished, the resolution is correct. Issues which are not closed can be reopened.">Closed</status>
                    <statusCategory id="3" key="done" colorName="success"/>
                                    <resolution id="1">Fixed</resolution>
                                        <assignee username="gjoseph">Magnolia International</assignee>
                                    <reporter username="norman">Norman Wiechmann</reporter>
                        <labels>
                    </labels>
                <created>Fri, 31 Jul 2009 14:37:14 +0200</created>
                <updated>Mon, 23 Nov 2009 15:56:03 +0100</updated>
                            <resolved>Wed, 14 Oct 2009 17:45:46 +0200</resolved>
                                    <version>4.2</version>
                                    <fixVersion>4.2</fixVersion>
                                    <component>core</component>
                        <due></due>
                            <votes>0</votes>
                                    <watches>0</watches>
                                                                                                                <comments>
                            <comment id="23821" author="gjoseph" created="Fri, 31 Jul 2009 15:21:11 +0200"  >&lt;p&gt;Awesome, thanks !&lt;br/&gt;
Will come back to you once 4.1.1 is out the door; we&apos;ll probably want to change a few things here and there, let&apos;s discuss.&lt;/p&gt;</comment>
                            <comment id="24421" author="gjoseph" created="Fri, 9 Oct 2009 18:23:31 +0200"  >&lt;p&gt;Guys,&lt;/p&gt;

&lt;p&gt;Using a different approach, this is the syntax I came up with:&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;        &lt;span class=&quot;code-keyword&quot;&gt;final&lt;/span&gt; Task configurateTemplateStkSection = &lt;span class=&quot;code-keyword&quot;&gt;new&lt;/span&gt; NodeBuilderTask(&lt;span class=&quot;code-quote&quot;&gt;&quot;Config Task stkSection&quot;&lt;/span&gt;, &lt;span class=&quot;code-quote&quot;&gt;&quot;Configure stkSection template.&quot;&lt;/span&gt;,
                &lt;span class=&quot;code-quote&quot;&gt;&quot;config&quot;&lt;/span&gt;, &lt;span class=&quot;code-quote&quot;&gt;&quot;/modules/stk/templates&quot;&lt;/span&gt;) {
            &lt;span class=&quot;code-keyword&quot;&gt;protected&lt;/span&gt; void doExecute(NodeBuilder nb) &lt;span class=&quot;code-keyword&quot;&gt;throws&lt;/span&gt; RepositoryException {
                nb.get(&lt;span class=&quot;code-quote&quot;&gt;&quot;stkSection&quot;&lt;/span&gt;).get(&lt;span class=&quot;code-quote&quot;&gt;&quot;mainArea&quot;&lt;/span&gt;)
                        .setProperty(&lt;span class=&quot;code-quote&quot;&gt;&quot;template&quot;&lt;/span&gt;, &lt;span class=&quot;code-quote&quot;&gt;&quot;/templates/xxx/pages/section/pageIntroMainArea.ftl&quot;&lt;/span&gt;)
                        .add(&lt;span class=&quot;code-quote&quot;&gt;&quot;floating&quot;&lt;/span&gt;)
                        .setProperty(&lt;span class=&quot;code-quote&quot;&gt;&quot;columns&quot;&lt;/span&gt;, &lt;span class=&quot;code-quote&quot;&gt;&quot;2&quot;&lt;/span&gt;)
                        .setProperty(&lt;span class=&quot;code-quote&quot;&gt;&quot;enabled&quot;&lt;/span&gt;, &lt;span class=&quot;code-quote&quot;&gt;&quot;&lt;span class=&quot;code-keyword&quot;&gt;true&lt;/span&gt;&quot;&lt;/span&gt;)
                        .parent()
                        .get(&lt;span class=&quot;code-quote&quot;&gt;&quot;opener&quot;&lt;/span&gt;).get(&lt;span class=&quot;code-quote&quot;&gt;&quot;paragraphs&quot;&lt;/span&gt;).get(&lt;span class=&quot;code-quote&quot;&gt;&quot;xxxTeaserOpener&quot;&lt;/span&gt;)
                        .setProperty(&lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;, &lt;span class=&quot;code-quote&quot;&gt;&quot;xxxTeaserOpener&quot;&lt;/span&gt;)
                        .parent().parent().parent()
                        .add(&lt;span class=&quot;code-quote&quot;&gt;&quot;xxxSingleLink&quot;&lt;/span&gt;).setProperty(&lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;, &lt;span class=&quot;code-quote&quot;&gt;&quot;xxxSingleLink&quot;&lt;/span&gt;).parent()
                        .add(&lt;span class=&quot;code-quote&quot;&gt;&quot;stkTeaserFingerTabbed&quot;&lt;/span&gt;).setProperty(&lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;, &lt;span class=&quot;code-quote&quot;&gt;&quot;stkTeaserFingerTabbed&quot;&lt;/span&gt;).parent()
                        .add(&lt;span class=&quot;code-quote&quot;&gt;&quot;xxxTeaserNewsList&quot;&lt;/span&gt;).setProperty(&lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;, &lt;span class=&quot;code-quote&quot;&gt;&quot;xxxTeaserNewsList&quot;&lt;/span&gt;).parent()
                        .add(&lt;span class=&quot;code-quote&quot;&gt;&quot;xxxExternalTeaser&quot;&lt;/span&gt;).setProperty(&lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;, &lt;span class=&quot;code-quote&quot;&gt;&quot;xxxExternalTeaser&quot;&lt;/span&gt;).parent()
                        .add(&lt;span class=&quot;code-quote&quot;&gt;&quot;xxxChronicleTeaser&quot;&lt;/span&gt;).setProperty(&lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;, &lt;span class=&quot;code-quote&quot;&gt;&quot;xxxChronicleTeaser&quot;&lt;/span&gt;).parent()
                        .get(&lt;span class=&quot;code-quote&quot;&gt;&quot;opener&quot;&lt;/span&gt;).get(&lt;span class=&quot;code-quote&quot;&gt;&quot;paragraphs&quot;&lt;/span&gt;).remove(&lt;span class=&quot;code-quote&quot;&gt;&quot;stkTeaserOpener&quot;&lt;/span&gt;);
            }
        };
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The &lt;tt&gt;NodeBuilder&lt;/tt&gt; interface looks like this (I suppose it&apos;s pretty obvious that calls to &lt;tt&gt;add()&lt;/tt&gt; and &lt;tt&gt;get()&lt;/tt&gt; return subnodes, while others return &quot;&lt;tt&gt;this&lt;/tt&gt;&quot;.&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;&lt;span class=&quot;code-keyword&quot;&gt;interface&lt;/span&gt; NodeBuilder {
    NodeBuilder add(&lt;span class=&quot;code-object&quot;&gt;String&lt;/span&gt; name);
    NodeBuilder add(&lt;span class=&quot;code-object&quot;&gt;String&lt;/span&gt; name, &lt;span class=&quot;code-object&quot;&gt;String&lt;/span&gt; type);
    NodeBuilder get(&lt;span class=&quot;code-object&quot;&gt;String&lt;/span&gt; name);
    NodeBuilder remove(&lt;span class=&quot;code-object&quot;&gt;String&lt;/span&gt; name);
    NodeBuilder parent();

    NodeBuilder addProperty(&lt;span class=&quot;code-object&quot;&gt;String&lt;/span&gt; name, &lt;span class=&quot;code-object&quot;&gt;Object&lt;/span&gt; value);
    NodeBuilder setProperty(&lt;span class=&quot;code-object&quot;&gt;String&lt;/span&gt; name, &lt;span class=&quot;code-object&quot;&gt;Object&lt;/span&gt; newValue);
    NodeBuilder setProperty(&lt;span class=&quot;code-object&quot;&gt;String&lt;/span&gt; name, &lt;span class=&quot;code-object&quot;&gt;Object&lt;/span&gt; expectedCurrentValue, &lt;span class=&quot;code-object&quot;&gt;Object&lt;/span&gt; newValue);
    NodeBuilder removeProperty(&lt;span class=&quot;code-object&quot;&gt;String&lt;/span&gt; name);
}
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Clear advantages for yours: indentation provided by IDEs code layout give some obvious readability: the dot-based syntax gets all calls aligned horizontally, so it&apos;s hard to &quot;visualize&quot; the hierarchy.&lt;/p&gt;

&lt;p&gt;I&apos;m under the impression that my approach is much simpler to implement (which of course is a non-argument since you&apos;ve done much of the work already &lt;img class=&quot;emoticon&quot; src=&quot;https://jira.magnolia-cms.com/images/icons/emoticons/biggrin.png&quot; height=&quot;16&quot; width=&quot;16&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt; - but we also have to take testability into account)&lt;/p&gt;

&lt;p&gt;I&apos;m not convinced by the calls to &lt;tt&gt;parent()&lt;/tt&gt; that are necessary to achieve the same as your example; of course, one could introduce variables in this code, removing the need for calling &lt;tt&gt;parent()&lt;/tt&gt; all the time; on the other hand, the parenthesis/coma-based syntax can also be hard to follow when nesting a bunch of elements.&lt;/p&gt;

&lt;p&gt;Thoughts ?&lt;/p&gt;</comment>
                            <comment id="24425" author="pbaerfuss" created="Mon, 12 Oct 2009 15:14:08 +0200"  >&lt;p&gt;I don&apos;t have a strong opinion. But I found a helpful article explaining the different flavors of DSL API: &lt;br/&gt;
-&amp;gt; &lt;a href=&quot;http://martinfowler.com/dslwip/InternalOverview.html&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://martinfowler.com/dslwip/InternalOverview.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A) Original Solution (Nested Functions)&lt;br/&gt;
&lt;img class=&quot;emoticon&quot; src=&quot;https://jira.magnolia-cms.com/images/icons/emoticons/add.png&quot; height=&quot;16&quot; width=&quot;16&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt; readable due to automatic indentation&lt;br/&gt;
&lt;img class=&quot;emoticon&quot; src=&quot;https://jira.magnolia-cms.com/images/icons/emoticons/forbidden.png&quot; height=&quot;16&quot; width=&quot;16&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt; more complex implementation due to having to build an operation tree&lt;br/&gt;
&lt;img class=&quot;emoticon&quot; src=&quot;https://jira.magnolia-cms.com/images/icons/emoticons/forbidden.png&quot; height=&quot;16&quot; width=&quot;16&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt; not so easy to understand as it builds a operation tree which is &lt;br/&gt;
executed later: debugging, ..&lt;/p&gt;

&lt;p&gt;B) Gregory&apos;s Approach (Builder)&lt;br/&gt;
&lt;img class=&quot;emoticon&quot; src=&quot;https://jira.magnolia-cms.com/images/icons/emoticons/add.png&quot; height=&quot;16&quot; width=&quot;16&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt; easy to understand &lt;br/&gt;
&lt;img class=&quot;emoticon&quot; src=&quot;https://jira.magnolia-cms.com/images/icons/emoticons/add.png&quot; height=&quot;16&quot; width=&quot;16&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt; code auto completion &lt;br/&gt;
&lt;img class=&quot;emoticon&quot; src=&quot;https://jira.magnolia-cms.com/images/icons/emoticons/forbidden.png&quot; height=&quot;16&quot; width=&quot;16&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt; without indentation not really readable&lt;/p&gt;

&lt;p&gt;Note: what I like about the operation tree that this can be used to create task descriptions, but B) can also be implemented in a way that it builds a n operation tree instead of executing the operations immediately.&lt;/p&gt;</comment>
                            <comment id="24426" author="had" created="Mon, 12 Oct 2009 15:40:43 +0200"  >&lt;p&gt;Would not changing the B) to build op tree bring in also the disadvantage of complicating the debugging?&lt;/p&gt;</comment>
                            <comment id="24431" author="gjoseph" created="Tue, 13 Oct 2009 01:00:48 +0200"  >&lt;p&gt;Yet another possibility/approach &lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;&lt;span class=&quot;code-keyword&quot;&gt;import&lt;/span&gt; info.magnolia.fluent.x.NodeBuilderTask;
&lt;span class=&quot;code-keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;code-keyword&quot;&gt;static&lt;/span&gt; info.magnolia.fluent.x.Ops.*;
&lt;span class=&quot;code-keyword&quot;&gt;import&lt;/span&gt; info.magnolia.module.delta.Task;

        &lt;span class=&quot;code-comment&quot;&gt;// ExampleC 
&lt;/span&gt;        &lt;span class=&quot;code-keyword&quot;&gt;final&lt;/span&gt; Task configurateTemplateStkSection = &lt;span class=&quot;code-keyword&quot;&gt;new&lt;/span&gt; NodeBuilderTask(&lt;span class=&quot;code-quote&quot;&gt;&quot;Config Task stkSection&quot;&lt;/span&gt;, &lt;span class=&quot;code-quote&quot;&gt;&quot;Configure stkSection template.&quot;&lt;/span&gt;,
                &lt;span class=&quot;code-quote&quot;&gt;&quot;config&quot;&lt;/span&gt;, &lt;span class=&quot;code-quote&quot;&gt;&quot;/modules/stk/templates&quot;&lt;/span&gt;,

                get(&lt;span class=&quot;code-quote&quot;&gt;&quot;stkSection/mainArea&quot;&lt;/span&gt;).then(
                        setProperty(&lt;span class=&quot;code-quote&quot;&gt;&quot;template&quot;&lt;/span&gt;, &lt;span class=&quot;code-quote&quot;&gt;&quot;/templates/xxx/pages/section/pageIntroMainArea.ftl&quot;&lt;/span&gt;),
                        add(&lt;span class=&quot;code-quote&quot;&gt;&quot;floating&quot;&lt;/span&gt;).then(
                                setProperty(&lt;span class=&quot;code-quote&quot;&gt;&quot;columns&quot;&lt;/span&gt;, &lt;span class=&quot;code-quote&quot;&gt;&quot;2&quot;&lt;/span&gt;),
                                setProperty(&lt;span class=&quot;code-quote&quot;&gt;&quot;enabled&quot;&lt;/span&gt;, &lt;span class=&quot;code-quote&quot;&gt;&quot;&lt;span class=&quot;code-keyword&quot;&gt;true&lt;/span&gt;&quot;&lt;/span&gt;)),
                        add(&lt;span class=&quot;code-quote&quot;&gt;&quot;opener/paragraphs/xxxTeaserOpener&quot;&lt;/span&gt;).then(
                                setProperty(&lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;, &lt;span class=&quot;code-quote&quot;&gt;&quot;xxxTeaserOpener&quot;&lt;/span&gt;)),
                        add(&lt;span class=&quot;code-quote&quot;&gt;&quot;paragraphs&quot;&lt;/span&gt;).then(
                                add(&lt;span class=&quot;code-quote&quot;&gt;&quot;xxxSingleLink&quot;&lt;/span&gt;).then(
                                        setProperty(&lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;, &lt;span class=&quot;code-quote&quot;&gt;&quot;xxxSingleLink&quot;&lt;/span&gt;)),
                                add(&lt;span class=&quot;code-quote&quot;&gt;&quot;stkTeaserFingerTabbed&quot;&lt;/span&gt;).then(
                                        setProperty(&lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;, &lt;span class=&quot;code-quote&quot;&gt;&quot;stkTeaserFingerTabbed&quot;&lt;/span&gt;)),
                                add(&lt;span class=&quot;code-quote&quot;&gt;&quot;xxxTeaserNewsList&quot;&lt;/span&gt;).then(
                                        setProperty(&lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;, &lt;span class=&quot;code-quote&quot;&gt;&quot;xxxTeaserNewsList&quot;&lt;/span&gt;)),
                                add(&lt;span class=&quot;code-quote&quot;&gt;&quot;xxxExternalTeaser&quot;&lt;/span&gt;).then(
                                        setProperty(&lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;, &lt;span class=&quot;code-quote&quot;&gt;&quot;xxxExternalTeaser&quot;&lt;/span&gt;)),
                                add(&lt;span class=&quot;code-quote&quot;&gt;&quot;xxxChronicleTeaser&quot;&lt;/span&gt;).then(
                                        setProperty(&lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;, &lt;span class=&quot;code-quote&quot;&gt;&quot;xxxChronicleTeaser&quot;&lt;/span&gt;))),
                        remove(&lt;span class=&quot;code-quote&quot;&gt;&quot;opener/paragraphs/stkTeaserOpener&quot;&lt;/span&gt;))
        );
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;ul&gt;
	&lt;li&gt;we have a tree of operations - while this is slightly less intuitive to debug, that brings self-describability - we could for instance generate complete english description sentences from a bunch of operations&lt;/li&gt;
	&lt;li&gt;no mixing of current operation arguments with children operations as with the original proposal (vararg argument replaced with intermediate &lt;tt&gt;then()&lt;/tt&gt; method)&lt;/li&gt;
	&lt;li&gt;correct indentation in IDEs&lt;/li&gt;
	&lt;li&gt;&lt;img class=&quot;emoticon&quot; src=&quot;https://jira.magnolia-cms.com/images/icons/emoticons/forbidden.png&quot; height=&quot;16&quot; width=&quot;16&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt; still no auto completion due to the static nature of the get/add/set methods, although one could also insert custom Operation implementations in there&lt;/li&gt;
	&lt;li&gt;implementation is still fairly simple&lt;/li&gt;
&lt;/ul&gt;
</comment>
                            <comment id="24437" author="pbaerfuss" created="Tue, 13 Oct 2009 09:29:43 +0200"  >&lt;p&gt;Not bad indeed. the auto completion is semi problematic as one could still do:&lt;/p&gt;

&lt;p&gt;&lt;tt&gt;add(&apos;name&apos;).setProperty(..).setProperty(...)&lt;/tt&gt;&lt;/p&gt;

&lt;p&gt;There are two things I would want to improve:&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;either use &lt;tt&gt;addNode()&lt;/tt&gt; and &lt;tt&gt;setProperty()&lt;/tt&gt;, or simply &lt;tt&gt;add()&lt;/tt&gt; or &lt;tt&gt;set()&lt;/tt&gt;, but we should not mix the schema&lt;/li&gt;
	&lt;li&gt;&lt;tt&gt;then()&lt;/tt&gt; should be renamed to something like &lt;tt&gt;apply()&lt;/tt&gt; because &lt;tt&gt;then&lt;/tt&gt; might be mixed up with a &lt;tt&gt;if-then&lt;/tt&gt; pattern.&lt;/li&gt;
&lt;/ul&gt;
</comment>
                            <comment id="24467" author="gjoseph" created="Wed, 14 Oct 2009 17:45:46 +0200"  >&lt;p&gt;See &lt;a href=&quot;https://jira.magnolia-cms.com/browse/MAGNOLIA-2897&quot; title=&quot;Introduce a simpler api to build nodes/properties&quot; class=&quot;issue-link&quot; data-issue-key=&quot;MAGNOLIA-2897&quot;&gt;&lt;del&gt;MAGNOLIA-2897&lt;/del&gt;&lt;/a&gt;.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10022">
                    <name>supersession</name>
                                                                <inwardlinks description="is superseded by">
                                        <issuelink>
            <issuekey id="17202">MAGNOLIA-2897</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                            <attachment id="12581" name="CreateConfigNodeTreeTask.java" size="1683" author="norman" created="Fri, 31 Jul 2009 14:37:14 +0200"/>
                            <attachment id="12580" name="CreateNodeTreeTask.java" size="13691" author="norman" created="Fri, 31 Jul 2009 14:37:14 +0200"/>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                            <customfield id="customfield_14166" key="com.okapya.jira.checklist:checklist">
                        <customfieldname>Acceptance criteria</customfieldname>
                        <customfieldvalues>
                            
        <checklist>
        <![CDATA[
                            




                
                                    <div class="o-completion" style="display: flex; flex-shrink: 0;"><span  class="aui-lozenge aui-lozenge-complete" style="font-size: 12px; font-weight: normal; display: flex; flex-direction: row; align-items: center;" ><span style="padding-right: 4px; vertical-align: middle;"><svg width="15" height="15" viewBox="0 0 15 15" xmlns="http://www.w3.org/2000/svg" fill="white"><path clip-rule="evenodd" d="m10.41037,3.42544l-7.86501,0c-0.72395,0 -1.31084,0.58688 -1.31084,1.31084l0,7.86508c0,0.7239 0.58689,1.3108 1.31084,1.3108l7.86501,0c0.724,0 1.3109,-0.5869 1.3109,-1.3108l0,-7.86508c0,-0.72396 -0.5869,-1.31084 -1.3109,-1.31084zm-7.86501,-0.65542c-1.08593,0 -1.96626,0.88032 -1.96626,1.96626l0,7.86508c0,1.0859 0.88033,1.9662 1.96626,1.9662l7.86501,0c1.086,0 1.9663,-0.8803 1.9663,-1.9662l0,-7.86508c0,-1.08594 -0.8803,-1.96626 -1.9663,-1.96626l-7.86501,0z" fill-rule="evenodd"/><path d="m5.09049,10.18526l-1.82767,-1.82766l-0.78479,0.78479l2.61246,2.61246l5.38758,-5.38754l-0.78483,-0.78479l-4.60275,4.60274z"/></svg></span><span>Empty</span></span></div>
                        ]]>
    </checklist>


                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_10111" key="com.atlassian.jira.toolkit:reporterdomain">
                        <customfieldname>Company</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>aperto.de</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_10031" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>Date of First Response</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Fri, 31 Jul 2009 15:21:11 +0200</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_12730" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_14151" key="com.atlassian.jira.toolkit:message">
                        <customfieldname>Docu info</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_10061" key="com.atlassian.jira.toolkit:lastusercommented">
                        <customfieldname>Last comm is not jira-dev</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>true</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10071" key="com.atlassian.jira.toolkit:lastupdaterorcommenter">
                        <customfieldname>Last participant</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>mmuehlebach</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_13136" key="com.atlassian.jira.toolkit:LastCommentDate">
                        <customfieldname>Last public comment date</customfieldname>
                        <customfieldvalues>
                            14 years, 19 weeks, 4 days ago
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                            <customfield id="customfield_10020" key="com.atlassian.jira.toolkit:attachments">
                        <customfieldname>Number of attachments</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10150" key="com.atlassian.jira.toolkit:comments">
                        <customfieldname>Number of comments</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>7.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10011" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>had</customfieldvalue>
            <customfieldvalue>gjoseph</customfieldvalue>
            <customfieldvalue>norman</customfieldvalue>
            <customfieldvalue>pbaerfuss</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                <customfield id="customfield_10833" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|i00z5j:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10244" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>5745</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_14168" key="com.okapya.jira.checklist:checklist">
                        <customfieldname>Task DoD</customfieldname>
                        <customfieldvalues>
                            
        <checklist>
        <![CDATA[
                            




                
                        
        <div style="margin-bottom: 8px;">
                            <div class="o-completion" style="display: flex; flex-shrink: 0;"><span  class="aui-lozenge" style="font-size: 12px; font-weight: normal; display: flex; flex-direction: row; align-items: center;" ><span style="padding-right: 4px; vertical-align: middle;"><svg width="15" height="15" viewBox="0 0 15 15" xmlns="http://www.w3.org/2000/svg" fill="white"><path clip-rule="evenodd" d="m10.41037,3.42544l-7.86501,0c-0.72395,0 -1.31084,0.58688 -1.31084,1.31084l0,7.86508c0,0.7239 0.58689,1.3108 1.31084,1.3108l7.86501,0c0.724,0 1.3109,-0.5869 1.3109,-1.3108l0,-7.86508c0,-0.72396 -0.5869,-1.31084 -1.3109,-1.31084zm-7.86501,-0.65542c-1.08593,0 -1.96626,0.88032 -1.96626,1.96626l0,7.86508c0,1.0859 0.88033,1.9662 1.96626,1.9662l7.86501,0c1.086,0 1.9663,-0.8803 1.9663,-1.9662l0,-7.86508c0,-1.08594 -0.8803,-1.96626 -1.9663,-1.96626l-7.86501,0z" fill-rule="evenodd"/><path d="m5.09049,10.18526l-1.82767,-1.82766l-0.78479,0.78479l2.61246,2.61246l5.38758,-5.38754l-0.78483,-0.78479l-4.60275,4.60274z"/></svg></span><span>0/6</span></span></div>
                    
            <div class="checklist-progress-bar-wrapper" style="">
        <div class="checklist-progress-bar" style="position: relative; width: 100%; background-color: #cccccc; margin-bottom: 2px; margin-top: 5px;">
                        <div class="checklist-progress" style="display: block; float: none; width: 0%; height: 2px; background: #14892c;">
                            </div>
        </div>
    </div>
        </div>
    
                                    <div style="display: flex; align-items: flex-start; padding: 0; margin-left: 12px; float: none; font-size: 14px;">
                                                                <span style="padding-right: 5px; align-self: flex-start;">
                                <svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg" class="unchecked"><path d="M0.441406 6.94141C0.441406 5.28455 1.78455 3.94141 3.44141 3.94141H15.4414C17.0983 3.94141 18.4414 5.28455 18.4414 6.94141V18.9414C18.4414 20.5983 17.0983 21.9414 15.4414 21.9414H3.44141C1.78455 21.9414 0.441406 20.5983 0.441406 18.9414V6.94141Z" fill="#EFF4FB" /><path fill-rule="evenodd" clip-rule="evenodd" d="M12.4414 3.94141H3.44141C1.78455 3.94141 0.441406 5.28455 0.441406 6.94141V18.9414C0.441406 20.5983 1.78455 21.9414 3.44141 21.9414H15.4414C17.0983 21.9414 18.4414 20.5983 18.4414 18.9414V9.94141H17.4414V18.9414C17.4414 20.046 16.546 20.9414 15.4414 20.9414H3.44141C2.33684 20.9414 1.44141 20.046 1.44141 18.9414V6.94141C1.44141 5.83684 2.33684 4.94141 3.44141 4.94141H12.4414V3.94141Z" fill="#ADBBD0" /><path d="M21.5306 5.91574L19.3486 4.58101L21.5306 3.24628C21.5681 3.22328 21.595 3.18633 21.6053 3.14348C21.6156 3.10063 21.6084 3.05545 21.5855 3.01792L20.9444 1.96985C20.8966 1.89162 20.7942 1.86696 20.716 1.91479L18.6331 3.18898V0.747138C18.6331 0.65546 18.5587 0.581055 18.4671 0.581055H17.2386C17.1469 0.581055 17.0725 0.65546 17.0725 0.747138V3.18898L14.9896 1.91487C14.9112 1.86704 14.8091 1.89162 14.7612 1.96993L14.1201 3.018C14.0972 3.05554 14.09 3.10071 14.1003 3.14356C14.1106 3.18641 14.1375 3.22336 14.175 3.24637L16.3571 4.58101L14.175 5.91574C14.1375 5.93866 14.1106 5.9757 14.1003 6.01847C14.09 6.0614 14.0972 6.10657 14.1201 6.14411L14.7612 7.1921C14.8091 7.27032 14.9112 7.29507 14.9896 7.24724L17.0725 5.97304V8.41489C17.0725 8.50657 17.1469 8.58097 17.2386 8.58097H18.4671C18.5587 8.58097 18.6331 8.50657 18.6331 8.41489V5.97313L20.7161 7.24715C20.7943 7.29499 20.8967 7.27032 20.9444 7.19218L21.5856 6.14411C21.6085 6.10657 21.6157 6.0614 21.6054 6.01855C21.5952 5.97562 21.5682 5.93875 21.5306 5.91574Z" fill="#de350b" /></svg>
                        </span>
                                        <div style="cursor: default; text-align: left; flex-grow: 1; padding-right: 3px; margin-top: 2px;">
                                                
                                                
                                                <span >
                                                        <span>Doc/release notes changes? Comment present?</span>

                        </span>
                    </div>
                                                                    <span style="padding-right: 1px; white-space: nowrap;">
                                                        
                                                        
                                                                                </span>
                                    </div>
                                                <div style="display: flex; align-items: flex-start; padding: 0; margin-left: 12px; float: none; font-size: 14px;">
                                                                <span style="padding-right: 5px; align-self: flex-start;">
                                <svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg" class="unchecked"><path d="M0.441406 6.94141C0.441406 5.28455 1.78455 3.94141 3.44141 3.94141H15.4414C17.0983 3.94141 18.4414 5.28455 18.4414 6.94141V18.9414C18.4414 20.5983 17.0983 21.9414 15.4414 21.9414H3.44141C1.78455 21.9414 0.441406 20.5983 0.441406 18.9414V6.94141Z" fill="#EFF4FB" /><path fill-rule="evenodd" clip-rule="evenodd" d="M12.4414 3.94141H3.44141C1.78455 3.94141 0.441406 5.28455 0.441406 6.94141V18.9414C0.441406 20.5983 1.78455 21.9414 3.44141 21.9414H15.4414C17.0983 21.9414 18.4414 20.5983 18.4414 18.9414V9.94141H17.4414V18.9414C17.4414 20.046 16.546 20.9414 15.4414 20.9414H3.44141C2.33684 20.9414 1.44141 20.046 1.44141 18.9414V6.94141C1.44141 5.83684 2.33684 4.94141 3.44141 4.94141H12.4414V3.94141Z" fill="#ADBBD0" /><path d="M21.5306 5.91574L19.3486 4.58101L21.5306 3.24628C21.5681 3.22328 21.595 3.18633 21.6053 3.14348C21.6156 3.10063 21.6084 3.05545 21.5855 3.01792L20.9444 1.96985C20.8966 1.89162 20.7942 1.86696 20.716 1.91479L18.6331 3.18898V0.747138C18.6331 0.65546 18.5587 0.581055 18.4671 0.581055H17.2386C17.1469 0.581055 17.0725 0.65546 17.0725 0.747138V3.18898L14.9896 1.91487C14.9112 1.86704 14.8091 1.89162 14.7612 1.96993L14.1201 3.018C14.0972 3.05554 14.09 3.10071 14.1003 3.14356C14.1106 3.18641 14.1375 3.22336 14.175 3.24637L16.3571 4.58101L14.175 5.91574C14.1375 5.93866 14.1106 5.9757 14.1003 6.01847C14.09 6.0614 14.0972 6.10657 14.1201 6.14411L14.7612 7.1921C14.8091 7.27032 14.9112 7.29507 14.9896 7.24724L17.0725 5.97304V8.41489C17.0725 8.50657 17.1469 8.58097 17.2386 8.58097H18.4671C18.5587 8.58097 18.6331 8.50657 18.6331 8.41489V5.97313L20.7161 7.24715C20.7943 7.29499 20.8967 7.27032 20.9444 7.19218L21.5856 6.14411C21.6085 6.10657 21.6157 6.0614 21.6054 6.01855C21.5952 5.97562 21.5682 5.93875 21.5306 5.91574Z" fill="#de350b" /></svg>
                        </span>
                                        <div style="cursor: default; text-align: left; flex-grow: 1; padding-right: 3px; margin-top: 2px;">
                                                
                                                
                                                <span >
                                                        <span>Downstream builds green?</span>

                        </span>
                    </div>
                                                                    <span style="padding-right: 1px; white-space: nowrap;">
                                                        
                                                        
                                                                                </span>
                                    </div>
                                                <div style="display: flex; align-items: flex-start; padding: 0; margin-left: 12px; float: none; font-size: 14px;">
                                                                <span style="padding-right: 5px; align-self: flex-start;">
                                <svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg" class="unchecked"><path d="M0.441406 6.94141C0.441406 5.28455 1.78455 3.94141 3.44141 3.94141H15.4414C17.0983 3.94141 18.4414 5.28455 18.4414 6.94141V18.9414C18.4414 20.5983 17.0983 21.9414 15.4414 21.9414H3.44141C1.78455 21.9414 0.441406 20.5983 0.441406 18.9414V6.94141Z" fill="#EFF4FB" /><path fill-rule="evenodd" clip-rule="evenodd" d="M12.4414 3.94141H3.44141C1.78455 3.94141 0.441406 5.28455 0.441406 6.94141V18.9414C0.441406 20.5983 1.78455 21.9414 3.44141 21.9414H15.4414C17.0983 21.9414 18.4414 20.5983 18.4414 18.9414V9.94141H17.4414V18.9414C17.4414 20.046 16.546 20.9414 15.4414 20.9414H3.44141C2.33684 20.9414 1.44141 20.046 1.44141 18.9414V6.94141C1.44141 5.83684 2.33684 4.94141 3.44141 4.94141H12.4414V3.94141Z" fill="#ADBBD0" /><path d="M21.5306 5.91574L19.3486 4.58101L21.5306 3.24628C21.5681 3.22328 21.595 3.18633 21.6053 3.14348C21.6156 3.10063 21.6084 3.05545 21.5855 3.01792L20.9444 1.96985C20.8966 1.89162 20.7942 1.86696 20.716 1.91479L18.6331 3.18898V0.747138C18.6331 0.65546 18.5587 0.581055 18.4671 0.581055H17.2386C17.1469 0.581055 17.0725 0.65546 17.0725 0.747138V3.18898L14.9896 1.91487C14.9112 1.86704 14.8091 1.89162 14.7612 1.96993L14.1201 3.018C14.0972 3.05554 14.09 3.10071 14.1003 3.14356C14.1106 3.18641 14.1375 3.22336 14.175 3.24637L16.3571 4.58101L14.175 5.91574C14.1375 5.93866 14.1106 5.9757 14.1003 6.01847C14.09 6.0614 14.0972 6.10657 14.1201 6.14411L14.7612 7.1921C14.8091 7.27032 14.9112 7.29507 14.9896 7.24724L17.0725 5.97304V8.41489C17.0725 8.50657 17.1469 8.58097 17.2386 8.58097H18.4671C18.5587 8.58097 18.6331 8.50657 18.6331 8.41489V5.97313L20.7161 7.24715C20.7943 7.29499 20.8967 7.27032 20.9444 7.19218L21.5856 6.14411C21.6085 6.10657 21.6157 6.0614 21.6054 6.01855C21.5952 5.97562 21.5682 5.93875 21.5306 5.91574Z" fill="#de350b" /></svg>
                        </span>
                                        <div style="cursor: default; text-align: left; flex-grow: 1; padding-right: 3px; margin-top: 2px;">
                                                
                                                
                                                <span >
                                                        <span>Solution information and context easily available?</span>

                        </span>
                    </div>
                                                                    <span style="padding-right: 1px; white-space: nowrap;">
                                                        
                                                        
                                                                                </span>
                                    </div>
                                                <div style="display: flex; align-items: flex-start; padding: 0; margin-left: 12px; float: none; font-size: 14px;">
                                                                <span style="padding-right: 5px; align-self: flex-start;">
                                <svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg" class="unchecked"><path d="M0.441406 6.94141C0.441406 5.28455 1.78455 3.94141 3.44141 3.94141H15.4414C17.0983 3.94141 18.4414 5.28455 18.4414 6.94141V18.9414C18.4414 20.5983 17.0983 21.9414 15.4414 21.9414H3.44141C1.78455 21.9414 0.441406 20.5983 0.441406 18.9414V6.94141Z" fill="#EFF4FB" /><path fill-rule="evenodd" clip-rule="evenodd" d="M12.4414 3.94141H3.44141C1.78455 3.94141 0.441406 5.28455 0.441406 6.94141V18.9414C0.441406 20.5983 1.78455 21.9414 3.44141 21.9414H15.4414C17.0983 21.9414 18.4414 20.5983 18.4414 18.9414V9.94141H17.4414V18.9414C17.4414 20.046 16.546 20.9414 15.4414 20.9414H3.44141C2.33684 20.9414 1.44141 20.046 1.44141 18.9414V6.94141C1.44141 5.83684 2.33684 4.94141 3.44141 4.94141H12.4414V3.94141Z" fill="#ADBBD0" /><path d="M21.5306 5.91574L19.3486 4.58101L21.5306 3.24628C21.5681 3.22328 21.595 3.18633 21.6053 3.14348C21.6156 3.10063 21.6084 3.05545 21.5855 3.01792L20.9444 1.96985C20.8966 1.89162 20.7942 1.86696 20.716 1.91479L18.6331 3.18898V0.747138C18.6331 0.65546 18.5587 0.581055 18.4671 0.581055H17.2386C17.1469 0.581055 17.0725 0.65546 17.0725 0.747138V3.18898L14.9896 1.91487C14.9112 1.86704 14.8091 1.89162 14.7612 1.96993L14.1201 3.018C14.0972 3.05554 14.09 3.10071 14.1003 3.14356C14.1106 3.18641 14.1375 3.22336 14.175 3.24637L16.3571 4.58101L14.175 5.91574C14.1375 5.93866 14.1106 5.9757 14.1003 6.01847C14.09 6.0614 14.0972 6.10657 14.1201 6.14411L14.7612 7.1921C14.8091 7.27032 14.9112 7.29507 14.9896 7.24724L17.0725 5.97304V8.41489C17.0725 8.50657 17.1469 8.58097 17.2386 8.58097H18.4671C18.5587 8.58097 18.6331 8.50657 18.6331 8.41489V5.97313L20.7161 7.24715C20.7943 7.29499 20.8967 7.27032 20.9444 7.19218L21.5856 6.14411C21.6085 6.10657 21.6157 6.0614 21.6054 6.01855C21.5952 5.97562 21.5682 5.93875 21.5306 5.91574Z" fill="#de350b" /></svg>
                        </span>
                                        <div style="cursor: default; text-align: left; flex-grow: 1; padding-right: 3px; margin-top: 2px;">
                                                
                                                
                                                <span >
                                                        <span><strong>Tests</strong></span>

                        </span>
                    </div>
                                                                    <span style="padding-right: 1px; white-space: nowrap;">
                                                        
                                                        
                                                                                </span>
                                    </div>
                                                <div style="display: flex; align-items: flex-start; padding: 0; margin-left: 12px; float: none; font-size: 14px;">
                                                                <span style="padding-right: 5px; align-self: flex-start;">
                                <svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg" class="unchecked"><path d="M0.441406 6.94141C0.441406 5.28455 1.78455 3.94141 3.44141 3.94141H15.4414C17.0983 3.94141 18.4414 5.28455 18.4414 6.94141V18.9414C18.4414 20.5983 17.0983 21.9414 15.4414 21.9414H3.44141C1.78455 21.9414 0.441406 20.5983 0.441406 18.9414V6.94141Z" fill="#EFF4FB" /><path fill-rule="evenodd" clip-rule="evenodd" d="M12.4414 3.94141H3.44141C1.78455 3.94141 0.441406 5.28455 0.441406 6.94141V18.9414C0.441406 20.5983 1.78455 21.9414 3.44141 21.9414H15.4414C17.0983 21.9414 18.4414 20.5983 18.4414 18.9414V9.94141H17.4414V18.9414C17.4414 20.046 16.546 20.9414 15.4414 20.9414H3.44141C2.33684 20.9414 1.44141 20.046 1.44141 18.9414V6.94141C1.44141 5.83684 2.33684 4.94141 3.44141 4.94141H12.4414V3.94141Z" fill="#ADBBD0" /><path d="M21.5306 5.91574L19.3486 4.58101L21.5306 3.24628C21.5681 3.22328 21.595 3.18633 21.6053 3.14348C21.6156 3.10063 21.6084 3.05545 21.5855 3.01792L20.9444 1.96985C20.8966 1.89162 20.7942 1.86696 20.716 1.91479L18.6331 3.18898V0.747138C18.6331 0.65546 18.5587 0.581055 18.4671 0.581055H17.2386C17.1469 0.581055 17.0725 0.65546 17.0725 0.747138V3.18898L14.9896 1.91487C14.9112 1.86704 14.8091 1.89162 14.7612 1.96993L14.1201 3.018C14.0972 3.05554 14.09 3.10071 14.1003 3.14356C14.1106 3.18641 14.1375 3.22336 14.175 3.24637L16.3571 4.58101L14.175 5.91574C14.1375 5.93866 14.1106 5.9757 14.1003 6.01847C14.09 6.0614 14.0972 6.10657 14.1201 6.14411L14.7612 7.1921C14.8091 7.27032 14.9112 7.29507 14.9896 7.24724L17.0725 5.97304V8.41489C17.0725 8.50657 17.1469 8.58097 17.2386 8.58097H18.4671C18.5587 8.58097 18.6331 8.50657 18.6331 8.41489V5.97313L20.7161 7.24715C20.7943 7.29499 20.8967 7.27032 20.9444 7.19218L21.5856 6.14411C21.6085 6.10657 21.6157 6.0614 21.6054 6.01855C21.5952 5.97562 21.5682 5.93875 21.5306 5.91574Z" fill="#de350b" /></svg>
                        </span>
                                        <div style="cursor: default; text-align: left; flex-grow: 1; padding-right: 3px; margin-top: 2px;">
                                                
                                                
                                                <span >
                                                        <span><strong>FixVersion</strong> filled and not yet released</span>

                        </span>
                    </div>
                                                                    <span style="padding-right: 1px; white-space: nowrap;">
                                                        
                                                        
                                                                                </span>
                                    </div>
                                                <div style="display: flex; align-items: flex-start; padding: 0; margin-left: 12px; float: none; font-size: 14px;">
                                                                <span style="padding-right: 5px; align-self: flex-start;">
                                <svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg" class="unchecked"><rect fill="#EFF4FB" height="17.5" rx="2.5" stroke="#ADBBD0" width="18" x="0.44141" y="3.94141"/></svg>
                        </span>
                                        <div style="cursor: default; text-align: left; flex-grow: 1; padding-right: 3px; margin-top: 2px;">
                                                
                                                
                                                <span >
                                                        <span>Architecture Decision Record (<strong>ADR</strong>)</span>

                        </span>
                    </div>
                                                                    <span style="padding-right: 1px; white-space: nowrap;">
                                                        
                                                        
                                                                                </span>
                                    </div>
                                            ]]>
    </checklist>


                        </customfieldvalues>
                    </customfield>
                                                                                                                                                    <customfield id="customfield_14145" key="com.intenso.jira.issue-templates:issue-templates-customfield">
                        <customfieldname>Template</customfieldname>
                        <customfieldvalues>
                            


                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                            <customfield id="customfield_15131" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Time in Discovery</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10032" key="com.atlassian.jira.ext.charting:timeinstatus">
                        <customfieldname>Time in Status</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        </customfields>
    </item>
</channel>
</rss>