[
http://jira.magnolia-cms.com/browse/MAGNOLIA-3687?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Ondřej Chytil updated MAGNOLIA-3687:
------------------------------------
Fix Version/s: 4.4.5
(was: 4.4.4)
> RenderingEngine does not restore aggregation state when throwing
> RenderException
> --------------------------------------------------------------------------------
>
> Key: MAGNOLIA-3687
> URL: http://jira.magnolia-cms.com/browse/MAGNOLIA-3687
> Project: Magnolia
> Issue Type: Bug
> Components: templating
> Affects Versions: 4.4.3
> Reporter: Tobias Mattsson
> Assignee: Philipp Bärfuss
> Priority: Major
> Fix For: 4.4.5
>
>
> In DefaultRenderingEngine.java there's a number of situations that can cause
> a RenderException to be thrown. At the start of the method the
> AggregationState is updated to reflect the renderable that is to be rendered.
> This is not reset when an exception is thrown.
> Proposed solution:
> {code}
> protected void render(Content content, String definitionName, RenderingHelper
> helper, Writer out) throws RenderException {
> Content orgMainContent = null;
> Content orgCurrentContent = null;
> AggregationState state = getAggregationStateSafely();
> if (state != null) {
> orgMainContent = state.getMainContent();
> orgCurrentContent = state.getCurrentContent();
> state.setCurrentContent(content);
> // if not yet set the passed content is the entry point of the
> rendering
> if (orgMainContent == null) {
> state.setMainContent(content);
> }
> }
> try {
> RenderableDefinition definition =
> helper.getDefinition(definitionName);
> if (definition == null) {
> throw new RenderException("Can't find renderable definition " +
> definitionName + " for content: " + content.getHandle());
> }
> Object renderer = helper.getRenderer(definition);
> if (renderer == null) {
> throw new RenderException("Can't find renderer for type " +
> definition.getType() + " of content: " + content.getHandle());
> }
> helper.render(content, definition, renderer, out);
> }
> catch (IOException e) {
> throw new RenderException("Can't render " + content.getHandle(), e);
> } finally {
> if (state != null) {
> state.setMainContent(orgMainContent);
> state.setCurrentContent(orgCurrentContent);
> }
> }
> }
> {code}
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.magnolia-cms.com/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
----------------------------------------------------------------
For list details see
http://www.magnolia-cms.com/home/community/mailing-lists.html
To unsubscribe, E-mail to: <[email protected]>
----------------------------------------------------------------