<!-- 
RSS generated by JIRA (9.4.2#940002-sha1:46d1a51de284217efdcb32434eab47a99af2938b) at Mon Feb 12 08:32:56 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>[MGNLUI-34] Streamline VMagnoliaTable: use mvn patch to make it maintainable</title>
                <link>https://jira.magnolia-cms.com/browse/MGNLUI-34</link>
                <project id="10625" key="MGNLUI">Magnolia UI</project>
                    <description>&lt;p&gt;VMagnoliaTable (around 7000 loc) is basically a modified copy of Vaadin&apos;s VScrollTable with a bunch of todo&apos;s &amp;amp; fixme&apos;s as well as inconsistent javadoc. We should check for a way to not have to maintain it by ourselves (e.g. by getting VScrollTable adapted in a way we can simply subclass it and overwrite only what needs to be different).&lt;/p&gt;</description>
                <environment></environment>
        <key id="25492">MGNLUI-34</key>
            <summary>Streamline VMagnoliaTable: use mvn patch to make it maintainable</summary>
                <type id="3" iconUrl="https://jira.magnolia-cms.com/secure/viewavatar?size=xsmall&amp;avatarId=10898&amp;avatarType=issuetype">Task</type>
                                            <priority id="2" iconUrl="https://jira.magnolia-cms.com/images/icons/priorities/critical.svg">Critical</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="spenttila">Samuli Penttil&#228;</assignee>
                                    <reporter username="dlipp">Daniel Lipp</reporter>
                        <labels>
                    </labels>
                <created>Wed, 12 Sep 2012 09:40:49 +0200</created>
                <updated>Mon, 11 Feb 2013 11:35:45 +0100</updated>
                            <resolved>Fri, 9 Nov 2012 10:43:11 +0100</resolved>
                                                    <fixVersion>5.0</fixVersion>
                                        <due></due>
                            <votes>0</votes>
                                    <watches>0</watches>
                                                                                                                <comments>
                            <comment id="52497" author="fgrilli" created="Fri, 19 Oct 2012 17:58:26 +0200"  >&lt;p&gt;I am trying to use the following Maven-based approach&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;extract Vaadin&apos;s VScrollTable sources&lt;/li&gt;
	&lt;li&gt;patch it&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;This is the relevant pom snippet &lt;/p&gt;
&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;&amp;lt;build&amp;gt;
...
&amp;lt;plugin&amp;gt;
        &amp;lt;groupId&amp;gt;org.apache.maven.plugins&amp;lt;/groupId&amp;gt;
        &amp;lt;artifactId&amp;gt;maven-dependency-plugin&amp;lt;/artifactId&amp;gt;
        &amp;lt;executions&amp;gt;
          &amp;lt;execution&amp;gt;
            &amp;lt;id&amp;gt;unpack-vaadin-treetable-src&amp;lt;/id&amp;gt;
            &amp;lt;phase&amp;gt;process-sources&amp;lt;/phase&amp;gt;
            &amp;lt;goals&amp;gt;
              &amp;lt;goal&amp;gt;unpack&amp;lt;/goal&amp;gt;
            &amp;lt;/goals&amp;gt;
            &amp;lt;configuration&amp;gt;
              &amp;lt;artifactItems&amp;gt;
                &amp;lt;artifactItem&amp;gt;
                  &amp;lt;groupId&amp;gt;com.vaadin&amp;lt;/groupId&amp;gt;
                  &amp;lt;artifactId&amp;gt;vaadin&amp;lt;/artifactId&amp;gt;
                  &amp;lt;version&amp;gt;${vaadinVersion}&amp;lt;/version&amp;gt;
                  &amp;lt;type&amp;gt;jar&amp;lt;/type&amp;gt;
                  &amp;lt;classifier&amp;gt;sources&amp;lt;/classifier&amp;gt;
                  &amp;lt;overWrite&amp;gt;true&amp;lt;/overWrite&amp;gt;
                  &amp;lt;outputDirectory&amp;gt;src/main/java&amp;lt;/outputDirectory&amp;gt;
                &amp;lt;/artifactItem&amp;gt;
              &amp;lt;/artifactItems&amp;gt;
             &amp;lt;includes&amp;gt;**\/*VScrollTable.java&amp;lt;/includes&amp;gt;
            &amp;lt;/configuration&amp;gt;
          &amp;lt;/execution&amp;gt;
        &amp;lt;/executions&amp;gt;
      &amp;lt;/plugin&amp;gt;
      &amp;lt;plugin&amp;gt;
        &amp;lt;groupId&amp;gt;org.apache.maven.plugins&amp;lt;/groupId&amp;gt;
        &amp;lt;artifactId&amp;gt;maven-patch-plugin&amp;lt;/artifactId&amp;gt;
        &amp;lt;version&amp;gt;1.1.1&amp;lt;/version&amp;gt;
        &amp;lt;configuration&amp;gt;
          &amp;lt;patches&amp;gt;
            &amp;lt;patch&amp;gt;vscrolltable.patch&amp;lt;/patch&amp;gt;
          &amp;lt;/patches&amp;gt;
         &amp;lt;targetDirectory&amp;gt;src/main/java&amp;lt;/targetDirectory&amp;gt;
        &amp;lt;/configuration&amp;gt;
        &amp;lt;executions&amp;gt;
          &amp;lt;execution&amp;gt;
            &amp;lt;id&amp;gt;patch&amp;lt;/id&amp;gt;
            &amp;lt;goals&amp;gt;
              &amp;lt;goal&amp;gt;apply&amp;lt;/goal&amp;gt;
            &amp;lt;/goals&amp;gt;
          &amp;lt;/execution&amp;gt;
        &amp;lt;/executions&amp;gt;
      &amp;lt;/plugin&amp;gt;
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Then I have this simple patch generated with &lt;tt&gt;git diff -p&lt;/tt&gt; where I&apos;m trying to make a private field protected. If you are unfamiliar with the patch format and in particular the line starting and ending with &lt;tt&gt;@@&lt;/tt&gt; it basically means that line #130 in &lt;tt&gt;VScrollTable.java&lt;/tt&gt; has to become the same as the line preceded by the plus sign. The second number here (1) means the number of lines to be change before applying the patch and the number of changed lines after the patch is applied. &lt;/p&gt;

&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;--- com/vaadin/terminal/gwt/client/ui/VScrollTable.java
+++ com/vaadin/terminal/gwt/client/ui/VScrollTable.java
@@ -130,1 +130,1 @@
-    private static final String ROW_HEADER_COLUMN_KEY = &quot;0&quot;;
+    protected static final String ROW_HEADER_COLUMN_KEY = &quot;0&quot;;
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The source unpacking works fine, the &lt;tt&gt;maven-patch-plugin&lt;/tt&gt; actually tries to apply the patch but, alas!, with no luck as you can see in the snippet below &lt;br/&gt;
the result of running &lt;tt&gt;mvn -X clean install&lt;/tt&gt;. Maybe the failure has to do with line endings differences between Vaadin source and how I save this file in my local git repo (see &lt;a href=&quot;http://stackoverflow.com/questions/1967370/git-replacing-lf-with-crlf&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://stackoverflow.com/questions/1967370/git-replacing-lf-with-crlf&lt;/a&gt;)  &lt;/p&gt;

&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;[DEBUG] Configuring mojo &apos;org.apache.maven.plugins:maven-patch-plugin:1.1.1:apply&apos; --&amp;gt;
[DEBUG]   (f) backups = false
[DEBUG]   (f) failFast = true
[DEBUG]   (f) ignoreWhitespace = true
[DEBUG]   (f) naturalOrderProcessing = false
[DEBUG]   (f) optimizations = true
[DEBUG]   (f) patchDirectory = /Users/fgrilli/devel/workspace/magnolia/magnolia_ui/magnolia-ui-vaadin-widgetset/src/main/patches
[DEBUG]   (f) patchTrackingFile = /Users/fgrilli/devel/workspace/magnolia/magnolia_ui/magnolia-ui-vaadin-widgetset/target/optimization-files/patches-applied.txt
[DEBUG]   (f) patches = [vscrolltable.patch]
[DEBUG]   (f) removeEmptyFiles = false
[DEBUG]   (f) reverse = false
[DEBUG]   (f) skipApplication = false
[DEBUG]   (f) strictPatching = false
[DEBUG]   (f) strip = 0
[DEBUG]   (f) targetDirectory = /Users/fgrilli/devel/workspace/magnolia/magnolia_ui/magnolia-ui-vaadin-widgetset/src/main/java
[DEBUG]   (f) useDefaultIgnores = true
[DEBUG] -- end configuration --
[INFO] [patch:apply {execution: patch}]
[DEBUG] Looking for patch: vscrolltable.patch in: /Users/fgrilli/devel/workspace/magnolia/magnolia_ui/magnolia-ui-vaadin-widgetset/src/main/patches/vscrolltable.patch
[INFO] Applying patch: vscrolltable.patch
[DEBUG] Executing: /bin/sh -c cd /Users/fgrilli/devel/workspace/magnolia/magnolia_ui/magnolia-ui-vaadin-widgetset/src/main/java &amp;amp;&amp;amp; patch -p0 -l -i /Users/fgrilli/devel/workspace/magnolia/magnolia_ui/magnolia-ui-vaadin-widgetset/src/main/patches/vscrolltable.patch
[DEBUG] patching file com/vaadin/terminal/gwt/client/ui/VScrollTable.java
[DEBUG] Hunk #1 FAILED at 130.
[DEBUG] 1 out of 1 hunk FAILED -- saving rejects to file com/vaadin/terminal/gwt/client/ui/VScrollTable.java.rej
[DEBUG] Exit code: 1
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------

&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</comment>
                            <comment id="52556" author="fgrilli" created="Tue, 23 Oct 2012 14:04:56 +0200"  >&lt;p&gt;After having set the Maven-based process to extract, patch and rename Vaadin&apos;s VScrollTable we need the actual patch to be applied. The Maven patching process is still isolated in a profile not active by default, which can be triggered simply by &lt;tt&gt;mvn clean install -Ppatch-vaadin-vscrolltable&lt;/tt&gt;. The reason is that we rename the original file to VScrollTablePatched while its contents remain the same as the original, hence compilation errors due to a mismatch between file name and classname. Once we will have the actual patch dealing with it too, the profile can be made active by default or we can just get rid of it and put the plugins used in the patching process in the normal Maven build cycle.&lt;br/&gt;
Reassigning this to Sasha who can create the patch and refactor VMagnoliaTable accordingly.&lt;/p&gt;</comment>
                            <comment id="53163" author="spenttila" created="Fri, 9 Nov 2012 10:43:12 +0100"  >&lt;p&gt;Patch modifies private fields to protected. Also because of nested classes object construction is put to factory methods that are overridable. Indexing changes are tackled by not to insert extra column for checkboxes. Instead checkboxes are inserted inside first column cells.&lt;/p&gt;

&lt;p&gt;Future improvement: Instead of static patch, use script that transforms field visibility and replaces &apos;new Object()&apos; to &apos;createObject()&apos; method. Static patch may become obsolete at every version update of VScrollTable.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10010">
                    <name>relation</name>
                                            <outwardlinks description="is related to">
                                                        </outwardlinks>
                                                        </issuelinktype>
                    </issuelinks>
                <attachments>
                    </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>gmx.net</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_10031" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>Date of First Response</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Fri, 19 Oct 2012 17:58:26 +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>
                            11 years, 15 weeks, 2 days ago
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                            <customfield id="customfield_10020" key="com.atlassian.jira.toolkit:attachments">
                        <customfieldname>Number of attachments</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10150" key="com.atlassian.jira.toolkit:comments">
                        <customfieldname>Number of comments</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>3.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10011" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>dlipp</customfieldvalue>
            <customfieldvalue>fgrilli</customfieldvalue>
            <customfieldvalue>spenttila</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                <customfield id="customfield_10833" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|i00g5r:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10244" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2654</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_14167" key="com.okapya.jira.checklist:checklist">
                        <customfieldname>Task DoR</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_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>