History | Log In     View a printable version of the current page.  
Issue Details (XML | Word | Printable)

Key: JAHIA-2193
Type: Bug Bug
Status: Closed Closed
Resolution: Fixed
Priority: Major Major
Assignee: Xavier Lawrence
Reporter: Stephane Croisier
Votes: 0
Watchers: 0
Operations

If you were logged in you would be able to see more operations.
Jahia Web Content Management Server (WCMS)

Sp3: Read-only engine error at org.jahia.jsp.jahia.war.jsp.jahia.engines.shared.readonly_005fpage_005ffield_jsp._jspService(readonly_005fpage_005ffield_jsp.java:185)

Created: 23/Aug/07 16:06   Updated: 21/Jan/08 17:41
Component/s: Edition Pop-ups / Engines
Affects Version/s: WCM 5.0 SP3
Fix Version/s: WCM 5.0 SP3

Time Tracking:
Not Specified

File Attachments: None
Image Attachments:

1. screenshot-1.jpg
(84 kb)

2. screenshot-2.jpg
(182 kb)

3. screenshot-2.jpg
(182 kb)
Environment: Sp3 18246

Commercial Support: None


 Description  « Hide
I got a strange error with a user.

I imported the online demo (available on QA/Test) on the Corpv1. I validated the whole site sith root. Then I logued myself with the "steven" user and I notify the Steven's home page in the "home page" section. I finally validated this page. Then from my home page (in edit mode) I opened in update mode another section in the thopbar (directory). The page field was not instantiating correctly (notuing in the page field - cf screenshot) and I got this exception:



2007-08-23 16:04:53,062: INFO [org.jahia.bin.Jahia] - Processed [/jahia/Jahia/op/edit/lang/fr/pid/27] user=[steven] ip=[127.0.0.1] in [125ms]
2007-08-23 16:04:54,140: INFO [org.jahia.ajax.actionmenus.GetMenuItemsAction] - ProcessMenuRequest: objectType=ContentContainer, objectID=90, definitionID=8, parentID=4, pageID=27
2007-08-23 16:04:55,468: ERROR [org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/jahia].[org.jahia.jsp.jahia.war.jsp.jahia.engines.shared.readonly_005fpage_005ffield_jsp]] - "Servlet.service()" pour la servlet org.jahia.jsp.jahia.war.jsp.jahia.engines.shared.readonly_005fpage_005ffiel
d_jsp a lancΘ une exception
java.lang.NullPointerException
        at org.jahia.jsp.jahia.war.jsp.jahia.engines.shared.readonly_005fpage_005ffield_jsp._jspService(readonly_005fpage_005ffield_jsp.java:185)
        at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672)
        at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:574)
        at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:499)
        at org.jahia.services.fetchers.JahiaFetcherBaseService.fetchServlet(JahiaFetcherBaseService.java:113)
        at org.jahia.services.fetchers.JahiaFetcherBaseService$$FastClassByCGLIB$$f46e2225.invoke(<generated>)
        at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
        at org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:661)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:122)
        at org.springframework.aop.interceptor.AbstractTraceInterceptor.invoke(AbstractTraceInterceptor.java:80)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:144)
        at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:606)
        at org.jahia.services.fetchers.JahiaFetcherBaseService$$EnhancerByCGLIB$$ba67c6b0.fetchServlet(<generated>)
        at org.jahia.engines.shared.Page_Field.composeEngineMap(Page_Field.java:347)
        at org.jahia.engines.shared.Page_Field.handleField(Page_Field.java:128)
        at org.jahia.engines.EngineToolBox.processFieldTypes(EngineToolBox.java:132)
        at org.jahia.data.fields.FieldsEditHelperAbstract.processCurrentFields(FieldsEditHelperAbstract.java:403)
        at org.jahia.engines.updatecontainer.UpdateContainer_Engine.processCurrentScreen(UpdateContainer_Engine.java:523)
        at org.jahia.engines.updatecontainer.UpdateContainer_Engine.handleActions(UpdateContainer_Engine.java:244)
        at org.jahia.engines.updatecontainer.UpdateContainer_Engine.handleActions(UpdateContainer_Engine.java:162)
        at org.jahia.operations.valves.EngineValve.processEngineRequest(EngineValve.java:196)
        at org.jahia.operations.valves.EngineValve.invoke(EngineValve.java:96)
        at org.jahia.pipelines.impl.GenericPipeline.invokeNext(GenericPipeline.java:208)
        at org.jahia.operations.valves.J2ProcessActionValve.invoke(J2ProcessActionValve.java:144)
        at org.jahia.pipelines.impl.GenericPipeline.invokeNext(GenericPipeline.java:208)
        at org.jahia.operations.valves.CacheReadValve.invoke(CacheReadValve.java:65)
        at org.jahia.pipelines.impl.GenericPipeline.invokeNext(GenericPipeline.java:208)
        at org.jahia.operations.valves.PageAccessCheckValve.invoke(PageAccessCheckValve.java:64)
        at org.jahia.pipelines.impl.GenericPipeline.invokeNext(GenericPipeline.java:208)
        at org.jahia.operations.valves.OperationModeCheckValve.invoke(OperationModeCheckValve.java:83)
        at org.jahia.pipelines.impl.GenericPipeline.invokeNext(GenericPipeline.java:208)
        at org.jahia.operations.valves.SiteCheckValve.invoke(SiteCheckValve.java:78)
        at org.jahia.pipelines.impl.GenericPipeline.invokeNext(GenericPipeline.java:208)
        at org.jahia.operations.valves.EsiFragmentCacheReadValve.invoke(EsiFragmentCacheReadValve.java:326)
        at org.jahia.pipelines.impl.GenericPipeline.invokeNext(GenericPipeline.java:208)
        at org.jahia.operations.valves.EsiUrlCookieCheckValve.invoke(EsiUrlCookieCheckValve.java:313)
        at org.jahia.pipelines.impl.GenericPipeline.invokeNext(GenericPipeline.java:208)
        at org.jahia.pipelines.impl.GenericPipeline.invoke(GenericPipeline.java:195)
        at org.jahia.operations.OperationManager.handleOperations(OperationManager.java:100)
        at org.jahia.bin.JahiaAction.execute(JahiaAction.java:72)
        at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
        at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:226)
        at org.jahia.bin.JahiaRequestProcessor.process(JahiaRequestProcessor.java:82)
        at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
        at org.jahia.bin.Jahia.process(Jahia.java:1615)
        at org.jahia.bin.Jahia.service(Jahia.java:844)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at org.jahia.bin.filters.esi.ESIFilter.doFilter(ESIFilter.java:110)
        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.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:432)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
        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.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
        at java.lang.Thread.run(Thread.java:619)
