[MAGNOLIA-7812] TemplatingFunctions#asContentMapList() cast exception Created: 25/May/20  Updated: 03/Jun/20

Status: Reopened
Project: Magnolia
Component/s: templating
Affects Version/s: 6.2
Fix Version/s: None

Type: Bug Priority: Neutral
Reporter: Richard Gange Assignee: Unassigned
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Attachments: PNG File debug-mode.png     PNG File exception.png    
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)
Bug DoR:
[ ]* Steps to reproduce, expected, and actual results filled
[ ]* Affected version filled

 Description   

The issue can be seen on the travel demo's Book your tour page. It's a freemarker exception at the bottom.

The root of the problem seems to be a strange method resolution.

Method called:

 public List<ContentMap> asContentMapList(Collection<Node> nodeList)

The problem is that nodeList is of type ContentMap which leads to the cast exception.

Caused by: freemarker.core._TemplateModelException: Java method "info.magnolia.templating.functions.TemplatingFunctions.asContentMapList(Collection)" threw an exception when invoked on info.magnolia.personalization.templating.VariantAwareTemplatingFunctions object "info.magnolia.personalization.templating.VariantAwareTemplatingFunctions@9855af"; see cause exception in the Java stack trace.

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign conditionList = cmsfn.asConte...  [in template "form/components/formCondition.ftl" at line 8, column 9]
----
	at freemarker.ext.beans._MethodUtil.newInvocationTemplateModelException(_MethodUtil.java:289) ~[freemarker-2.3.29.jar:2.3.29]
	at freemarker.ext.beans._MethodUtil.newInvocationTemplateModelException(_MethodUtil.java:252) ~[freemarker-2.3.29.jar:2.3.29]
	at freemarker.ext.beans.SimpleMethodModel.exec(SimpleMethodModel.java:77) ~[freemarker-2.3.29.jar:2.3.29]
	at freemarker.core.MethodCall._eval(MethodCall.java:62) ~[freemarker-2.3.29.jar:2.3.29]
	at freemarker.core.Expression.eval(Expression.java:101) ~[freemarker-2.3.29.jar:2.3.29]
	at freemarker.core.Assignment.accept(Assignment.java:134) ~[freemarker-2.3.29.jar:2.3.29]
	at freemarker.core.Environment.visit(Environment.java:331) ~[freemarker-2.3.29.jar:2.3.29]
	at freemarker.core.Environment.visit(Environment.java:337) ~[freemarker-2.3.29.jar:2.3.29]
	at freemarker.core.Environment.visit(Environment.java:337) ~[freemarker-2.3.29.jar:2.3.29]
	at freemarker.core.Environment.process(Environment.java:310) ~[freemarker-2.3.29.jar:2.3.29]
	at freemarker.template.Template.process(Template.java:383) ~[freemarker-2.3.29.jar:2.3.29]
	at info.magnolia.freemarker.FreemarkerHelper.render(FreemarkerHelper.java:171) ~[magnolia-freemarker-support-6.2.jar:?]
	at info.magnolia.rendering.renderer.FreemarkerRenderer.onRender(FreemarkerRenderer.java:99) ~[magnolia-rendering-6.2.jar:?]
	... 355 more
Caused by: java.lang.ClassCastException: info.magnolia.jcr.util.ContentMap cannot be cast to javax.jcr.Node
	at info.magnolia.templating.functions.TemplatingFunctions.asContentMapList(TemplatingFunctions.java:914) ~[magnolia-templating-6.2.jar:?]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_181]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_181]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_181]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_181]
	at freemarker.ext.beans.BeansWrapper.invokeMethod(BeansWrapper.java:1505) ~[freemarker-2.3.29.jar:2.3.29]
	at freemarker.ext.beans.SimpleMethodModel.exec(SimpleMethodModel.java:72) ~[freemarker-2.3.29.jar:2.3.29]
	at freemarker.core.MethodCall._eval(MethodCall.java:62) ~[freemarker-2.3.29.jar:2.3.29]
	at freemarker.core.Expression.eval(Expression.java:101) ~[freemarker-2.3.29.jar:2.3.29]
	at freemarker.core.Assignment.accept(Assignment.java:134) ~[freemarker-2.3.29.jar:2.3.29]
	at freemarker.core.Environment.visit(Environment.java:331) ~[freemarker-2.3.29.jar:2.3.29]
	at freemarker.core.Environment.visit(Environment.java:337) ~[freemarker-2.3.29.jar:2.3.29]
	at freemarker.core.Environment.visit(Environment.java:337) ~[freemarker-2.3.29.jar:2.3.29]
	at freemarker.core.Environment.process(Environment.java:310) ~[freemarker-2.3.29.jar:2.3.29]
	at freemarker.template.Template.process(Template.java:383) ~[freemarker-2.3.29.jar:2.3.29]
	at info.magnolia.freemarker.FreemarkerHelper.render(FreemarkerHelper.java:171) ~[magnolia-freemarker-support-6.2.jar:?]
	at info.magnolia.rendering.renderer.FreemarkerRenderer.onRender(FreemarkerRenderer.java:99) ~[magnolia-rendering-6.2.jar:?]
	... 355 more


 Comments   
Comment by Richard Gange [ 03/Jun/20 ]

Reopened. It can be reproduced on 6.2.1 as well. The only difference it you do not see the yellow screen. Instead you see what is displayed here MGNLFORM-316.

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