Hi,

I'm getting the following exception when changing the life-cycle state ( to
Approve or Reject) in mobile publisher with reviewer role.

 JaggeryTravellingPermissionLifeCycle
org.wso2.carbon.registry.core.secure.AuthorizationFailedException: Resource
update failed. User rev is not authorized to update the resource
/_system/governance/mobileapps/pub/android/WSO2 App/1.0.
[2014-10-22 15:33:27,966] ERROR - GovernanceArtifactImpl Invoking lifecycle
action "Approve" failed
org.wso2.carbon.registry.core.exceptions.RegistryException: Resource update
failed. User rev is not authorized to update the resource
/_system/governance/mobileapps/pub/android/WSO2 App/1.0.
at
org.wso2.jaggery.scxml.aspects.JaggeryTravellingPermissionLifeCycle.invoke(JaggeryTravellingPermissionLifeCycle.java:510)
at
org.wso2.carbon.governance.registry.eventing.handlers.GovernanceEventingHandler.invokeAspect(GovernanceEventingHandler.java:243)
at
org.wso2.carbon.registry.core.jdbc.handlers.HandlerManager.invokeAspect(HandlerManager.java:2792)
at
org.wso2.carbon.registry.core.jdbc.handlers.HandlerLifecycleManager.invokeAspect(HandlerLifecycleManager.java:531)
at
org.wso2.carbon.registry.core.jdbc.EmbeddedRegistry.invokeAspect(EmbeddedRegistry.java:2550)
at
org.wso2.carbon.registry.core.caching.CacheBackedRegistry.invokeAspect(CacheBackedRegistry.java:427)
at
org.wso2.carbon.registry.core.session.UserRegistry.invokeAspect(UserRegistry.java:1930)
at
org.wso2.carbon.governance.api.common.dataobjects.GovernanceArtifactImpl.invokeAction(GovernanceArtifactImpl.java:625)
at
org.wso2.carbon.governance.api.common.dataobjects.GovernanceArtifactImpl.invokeAction(GovernanceArtifactImpl.java:605)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:126)
at org.mozilla.javascript.NativeJavaMethod.call(NativeJavaMethod.java:225)
at org.mozilla.javascript.optimizer.OptRuntime.call1(OptRuntime.java:32)
at org.mozilla.javascript.gen.artifacts_17._c_anonymous_21(artifacts:283)
at org.mozilla.javascript.gen.artifacts_17.call(artifacts)
at org.mozilla.javascript.optimizer.OptRuntime.call2(OptRuntime.java:42)
at
org.jaggeryjs.rhino.publisher.apis.v_1.c4._c_mobileAppsLifeCycleChange_24(/publisher/apis/v1/lifecycle_api_router.jag:473)
at
org.jaggeryjs.rhino.publisher.apis.v_1.c4.call(/publisher/apis/v1/lifecycle_api_router.jag)
at org.mozilla.javascript.optimizer.OptRuntime.callName(OptRuntime.java:63)
at
org.jaggeryjs.rhino.publisher.apis.v_1.c4._c_anonymous_9(/publisher/apis/v1/lifecycle_api_router.jag:138)
at
org.jaggeryjs.rhino.publisher.apis.v_1.c4.call(/publisher/apis/v1/lifecycle_api_router.jag)
at org.mozilla.javascript.optimizer.OptRuntime.call1(OptRuntime.java:32)
at
org.jaggeryjs.rhino.publisher.modules.c4._c_anonymous_12(/publisher/modules/router-g.js:183)
at
org.jaggeryjs.rhino.publisher.modules.c4.call(/publisher/modules/router-g.js)
at org.mozilla.javascript.optimizer.OptRuntime.call2(OptRuntime.java:42)
at
org.jaggeryjs.rhino.publisher.apis.v_1.c4._c_anonymous_1(/publisher/apis/v1/lifecycle_api_router.jag:438)
at
org.jaggeryjs.rhino.publisher.apis.v_1.c4.call(/publisher/apis/v1/lifecycle_api_router.jag)
at org.mozilla.javascript.ScriptRuntime.applyOrCall(ScriptRuntime.java:2430)
at org.mozilla.javascript.BaseFunction.execIdCall(BaseFunction.java:269)
at org.mozilla.javascript.IdFunctionObject.call(IdFunctionObject.java:97)
at org.mozilla.javascript.optimizer.OptRuntime.call2(OptRuntime.java:42)
at
org.jaggeryjs.rhino.publisher.modules.c6._c_anonymous_17(/publisher/modules/publisher.js:438)
at
org.jaggeryjs.rhino.publisher.modules.c6.call(/publisher/modules/publisher.js)
at org.mozilla.javascript.optimizer.OptRuntime.call0(OptRuntime.java:23)
at
org.mozilla.javascript.gen._store__server_js_8._c_anonymous_17([store]/server.js:271)
at org.mozilla.javascript.gen._store__server_js_8.call([store]/server.js)
at org.mozilla.javascript.optimizer.OptRuntime.call2(OptRuntime.java:42)
at
org.jaggeryjs.rhino.publisher.modules.c6._c_anonymous_16(/publisher/modules/publisher.js:433)
at
org.jaggeryjs.rhino.publisher.modules.c6.call(/publisher/modules/publisher.js)
at org.mozilla.javascript.optimizer.OptRuntime.callN(OptRuntime.java:52)
at
org.jaggeryjs.rhino.publisher.apis.v_1.c4._c_script_0(/publisher/apis/v1/lifecycle_api_router.jag:24)
at
org.jaggeryjs.rhino.publisher.apis.v_1.c4.call(/publisher/apis/v1/lifecycle_api_router.jag)
at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:394)
at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3091)
at
org.jaggeryjs.rhino.publisher.apis.v_1.c4.call(/publisher/apis/v1/lifecycle_api_router.jag)
at
org.jaggeryjs.rhino.publisher.apis.v_1.c4.exec(/publisher/apis/v1/lifecycle_api_router.jag)
at
org.jaggeryjs.scriptengine.engine.RhinoEngine.execScript(RhinoEngine.java:567)
at org.jaggeryjs.scriptengine.engine.RhinoEngine.exec(RhinoEngine.java:273)
at
org.jaggeryjs.jaggery.core.manager.WebAppManager.execute(WebAppManager.java:536)
at org.jaggeryjs.jaggery.core.JaggeryServlet.doPut(JaggeryServlet.java:39)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:758)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at
org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:749)
at
org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:487)
at
org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:379)
at
org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:339)
at org.jaggeryjs.jaggery.core.JaggeryFilter.doFilter(JaggeryFilter.java:21)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at
org.wso2.carbon.tomcat.ext.valves.CompositeValve.continueInvocation(CompositeValve.java:178)
at
org.wso2.carbon.tomcat.ext.valves.CarbonTomcatValve$1.invoke(CarbonTomcatValve.java:47)
at
org.wso2.carbon.webapp.mgt.TenantLazyLoaderValve.invoke(TenantLazyLoaderValve.java:56)
at
org.wso2.carbon.tomcat.ext.valves.TomcatValveContainer.invokeValves(TomcatValveContainer.java:47)
at
org.wso2.carbon.tomcat.ext.valves.CompositeValve.invoke(CompositeValve.java:141)
at
org.wso2.carbon.tomcat.ext.valves.CarbonStuckThreadDetectionValve.invoke(CarbonStuckThreadDetectionValve.java:156)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
at
org.wso2.carbon.tomcat.ext.valves.CarbonContextCreatorValve.invoke(CarbonContextCreatorValve.java:52)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
at
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
at
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1653)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)













