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 <[email protected]>
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
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to