JCRAdminTree throws NullPointerException when user has insufficient permissions 
on the types node
-------------------------------------------------------------------------------------------------

                 Key: MGNLDATA-47
                 URL: http://jira.magnolia-cms.com/browse/MGNLDATA-47
             Project: Magnolia Data Module
          Issue Type: Improvement
    Affects Versions: 1.2.1
            Reporter: Edgar Vonk
            Assignee: Philipp Bracher
         Attachments: screenshot-3.jpg

We have a dialog with an internal link field to the data module. This dialog is 
used by our editors which belong to our custom editors user role. We first had 
the problem that when these users try to create the link an error screen was 
shown (500 error) and the Tomcat localhost log showed:
{code}
Oct 23, 2008 2:37:23 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet default threw exception
java.lang.NullPointerException
        at 
info.magnolia.module.data.trees.JCRAdminTree$1.prepareTree(JCRAdminTree.java:87)
        at 
info.magnolia.module.admininterface.AdminTreeMVCHandler.renderTree(AdminTreeMVCHandler.java:787)
        at 
info.magnolia.module.admininterface.AdminTreeMVCHandler.renderHtml(AdminTreeMVCHandler.java:751)
        at info.magnolia.cms.servlets.MVCServlet.doPost(MVCServlet.java:125)
        at info.magnolia.cms.servlets.MVCServlet.doGet(MVCServlet.java:69)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at 
info.magnolia.cms.filters.ServletDispatchingFilter.doFilter(ServletDispatchingFilter.java:162)
        at 
info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:71)
        at 
info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:71)
        at 
info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:73)
        at 
info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:73)
        at 
info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:73)
        at 
info.magnolia.cms.filters.CompositeFilter.doFilter(CompositeFilter.java:64)
        at 
info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:71)
        at 
info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:71)
        at 
info.magnolia.cms.filters.VirtualUriFilter.doFilter(VirtualUriFilter.java:115)
        at 
info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:62)
        at 
info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:71)
        at 
info.magnolia.cms.i18n.I18nContentSupportFilter.doFilter(I18nContentSupportFilter.java:75)
        at 
info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:71)
        at 
info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:71)
        at 
info.magnolia.module.cache.executor.Bypass.processCacheRequest(Bypass.java:57)
        at 
info.magnolia.module.cache.filter.CacheFilter.doFilter(CacheFilter.java:118)
        at 
info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:62)
        at 
info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:71)
        at 
info.magnolia.module.cache.filter.GZipFilter.doFilter(GZipFilter.java:84)
        at 
info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:62)
        at 
info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:71)
        at 
info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:73)
        at 
info.magnolia.cms.filters.CosMultipartRequestFilter.doFilter(CosMultipartRequestFilter.java:84)
        at 
info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:71)
        at 
info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:71)
        at 
info.magnolia.cms.security.BaseSecurityFilter.doFilter(BaseSecurityFilter.java:61)
        at 
info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:71)
        at 
info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:71)
        at 
info.magnolia.cms.security.LogoutFilter.doFilter(LogoutFilter.java:81)
        at 
info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:62)
        at 
info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:71)
        at 
info.magnolia.cms.security.auth.login.LoginFilter.doFilter(LoginFilter.java:76)
        at 
info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:71)
        at 
info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:71)
        at 
info.magnolia.enterprise.registration.RegistrationFilter.doFilter(RegistrationFilter.java:50)
        at 
info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:71)
        at 
info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:71)
        at 
info.magnolia.cms.filters.ContentTypeFilter.doFilter(ContentTypeFilter.java:80)
        at 
info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:71)
        at 
info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:71)
        at 
info.magnolia.cms.filters.ContextFilter.doFilter(ContextFilter.java:72)
        at 
info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:71)
        at 
info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:71)
        at 
info.magnolia.cms.filters.CompositeFilter.doFilter(CompositeFilter.java:64)
        at 
info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:71)
        at 
info.magnolia.cms.filters.MgnlMainFilter.doFilter(MgnlMainFilter.java:97)
        at 
info.magnolia.cms.filters.MgnlMainFilter.doFilter(MgnlMainFilter.java:200)
        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:128)
        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:286)
        at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190)
        at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:283)
        at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:767)
        at 
org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:697)
        at 
org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:889)
        at 
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)
        at java.lang.Thread.run(Thread.java:619)
{code}

The problem lies in this code in the JCRAdminTree class:
{code}
Content types = ContentUtil.getContent(ContentRepository.CONFIG, 
DataConsts.TYPES_NODE_PATH);
                for (Iterator iter = 
types.getChildren(ItemType.CONTENTNODE).iterator(); iter.hasNext();) {
{code}

When the user in question has no read access to the 'types' node the second 
line results in a nullpointer. It would be nice to log a more informative 
message when 'types' is null? 

The solution was to provide read access to the types node in our editor role. 
See screenshot.



-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://jira.magnolia-cms.com/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

----------------------------------------------------------------
for list details see
http://www.magnolia-cms.com/home/community/mailing-lists.html
----------------------------------------------------------------

Reply via email to