[MGNLUI-185] Content workbench fails when root is different than "/" Created: 19/Nov/12  Updated: 11/Feb/13  Resolved: 26/Nov/12

Status: Closed
Project: Magnolia UI
Component/s: content app
Affects Version/s: 5.0
Fix Version/s: 5.0

Type: Bug Priority: Blocker
Reporter: Jozef Chocholacek Assignee: Federico Grilli
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
relation
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   

If the workbench's root is set to a value different than "/", sub-app start fails with the following exception:

2012-11-19 13:06:02,384 WARN  info.magnolia.ui.framework.event.SimpleEventBus   : Exception caught when dispatching event: javax.jcr.PathNotFoundException: /demo-project/demo-project
info.magnolia.jcr.RuntimeRepositoryException: javax.jcr.PathNotFoundException: /demo-project/demo-project
	at info.magnolia.ui.admincentral.tree.container.HierarchicalJcrContainer.isRoot(HierarchicalJcrContainer.java:150)
	at info.magnolia.ui.admincentral.tree.view.WorkbenchTreeTable.select(WorkbenchTreeTable.java:78)
	at info.magnolia.ui.admincentral.tree.view.TreeViewImpl.select(TreeViewImpl.java:143)
	at info.magnolia.ui.admincentral.content.view.ContentPresenter.initContentView(ContentPresenter.java:97)
	at info.magnolia.ui.admincentral.workbench.ContentWorkbenchPresenter.start(ContentWorkbenchPresenter.java:125)
	at info.magnolia.ui.admincentral.app.content.AbstractContentSubApp.start(AbstractContentSubApp.java:104)
	at info.magnolia.ui.admincentral.app.simple.AppControllerImpl$AppContextImpl.startSubApp(AppControllerImpl.java:521)
	at info.magnolia.ui.admincentral.app.simple.AppControllerImpl$AppContextImpl.openSubApp(AppControllerImpl.java:491)
	at info.magnolia.ui.framework.app.AbstractApp.start(AbstractApp.java:59)
	at info.magnolia.ui.admincentral.app.simple.AppControllerImpl$AppContextImpl.start(AppControllerImpl.java:415)
	at info.magnolia.ui.admincentral.app.simple.AppControllerImpl.doStartIfNotAlreadyRunning(AppControllerImpl.java:196)
	at info.magnolia.ui.admincentral.app.simple.AppControllerImpl.onLocationChanged(AppControllerImpl.java:248)
	at info.magnolia.ui.framework.location.LocationChangedEvent.dispatch(LocationChangedEvent.java:64)
	at info.magnolia.ui.framework.location.LocationChangedEvent.dispatch(LocationChangedEvent.java:42)
	at info.magnolia.ui.framework.event.SimpleEventBus.fireEvent(SimpleEventBus.java:76)
	at info.magnolia.ui.framework.location.LocationController.goToWithoutChecks(LocationController.java:103)
	at info.magnolia.ui.framework.location.LocationController.goTo(LocationController.java:97)
	at info.magnolia.ui.admincentral.MagnoliaShell$2.invoke(MagnoliaShell.java:122)
	at org.vaadin.rpc.ServerSideProxy.receiveFromClient(ServerSideProxy.java:91)
	at org.vaadin.rpc.ServerSideProxy.changeVariables(ServerSideProxy.java:282)
	at info.magnolia.ui.vaadin.magnoliashell.BaseMagnoliaShell.changeVariables(BaseMagnoliaShell.java:252)
	at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.changeVariables(AbstractCommunicationManager.java:1460)
	at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.handleVariableBurst(AbstractCommunicationManager.java:1404)
	at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.handleVariables(AbstractCommunicationManager.java:1329)
	at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.doHandleUidlRequest(AbstractCommunicationManager.java:761)
	at com.vaadin.terminal.gwt.server.CommunicationManager.handleUidlRequest(CommunicationManager.java:323)
	at info.magnolia.ui.vaadin.integration.servlet.MultipleBrowserWindowsApplicationServlet$CustomCommunicationManager.handleUidlRequest(MultipleBrowserWindowsApplicationServlet.java:283)
	at com.vaadin.terminal.gwt.server.AbstractApplicationServlet.service(AbstractApplicationServlet.java:501)
	at info.magnolia.ui.vaadin.integration.servlet.MagnoliaIcePushServlet.service(MagnoliaIcePushServlet.java:110)
	at info.magnolia.ui.vaadin.integration.servlet.MultipleBrowserWindowsApplicationServlet.service(MultipleBrowserWindowsApplicationServlet.java:144)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	at info.magnolia.cms.filters.ServletDispatchingFilter.doFilter(ServletDispatchingFilter.java:123)
	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.MgnlFilterChain.doFilter(MgnlFilterChain.java:85)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:85)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:85)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:85)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:85)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:85)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:85)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:85)
	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.MgnlFilterChain.doFilter(MgnlFilterChain.java:83)
	at info.magnolia.cms.filters.VirtualUriFilter.doFilter(VirtualUriFilter.java:70)
	at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:91)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:83)
	at info.magnolia.module.cache.executor.Bypass.processCacheRequest(Bypass.java:58)
	at info.magnolia.module.cache.executor.CompositeExecutor.processCacheRequest(CompositeExecutor.java:66)
	at info.magnolia.module.cache.filter.CacheFilter.doFilter(CacheFilter.java:153)
	at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:61)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:83)
	at info.magnolia.cms.i18n.I18nContentSupportFilter.doFilter(I18nContentSupportFilter.java:76)
	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.RangeSupportFilter.doFilter(RangeSupportFilter.java:86)
	at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:91)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:83)
	at info.magnolia.cms.security.BaseSecurityFilter.doFilter(BaseSecurityFilter.java:60)
	at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:91)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:83)
	at info.magnolia.cms.security.SecurityCallbackFilter.doFilter(SecurityCallbackFilter.java:86)
	at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:61)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:83)
	at info.magnolia.cms.security.LogoutFilter.doFilter(LogoutFilter.java:93)
	at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:61)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:83)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:85)
	at info.magnolia.module.templatingkit.filters.SiteMergeFilter.doFilter(SiteMergeFilter.java:99)
	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.MultiChannelFilter.doFilter(MultiChannelFilter.java:83)
	at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:61)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:83)
	at info.magnolia.module.cache.filter.GZipFilter.doFilter(GZipFilter.java:75)
	at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:61)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:83)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:85)
	at info.magnolia.cms.security.auth.login.LoginFilter.doFilter(LoginFilter.java:93)
	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.MgnlFilterChain.doFilter(MgnlFilterChain.java:85)
	at info.magnolia.module.devicedetection.filter.DeviceDetectionFilter.doFilter(DeviceDetectionFilter.java:73)
	at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:61)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:83)
	at info.magnolia.cms.filters.ContentTypeFilter.doFilter(ContentTypeFilter.java:102)
	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.ContextFilter.doFilter(ContextFilter.java:131)
	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.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.StandardContextValve.invoke(StandardContextValve.java)
	at org.apache.catalina.core.StandardHostValve.__invoke(StandardHostValve.java:127)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java)
	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:298)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
	at java.lang.Thread.run(Thread.java:680)
