cancel
Showing results for 
Search instead for 
Did you mean: 

Custom UserManager and GroupManager Issue

pedwards
Champ on-the-rise
Champ on-the-rise
Hi Guys,

Hope someone can help. Not sure if this is a bug or what. I've created my own custom user and group managers, and the sessionfactories. I've setup the spring to load them. All good. They don't do anything, they are just debug wrapping the methods so I could see what was getting passed, with the aim of then integrating with own user management.

Now it all appears to work fine, I can still login as kermit (as well I should), however I'm seeing the following exception in the console. Any help gratefully received.

Thanks
Paul.


11:42:57,909 [http-bio-8080-exec-22] DEBUG com.contextspace.CustomUserManager  - findUserById called with userId: kermit
11:42:57,910 [http-bio-8080-exec-22] DEBUG com.contextspace.CustomUserManager  - Found user - id:kermit fullname:Kermit The Frog
11:42:57,911 [http-bio-8080-exec-22] DEBUG com.contextspace.CustomUserManager  - checkPassword called with userId: kermit passwd: kermit result: true
11:42:57,911 [http-bio-8080-exec-22] DEBUG com.contextspace.CustomUserManager  - CreateNewUserQuery called
11:42:57,912 [http-bio-8080-exec-22] DEBUG com.contextspace.CustomUserManager  - FindUserByQueryCriteria called, query: org.activiti.engine.impl.UserQueryImpl@885acc2 page: null
11:42:57,996 [http-bio-8080-exec-22] ERROR org.activiti.engine.impl.interceptor.CommandContext  - Error while closing command context
org.activiti.engine.ActivitiIllegalArgumentException: userId is null
   at org.activiti.engine.impl.cmd.GetUserPictureCmd.execute(GetUserPictureCmd.java:41)
   at org.activiti.engine.impl.cmd.GetUserPictureCmd.execute(GetUserPictureCmd.java:30)
   at org.activiti.engine.impl.interceptor.CommandExecutorImpl.execute(CommandExecutorImpl.java:24)
   at org.activiti.engine.impl.interceptor.CommandContextInterceptor.execute(CommandContextInterceptor.java:61)
   at org.activiti.spring.SpringTransactionInterceptor$1.doInTransaction(SpringTransactionInterceptor.java:42)
   at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:130)
   at org.activiti.spring.SpringTransactionInterceptor.execute(SpringTransactionInterceptor.java:40)
   at org.activiti.engine.impl.interceptor.LogInterceptor.execute(LogInterceptor.java:31)
   at org.activiti.engine.impl.IdentityServiceImpl.getUserPicture(IdentityServiceImpl.java:99)
   at org.activiti.explorer.ui.task.TaskEventsPanel.addTaskEventPicture(TaskEventsPanel.java:134)
   at org.activiti.explorer.ui.task.TaskEventsPanel.addTaskEvents(TaskEventsPanel.java:127)
   at org.activiti.explorer.ui.task.TaskEventsPanel.refreshTaskEvents(TaskEventsPanel.java:93)
   at org.activiti.explorer.ui.task.TaskEventsPanel.setTaskId(TaskEventsPanel.java:102)
   at org.activiti.explorer.ui.task.TaskPage.createDetailComponent(TaskPage.java:133)
   at org.activiti.explorer.ui.task.TaskPage$1.valueChange(TaskPage.java:117)
   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 com.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod.java:510)
   at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:164)
   at com.vaadin.ui.AbstractComponent.fireEvent(AbstractComponent.java:1219)
   at com.vaadin.ui.AbstractField.fireValueChange(AbstractField.java:897)
   at com.vaadin.ui.AbstractField.setValue(AbstractField.java:529)
   at com.vaadin.ui.AbstractSelect.setValue(AbstractSelect.java:676)
   at com.vaadin.ui.AbstractSelect.setValue(AbstractSelect.java:645)
   at com.vaadin.ui.Table.setValue(Table.java:3572)
   at com.vaadin.ui.AbstractSelect.select(AbstractSelect.java:1422)
   at org.activiti.explorer.ui.AbstractTablePage.selectElement(AbstractTablePage.java:81)
   at org.activiti.explorer.ui.task.TaskPage.initUi(TaskPage.java:70)
   at org.activiti.explorer.ui.AbstractPage.attach(AbstractPage.java:43)
   at com.vaadin.ui.AbstractComponent.setParent(AbstractComponent.java:560)
   at com.vaadin.ui.AbstractComponentContainer.addComponent(AbstractComponentContainer.java:211)
   at com.vaadin.ui.CssLayout.addComponent(CssLayout.java:95)
   at org.activiti.explorer.ui.mainlayout.MainLayout.setMainContent(MainLayout.java:58)
   at org.activiti.explorer.ui.MainWindow.switchView(MainWindow.java:79)
   at org.activiti.explorer.DefaultViewManager.switchView(DefaultViewManager.java:342)
   at org.activiti.explorer.DefaultViewManager.showInboxPage(DefaultViewManager.java:172)
   at org.activiti.explorer.DefaultViewManager.showDefaultPage(DefaultViewManager.java:90)
   at org.activiti.explorer.ui.login.LoginPage$ActivitiLoginListener.onLogin(LoginPage.java:101)
   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 com.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod.java:510)
   at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:164)
   at com.vaadin.ui.AbstractComponent.fireEvent(AbstractComponent.java:1219)
   at com.vaadin.ui.LoginForm$2.handleParameters(LoginForm.java:103)
   at com.vaadin.ui.Window.handleParameters(Window.java:515)
   at com.vaadin.terminal.gwt.server.AbstractApplicationServlet.service(AbstractApplicationServlet.java:528)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
   at org.activiti.explorer.filter.ExplorerFilter.doFilter(ExplorerFilter.java:44)
   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.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:947)
   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
   at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1009)
   at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
   at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
   at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
   at java.lang.Thread.run(Thread.java:619)

11 REPLIES 11

jbarrez
Star Contributor
Star Contributor
1. This query is a wrapper around the dynamic database query. You will need something similar for ldap (the activiti in action book has an example on this, the code is online available too)

2. Yes it would. Do note that Explorer is not ment to use in 'production'. From the user guide: ' The purpose of Explorer is not a finished, end-user ready application, but rather to excersise and show the functionality of Activiti. As such, Explorer is meant as a demo, or maybe inspiration for people using Activti in there own applications. '

You could tweak the TrieBasedUserCache however to have a hard limit. But out of the box, it wont have a hard limit.

pedwards
Champ on-the-rise
Champ on-the-rise
Thanks for that, no we aren't using the explorer in production, only interact via rest. However I was using the explorer as a quick way to test that the module was working. I will switch to using just rest for testing and see what I see.