-
Bug
-
Resolution: Fixed
-
Neutral
-
4.5.6
-
None
-
Linux, Tomcat
Hi,
We have a page that uses the jsp-taglib:
<@cmsu.simpleNavigation startLevel=3 endLevel=4 style="tsVerticalNavigation" wrapperElement="span"/>
This causes an exception to be thrown:
2013-01-18 14:57:20,193 ERROR magnolia.templating.jsp.taglib.SimpleNavigationTag: Failed to obtain parent page for /sitepage-se/privat/kontakt/telefon/content/02
javax.jcr.ItemNotFoundException: Root node doesn't have a parent
at org.apache.jackrabbit.core.NodeImpl$6.perform(NodeImpl.java:1712)
at org.apache.jackrabbit.core.NodeImpl$6.perform(NodeImpl.java:1705)
at org.apache.jackrabbit.core.session.SessionState.perform(SessionState.java:216)
at org.apache.jackrabbit.core.ItemImpl.perform(ItemImpl.java:91)
at org.apache.jackrabbit.core.NodeImpl.getParent(NodeImpl.java:1705)
at info.magnolia.jcr.wrapper.DelegateNodeWrapper.getParent(DelegateNodeWrapper.java:484)
at info.magnolia.jcr.wrapper.I18nNodeWrapper.getParent(I18nNodeWrapper.java:87)
at info.magnolia.cms.core.DefaultContent.getParent(DefaultContent.java:343)
at info.magnolia.templating.jsp.taglib.SimpleNavigationTag.doEndTag(SimpleNavigationTag.java:360)
at freemarker.ext.jsp.TagTransformModel$TagWriter.endEvaluation(TagTransformModel.java:430)
at freemarker.ext.jsp.TagTransformModel$TagWriter.onStart(TagTransformModel.java:369)
at freemarker.core.Environment.visit(Environment.java:307)
at freemarker.core.UnifiedCall.accept(UnifiedCall.java:130)
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.rendering.renderer.FreemarkerRenderer.onRender(FreemarkerRenderer.java:85)
at info.magnolia.rendering.renderer.AbstractRenderer.render(AbstractRenderer.java:139)
at info.magnolia.rendering.engine.DefaultRenderingEngine.render(DefaultRenderingEngine.java:97)
at info.magnolia.rendering.engine.DefaultRenderingEngine$$EnhancerByCGLIB$$1424ba6.render(<generated>)
at info.magnolia.templating.elements.ComponentElement.begin(ComponentElement.java:151)
at info.magnolia.templating.freemarker.AbstractDirective.execute(AbstractDirective.java:93)
at freemarker.core.Environment.visit(Environment.java:274)
....
What I can see while debugging the SimpleNavigationTag class is that it looks for the page node that is closest to the component:
while (!ItemType.CONTENT.getSystemName().equals(activePage.getNodeTypeName()) && activePage.getParent() != null) { activePage = activePage.getParent(); }
Since the page cannot be found it will use the node: /sitepage-se/privat/kontakt/telefon/content/02 instead of /sitepage-se/privat/kontakt/telefon to compare if a page should be highlighted or not.
But page nodes have the jcr item type mgnl:page and not mgnl:content, or am I mistaken?. Perhaps something like this would fix the problem?
while (!ItemType.PAGE.getSystemName().equals(activePage.getNodeTypeName()) && activePage.getParent() != null) { activePage = activePage.getParent(); }
Might be related to MAGNOLIA-4725
Acceptance criteria