Caused by: javax.jcr.PathNotFoundException: /demo-project/demo-project
	at org.apache.jackrabbit.core.ItemManager.getItem(ItemManager.java:552)
	at org.apache.jackrabbit.core.session.SessionItemOperation$4.perform(SessionItemOperation.java:97)
	at org.apache.jackrabbit.core.session.SessionItemOperation$4.perform(SessionItemOperation.java:93)
	at org.apache.jackrabbit.core.session.SessionItemOperation.perform(SessionItemOperation.java:187)
	at org.apache.jackrabbit.core.session.SessionState.perform(SessionState.java:216)
	at org.apache.jackrabbit.core.SessionImpl.perform(SessionImpl.java:361)
	at org.apache.jackrabbit.core.SessionImpl.getItem(SessionImpl.java:786)
	at info.magnolia.jcr.wrapper.DelegateSessionWrapper.getItem(DelegateSessionWrapper.java:154)
	at info.magnolia.jcr.wrapper.DelegateSessionWrapper.getItem(DelegateSessionWrapper.java:154)
	at info.magnolia.ui.admincentral.tree.container.HierarchicalJcrContainer.getItemByPath(HierarchicalJcrContainer.java:244)
	at info.magnolia.ui.admincentral.tree.container.HierarchicalJcrContainer.isRoot(HierarchicalJcrContainer.java:147)
	... 114 more

It doesn't matter whether the root is set by JCR or using configuration-by-code.



 Comments   
Comment by Jozef Chocholacek [ 19/Nov/12 ]

It looks that the root value is somehow doubled, i.e. if I set it to "/demo-project", the workbench looks for "/demo-project/demo-project", or if I set it to "/admin", workbench looks for "/admin/admin", etc.

Comment by Jozef Chocholacek [ 23/Nov/12 ]

The reason is IMHO that items in the workbench are represented by their absolute JCR path and not by the path relative to the workbench's root.

Generated at Mon Feb 12 08:34:25 CET 2024 using Jira 9.4.2#940002-sha1:46d1a51de284217efdcb32434eab47a99af2938b.