[MAGNOLIA-3164] Freemarker: content?ancestors results in exception Created: 24/Mar/10  Updated: 24/Mar/10  Resolved: 24/Mar/10

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

Type: Bug Priority: Major
Reporter: Richard Unger Assignee: Magnolia International
Resolution: Duplicate Votes: 0
Labels: freemarker
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

Magnolia 4.3.1 deployed on RHEL/Intel. Running the CE tomcat-bundle with STK 1.3 installed.


Issue Links:
duplicate
duplicates MAGNOLIA-2945 FreeMarker ?ancestors and ?root built... 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)
Bug DoR:
[ ]* Steps to reproduce, expected, and actual results filled
[ ]* Affected version filled
Date of First Response:

 Description   

Trying to use the node-built-in "ancestors" in a freemarker template results in the following exception.

Sample code to produce the error:
list content?ancestors as parents
bla bla
/#list

Exception stack trace:

FreeMarker template error!

Can't get parent of I18nContentWrapper for website:/[rep:root]:root node doesn't have a parent
The problematic instruction:
----------
==> list content?ancestors as pars [on line 5, column 1 in biolebensmittel/general/pfadLeiste]
in include "/biolebensmittel/general/pfadLeiste" [on line 42, column 1 in biolebensmittel/Artikelkategorie]
----------

Java backtrace for programmers:
----------
freemarker.template.TemplateModelException: Can't get parent of I18nContentWrapper for website:/[rep:root]:root node doesn't have a parent
at info.magnolia.freemarker.models.ContentModel.getParentNode(ContentModel.java:146)
at freemarker.core.NodeBuiltins$ancestorsBI.calculateResult(NodeBuiltins.java:85)
at freemarker.core.NodeBuiltins$NodeBuiltIn._getAsTemplateModel(NodeBuiltins.java:73)
at freemarker.core.Expression.getAsTemplateModel(Expression.java:89)
at freemarker.core.IteratorBlock.accept(IteratorBlock.java:94)
at freemarker.core.Environment.visit(Environment.java:210)
at freemarker.core.MixedContent.accept(MixedContent.java:92)
at freemarker.core.Environment.visit(Environment.java:210)
at freemarker.core.Environment.include(Environment.java:1483)
at freemarker.core.Include.accept(Include.java:169)
at freemarker.core.Environment.visit(Environment.java:210)
at freemarker.core.MixedContent.accept(MixedContent.java:92)
at freemarker.core.Environment.visit(Environment.java:210)
at freemarker.core.Environment.process(Environment.java:190)
at freemarker.template.Template.process(Template.java:237)
at info.magnolia.freemarker.FreemarkerHelper.render(FreemarkerHelper.java:152)
at info.magnolia.module.templating.renderers.FreemarkerTemplateRenderer.onRender(FreemarkerTemplateRenderer.java:74)
at info.magnolia.module.templating.AbstractRenderer.render(AbstractRenderer.java:83)
at info.magnolia.module.templating.renderers.AbstractTemplateRenderer.renderTemplate(AbstractTemplateRenderer.java:76)
at info.magnolia.module.templating.engine.DefaultRenderingEngine$RenderingHelper$2.render(DefaultRenderingEngine.java:105)
at info.magnolia.module.templating.engine.DefaultRenderingEngine.render(DefaultRenderingEngine.java:165)
at info.magnolia.module.templating.engine.DefaultRenderingEngine.render(DefaultRenderingEngine.java:127)
at info.magnolia.module.templating.engine.DefaultRenderingEngine$$EnhancerByCGLIB$$91f654ef.render(<generated>)
at info.magnolia.module.templating.RenderingFilter.render(RenderingFilter.java:132)
at info.magnolia.module.templating.RenderingFilter.doFilter(RenderingFilter.java:92)
at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:70)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
at info.magnolia.cms.filters.BackwardCompatibilityFilter.doFilter(BackwardCompatibilityFilter.java:72)
at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:62)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
at info.magnolia.cms.filters.InterceptFilter.doFilter(InterceptFilter.java:121)
at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:70)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
at info.magnolia.cms.filters.AggregatorFilter.doFilter(AggregatorFilter.java:103)
at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:70)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
at info.magnolia.cms.security.BaseSecurityFilter.doFilter(BaseSecurityFilter.java:61)
at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:70)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
at info.magnolia.cms.filters.RepositoryMappingFilter.doFilter(RepositoryMappingFilter.java:90)
at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:70)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
at info.magnolia.cms.filters.CompositeFilter.doFilter(CompositeFilter.java:64)
at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:70)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:76)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:84)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:84)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:84)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:84)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:84)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:84)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:84)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:84)
at info.magnolia.cms.filters.CompositeFilter.doFilter(CompositeFilter.java:64)
at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:70)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
at info.magnolia.cms.filters.VirtualUriFilter.doFilter(VirtualUriFilter.java:130)
at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:70)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
at info.magnolia.module.cache.executor.Bypass.processCacheRequest(Bypass.java:57)
at info.magnolia.module.cache.filter.CacheFilter.doFilter(CacheFilter.java:123)
at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:62)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
at info.magnolia.cms.i18n.I18nContentSupportFilter.doFilter(I18nContentSupportFilter.java:75)
at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:70)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
at info.magnolia.module.cache.filter.GZipFilter.doFilter(GZipFilter.java:83)
at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:62)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:84)
at info.magnolia.cms.security.BaseSecurityFilter.doFilter(BaseSecurityFilter.java:61)
at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:70)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
at info.magnolia.cms.security.LogoutFilter.doFilter(LogoutFilter.java:89)
at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:62)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
at info.magnolia.cms.security.auth.login.LoginFilter.doFilter(LoginFilter.java:80)
at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:70)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:84)
at info.magnolia.cms.filters.CosMultipartRequestFilter.doFilter(CosMultipartRequestFilter.java:87)
at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:70)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
at info.magnolia.cms.filters.ContentTypeFilter.doFilter(ContentTypeFilter.java:90)
at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:70)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
at info.magnolia.cms.filters.ContextFilter.doFilter(ContextFilter.java:87)
at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:70)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
at info.magnolia.cms.filters.CompositeFilter.doFilter(CompositeFilter.java:64)
at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:70)
at info.magnolia.cms.filters.MgnlMainFilter.doFilter(MgnlMainFilter.java:96)
at info.magnolia.cms.filters.MgnlMainFilter.doFilter(MgnlMainFilter.java:199)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:875)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
at java.lang.Thread.run(Thread.java:619)
Caused by: javax.jcr.ItemNotFoundException: root node doesn't have a parent
at org.apache.jackrabbit.core.NodeImpl.getParent(NodeImpl.java:2122)
at info.magnolia.cms.core.DefaultContent.getParent(DefaultContent.java:368)
at info.magnolia.cms.util.ContentWrapper.getParent(ContentWrapper.java:275)
at info.magnolia.freemarker.models.ContentModel.getParentNode(ContentModel.java:143)
... 107 more



 Comments   
Comment by Magnolia International [ 24/Mar/10 ]

Duplicates MAGNOLIA-2945.
Patches most welcome, as usual.

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