[MAGNOLIA-4849] Installation screen broken when listing modules to install Created: 15/Feb/13  Updated: 18/Feb/13  Resolved: 18/Feb/13

Status: Closed
Project: Magnolia
Component/s: None
Affects Version/s: None
Fix Version/s: 5.0

Type: Improvement Priority: Major
Reporter: Tobias Mattsson Assignee: Tobias Mattsson
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Attachments: PNG File Screen Shot 2013-02-15 at 2.20.24 PM.png    
Issue Links:
causality
caused by MAGNOLIA-4838 Allow Freemarker model factories to t... Closed
Template:
Acceptance criteria:
Empty
Task DoD:
[ ]* Doc/release notes changes? Comment present?
[ ]* Downstream builds green?
[ ]* Solution information and context easily available?
[ ]* Tests
[ ]* FixVersion filled and not yet released
[ ]  Architecture Decision Record (ADR)

 Description   

I think this is related to the change done in MAGNOLIA-4838

2013-02-15 18:04:32,715 ERROR freemarker.runtime                                : Template processing error: "?size is unsupported for: freemarker.ext.beans.SimpleMethodModel"

?size is unsupported for: freemarker.ext.beans.SimpleMethodModel
The problematic instruction:
----------
==> list context.messages[module] as msg [on line 11, column 1 in info/magnolia/module/ui/ModuleManagerWebUI.header.html]
 in user-directive contextMessages [on line 8, column 3 in info/magnolia/module/ui/ModuleManagerWebUI.inProgress.html]
----------

Java backtrace for programmers:
----------
freemarker.template.TemplateModelException: ?size is unsupported for: freemarker.ext.beans.SimpleMethodModel
	at freemarker.ext.beans.SimpleMethodModel.size(SimpleMethodModel.java:144)
	at freemarker.core.IteratorBlock$Context.runLoop(IteratorBlock.java:174)
	at freemarker.core.Environment.visit(Environment.java:428)
	at freemarker.core.IteratorBlock.accept(IteratorBlock.java:102)
	at freemarker.core.Environment.visit(Environment.java:221)
	at freemarker.core.MixedContent.accept(MixedContent.java:92)
	at freemarker.core.Environment.visit(Environment.java:221)
	at freemarker.core.IteratorBlock$Context.runLoop(IteratorBlock.java:167)
	at freemarker.core.Environment.visit(Environment.java:428)
	at freemarker.core.IteratorBlock.accept(IteratorBlock.java:102)
	at freemarker.core.Environment.visit(Environment.java:221)
	at freemarker.core.MixedContent.accept(MixedContent.java:92)
	at freemarker.core.Environment.visit(Environment.java:221)
	at freemarker.core.Macro$Context.runMacro(Macro.java:172)
	at freemarker.core.Environment.visit(Environment.java:614)
	at freemarker.core.UnifiedCall.accept(UnifiedCall.java:106)
	at freemarker.core.Environment.visit(Environment.java:221)
	at freemarker.core.MixedContent.accept(MixedContent.java:92)
	at freemarker.core.Environment.visit(Environment.java:221)
	at freemarker.core.Environment.process(Environment.java:199)
	at freemarker.template.Template.process(Template.java:237)
	at info.magnolia.freemarker.FreemarkerHelper.render(FreemarkerHelper.java:155)
	at info.magnolia.freemarker.FreemarkerHelper.render(FreemarkerHelper.java:137)
	at info.magnolia.module.ui.ModuleManagerWebUI.render(ModuleManagerWebUI.java:160)
	at info.magnolia.module.ui.ModuleManagerWebUI.execute(ModuleManagerWebUI.java:97)
	at info.magnolia.cms.filters.InstallFilter.doFilter(InstallFilter.java:100)
	at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:91)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:83)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:85)
	at info.magnolia.cms.filters.CompositeFilter.doFilter(CompositeFilter.java:67)
	at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:91)
	at info.magnolia.cms.filters.SafeDestroyMgnlFilterWrapper.doFilter(SafeDestroyMgnlFilterWrapper.java:108)
	at info.magnolia.cms.filters.MgnlFilterDispatcher.doDispatch(MgnlFilterDispatcher.java:67)
	at info.magnolia.cms.filters.MgnlMainFilter.doFilter(MgnlMainFilter.java:108)
	at info.magnolia.cms.filters.MgnlMainFilter.doFilter(MgnlMainFilter.java:94)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
	at java.lang.Thread.run(Thread.java:680)


 Comments   
Comment by Tobias Mattsson [ 18/Feb/13 ]

This is caused by the change in MAGNOLIA-4838, the change caused model factories returned by super.getModelFactory(Class) to have precedence over super.wrap(Object). These methods wrap in completely different ways. Where super.wrap(Object) wraps a Map as SimpleHash super.getModelFactory(Class) will return a factory that creates a MapModel. This is what caused the installation screen to display messages incorrectly.

The fix is to only let our own model factories have precedence.

Generated at Mon Feb 12 03:59:37 CET 2024 using Jira 9.4.2#940002-sha1:46d1a51de284217efdcb32434eab47a99af2938b.