Here the user rev is assigned to both publisher and reviewer role in the
publisher. I also applied the patches which is in ES 1.2.0, but no luck.

Here is the mobile life cycle











<aspect name="MobileAppLifeCycle"
class="org.wso2.jaggery.scxml.aspects.JaggeryTravellingPermissionLifeCycle">
    <configuration type="literal">
        <lifecycle>
            <scxml xmlns="http://www.w3.org/2005/07/scxml";
                   version="1.0"
                   initialstate="Initial">
                <state id='Initial'>
                    <datamodel>
                        <data name="transitionExecution">
                            <execution forEvent="Create"
class="org.wso2.jaggery.scxml.generic.GenericExecutor">
                                <parameter name="PERMISSION:get"
                                           value="
http://www.wso2.org/projects/registry/actions/get"/>
                                <parameter name="PERMISSION:add"
                                           value="
http://www.wso2.org/projects/registry/actions/add"/>
                                <parameter name="PERMISSION:delete"
                                           value="
http://www.wso2.org/projects/registry/actions/delete"/>
                                <parameter name="PERMISSION:authorize"
value="authorize"/>

                                <parameter name="STATE_RULE1:Created"

 value="Internal/private_{asset_author}:+add,+delete,+authorize"/>
                                <parameter name="STATE_RULE2:Created"
