<!-- 
RSS generated by JIRA (9.4.2#940002-sha1:46d1a51de284217efdcb32434eab47a99af2938b) at Mon Feb 12 06:56:34 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>[MGNLREST-97] Implement exception handling for rest endpoint</title>
                <link>https://jira.magnolia-cms.com/browse/MGNLREST-97</link>
                <project id="10674" key="MGNLREST">Magnolia REST Framework</project>
                    <description>&lt;p&gt;Following up on &lt;a href=&quot;https://jira.magnolia-cms.com/browse/MGNLREST-93&quot; title=&quot;Create new sub-module rest-content-delivery&quot; class=&quot;issue-link&quot; data-issue-key=&quot;MGNLREST-93&quot;&gt;&lt;del&gt;MGNLREST-93&lt;/del&gt;&lt;/a&gt;, we first aim at reviewing exception handling (&lt;tt&gt;ExceptionMapper&lt;/tt&gt;) for JCR &amp;amp; Magnolia exceptions.&lt;/p&gt;

&lt;p&gt;As a secondary goal, we might as well consider carrying metadata in the body of error responses (how much? only when &lt;em&gt;magnolia.develop&lt;/em&gt; is true?)&lt;/p&gt;</description>
                <environment></environment>
        <key id="60917">MGNLREST-97</key>
            <summary>Implement exception handling for rest endpoint</summary>
                <type id="3" iconUrl="https://jira.magnolia-cms.com/secure/viewavatar?size=xsmall&amp;avatarId=10898&amp;avatarType=issuetype">Task</type>
                                            <priority id="6" iconUrl="https://jira.magnolia-cms.com/images/icons/priorities/neutral.gif">Neutral</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="hieu.nguyen">Hieu Nguyen Duc</assignee>
                                    <reporter username="sang.ngo">Sang Ngo Huu</reporter>
                        <labels>
                    </labels>
                <created>Mon, 21 Aug 2017 06:18:25 +0200</created>
                <updated>Mon, 22 Jan 2018 04:02:07 +0100</updated>
                            <resolved>Sat, 6 Jan 2018 16:16:19 +0100</resolved>
                                                    <fixVersion>2.0.2</fixVersion>
                                        <due></due>
                            <votes>0</votes>
                                    <watches>4</watches>
                                    <workratio workratioPercent="234"/>
                                    <progress percentage="100">
                                    <originalProgress>
                                                    <row percentage="42" backgroundColor="#89afd7"/>
                                                    <row percentage="58" backgroundColor="transparent"/>
                                            </originalProgress>
                                                    <currentProgress>
                                                    <row percentage="100" backgroundColor="#51a825"/>
                                                    <row percentage="0" backgroundColor="#ec8e00"/>
                                            </currentProgress>
                            </progress>
                                    <aggregateprogress percentage="100">
                                    <originalProgress>
                                                    <row percentage="42" backgroundColor="#89afd7"/>
                                                    <row percentage="58" backgroundColor="transparent"/>
                                            </originalProgress>
                                                    <currentProgress>
                                                    <row percentage="100" backgroundColor="#51a825"/>
                                                    <row percentage="0" backgroundColor="#ec8e00"/>
                                            </currentProgress>
                            </aggregateprogress>
                                    <timeoriginalestimate seconds="115200">4d</timeoriginalestimate>
                            <timeestimate seconds="0">0d</timeestimate>
                            <timespent seconds="270000">9d 3h</timespent>
                                <comments>
                            <comment id="151002" author="mgeljic" created="Mon, 6 Nov 2017 13:48:46 +0100"  >&lt;p&gt;First come up with a concept;&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Evaluate whether our current &lt;tt&gt;ExceptionMapper&lt;/tt&gt; being generically typed to all &lt;tt&gt;Throwables&lt;/tt&gt; makes sense&lt;/li&gt;
	&lt;li&gt;how more specific can we be&lt;/li&gt;
	&lt;li&gt;can we provide meaningful mappings between exceptions and HTTP status codes&lt;/li&gt;
	&lt;li&gt;current &lt;tt&gt;ExceptionMapper&lt;/tt&gt; overrides RESTEasy&apos;s default one&lt;/li&gt;
	&lt;li&gt;therefore standard JAX-RS exceptions don&apos;t get treated with appropriate status atm
	&lt;ul&gt;
		&lt;li&gt;&lt;em&gt;e.g.&lt;/em&gt;&lt;br/&gt;
 &lt;tt&gt;NotFoundException&lt;/tt&gt; normally yields a 404;&lt;/li&gt;
		&lt;li&gt;every exception yields a 500&lt;/li&gt;
		&lt;li&gt;maybe even including those intended bad-requests&lt;/li&gt;
	&lt;/ul&gt;
	&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Check out linked tickets as well;&lt;/p&gt;</comment>
                            <comment id="151069" author="hieu.nguyen" created="Tue, 7 Nov 2017 12:02:51 +0100"  >&lt;p&gt;&lt;a href=&quot;https://jira.magnolia-cms.com/secure/ViewProfile.jspa?name=mgeljic&quot; class=&quot;user-hover&quot; rel=&quot;mgeljic&quot;&gt;mgeljic&lt;/a&gt; Here is the discussion about the above ideas. Please review it.&lt;br/&gt;
&lt;a href=&quot;https://wiki.magnolia-cms.com/display/VN/2017-11-07+REST+Exception+Handling&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://wiki.magnolia-cms.com/display/VN/2017-11-07+REST+Exception+Handling&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="151619" author="hieu.nguyen" created="Fri, 17 Nov 2017 08:57:08 +0100"  >&lt;p&gt;Wiki has been updated for the &quot;facts&quot;. &lt;a href=&quot;https://jira.magnolia-cms.com/browse/MGNLREST-144&quot; title=&quot;Delivery endpoint should return 4** codes for non-existant resource or entities&quot; class=&quot;issue-link&quot; data-issue-key=&quot;MGNLREST-144&quot;&gt;&lt;del&gt;MGNLREST-144&lt;/del&gt;&lt;/a&gt; and &lt;a href=&quot;https://jira.magnolia-cms.com/browse/MGNLREST-132&quot; title=&quot;Response includes JCR query error if the query has an error&quot; class=&quot;issue-link&quot; data-issue-key=&quot;MGNLREST-132&quot;&gt;&lt;del&gt;MGNLREST-132&lt;/del&gt;&lt;/a&gt; are taken into consideration.&lt;/p&gt;</comment>
                            <comment id="151714" author="czimmermann" created="Mon, 20 Nov 2017 10:34:45 +0100"  >&lt;p&gt;Please also see interesting partners notes on : &lt;a href=&quot;https://jira.magnolia-cms.com/browse/MGNLREST-79&quot; title=&quot;Provide error messages for REST calls that return a client error message&quot; class=&quot;issue-link&quot; data-issue-key=&quot;MGNLREST-79&quot;&gt;&lt;del&gt;MGNLREST-79&lt;/del&gt;&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="152907" author="hieu.nguyen" created="Tue, 12 Dec 2017 11:45:20 +0100"  >&lt;p&gt;Currently &lt;a href=&quot;https://goo.gl/bMRgpg&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;legacy endpoints&lt;/a&gt; are returning error response as plain text &lt;a href=&quot;https://goo.gl/MxkZg9&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;which is not a good practice&lt;/a&gt;.&lt;br/&gt;
&lt;a href=&quot;https://goo.gl/K9rNcP&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;Maintaining backward compatibility of this plain text seems heavy and unworthy&lt;/a&gt; because customers are likely not to use plain text from that error response. We&apos;ve ended up with changing the format from plain text to what user is requesting for. For example, if user requests for XML, the error response will be XML. If &quot;Accept&quot; header is not specified, the error response will be formatted as JSON by default.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10020">
                    <name>dependency</name>
                                                                <inwardlinks description="is depended upon by">
                                        <issuelink>
            <issuekey id="62503">MGNLREST-141</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="62355">MGNLREST-132</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="62591">MGNLREST-144</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="62506">DOCU-2231</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10010">
                    <name>relation</name>
                                            <outwardlinks description="is related to">
                                        <issuelink>
            <issuekey id="55229">MGNLREST-79</issuekey>
        </issuelink>
                            </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>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, 6 Nov 2017 13:48:46 +0100</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>MGNLREST-128</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>dai.ha</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_13136" key="com.atlassian.jira.toolkit:LastCommentDate">
                        <customfieldname>Last public comment date</customfieldname>
                        <customfieldvalues>
                            6 years, 9 weeks, 5 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>5.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10011" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>czimmermann</customfieldvalue>
            <customfieldvalue>hieu.nguyen</customfieldvalue>
            <customfieldvalue>mgeljic</customfieldvalue>
            <customfieldvalue>sang.ngo</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                <customfield id="customfield_10833" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|i07dyb:v</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_10245" key="com.pyxis.greenhopper.jira:gh-sprint">
                        <customfieldname>Sprint</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue id="601">Saigon 121</customfieldvalue>
    <customfieldvalue id="605">Saigon 122</customfieldvalue>
    <customfieldvalue id="618">Saigon 125</customfieldvalue>
    <customfieldvalue id="621">Saigon 126</customfieldvalue>
    <customfieldvalue id="626">Saigon 127</customfieldvalue>
    <customfieldvalue id="631">Saigon 128</customfieldvalue>
    <customfieldvalue id="632">Saigon 129</customfieldvalue>
    <customfieldvalue id="638">Saigon 130</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_10242" key="com.atlassian.jira.plugin.system.customfieldtypes:float">
                        <customfieldname>Story Points</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>5.0</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>