[MGNLDMS-99] Creating custom tree configuration for DMS throws an error Created: 22/May/07  Updated: 10/Sep/08  Resolved: 10/Sep/08

Status: Closed
Project: Document Management System (closed)
Component/s: None
Affects Version/s: 1.2-m3
Fix Version/s: None

Type: Bug Priority: Major
Reporter: zam6ak Assignee: Magnolia International
Resolution: Cannot Reproduce Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
duplicate
duplicates MAGNOLIA-1538 Tree does not work if setPath() is us... Closed
relation
is related to MAGNOLIA-1537 AdminTreeMVCHandler could accept tree... Closed
Template:
Acceptance criteria:
Empty
Date of First Response:

 Description   

When trying to create a custom DMS tree configuration (to set the starting path) I get an error.
The same approach works for adminInterface trees but not in DMS trees

Steps:

1. create a custom tree config class:

public final class WwwDMSTreeConfiguration extends DMSAdminTreeConfig {
@Override
public void prepareTree(Tree pTree, boolean pBrowseMode, HttpServletRequest pRequest) {
if(pTree.getPath().equals("/"))

{ pTree.setPath("/www"); }

super.prepareTree(pTree, pBrowseMode, pRequest);
}
} // end of WwwDMSTreeConfiguration

2. copy /config/modules/dms/trees/dms to /config/modules/dms/trees/dms-test
3. change configurationClass in /config/modules/dms/trees/dms-test to above defined one
4. use dialog uuidLink control and specify the tree property as tree=dms-test

The above should have opened DMS tree at the location /www but instead I get the following exception:

ERROR org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/magnolia-cms].[AdminTreeServlet] 22.05.2007 15:58:41 – Servlet.service() for servlet AdminTreeServlet threw exception
java.lang.NullPointerException
at info.magnolia.module.admininterface.AdminTreeMVCHandler.renderHtml(AdminTreeMVCHandler.java:718)
at info.magnolia.cms.servlets.MVCServlet.doPost(MVCServlet.java:112)
at info.magnolia.cms.servlets.MVCServlet.doGet(MVCServlet.java:48)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:697)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at info.magnolia.cms.filters.MagnoliaFilterChain.doFilter(MagnoliaFilterChain.java:42)
at info.magnolia.cms.filters.MagnoliaFilterChain.doFilter(MagnoliaFilterChain.java:50)
at info.magnolia.cms.filters.MultipartRequestFilter.doFilter(MultipartRequestFilter.java:59)
at info.magnolia.cms.filters.AbstractMagnoliaFilter.doFilter(AbstractMagnoliaFilter.java:46)
at info.magnolia.cms.filters.MagnoliaFilterChain.doFilter(MagnoliaFilterChain.java:48)
at info.magnolia.cms.filters.MgnlVirtualUriFilter.doFilter(MgnlVirtualUriFilter.java:54)
at info.magnolia.cms.filters.AbstractMagnoliaFilter.doFilter(AbstractMagnoliaFilter.java:46)
at info.magnolia.cms.filters.MagnoliaFilterChain.doFilter(MagnoliaFilterChain.java:48)
at info.magnolia.cms.cache.CacheFilter.doFilter(CacheFilter.java:97)
at info.magnolia.cms.filters.AbstractMagnoliaFilter.doFilter(AbstractMagnoliaFilter.java:46)
at info.magnolia.cms.filters.MagnoliaFilterChain.doFilter(MagnoliaFilterChain.java:48)
at info.magnolia.cms.i18n.I18NSupportFilter.doFilter(I18NSupportFilter.java:46)
at info.magnolia.cms.filters.AbstractMagnoliaFilter.doFilter(AbstractMagnoliaFilter.java:46)
at info.magnolia.cms.filters.MagnoliaFilterChain.doFilter(MagnoliaFilterChain.java:48)
at info.magnolia.cms.security.BaseSecurityFilter.doFilter(BaseSecurityFilter.java:40)
at info.magnolia.cms.filters.AbstractMagnoliaFilter.doFilter(AbstractMagnoliaFilter.java:46)
at info.magnolia.cms.filters.MagnoliaFilterChain.doFilter(MagnoliaFilterChain.java:48)
at info.magnolia.cms.security.auth.login.LoginFilter.doFilter(LoginFilter.java:61)
at info.magnolia.cms.filters.AbstractMagnoliaFilter.doFilter(AbstractMagnoliaFilter.java:46)
at info.magnolia.cms.filters.MagnoliaFilterChain.doFilter(MagnoliaFilterChain.java:48)
at info.magnolia.cms.security.BaseSecurityFilter.doFilter(BaseSecurityFilter.java:40)
at info.magnolia.cms.filters.AbstractMagnoliaFilter.doFilter(AbstractMagnoliaFilter.java:46)
at info.magnolia.cms.filters.MagnoliaFilterChain.doFilter(MagnoliaFilterChain.java:48)
at info.magnolia.cms.filters.ContentTypeFilter.doFilter(ContentTypeFilter.java:47)
at info.magnolia.cms.filters.AbstractMagnoliaFilter.doFilter(AbstractMagnoliaFilter.java:46)
at info.magnolia.cms.filters.MagnoliaFilterChain.doFilter(MagnoliaFilterChain.java:48)
at info.magnolia.cms.filters.MgnlContextFilter.doFilter(MgnlContextFilter.java:40)
at info.magnolia.cms.filters.AbstractMagnoliaFilter.doFilter(AbstractMagnoliaFilter.java:46)
at info.magnolia.cms.filters.MagnoliaFilterChain.doFilter(MagnoliaFilterChain.java:48)
at info.magnolia.cms.filters.MagnoliaMainFilter.doFilter(MagnoliaMainFilter.java:97)
at info.magnolia.cms.filters.AbstractMagnoliaFilter.doFilter(AbstractMagnoliaFilter.java:46)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:175)
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:74)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.jboss.web.tomcat.tc5.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:156)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112)
at java.lang.Thread.run(Thread.java:619)



 Comments   
Comment by Magnolia International [ 10/Sep/08 ]

The following works just fine for me:

public class MyDmsTreeConfig extends DMSAdminTreeConfig {

    public void prepareTree(Tree tree, boolean browseMode, HttpServletRequest request) {

        if (tree.getPath().equals("/")) {
            tree.setPath("/demo-docs");
        }

        super.prepareTree(tree, browseMode, request);
    }
}

... but I'm guessing you've been stumbling across the same issue I just had: when you define a tree, the tree handler class will use the name property of this tree as the repository/workspace name if you don't add a repository property. And if like me you copied the dms tree to create your custom one and give it, say, the "dms-custom" name, the instanciation of the Tree fails miserably because no repository/workspace with name "dms-custom" exists. Add a repository property with value dms and it'll work !

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