value="Internal/everyone:-add,-delete,-authorize"/>
                            </execution>
                        </data>
                    </datamodel>
                    <transition event="Create" target="Created"/>
                </state>
                <state id="Created">
                    <datamodel>
                        <data name="transitionExecution">
                            <execution forEvent="Submit"
class="org.wso2.jaggery.scxml.generic.GenericExecutor">
                                <parameter name="PERMISSION:get"
                                           value="
http://www.wso2.org/projects/registry/actions/get"/>
                                <parameter name="PERMISSION:add"
                                           value="
http://www.wso2.org/projects/registry/actions/add"/>
                                <parameter name="PERMISSION:delete"
                                           value="
http://www.wso2.org/projects/registry/actions/delete"/>
                                <parameter name="PERMISSION:authorize"
value="authorize"/>

                                <parameter name="STATE_RULE1:In-Review"

 value="Internal/private_{asset_author}:-add,-delete,-authorize"/>
                                <parameter name="STATE_RULE2:In-Review"
value="Internal/reviewer:+add,-delete,+authorize"/>
                                <parameter name="STATE_RULE3:In-Review"
value="Internal/everyone:-add,-delete,-authorize"/>
                            </execution>
                        </data>
                    </datamodel>
                    <transition event="Submit" target="In-Review"/>
                </state>
                <state id="In-Review">
                    <datamodel>
                        <data name="transitionExecution">
                            <execution forEvent="Approve"
class="org.wso2.jaggery.scxml.generic.GenericExecutor">
                                <parameter name="PERMISSION:get"
                                           value="
http://www.wso2.org/projects/registry/actions/get"/>
                                <parameter name="PERMISSION:add"
                                           value="
http://www.wso2.org/projects/registry/actions/add"/>
                                <parameter name="PERMISSION:delete"
                                           value="
http://www.wso2.org/projects/registry/actions/delete"/>
                                <parameter name="PERMISSION:authorize"
value="authorize"/>

                                <parameter name="STATE_RULE1:Approved"

 value="Internal/private_{asset_author}:+get,+add,-delete,+authorize"/>
                                <parameter name="STATE_RULE2:Approved"
value="Internal/reviewer:+add,+delete,+authorize"/>
                                <parameter name="STATE_RULE3:Approved"
value="Internal/everyone:-add,-delete,-authorize"/>
                            </execution>
                            <execution forEvent="Reject"
class="org.wso2.jaggery.scxml.generic.GenericExecutor">
                                <parameter name="PERMISSION:get"
                                           value="
http://www.wso2.org/projects/registry/actions/get"/>
                                <parameter name="PERMISSION:add"
                                           value="
http://www.wso2.org/projects/registry/actions/add"/>
                                <parameter name="PERMISSION:delete"
                                           value="
http://www.wso2.org/projects/registry/actions/delete"/>
                                <parameter name="PERMISSION:authorize"
value="authorize"/>

                                <parameter name="STATE_RULE1:Rejected"

 value="Internal/private_{asset_author}:+add,+delete,+authorize"/>
                                <parameter name="STATE_RULE2:Rejected"
value="Internal/reviewer:+add,+delete,+authorize"/>
                                <parameter name="STATE_RULE3:Rejected"
value="Internal/everyone:-add,-delete,-authorize"/>
                            </execution>
                        </data>
                    </datamodel>
                    <transition event="Approve" target="Approved"/>
                    <transition event="Reject" target="Rejected"/>
                </state>
                <state id="Approved">
                    <datamodel>
                        <data name="transitionExecution">
                            <execution forEvent="Publish"
