Hi Shabir, As I can remember this issue occurs due to the difference in the APIs of the newer and the older versions of "carbon" jaggery module. Latest version of the module uses *tenant Id *as the input parameter to *carbon.user.UserManager(...) *method, where as older version uses *tenant domain *as the input parameter. The product you are using is more likely to be using the older version of the module.
Regards, Supun On Fri, May 15, 2015 at 11:23 PM, Shabir Mohamed <[email protected]> wrote: > Hi, > > I'm developing a webapp using the core jaggery modules. Im trying to add a > new user to the carbon user store via my "Sign Up" page. Im using the ' > *carbon*' jaggery module for this purpose. > > In the process of adding a new user, I get a *"null"* parameter error [1] > when I call the following line of code: > > *var tenantId = carbon.server.tenantId();* > * var url = getAddress('https') + "/admin/services";* > * var server = new carbon.server.Server(url);* > > * var userManager = new carbon.user.UserManager(server, tenantId); * > > I looked into the source of the *"user-manager.js"* which is located at - > */modules/carbon/scripts/user.* > > The error occurs as a result of this part of the source: > > * var UserManager = function (serv, tenant) {* > * tenant = tenant || > server.superTenant.domain;* > * this.server = serv;* > *this.tenantId = > server.tenantId({* > * domain: tenant* > * });* > * .........................* > > In the call for the *"server.tenantId"* in the above code, *domain* is > passed in with the value of "*tenant*" which is the *carbon.super* id of > *"-1234" > *and not an actual domain-name*.* > > As a result *tenant.js *found inside */modules/carbon/scripts/server/ > *returns > *"-1" [return domain ? tenantManager.getTenantId(domain)] *which is set to* > this.tenantId *inside *"user-manager.js"**.* > > This error is carried onto the following sections of the code *(inside > user-manager.js)* and the code breaks at: > > *var realmService = > server.osgiService('org.wso2.carbon.user.core.service.RealmService'),* > * realm = realmService.getTenantUserRealm(this.tenantId); > // returns null* > * this.manager = realm.getUserStoreManager(); > ** // below mentioned [1] error occurs* > > The return from *realmService.getTenantUserRealm(this.tenantId) *is > *"null"*, given that there is no actual tenant id of *"-1"*. > > ------------------------------------------------------------------------------------------- > > This error has been evaded in the *"carbon" *module included in some of > our products [Ex: MDM] by simply removing the line thats causing the error > and only leaving the following: > > * var UserManager = function (serv, tenant) {* > * tenant = tenant || > server.superTenant.domain;* > * this.server = serv;* > ........................ > * .........................* > > However, I worked around this issue by simple replacing *"tenant" *that > is passed in as *domain, *with *"server.superTenant.domain":* > > * var UserManager = function (serv, tenant) {* > * this.tenant = tenant || server.superTenant.domain;* > * this.server = serv;* > > * this.tenantId = server.tenantId({* > * domain: server.superTenant.domain* > * });* > ........................ > * .........................* > > > > Please do let me know if I am missing anything important here. > Thanks! > > > *[1]* > [2015-05-15 21:16:49,912] ERROR > {org.jaggeryjs.scriptengine.engine.RhinoEngine} - > org.mozilla.javascript.EcmaError: TypeError: Cannot call method > "getUserStoreManager" of null (user-manager#39) > [2015-05-15 21:16:49,912] ERROR > {org.jaggeryjs.jaggery.core.manager.WebAppManager} - > org.mozilla.javascript.EcmaError: TypeError: Cannot call method > "getUserStoreManager" of null (user-manager#39) > org.jaggeryjs.scriptengine.exceptions.ScriptException: > org.mozilla.javascript.EcmaError: TypeError: Cannot call method > "getUserStoreManager" of null (user-manager#39) > at > org.jaggeryjs.scriptengine.engine.RhinoEngine.execScript(RhinoEngine.java:582) > at org.jaggeryjs.scriptengine.engine.RhinoEngine.exec(RhinoEngine.java:280) > at > org.jaggeryjs.jaggery.core.manager.WebAppManager.execute(WebAppManager.java:432) > at org.jaggeryjs.jaggery.core.JaggeryServlet.doPost(JaggeryServlet.java:29) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:755) > 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.invoke(CompositeValve.java:177) > at > org.wso2.carbon.tomcat.ext.valves.CarbonStuckThreadDetectionValve.invoke(CarbonStuckThreadDetectionValve.java:161) > at > org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936) > at > org.wso2.carbon.tomcat.ext.valves.CarbonContextCreatorValve.invoke(CarbonContextCreatorValve.java:57) > 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) > Caused by: org.mozilla.javascript.EcmaError: TypeError: Cannot call method > "getUserStoreManager" of null (user-manager#39) > at > org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3687) > at > org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3665) > at org.mozilla.javascript.ScriptRuntime.typeError(ScriptRuntime.java:3693) > at org.mozilla.javascript.ScriptRuntime.typeError2(ScriptRuntime.java:3712) > at > org.mozilla.javascript.ScriptRuntime.undefCallError(ScriptRuntime.java:3731) > at > org.mozilla.javascript.ScriptRuntime.getPropFunctionAndThisHelper(ScriptRuntime.java:2258) > at > org.mozilla.javascript.ScriptRuntime.getPropFunctionAndThis(ScriptRuntime.java:2251) > at > org.mozilla.javascript.optimizer.OptRuntime.callProp0(OptRuntime.java:83) > at > org.mozilla.javascript.gen.user_manager_13._c_anonymous_3(user-manager:39) > at org.mozilla.javascript.gen.user_manager_13.call(user-manager) > at org.mozilla.javascript.BaseFunction.construct(BaseFunction.java:338) > at org.mozilla.javascript.ScriptRuntime.newObject(ScriptRuntime.java:2349) > at > org.jaggeryjs.rhino.login.controller.c0._c_script_0(/login/controller/register-user.jag:49) > at > org.jaggeryjs.rhino.login.controller.c0.call(/login/controller/register-user.jag) > at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:394) > at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3091) > at > org.jaggeryjs.rhino.login.controller.c0.call(/login/controller/register-user.jag) > at > org.jaggeryjs.rhino.login.controller.c0.exec(/login/controller/register-user.jag) > at > org.jaggeryjs.scriptengine.engine.RhinoEngine.execScript(RhinoEngine.java:577) > ... 31 more > > > ------------------------------------- > *Shabir Mohamed* > *Software Engineer* > WSO2 Inc.; http://wso2.com > Email: [email protected] <[email protected]> > Mobile: +94 77 3516019 | +94 71 6583393 > > > _______________________________________________ > Dev mailing list > [email protected] > http://wso2.org/cgi-bin/mailman/listinfo/dev > > -- *Supun Sethunga* Software Engineer WSO2, Inc. http://wso2.com/ lean | enterprise | middleware Mobile : +94 716546324
_______________________________________________ Dev mailing list [email protected] http://wso2.org/cgi-bin/mailman/listinfo/dev
