Hi, I think you can use the method described in the jaggery docs [1] as well. Also this does not include the getUserListOfRole method, but I see that GayanD has done the changes for it[2].
[1] http://jaggeryjs.org/documentation.jag?api=UserManager [2] [Dev] [Jaggery] Adding getUserListOfRole to the user-manager.js On Thu, May 7, 2015 at 2:22 PM, Sajith Ariyarathna <sajit...@wso2.com> wrote: > I tried different approaches with > org.wso2.carbon.user.api.UserStoreManager OSGi service, however I > couldn't overcome the NullPointerException. I think one must initialize > the UserStoreManager service before using it, but couldn't find an > initializing method. > > *Solution:* > Instead of using UserStoreManager OSGi service, I used > org.wso2.carbon.user.core.service.RealmService OSGi service. Using the > RealmService you can get TenantUserRealm object for a given tenant ID. > From that you can get an UserStoreManager object. This object (usManager) > has all functionality of UserStoreManager OSGi service. Refer following > sample code. > > > var carbon = require('carbon'); > var store = require('store'); > var server = store.server; > > function test(role){ > var realmService = > carbon.server.osgiService('org.wso2.carbon.user.core.service.RealmService'); > var tenantId = server.current(session).tenantId; > var usManager = > realmService.getTenantUserRealm(tenantId).getUserStoreManager(); > return usManager.getUserListOfRole(role); > } > > > > Thanks & regards. > > On Tue, Apr 21, 2015 at 10:52 AM, Sajith Ariyarathna <sajit...@wso2.com> > wrote: > >> I'm developing a web app for AppM and I want to do some user management >> tasks. >> >> - retrieving all users for a given role >> - retrieving claims of a given user >> >> To accomplish above tasks, I want to call getUserListOfRole() method & >> getUserClaimValues() method in the org.wso2.carbon.user.api.UserStoreManager >> OSGi service. I wrote my Jaggery code as following based on [1] & [2]. >> >> routeManager.register('GET', 'publisher', >> '/publisher/api/provisioning/users/{role}', function (context) { >> log.info("### in API call"); >> var role = context.params.role; >> var carbon = require('carbon'); >> var userService = >> carbon.server.osgiService('org.wso2.carbon.user.api.UserStoreManager'); >> log.info("### acquired OSGi service"); >> *#30* var usrs = userService.getUserListOfRole(role); >> >> print(usrs); >> }); >> >> Above code gives me a NullPointerException. >> >> [2015-04-21 10:40:02,575] INFO - provisioning_api_router:jag ### in API >> call >> [2015-04-21 10:40:02,579] INFO - provisioning_api_router:jag ### >> acquired OSGi service >> [2015-04-21 10:40:02,583] ERROR - WebAppManager >> org.mozilla.javascript.WrappedException: Wrapped >> java.lang.NullPointerException >> (/publisher/apis/v1/provisioning_api_router.jag#30) >> org.jaggeryjs.scriptengine.exceptions.ScriptException: >> org.mozilla.javascript.WrappedException: Wrapped >> java.lang.NullPointerException >> (/publisher/apis/v1/provisioning_api_router.jag#30) >> at >> org.jaggeryjs.scriptengine.engine.RhinoEngine.execScript(RhinoEngine.java:571) >> 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.doGet(JaggeryServlet.java:24) >> at javax.servlet.http.HttpServlet.service(HttpServlet.java:735) >> at javax.servlet.http.HttpServlet.service(HttpServlet.java:848) >> at >> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) >> at >> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) >> at >> org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:748) >> at >> org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:486) >> at >> org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:378) >> at >> org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:338) >> at >> org.jaggeryjs.jaggery.core.JaggeryFilter.doFilter(JaggeryFilter.java:21) >> at >> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) >> at >> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) >> at >> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) >> at >> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) >> at >> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501) >> at >> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) >> at >> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) >> 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:950) >> at >> org.wso2.carbon.tomcat.ext.valves.CarbonContextCreatorValve.invoke(CarbonContextCreatorValve.java:52) >> at >> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) >> at >> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) >> at >> org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070) >> at >> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611) >> at >> org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1736) >> at >> org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1695) >> at >> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) >> at >> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) >> at >> org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) >> at java.lang.Thread.run(Thread.java:662) >> Caused by: org.mozilla.javascript.WrappedException: Wrapped >> java.lang.NullPointerException >> (/publisher/apis/v1/provisioning_api_router.jag#30) >> at >> org.mozilla.javascript.Context.throwAsScriptRuntimeEx(Context.java:1754) >> at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:148) >> at >> org.mozilla.javascript.NativeJavaMethod.call(NativeJavaMethod.java:225) >> at >> org.mozilla.javascript.optimizer.OptRuntime.call1(OptRuntime.java:32) >> at >> org.jaggeryjs.rhino.publisher.apis.v_1.c1._c_anonymous_3(/publisher/apis/v1/provisioning_api_router.jag:30) >> at >> org.jaggeryjs.rhino.publisher.apis.v_1.c1.call(/publisher/apis/v1/provisioning_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.c1._c_anonymous_1(/publisher/apis/v1/provisioning_api_router.jag:45) >> at >> org.jaggeryjs.rhino.publisher.apis.v_1.c1.call(/publisher/apis/v1/provisioning_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_18._c_anonymous_17([store]/server.js:271) >> at >> org.mozilla.javascript.gen._store__server_js_18.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.c1._c_script_0(/publisher/apis/v1/provisioning_api_router.jag:4) >> at >> org.jaggeryjs.rhino.publisher.apis.v_1.c1.call(/publisher/apis/v1/provisioning_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.c1.call(/publisher/apis/v1/provisioning_api_router.jag) >> at >> org.jaggeryjs.rhino.publisher.apis.v_1.c1.exec(/publisher/apis/v1/provisioning_api_router.jag) >> at >> org.jaggeryjs.scriptengine.engine.RhinoEngine.execScript(RhinoEngine.java:567) >> ... 37 more >> Caused by: java.lang.NullPointerException >> at >> org.wso2.carbon.user.core.util.UserCoreUtil.getDomainName(UserCoreUtil.java:487) >> at >> org.wso2.carbon.user.core.common.AbstractUserStoreManager.getUserStore(AbstractUserStoreManager.java:2385) >> at >> org.wso2.carbon.user.core.common.AbstractUserStoreManager.isExistingRole(AbstractUserStoreManager.java:1574) >> at >> org.wso2.carbon.user.core.common.AbstractUserStoreManager.getUserListOfRole(AbstractUserStoreManager.java:2018) >> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >> at >> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) >> at >> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) >> at java.lang.reflect.Method.invoke(Method.java:597) >> at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:126) >> ... 67 more >> >> Even calling a method with no parameters, such as getRoleNames() gives >> a NullPointerException. >> >> routeManager.register('GET', 'publisher', >> '/publisher/api/provisioning/users/{role}', function (context) { >> log.info("### in API call"); >> var role = context.params.role; >> var carbon = require('carbon'); >> var userService = >> carbon.server.osgiService('org.wso2.carbon.user.api.UserStoreManager'); >> log.info("### acquired OSGi service"); >> #30 var usrs = userService.getRoleNames(); >> >> print(usrs); >> }); >> >> [2015-04-21 10:45:24,083] INFO - provisioning_api_router:jag ### in API >> call >> [2015-04-21 10:45:24,084] INFO - provisioning_api_router:jag ### >> acquired OSGi service >> [2015-04-21 10:45:24,085] ERROR - WebAppManager >> org.mozilla.javascript.WrappedException: Wrapped >> java.lang.NullPointerException >> (/publisher/apis/v1/provisioning_api_router.jag#30) >> org.jaggeryjs.scriptengine.exceptions.ScriptException: >> org.mozilla.javascript.WrappedException: Wrapped >> java.lang.NullPointerException >> (/publisher/apis/v1/provisioning_api_router.jag#30) >> at >> org.jaggeryjs.scriptengine.engine.RhinoEngine.execScript(RhinoEngine.java:571) >> 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.doGet(JaggeryServlet.java:24) >> at javax.servlet.http.HttpServlet.service(HttpServlet.java:735) >> at javax.servlet.http.HttpServlet.service(HttpServlet.java:848) >> at >> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) >> at >> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) >> at >> org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:748) >> at >> org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:486) >> at >> org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:378) >> at >> org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:338) >> at >> org.jaggeryjs.jaggery.core.JaggeryFilter.doFilter(JaggeryFilter.java:21) >> at >> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) >> at >> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) >> at >> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) >> at >> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) >> at >> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501) >> at >> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) >> at >> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) >> 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:950) >> at >> org.wso2.carbon.tomcat.ext.valves.CarbonContextCreatorValve.invoke(CarbonContextCreatorValve.java:52) >> at >> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) >> at >> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) >> at >> org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070) >> at >> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611) >> at >> org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1736) >> at >> org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1695) >> at >> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) >> at >> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) >> at >> org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) >> at java.lang.Thread.run(Thread.java:662) >> Caused by: org.mozilla.javascript.WrappedException: Wrapped >> java.lang.NullPointerException >> (/publisher/apis/v1/provisioning_api_router.jag#30) >> at >> org.mozilla.javascript.Context.throwAsScriptRuntimeEx(Context.java:1754) >> at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:148) >> at >> org.mozilla.javascript.NativeJavaMethod.call(NativeJavaMethod.java:225) >> at >> org.mozilla.javascript.optimizer.OptRuntime.callProp0(OptRuntime.java:85) >> at >> org.jaggeryjs.rhino.publisher.apis.v_1.c1._c_anonymous_3(/publisher/apis/v1/provisioning_api_router.jag:30) >> at >> org.jaggeryjs.rhino.publisher.apis.v_1.c1.call(/publisher/apis/v1/provisioning_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.c1._c_anonymous_1(/publisher/apis/v1/provisioning_api_router.jag:45) >> at >> org.jaggeryjs.rhino.publisher.apis.v_1.c1.call(/publisher/apis/v1/provisioning_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_18._c_anonymous_17([store]/server.js:271) >> at >> org.mozilla.javascript.gen._store__server_js_18.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.c1._c_script_0(/publisher/apis/v1/provisioning_api_router.jag:4) >> at >> org.jaggeryjs.rhino.publisher.apis.v_1.c1.call(/publisher/apis/v1/provisioning_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.c1.call(/publisher/apis/v1/provisioning_api_router.jag) >> at >> org.jaggeryjs.rhino.publisher.apis.v_1.c1.exec(/publisher/apis/v1/provisioning_api_router.jag) >> at >> org.jaggeryjs.scriptengine.engine.RhinoEngine.execScript(RhinoEngine.java:567) >> ... 37 more >> Caused by: java.lang.NullPointerException >> at >> org.wso2.carbon.user.core.common.AbstractUserStoreManager.getRoleNames(AbstractUserStoreManager.java:2555) >> at >> org.wso2.carbon.user.core.common.AbstractUserStoreManager.getRoleNames(AbstractUserStoreManager.java:2489) >> at >> org.wso2.carbon.user.core.common.AbstractUserStoreManager.getRoleNames(AbstractUserStoreManager.java:2482) >> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >> at >> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) >> at >> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) >> at java.lang.reflect.Method.invoke(Method.java:597) >> at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:126) >> ... 67 more >> >> >> Any help on this matter is greatly appreciated. >> >> [1] >> https://github.com/wso2/product-app-manager/blob/master/modules/jaggery-apps/app-publisher-web/apis/v1/lifecycle_api_router.jag#L306 >> <https://github.com/sajithar/product-app-manager/blob/provisioning/modules/jaggery-apps/app-publisher-web/apis/v1/lifecycle_api_router.jag#L325> >> [2] >> http://supunsetunga.blogspot.com/2014/12/calling-osgi-services-from-jaggery-app.html >> >> Thanks & Regards. >> -- >> Sajith Ariyarathna >> Software Engineer; WSO2, Inc.; http://wso2.com/ >> mobile: +94 77 6602284, +94 71 3951048 >> > > > > -- > Sajith Ariyarathna > Software Engineer; WSO2, Inc.; http://wso2.com/ > mobile: +94 77 6602284, +94 71 3951048 > > _______________________________________________ > Dev mailing list > Dev@wso2.org > http://wso2.org/cgi-bin/mailman/listinfo/dev > > -- Thanks and Regards *,Shani Ranasinghe* Senior Software Engineer WSO2 Inc.; http://wso2.com lean.enterprise.middleware mobile: +94 77 2273555 linked in: lk.linkedin.com/pub/shani-ranasinghe/34/111/ab
_______________________________________________ Dev mailing list Dev@wso2.org http://wso2.org/cgi-bin/mailman/listinfo/dev