2007-08-23 16:04:55,484: INFO [org.jahia.bin.Jahia] - Processed [/jahia/Jahia/engineName/updatecontainer/op/edit/pid/27] user=[steven] ip=[127.0.0.1] in [31ms]
2007-08-23 16:04:57,312: INFO [org.jahia.bin.Jahia] - Processed [/jahia/Jahia/engineName/updatecontainer/op/edit/pid/27] user=[steven] ip=[127.0.0.1] in [31ms]
2007-08-23 16:04:57,609: INFO [org.jahia.bin.Jahia] - Processed [/jahia/Jahia/op/edit/lang/fr/pid/27] user=[steven] ip=[127.0.0.1] in [156ms]



 All   Comments   Work Log   Change History      Sort Order: Ascending order - Click to sort in descending order
Stephane Croisier - 23/Aug/07 16:12
In fact this error occurs on all update container on the parent object when a user has no permissions on prior objects (so the user has no edit right on the home page and only on sub-pages then the page feild engine crashes in all cases when trying to update the first container he is authorized to modify)

Xavier Lawrence - 28/Aug/07 15:14
The problem is actually an ACL problem I believe.

Create a user john
Create some sub-pages to the home pages. User john should only have access to the sub-pages and not the home page.
Try to update one of the sub-pages container in the top navigation link and you will get the exception.

The problem is that in the stackTrace, JSP readonly_pageField is called. This should not be the case since user john does have Write access on the container.

The problem occurs in the Page_Field.java class, in the following lines.

       boolean editable = false;
        JahiaContainer theContainer = (JahiaContainer) engineMap.get(fieldsEditCallingEngineName + "." + "theContainer");
        if (theContainer == null) {
            // in case of a field , not a field in a container
            editable = true;
        } else {
            FieldsEditHelper feh = (FieldsEditHelper) engineMap.get(fieldsEditCallingEngineName + "."
                    + FieldsEditHelperAbstract.FIELDS_EDIT_HELPER_CONTEXTID);
            HashMap ctnListFieldAcls = feh.getCtnListFieldAcls();
            int fieldId = theField.getID();
            if (theContainer.getListID() != 0 && ctnListFieldAcls != null && ctnListFieldAcls.size()>0) {
                JahiaBaseACL acl = JahiaEngineTools.getCtnListFieldACL(ctnListFieldAcls, fieldId);
                if (acl != null) {
                    editable = acl.getPermission(jParams.getUser(), JahiaBaseACL.WRITE_RIGHTS, true);
                }
            } else {
                editable = true;
            }
        }