Description
How to reproduce (Internal Directory):
1. Create a user named user&user
2. Create a group named mygroup&group
3. Add the user to the group
Results:
1. Crowd will say that the operation was successful, but will not show the user as a member of the group in the UI.
2. Opening the User/Group profile and then accessing the Groups/Members tab, the membership is not displayed.
3. Looking at the database, the user is a member of the group.
Some Crowd admins reported that the problem is also happening if the user don't have '&' in the name. The group having it would be enough to see the problem.
The logs report:
2010-04-20 16:05:19,656 http-8095-5 ERROR [console.action.principal.UpdateGroups] Failed to find entity of type [com.atlassian.crowd.integration.model.group.InternalGroup] with identifier [name <mygroup>, directoryId <32769>] com.atlassian.crowd.integration.exception.ObjectNotFoundException: Failed to find entity of type [com.atlassian.crowd.integration.model.group.InternalGroup] with identifier [name <mygroup>, directoryId <32769>] at com.atlassian.crowd.model.group.GroupDAOHibernate.findByName(GroupDAOHibernate.java:52) at com.atlassian.crowd.integration.directory.internal.InternalDirectory.findGroupByName(InternalDirectory.java:561) at com.atlassian.crowd.manager.directory.DirectoryManagerGeneric.findGroupByName(DirectoryManagerGeneric.java:379) at com.atlassian.crowd.manager.directory.DirectoryManagerGeneric.addUserToGroup(DirectoryManagerGeneric.java:563) 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:592) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310) at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149) at com.atlassian.spring.interceptors.SpringProfilingInterceptor.invoke(SpringProfilingInterceptor.java:20) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) at $Proxy10.addUserToGroup(Unknown Source) at com.atlassian.crowd.console.action.principal.UpdateGroups.doAddGroups(UpdateGroups.java:26) 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:592)
So, it seems that the search queries are ignoring the everything after the special char (including it).