class="org.wso2.jaggery.scxml.generic.GenericExecutor">
                                <parameter name="PERMISSION:get"
                                           value="
http://www.wso2.org/projects/registry/actions/get"/>
                                <parameter name="PERMISSION:add"
                                           value="
http://www.wso2.org/projects/registry/actions/add"/>
                                <parameter name="PERMISSION:delete"
                                           value="
http://www.wso2.org/projects/registry/actions/delete"/>
                                <parameter name="PERMISSION:authorize"
value="authorize"/>

                                <parameter name="STATE_RULE1:Published"

 value="Internal/private_{asset_author}:+add,+delete,+authorize"/>
                                <parameter name="STATE_RULE2:Published"

 value="Internal/reviewer:-add,-delete,-authorize"/>
                                <parameter name="STATE_RULE3:Published"

 value="Internal/everyone:-add,-delete,-authorize"/>
<parameter name="STATE_RULE3:Published"
value="system/wso2.anonymous.role:+get" />
                            </execution>
                        </data>
                    </datamodel>
                    <transition event="Publish" target="Published"/>
                </state>
                <state id="Rejected">
                    <datamodel>
                        <data name="transitionExecution">
                            <execution forEvent="Re-Submit"
class="org.wso2.jaggery.scxml.generic.GenericExecutor">
                                <parameter name="PERMISSION:get"
                                           value="
http://www.wso2.org/projects/registry/actions/get"/>
                                <parameter name="PERMISSION:add"
                                           value="
http://www.wso2.org/projects/registry/actions/add"/>
                                <parameter name="PERMISSION:delete"
                                           value="
http://www.wso2.org/projects/registry/actions/delete"/>
                                <parameter name="PERMISSION:authorize"
value="authorize"/>

                                <parameter name="STATE_RULE1:In-Review"

 value="Internal/private_{asset_author}:-add,-delete,-authorize"/>
                                <parameter name="STATE_RULE2:In-Review"
value="Internal/reviewer:+add,-delete,+authorize"/>
                                <parameter name="STATE_RULE3:In-Review"
value="Internal/everyone:-add,-delete,-authorize"/>
                            </execution>
                        </data>
                    </datamodel>
                    <transition event="Re-Submit" target="In-Review"/>
                </state>
                <state id="Published">
                    <datamodel>
                        <data name="transitionExecution">
                            <execution forEvent="Unpublish"
class="org.wso2.jaggery.scxml.generic.GenericExecutor">
                                <parameter name="PERMISSION:get"
                                           value="
http://www.wso2.org/projects/registry/actions/get"/>
                                <parameter name="PERMISSION:add"
                                           value="
http://www.wso2.org/projects/registry/actions/add"/>
                                <parameter name="PERMISSION:delete"
                                           value="
http://www.wso2.org/projects/registry/actions/delete"/>
                                <parameter name="PERMISSION:authorize"
value="authorize"/>

                                <parameter name="STATE_RULE1:Unpublished"

 value="Internal/private_{asset_author}:+add,-delete,+authorize"/>
                                <parameter name="STATE_RULE2:Unpublished"

 value="Internal/reviewer:-add,-delete,-authorize"/>
                                <parameter name="STATE_RULE3:Unpublished"

 value="Internal/everyone:-add,-delete,-authorize"/>
<parameter name="STATE_RULE3:Published"
value="system/wso2.anonymous.role:-get" />
                            </execution>
                            <execution forEvent="Deprecate"
class="org.wso2.jaggery.scxml.generic.GenericExecutor">
                                <parameter name="PERMISSION:get"
                                           value="
http://www.wso2.org/projects/registry/actions/get"/>
                                <parameter name="PERMISSION:add"
                                           value="
http://www.wso2.org/projects/registry/actions/add"/>
                                <parameter name="PERMISSION:delete"
                                           value="
http://www.wso2.org/projects/registry/actions/delete"/>
                                <parameter name="PERMISSION:authorize"
value="authorize"/>

                                <parameter name="STATE_RULE1:Deprecated"

 value="Internal/private_{asset_author}:+add,-delete,+authorize"/>
                                <parameter name="STATE_RULE2:Deprecated"

 value="Internal/reviewer:-add,-delete,-authorize"/>
                                <parameter name="STATE_RULE3:Deprecated"

 value="Internal/everyone:-add,-delete,-authorize"/>
