<!-- 
RSS generated by JIRA (9.4.2#940002-sha1:46d1a51de284217efdcb32434eab47a99af2938b) at Mon Feb 12 06:47:50 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>[MGNLRES-144] Implement new origin-based ResourcesServlet</title>
                <link>https://jira.magnolia-cms.com/browse/MGNLRES-144</link>
                <project id="10282" key="MGNLRES">Magnolia Resources Module</project>
                    <description>&lt;p&gt;Should use the new &lt;tt&gt;magnolia-resource-loader&lt;/tt&gt; module from main, and in particular use the &lt;tt&gt;LayeredOrigin&lt;/tt&gt; which implements the unified resource-loading cascade.&lt;/p&gt;

&lt;p&gt;Is expected to replace &lt;tt&gt;ClasspathSpool&lt;/tt&gt; servlet and be similarly mapped to &lt;tt&gt;/.resources&lt;/tt&gt;. &lt;/p&gt;

&lt;p&gt;Random thoughts/things to clarify:&lt;/p&gt;

&lt;p&gt;&lt;del&gt;&lt;em&gt;Processed resources&lt;/em&gt;&lt;/del&gt;&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;del&gt;What to do with &lt;tt&gt;Resource#modelClass&lt;/tt&gt;&lt;/del&gt;&lt;/li&gt;
	&lt;li&gt;&lt;del&gt;What to do with nested processed resources as sub-nodes (e.g. &lt;tt&gt;sample-css&lt;/tt&gt;)&lt;/del&gt;&lt;/li&gt;
	&lt;li&gt;&lt;del&gt;Encourage additional generators as filters (e.g. Sass)&lt;/del&gt;&lt;/li&gt;
	&lt;li&gt;see &lt;a href=&quot;https://jira.magnolia-cms.com/browse/MGNLRES-149&quot; title=&quot;Concept for supporting processing resources served via /.resources &quot; class=&quot;issue-link&quot; data-issue-key=&quot;MGNLRES-149&quot;&gt;&lt;del&gt;MGNLRES-149&lt;/del&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&lt;em&gt;Security:&lt;/em&gt; What should the servlet be allowed to serve?&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;restriction e.g. to serve css/js, not serve ftls, yamls&lt;/li&gt;
	&lt;li&gt;relevant for the whole resource-loading cascade&lt;/li&gt;
	&lt;li&gt;should leave it to URI security where applicable&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&lt;em&gt;Caching&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;apparently ok  /.resources is cached in production mode&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&lt;em&gt;Compatibility&lt;/em&gt; options&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Deprecate &lt;tt&gt;ResourceLoaders&lt;/tt&gt;&lt;/li&gt;
	&lt;li&gt;Single resource handle for fresh installs&lt;/li&gt;
	&lt;li&gt;Still support &lt;tt&gt;/resources&lt;/tt&gt; with meaningful warnings otherwise&lt;/li&gt;
&lt;/ul&gt;
</description>
                <environment></environment>
        <key id="44856">MGNLRES-144</key>
            <summary>Implement new origin-based ResourcesServlet</summary>
                <type id="2" iconUrl="https://jira.magnolia-cms.com/secure/viewavatar?size=xsmall&amp;avatarId=10891&amp;avatarType=issuetype">New Feature</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="mgeljic">Mika&#235;l Gelji&#263;</reporter>
                        <labels>
                            <label>platform-cell</label>
                            <label>servlet</label>
                    </labels>
                <created>Thu, 7 May 2015 10:55:24 +0200</created>
                <updated>Tue, 29 Mar 2022 12:43:09 +0200</updated>
                            <resolved>Thu, 28 May 2015 08:52:35 +0200</resolved>
                                                    <fixVersion>2.4</fixVersion>
                                        <due></due>
                            <votes>0</votes>
                                    <watches>3</watches>
                                                                                                                                                            <comments>
                            <comment id="104258" author="mmuehlebach" created="Mon, 18 May 2015 14:25:51 +0200"  >&lt;p&gt;Because it would introduce a dependency cycle at the moment, the resources servlet can not replace the class path spool in the install/setup phase (FilterManagerImpl).&lt;/p&gt;</comment>
                            <comment id="104259" author="mmuehlebach" created="Mon, 18 May 2015 14:28:13 +0200"  >&lt;p&gt;The processed resources are out of scope for the moment. They can still be used but over the old NonInstalledResourcesFilter (aka /resources/ path).&lt;br/&gt;
A follow up task will add processed resource support to the resources servlet.&lt;/p&gt;</comment>
                            <comment id="104736" author="gjoseph" created="Sat, 23 May 2015 18:03:55 +0200"  >&lt;p&gt;Did a bunch of cleanups with Michael. Still reopened for tests, integration tests, and missing update tasks.&lt;/p&gt;</comment>
                            <comment id="104934" author="mmuehlebach" created="Wed, 27 May 2015 13:14:07 +0200"  >&lt;p&gt;Finished the clean up and adapted all tests accordingly.&lt;br/&gt;
Added update tasks for core to remove the class path spool servlet.&lt;br/&gt;
Added update tasks for the resources module to add the new resources servlet.&lt;/p&gt;</comment>
                            <comment id="104939" author="gjoseph" created="Wed, 27 May 2015 13:45:03 +0200"  >&lt;ul&gt;
	&lt;li&gt;ResourcesModuleVersionHandler does not compile&lt;/li&gt;
	&lt;li&gt;I&apos;d consider having a single &quot;replace classpathSpool servlet by this new one&quot; in the resources module only, and drop the task from core (if one updates core without updating resources module, they&apos;ll have no resources servlet)&lt;/li&gt;
	&lt;li&gt;I&apos;d suggest adding log.warn messages in the now deprecated Servlet, in case it still gets used.&lt;/li&gt;
	&lt;li&gt;Some of the changes we did together (in a branch that&apos;s now been removed) are gone&lt;/li&gt;
	&lt;li&gt;You re-introduce &lt;tt&gt;stripPrefixesBeforeResourcesURLMapping&lt;/tt&gt; specifically because one of those crucial change is gone (using &lt;tt&gt;pathInfo&lt;/tt&gt; instead of &lt;tt&gt;requestURI&lt;/tt&gt;)&lt;/li&gt;
	&lt;li&gt;&lt;tt&gt;NonInstalledResourcesFilter&lt;/tt&gt; needs to be removed !&lt;/li&gt;
&lt;/ul&gt;
</comment>
                            <comment id="104940" author="gjoseph" created="Wed, 27 May 2015 13:50:10 +0200"  >&lt;p&gt;Additionally, I don&apos;t think we should release this without any sort of validation (at the very least by content-type, extension, and/or pattern)&lt;/p&gt;</comment>
                            <comment id="104981" author="gjoseph" created="Wed, 27 May 2015 17:41:41 +0200"  >&lt;p&gt;Cleaned up, rebased and squashed on &lt;tt&gt;feature/&lt;a href=&quot;https://jira.magnolia-cms.com/browse/MGNLRES-144&quot; title=&quot;Implement new origin-based ResourcesServlet&quot; class=&quot;issue-link&quot; data-issue-key=&quot;MGNLRES-144&quot;&gt;&lt;del&gt;MGNLRES-144&lt;/del&gt;&lt;/a&gt;-resources-servlet-2&lt;/tt&gt;.&lt;br/&gt;
Still to do:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;consider having a single &quot;replace classpathSpool servlet by this new one&quot; update task in the resources module only, and drop the task from core (if one updates core without updating resources module, they&apos;ll have no resources servlet)&lt;/li&gt;
	&lt;li&gt;add log.warn messages in the now deprecated Servlet, in case it still gets used.&lt;/li&gt;
	&lt;li&gt;validation/filtering of what the servlet can serve&lt;/li&gt;
	&lt;li&gt;I did not run the integration tests. Preliminary manual tests look good, provided we fix &lt;a href=&quot;https://jira.magnolia-cms.com/browse/MGNLRES-152&quot; title=&quot;Generate links to resources, and use selectors with ~ to generate farFutureCaching URLs for resources &quot; class=&quot;issue-link&quot; data-issue-key=&quot;MGNLRES-152&quot;&gt;&lt;del&gt;MGNLRES-152&lt;/del&gt;&lt;/a&gt;. CMS team should be able to replace their links to &lt;tt&gt;/resources&lt;/tt&gt; by &lt;tt&gt;/.resources&lt;/tt&gt;&lt;/li&gt;
&lt;/ul&gt;
</comment>
                            <comment id="105013" author="mmuehlebach" created="Thu, 28 May 2015 08:52:35 +0200"  >&lt;p&gt;Moved update task for class path spool servlet to the resources module.&lt;br/&gt;
Added log message to class path spool servlet.&lt;br/&gt;
Added restriction pattern for forbidden resources like ftl files.&lt;br/&gt;
Added integration test for content type.&lt;/p&gt;</comment>
                            <comment id="105105" author="gjoseph" created="Thu, 28 May 2015 22:55:15 +0200"  >&lt;p&gt;Looks good, cheers.&lt;br/&gt;
Note to self when integrating:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;re-test &lt;tt&gt;#86da633&lt;/tt&gt; - report in separate ticket if the existing cache config doesn&apos;t cover this&lt;/li&gt;
	&lt;li&gt;don&apos;t forget &lt;tt&gt;feature/&lt;a href=&quot;https://jira.magnolia-cms.com/browse/MGNLRES-144&quot; title=&quot;Implement new origin-based ResourcesServlet&quot; class=&quot;issue-link&quot; data-issue-key=&quot;MGNLRES-144&quot;&gt;&lt;del&gt;MGNLRES-144&lt;/del&gt;&lt;/a&gt;-resource-servlet-integration-test&lt;/tt&gt; branch on ce-bundle&lt;/li&gt;
	&lt;li&gt;un-ignore 3rd test in said branch (ideally, everything will be integrated by then)&lt;/li&gt;
	&lt;li&gt;add a test that validates forbidden resources are in fact forbidden&lt;/li&gt;
&lt;/ul&gt;
</comment>
                            <comment id="105225" author="gjoseph" created="Fri, 29 May 2015 20:14:51 +0200"  >&lt;p&gt;Integrated on master, but created &lt;a href=&quot;https://jira.magnolia-cms.com/browse/MGNLRES-161&quot; title=&quot;Integration test for ResourcesServlet&quot; class=&quot;issue-link&quot; data-issue-key=&quot;MGNLRES-161&quot;&gt;&lt;del&gt;MGNLRES-161&lt;/del&gt;&lt;/a&gt; to cover integration tests&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10040">
                    <name>causality</name>
                                                                <inwardlinks description="is causing">
                                        <issuelink>
            <issuekey id="45480">MULTISITE-44</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10020">
                    <name>dependency</name>
                                            <outwardlinks description="depends upon">
                                        <issuelink>
            <issuekey id="45289">MGNLRES-152</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="45205">MAGNOLIA-6218</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="45308">MAGNOLIA-6219</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="45309">MAGNOLIA-6220</issuekey>
        </issuelink>
                            </outwardlinks>
                                                                <inwardlinks description="is depended upon by">
                                        <issuelink>
            <issuekey id="45399">MAGNOLIA-6229</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10022">
                    <name>supersession</name>
                                            <outwardlinks description="supersedes">
                                        <issuelink>
            <issuekey id="43196">MGNLRES-136</issuekey>
        </issuelink>
                            </outwardlinks>
                                                                <inwardlinks description="is superseded by">
                                        <issuelink>
            <issuekey id="45169">MGNLRES-149</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                            <subtask id="45426">MGNLRES-161</subtask>
                    </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>magnolia-cms.com</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_10031" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>Date of First Response</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Mon, 18 May 2015 14:25:51 +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_10246" key="com.pyxis.greenhopper.jira:gh-epic-link">
                        <customfieldname>Epic Link</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>BL-217</customfieldvalue>
                        </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>dmaslanka</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_13136" key="com.atlassian.jira.toolkit:LastCommentDate">
                        <customfieldname>Last public comment date</customfieldname>
                        <customfieldvalues>
                            8 years, 38 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>10.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10011" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>gjoseph</customfieldvalue>
            <customfieldvalue>mmuehlebach</customfieldvalue>
            <customfieldvalue>mgeljic</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                <customfield id="customfield_10833" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|i04x27:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10244" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>9223372036854775807</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_12430" key="com.atlassian.teams:rm-teams-custom-field-team">
                        <customfieldname>Team</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue><![CDATA[27]]></customfieldvalue>

                        </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>