Hi DIlan,

Could you provide the states involved in the transition?

Thank You,
Sameera

On Wed, Oct 22, 2014 at 4:27 PM, Chathura Dilan <[email protected]> wrote:

> 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
>



-- 
Sameera Medagammaddegedara
Software Engineer

Contact:
Email: [email protected]
Mobile: + 94 077 255 3005
_______________________________________________
Dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to