<parameter name="STATE_RULE3:Published"
value="system/wso2.anonymous.role:-get" />
                            </execution>
                        </data>
                    </datamodel>
                    <transition event="Unpublish" target="Unpublished"/>
                    <transition event="Deprecate" target="Deprecated"/>
                </state>
                <state id="Unpublished">
                    <datamodel>
                        <data name="transitionExecution">
                            <execution forEvent="Publish"
class="org.wso2.jaggery.scxml.generic.GenericExecutor">
                                <parameter name="PERMISSION:get"
                                           value="
http://www.wso2.org/projects/registry/actions/get"/>
                                <parameter name="PERMISSION:add"
                                           value="
http://www.wso2.org/projects/registry/actions/add"/>
                                <parameter name="PERMISSION:delete"
                                           value="
http://www.wso2.org/projects/registry/actions/delete"/>
                                <parameter name="PERMISSION:authorize"
value="authorize"/>

                                <parameter name="STATE_RULE1:Published"

 value="Internal/private_{asset_author}:+add,-delete,+authorize"/>
                                <parameter name="STATE_RULE2:Published"

 value="Internal/reviewer:-add,-delete,-authorize"/>
                                <parameter name="STATE_RULE3:Published"

 value="Internal/everyone:-add,-delete,-authorize"/>
<parameter name="STATE_RULE3:Published"
value="system/wso2.anonymous.role:+get" />
                            </execution>
                            <execution forEvent="Retire"
class="org.wso2.jaggery.scxml.generic.GenericExecutor">
                                <parameter name="PERMISSION:get"
                                           value="
http://www.wso2.org/projects/registry/actions/get"/>
                                <parameter name="PERMISSION:add"
                                           value="
http://www.wso2.org/projects/registry/actions/add"/>
                                <parameter name="PERMISSION:delete"
                                           value="
http://www.wso2.org/projects/registry/actions/delete"/>
                                <parameter name="PERMISSION:authorize"
value="authorize"/>

                                <parameter name="STATE_RULE1:Retired"

 value="Internal/private_{asset_author}:-add,+delete,-authorize"/>
                                <parameter name="STATE_RULE2:Retired"
value="Internal/reviewer:-add,-delete,-authorize"/>
                                <parameter name="STATE_RULE3:Retired"
value="Internal/everyone:-add,-delete,-authorize"/>
<parameter name="STATE_RULE3:Published"
value="system/wso2.anonymous.role:-get" />
                            </execution>
                        </data>
                    </datamodel>
                    <transition event="Publish" target="Published"/>
                    <transition event="Retire" target="Retired"/>
                </state>
                <state id="Deprecated">
                    <datamodel>
                        <data name="transitionExecution">
                            <execution forEvent="Retire"
class="org.wso2.jaggery.scxml.generic.GenericExecutor">
                                <parameter name="PERMISSION:get"
                                           value="
http://www.wso2.org/projects/registry/actions/get"/>
                                <parameter name="PERMISSION:add"
                                           value="
http://www.wso2.org/projects/registry/actions/add"/>
                                <parameter name="PERMISSION:delete"
                                           value="
http://www.wso2.org/projects/registry/actions/delete"/>
                                <parameter name="PERMISSION:authorize"
value="authorize"/>

                                <parameter name="STATE_RULE1:Retired"

 value="Internal/private_{asset_author}:-add,+delete,-authorize"/>
                                <parameter name="STATE_RULE2:Retired"
value="Internal/reviewer:-add,-delete,-authorize"/>
                                <parameter name="STATE_RULE3:Retired"
value="Internal/everyone:-add,-delete,-authorize"/>
                            </execution>
                        </data>
                    </datamodel>
                    <transition event="Retire" target="Retired"/>
                </state>
                <state id="Retired"/>
            </scxml>
        </lifecycle>
    </configuration>
</aspect>




Any idea?


-- 
Regards,

Chatura Dilan Perera
*(Senior Software Engineer** - WSO2 Inc.* * [Mobile])*
www.dilan.me
_______________________________________________
Dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to