[exo-jcr-commits] exo-jcr SVN: r5148 - in core/trunk: exo.core.component.organization.jdbc/src/main/java/org/exoplatform/services/organization/hibernate and 5 other directories.
do-not-reply at jboss.org
do-not-reply at jboss.org
Wed Nov 2 08:45:28 EDT 2011
Author: tolusha
Date: 2011-11-02 08:45:26 -0400 (Wed, 02 Nov 2011)
New Revision: 5148
Modified:
core/trunk/exo.core.component.organization.api/src/main/java/org/exoplatform/services/organization/impl/GroupImpl.java
core/trunk/exo.core.component.organization.api/src/main/java/org/exoplatform/services/organization/impl/MembershipImpl.java
core/trunk/exo.core.component.organization.api/src/main/java/org/exoplatform/services/organization/impl/MembershipTypeImpl.java
core/trunk/exo.core.component.organization.api/src/main/java/org/exoplatform/services/organization/impl/UserImpl.java
core/trunk/exo.core.component.organization.api/src/main/java/org/exoplatform/services/organization/impl/UserProfileImpl.java
core/trunk/exo.core.component.organization.jdbc/src/main/java/org/exoplatform/services/organization/hibernate/MembershipDAOImpl.java
core/trunk/exo.core.component.organization.ldap/pom.xml
core/trunk/exo.core.component.organization.ldap/src/main/java/org/exoplatform/services/organization/ldap/GroupDAOImpl.java
core/trunk/exo.core.component.organization.ldap/src/main/java/org/exoplatform/services/organization/ldap/LdapListAccess.java
core/trunk/exo.core.component.organization.ldap/src/main/java/org/exoplatform/services/organization/ldap/MembershipDAOImpl.java
core/trunk/exo.core.component.organization.ldap/src/main/java/org/exoplatform/services/organization/ldap/MembershipTypeDAOImpl.java
core/trunk/exo.core.component.organization.ldap/src/main/java/org/exoplatform/services/organization/ldap/OrganizationServiceImpl.java
core/trunk/exo.core.component.organization.ldap/src/main/java/org/exoplatform/services/organization/ldap/UserDAOImpl.java
core/trunk/exo.core.component.organization.ldap/src/test/java/org/exoplatform/services/organization/DummyLDAPServiceImpl.java
core/trunk/exo.core.component.organization.ldap/src/test/resources/conf/standalone/test-configuration.xml
core/trunk/exo.core.component.organization.tests/src/main/java/org/exoplatform/services/tck/organization/TestMembershipHandler.java
core/trunk/exo.core.component.organization.tests/src/main/java/org/exoplatform/services/tck/organization/TestUserHandler.java
Log:
EXOJCR-1609: adop LDAPOrgService
Modified: core/trunk/exo.core.component.organization.api/src/main/java/org/exoplatform/services/organization/impl/GroupImpl.java
===================================================================
--- core/trunk/exo.core.component.organization.api/src/main/java/org/exoplatform/services/organization/impl/GroupImpl.java 2011-11-02 10:59:39 UTC (rev 5147)
+++ core/trunk/exo.core.component.organization.api/src/main/java/org/exoplatform/services/organization/impl/GroupImpl.java 2011-11-02 12:45:26 UTC (rev 5148)
@@ -30,7 +30,7 @@
/**
* @hibernate.class table="EXO_GROUP"
*/
-public class GroupImpl implements Group
+public class GroupImpl implements Group, Cloneable
{
private String id;
@@ -144,4 +144,19 @@
{
return "Group[" + id + "|" + groupName + "]";
}
+
+ /**
+ * {@inheritDoc}
+ */
+ public Object clone()
+ {
+ GroupImpl gi = new GroupImpl(groupName);
+
+ gi.setDescription(desc);
+ gi.setId(id);
+ gi.setLabel(label);
+ gi.setParentId(parentId);
+
+ return gi;
+ }
}
Modified: core/trunk/exo.core.component.organization.api/src/main/java/org/exoplatform/services/organization/impl/MembershipImpl.java
===================================================================
--- core/trunk/exo.core.component.organization.api/src/main/java/org/exoplatform/services/organization/impl/MembershipImpl.java 2011-11-02 10:59:39 UTC (rev 5147)
+++ core/trunk/exo.core.component.organization.api/src/main/java/org/exoplatform/services/organization/impl/MembershipImpl.java 2011-11-02 12:45:26 UTC (rev 5148)
@@ -23,7 +23,7 @@
/**
* @hibernate.class table="EXO_MEMBERSHIP"
*/
-public class MembershipImpl implements Membership
+public class MembershipImpl implements Membership, Cloneable
{
private String id = null;
@@ -97,4 +97,18 @@
{
return "Membership[" + id + "]";
}
+
+ /**
+ * {@inheritDoc}
+ */
+ public Object clone()
+ {
+ MembershipImpl mi = new MembershipImpl();
+ mi.setGroupId(groupId);
+ mi.setId(id);
+ mi.setMembershipType(membershipType);
+ mi.setUserName(userName);
+
+ return mi;
+ }
}
Modified: core/trunk/exo.core.component.organization.api/src/main/java/org/exoplatform/services/organization/impl/MembershipTypeImpl.java
===================================================================
--- core/trunk/exo.core.component.organization.api/src/main/java/org/exoplatform/services/organization/impl/MembershipTypeImpl.java 2011-11-02 10:59:39 UTC (rev 5147)
+++ core/trunk/exo.core.component.organization.api/src/main/java/org/exoplatform/services/organization/impl/MembershipTypeImpl.java 2011-11-02 12:45:26 UTC (rev 5148)
@@ -28,7 +28,7 @@
*
* @hibernate.class table="EXO_MEMBERSHIP_TYPE"
*/
-public class MembershipTypeImpl implements MembershipType
+public class MembershipTypeImpl implements MembershipType, Cloneable
{
private String name;
@@ -116,4 +116,16 @@
{
modifiedDate = d;
}
+
+ /**
+ * {@inheritDoc}
+ */
+ public Object clone()
+ {
+ MembershipTypeImpl type = new MembershipTypeImpl(name, owner, description);
+ type.setCreatedDate(createdDate);
+ type.setModifiedDate(modifiedDate);
+
+ return type;
+ }
}
Modified: core/trunk/exo.core.component.organization.api/src/main/java/org/exoplatform/services/organization/impl/UserImpl.java
===================================================================
--- core/trunk/exo.core.component.organization.api/src/main/java/org/exoplatform/services/organization/impl/UserImpl.java 2011-11-02 10:59:39 UTC (rev 5147)
+++ core/trunk/exo.core.component.organization.api/src/main/java/org/exoplatform/services/organization/impl/UserImpl.java 2011-11-02 12:45:26 UTC (rev 5148)
@@ -25,7 +25,7 @@
/**
* @hibernate.class table="EXO_USER"
*/
-public class UserImpl implements User
+public class UserImpl implements User, Cloneable
{
private String id = null;
@@ -186,4 +186,22 @@
this.organizationId = organizationId;
}
+ /**
+ * {@inheritDoc}
+ */
+ public Object clone()
+ {
+ UserImpl ui = new UserImpl(userName);
+
+ ui.setId(id);
+ ui.setCreatedDate(createdDate);
+ ui.setEmail(email);
+ ui.setFirstName(firstName);
+ ui.setLastLoginTime(lastLoginTime);
+ ui.setLastName(lastName);
+ ui.setOrganizationId(organizationId);
+ ui.setPassword(password);
+
+ return ui;
+ }
}
Modified: core/trunk/exo.core.component.organization.api/src/main/java/org/exoplatform/services/organization/impl/UserProfileImpl.java
===================================================================
--- core/trunk/exo.core.component.organization.api/src/main/java/org/exoplatform/services/organization/impl/UserProfileImpl.java 2011-11-02 10:59:39 UTC (rev 5147)
+++ core/trunk/exo.core.component.organization.api/src/main/java/org/exoplatform/services/organization/impl/UserProfileImpl.java 2011-11-02 12:45:26 UTC (rev 5148)
@@ -27,7 +27,7 @@
* Created by The eXo Platform SAS Author : Mestrallet Benjamin
* benjmestrallet at users.sourceforge.net Date: Aug 21, 2003 Time: 3:22:54 PM
*/
-public class UserProfileImpl implements UserProfile
+public class UserProfileImpl implements UserProfile, Cloneable
{
private String userName;
@@ -85,4 +85,12 @@
{
return attributes;
}
+
+ /**
+ * {@inheritDoc}
+ */
+ public Object clone()
+ {
+ return new UserProfileImpl(userName, attributes);
+ }
}
Modified: core/trunk/exo.core.component.organization.jdbc/src/main/java/org/exoplatform/services/organization/hibernate/MembershipDAOImpl.java
===================================================================
--- core/trunk/exo.core.component.organization.jdbc/src/main/java/org/exoplatform/services/organization/hibernate/MembershipDAOImpl.java 2011-11-02 10:59:39 UTC (rev 5147)
+++ core/trunk/exo.core.component.organization.jdbc/src/main/java/org/exoplatform/services/organization/hibernate/MembershipDAOImpl.java 2011-11-02 12:45:26 UTC (rev 5148)
@@ -365,7 +365,7 @@
List memberships = session.createQuery(queryFindMembership).setString(0, id).list();
if (memberships.size() == 0)
{
- return null;
+ throw new Exception("No membership with id: " + id + "found.");
}
else if (memberships.size() == 1)
{
@@ -373,7 +373,7 @@
}
else
{
- throw new Exception("Expect 0 or 1 membership but found" + memberships.size());
+ throw new Exception("Found more than 1 membership: " + memberships.size());
}
// Membership membership =
// (Membership) session.createQuery(queryFindMembership).setString(0,
Modified: core/trunk/exo.core.component.organization.ldap/pom.xml
===================================================================
--- core/trunk/exo.core.component.organization.ldap/pom.xml 2011-11-02 10:59:39 UTC (rev 5147)
+++ core/trunk/exo.core.component.organization.ldap/pom.xml 2011-11-02 12:45:26 UTC (rev 5148)
@@ -162,18 +162,23 @@
<name>orgservice.test.configuration.file</name>
<value>/conf/standalone/test-configuration.xml</value>
</property>
+ <!--
+ This property allow to define if we should skip testing
+ login and logaout time processing
+ -->
+ <property>
+ <name>orgservice.test.configuration.skipDateTests</name>
+ <value>true</value>
+ </property>
</systemProperties>
+
<includes>
<include>org/exoplatform/services/tck/organization/Test*.java</include>
</includes>
<excludes>
- <!--
- Temporary excluded, to investigate cause of failures and errors.
+ <!--
+ Excluded, as this class has no tests to be run
-->
- <exclude>org/exoplatform/services/tck/organization/Test*.java</exclude>
- <!--
- Excluded as this class has no tests to be run
- -->
<exclude>**/AbstractOrganizationServiceTest.java</exclude>
<!--
Not a unit test.
Modified: core/trunk/exo.core.component.organization.ldap/src/main/java/org/exoplatform/services/organization/ldap/GroupDAOImpl.java
===================================================================
--- core/trunk/exo.core.component.organization.ldap/src/main/java/org/exoplatform/services/organization/ldap/GroupDAOImpl.java 2011-11-02 10:59:39 UTC (rev 5147)
+++ core/trunk/exo.core.component.organization.ldap/src/main/java/org/exoplatform/services/organization/ldap/GroupDAOImpl.java 2011-11-02 12:45:26 UTC (rev 5148)
@@ -22,11 +22,11 @@
import org.exoplatform.services.log.ExoLogger;
import org.exoplatform.services.log.Log;
import org.exoplatform.services.organization.CacheHandler;
+import org.exoplatform.services.organization.CacheHandler.CacheType;
import org.exoplatform.services.organization.Group;
import org.exoplatform.services.organization.GroupEventListener;
import org.exoplatform.services.organization.GroupEventListenerHandler;
import org.exoplatform.services.organization.GroupHandler;
-import org.exoplatform.services.organization.CacheHandler.CacheType;
import org.exoplatform.services.organization.impl.GroupImpl;
import java.util.ArrayList;
@@ -121,6 +121,10 @@
*/
public void addChild(Group parent, Group child, boolean broadcast) throws Exception
{
+ if (parent != null && findGroupById(parent.getId()) == null)
+ {
+ throw new Exception("Trying to add group " + child + ", but it's parent " + parent + ", does not exists.");
+ }
setId(parent, child);
String searchBase = createSubDN(parent);
String groupDN = ldapAttrMapping.groupDNKey + "=" + child.getGroupName() + "," + searchBase;
@@ -141,18 +145,27 @@
if (results.hasMore())
{
if (LOG.isDebugEnabled())
+ {
LOG.debug("Group " + child + ", parent " + parent + " already exists. ");
- return;
+ }
+ throw new Exception("Group " + child + ", parent " + parent + " already exists. ");
}
GroupImpl group = (GroupImpl)child;
if (broadcast)
+ {
preSave(group, true);
+ }
+
ctx.createSubcontext(groupDN, ldapAttrMapping.groupToAttributes(child));
+ cacheHandler.put(child.getId(), group, CacheType.GROUP);
+
if (broadcast)
+ {
postSave(group, true);
+ }
- cacheHandler.put(child.getId(), group, CacheType.GROUP);
+
return;
}
catch (NamingException e)
@@ -244,8 +257,11 @@
if (!results.hasMoreElements())
{
if (LOG.isDebugEnabled())
- LOG.debug("Nothing for removing, group " + group);
- return group;
+ {
+ LOG.debug("Nothing to remove, group " + group + " is not found.");
+ }
+
+ throw new NameNotFoundException("Nothing to remove, group " + group + " is not found.");
}
SearchResult sr = results.next();
@@ -305,8 +321,13 @@
groups.clear();
try
{
+ String userDN = getDNFromUsername(ctx, userName);
+ if (userDN == null)
+ {
+ return groups;
+ }
String filter =
- "(&(" + ldapAttrMapping.membershipTypeMemberValue + "=" + getDNFromUsername(ctx, userName) + ")("
+ "(&(" + ldapAttrMapping.membershipTypeMemberValue + "=" + userDN + ")("
+ ldapAttrMapping.membershipTypeRoleNameAttr + "=" + membershipType + "))";
SearchControls constraints = new SearchControls();
constraints.setSearchScope(SearchControls.SUBTREE_SCOPE);
Modified: core/trunk/exo.core.component.organization.ldap/src/main/java/org/exoplatform/services/organization/ldap/LdapListAccess.java
===================================================================
--- core/trunk/exo.core.component.organization.ldap/src/main/java/org/exoplatform/services/organization/ldap/LdapListAccess.java 2011-11-02 10:59:39 UTC (rev 5147)
+++ core/trunk/exo.core.component.organization.ldap/src/main/java/org/exoplatform/services/organization/ldap/LdapListAccess.java 2011-11-02 12:45:26 UTC (rev 5148)
@@ -69,7 +69,9 @@
ctx = ldapService.getLdapContext(true);
}
else
- throw e;
+ {
+ return 0;
+ }
}
}
}
Modified: core/trunk/exo.core.component.organization.ldap/src/main/java/org/exoplatform/services/organization/ldap/MembershipDAOImpl.java
===================================================================
--- core/trunk/exo.core.component.organization.ldap/src/main/java/org/exoplatform/services/organization/ldap/MembershipDAOImpl.java 2011-11-02 10:59:39 UTC (rev 5147)
+++ core/trunk/exo.core.component.organization.ldap/src/main/java/org/exoplatform/services/organization/ldap/MembershipDAOImpl.java 2011-11-02 12:45:26 UTC (rev 5148)
@@ -328,6 +328,12 @@
try
{
String userDN = getDNFromUsername(ctx, username);
+ // if userDN equals null than there is no such user
+ // so we return empty collection
+ if (userDN == null)
+ {
+ return memberships;
+ }
String filter = ldapAttrMapping.membershipTypeMemberValue + "=" + escapeDN(userDN);
SearchControls constraints = new SearchControls();
constraints.setSearchScope(SearchControls.SUBTREE_SCOPE);
@@ -545,7 +551,43 @@
SearchControls constraints = new SearchControls();
constraints.setSearchScope(SearchControls.ONELEVEL_SCOPE);
String groupDN = getGroupDNFromGroupId(groupId);
- return ctx.search(groupDN, filter, constraints);
+ try
+ {
+ return ctx.search(groupDN, filter, constraints);
+ }
+ catch (NamingException ne)
+ {
+ // we assume that NamingException means that
+ // groupDN represent not existing sequence of elements
+ // so the result should be an empty NamingEnumeration
+ return new NamingEnumeration<SearchResult>()
+ {
+
+ public boolean hasMoreElements()
+ {
+ return false;
+ }
+
+ public SearchResult nextElement()
+ {
+ return null;
+ }
+
+ public SearchResult next() throws NamingException
+ {
+ return null;
+ }
+
+ public boolean hasMore() throws NamingException
+ {
+ return false;
+ }
+
+ public void close() throws NamingException
+ {
+ }
+ };
+ }
}
/**
@@ -676,6 +718,10 @@
}
}
}
+ catch (NamingException e)
+ {
+ return new ArrayList<Membership>();
+ }
finally
{
ldapService.release(ctx);
Modified: core/trunk/exo.core.component.organization.ldap/src/main/java/org/exoplatform/services/organization/ldap/MembershipTypeDAOImpl.java
===================================================================
--- core/trunk/exo.core.component.organization.ldap/src/main/java/org/exoplatform/services/organization/ldap/MembershipTypeDAOImpl.java 2011-11-02 10:59:39 UTC (rev 5147)
+++ core/trunk/exo.core.component.organization.ldap/src/main/java/org/exoplatform/services/organization/ldap/MembershipTypeDAOImpl.java 2011-11-02 12:45:26 UTC (rev 5148)
@@ -22,11 +22,11 @@
import org.exoplatform.services.log.ExoLogger;
import org.exoplatform.services.log.Log;
import org.exoplatform.services.organization.CacheHandler;
+import org.exoplatform.services.organization.CacheHandler.CacheType;
import org.exoplatform.services.organization.MembershipType;
import org.exoplatform.services.organization.MembershipTypeEventListener;
import org.exoplatform.services.organization.MembershipTypeEventListenerHandler;
import org.exoplatform.services.organization.MembershipTypeHandler;
-import org.exoplatform.services.organization.CacheHandler.CacheType;
import org.exoplatform.services.organization.impl.MembershipTypeImpl;
import java.util.ArrayList;
@@ -176,13 +176,12 @@
}
ctx.modifyAttributes(membershipTypeDN, mods);
+ cacheHandler.put(mt.getName(), mt, CacheType.MEMBERSHIPTYPE);
if (broadcast)
{
postSave(mt, false);
}
-
- cacheHandler.put(mt.getName(), mt, CacheType.MEMBERSHIPTYPE);
return mt;
}
catch (NamingException e)
@@ -221,13 +220,13 @@
}
ctx.destroySubcontext(membershipTypeDN);
+ cacheHandler.remove(name, CacheType.MEMBERSHIPTYPE);
if (broadcast)
{
postDelete(m);
}
- cacheHandler.remove(name, CacheType.MEMBERSHIPTYPE);
return m;
}
catch (NamingException e)
@@ -239,8 +238,10 @@
catch (NameNotFoundException e)
{
if (LOG.isDebugEnabled())
+ {
LOG.debug(e.getLocalizedMessage(), e);
- return null;
+ }
+ throw new Exception(e);
}
finally
{
Modified: core/trunk/exo.core.component.organization.ldap/src/main/java/org/exoplatform/services/organization/ldap/OrganizationServiceImpl.java
===================================================================
--- core/trunk/exo.core.component.organization.ldap/src/main/java/org/exoplatform/services/organization/ldap/OrganizationServiceImpl.java 2011-11-02 10:59:39 UTC (rev 5147)
+++ core/trunk/exo.core.component.organization.ldap/src/main/java/org/exoplatform/services/organization/ldap/OrganizationServiceImpl.java 2011-11-02 12:45:26 UTC (rev 5148)
@@ -62,7 +62,7 @@
{
// ValueParam param = params.getValueParam("ldap.userDN.key");
// ldapAttrMapping.userDNKey = param.getValue();
- userDAO_ = new UserDAOImpl(ldapAttrMapping, ldapService, cacheHandler);
+ userDAO_ = new UserDAOImpl(ldapAttrMapping, ldapService, cacheHandler, this);
groupDAO_ = new GroupDAOImpl(ldapAttrMapping, ldapService, cacheHandler);
membershipDAO_ = new MembershipDAOImpl(ldapAttrMapping, ldapService, this, cacheHandler);
}
Modified: core/trunk/exo.core.component.organization.ldap/src/main/java/org/exoplatform/services/organization/ldap/UserDAOImpl.java
===================================================================
--- core/trunk/exo.core.component.organization.ldap/src/main/java/org/exoplatform/services/organization/ldap/UserDAOImpl.java 2011-11-02 10:59:39 UTC (rev 5147)
+++ core/trunk/exo.core.component.organization.ldap/src/main/java/org/exoplatform/services/organization/ldap/UserDAOImpl.java 2011-11-02 12:45:26 UTC (rev 5148)
@@ -22,12 +22,13 @@
import org.exoplatform.commons.utils.ListAccess;
import org.exoplatform.services.ldap.LDAPService;
import org.exoplatform.services.organization.CacheHandler;
+import org.exoplatform.services.organization.CacheHandler.CacheType;
+import org.exoplatform.services.organization.OrganizationService;
import org.exoplatform.services.organization.Query;
import org.exoplatform.services.organization.User;
import org.exoplatform.services.organization.UserEventListener;
import org.exoplatform.services.organization.UserEventListenerHandler;
import org.exoplatform.services.organization.UserHandler;
-import org.exoplatform.services.organization.CacheHandler.CacheType;
import org.exoplatform.services.organization.impl.UserImpl;
import java.util.ArrayList;
@@ -56,6 +57,11 @@
private List<UserEventListener> listeners = new ArrayList<UserEventListener>(5);
/**
+ * Organization service instance
+ */
+ private OrganizationService os;
+
+ /**
* @param ldapAttrMapping mapping LDAP attributes to eXo organization service
* items (users, groups, etc)
* @param ldapService {@link LDAPService}
@@ -68,6 +74,22 @@
{
super(ldapAttrMapping, ldapService, cacheHandler);
}
+
+
+ /**
+ * @param ldapAttrMapping mapping LDAP attributes to eXo organization service
+ * items (users, groups, etc)
+ * @param ldapService {@link LDAPService}
+ * @param cacheHandler
+ * The Cache Handler
+ * @throws Exception if any errors occurs
+ */
+ public UserDAOImpl(LDAPAttributeMapping ldapAttrMapping, LDAPService ldapService, CacheHandler cacheHandler, OrganizationService os)
+ throws Exception
+ {
+ this(ldapAttrMapping, ldapService, cacheHandler);
+ this.os = os;
+ }
/**
* {@inheritDoc}
@@ -230,25 +252,36 @@
{
User user = getUserFromUsername(ctx, userName);
if (user == null)
+ {
return null;
-
+ }
String userDN = getDNFromUsername(ctx, userName);
if (broadcast)
+ {
preDelete(user);
+ }
+
ctx.destroySubcontext(userDN);
+ if (os != null)
+ {
+ os.getUserProfileHandler().removeUserProfile(userName, broadcast);
+ }
+ cacheHandler.remove(userName, CacheType.USER);
+ cacheHandler.remove(CacheHandler.USER_PREFIX + userName, CacheType.MEMBERSHIP);
+
if (broadcast)
+ {
postDelete(user);
-
- cacheHandler.remove(userName, CacheType.USER);
- cacheHandler.remove(CacheHandler.USER_PREFIX + userName, CacheType.MEMBERSHIP);
+ }
return user;
- }
+ }
catch (NamingException e)
{
ctx = reloadCtx(ctx, err, e);
}
}
+
}
finally
{
@@ -338,7 +371,7 @@
ArrayList<String> list = new ArrayList<String>();
if (q.getUserName() != null && q.getUserName().length() > 0)
{
- list.add("(" + ldapAttrMapping.userUsernameAttr + "=" + q.getUserName() + ")");
+ list.add("(" + ldapAttrMapping.userUsernameAttr + "=" + addAsterisks(q.getUserName()) + ")");
}
if (q.getFirstName() != null && q.getFirstName().length() > 0)
{
@@ -357,32 +390,44 @@
{
StringBuilder buffer = new StringBuilder();
buffer.append("(&");
- if (list.size() > 1)
+ for (int x = 0; x < list.size(); x++)
{
- for (int x = 0; x < list.size(); x++)
- {
- if (x == (list.size() - 1))
- buffer.append(list.get(x));
- else
- buffer.append(list.get(x) + " || ");
- }
+ buffer.append(list.get(x));
}
- else
- buffer.append(list.get(0));
-
- buffer.append("(" + ldapAttrMapping.userObjectClassFilter + ") )");
+ buffer.append("(" + ldapAttrMapping.userObjectClassFilter + "))");
filter = buffer.toString();
}
else
- filter = ldapAttrMapping.userObjectClassFilter;
+ {
+ filter = "(" + ldapAttrMapping.userObjectClassFilter + ")";
+ }
String searchBase = ldapAttrMapping.userURL;
// return new LDAPUserPageList(ldapAttrMapping, ldapService, searchBase, filter, 20);
-
return new SimpleLdapUserListAccess(ldapAttrMapping, ldapService, searchBase, filter);
}
/**
+ * Simple utility method to add asterisks symbol ('*')
+ * to the very beginning and the end of the string.
+ * @param string to be surrounded with asterisks
+ * @return
+ */
+ private String addAsterisks(String s)
+ {
+ StringBuffer sb = new StringBuffer(s);
+ if (!s.startsWith("*"))
+ {
+ sb.insert(0, "*");
+ }
+ if (!s.endsWith("*"))
+ {
+ sb.append("*");
+ }
+
+ return sb.toString();
+ }
+ /**
* {@inheritDoc}
*/
public boolean authenticate(String username, String password) throws Exception
Modified: core/trunk/exo.core.component.organization.ldap/src/test/java/org/exoplatform/services/organization/DummyLDAPServiceImpl.java
===================================================================
--- core/trunk/exo.core.component.organization.ldap/src/test/java/org/exoplatform/services/organization/DummyLDAPServiceImpl.java 2011-11-02 10:59:39 UTC (rev 5147)
+++ core/trunk/exo.core.component.organization.ldap/src/test/java/org/exoplatform/services/organization/DummyLDAPServiceImpl.java 2011-11-02 12:45:26 UTC (rev 5148)
@@ -161,7 +161,7 @@
InitialContext ctx = null;
try
{
- ctx = new DummyLdapContext(new InitialContext(new Hashtable<String, String>(env)));
+ ctx = new DummyLdapContext(new InitialContext(props));
return true;
}
catch (NamingException e)
Modified: core/trunk/exo.core.component.organization.ldap/src/test/resources/conf/standalone/test-configuration.xml
===================================================================
--- core/trunk/exo.core.component.organization.ldap/src/test/resources/conf/standalone/test-configuration.xml 2011-11-02 10:59:39 UTC (rev 5147)
+++ core/trunk/exo.core.component.organization.ldap/src/test/resources/conf/standalone/test-configuration.xml 2011-11-02 12:45:26 UTC (rev 5148)
@@ -239,6 +239,259 @@
</init-params>
</component-plugin>
</external-component-plugins>
-
+ <external-component-plugins>
+ <target-component>org.exoplatform.services.organization.OrganizationService</target-component>
+ <component-plugin>
+ <name>tester.membership.type.listener</name>
+ <set-method>addListenerPlugin</set-method>
+ <type>org.exoplatform.services.organization.MembershipTypeEventListener</type>
+ <description>Membership type listerner for testing purpose</description>
+ </component-plugin>
+ </external-component-plugins>
+
+ <!-- org service initializer, copied from ECM portal.war -->
+ <external-component-plugins>
+ <target-component>org.exoplatform.services.organization.OrganizationService</target-component>
+ <component-plugin>
+ <name>init.service.listener</name>
+ <set-method>addListenerPlugin</set-method>
+ <type>org.exoplatform.services.organization.OrganizationDatabaseInitializer</type>
+ <description>this listener populate organization data for the first launch</description>
+ <init-params>
+ <value-param>
+ <name>checkDatabaseAlgorithm</name>
+ <description>check database</description>
+ <value>entry</value>
+ </value-param>
+ <value-param>
+ <name>printInformation</name>
+ <description>Print information init database</description>
+ <value>false</value>
+ </value-param>
+ <object-param>
+ <name>configuration</name>
+ <description>description</description>
+ <object type="org.exoplatform.services.organization.OrganizationConfig">
+ <field name="membershipType">
+ <collection type="java.util.ArrayList">
+ <value>
+ <object type="org.exoplatform.services.organization.OrganizationConfig$MembershipType">
+ <field name="type"><string>manager</string></field>
+ <field name="description"><string>manager membership type</string></field>
+ </object>
+ </value>
+ <value>
+ <object type="org.exoplatform.services.organization.OrganizationConfig$MembershipType">
+ <field name="type"><string>member</string></field>
+ <field name="description"><string>member membership type</string></field>
+ </object>
+ </value>
+ <value>
+ <object type="org.exoplatform.services.organization.OrganizationConfig$MembershipType">
+ <field name="type"><string>validator</string></field>
+ <field name="description"><string>validator membership type</string></field>
+ </object>
+ </value>
+ </collection>
+ </field>
+
+ <field name="group">
+ <collection type="java.util.ArrayList">
+ <value>
+ <object type="org.exoplatform.services.organization.OrganizationConfig$Group">
+ <field name="name"><string>platform</string></field>
+ <field name="parentId"><string></string></field>
+ <field name="description"><string>the /platform group</string></field>
+ <field name="label"><string>Platform</string></field>
+ </object>
+ </value>
+ <value>
+ <object type="org.exoplatform.services.organization.OrganizationConfig$Group">
+ <field name="name"><string>administrators</string></field>
+ <field name="parentId"><string>/platform</string></field>
+ <field name="description"><string>the /platform/administrators group</string></field>
+ <field name="label"><string>Administrators</string></field>
+ </object>
+ </value>
+ <value>
+ <object type="org.exoplatform.services.organization.OrganizationConfig$Group">
+ <field name="name"><string>users</string></field>
+ <field name="parentId"><string>/platform</string></field>
+ <field name="description"><string>the /platform/users group</string></field>
+ <field name="label"><string>Users</string></field>
+ </object>
+ </value>
+ <value>
+ <object type="org.exoplatform.services.organization.OrganizationConfig$Group">
+ <field name="name"><string>guests</string></field>
+ <field name="parentId"><string>/platform</string></field>
+ <field name="description"><string>the /platform/guests group</string></field>
+ <field name="label"><string>Guests</string></field>
+ </object>
+ </value>
+ <value>
+ <object type="org.exoplatform.services.organization.OrganizationConfig$Group">
+ <field name="name"><string>organization</string></field>
+ <field name="parentId"><string></string></field>
+ <field name="description"><string>the organization group</string></field>
+ <field name="label"><string>Organization</string></field>
+ </object>
+ </value>
+ <value>
+ <object type="org.exoplatform.services.organization.OrganizationConfig$Group">
+ <field name="name"><string>management</string></field>
+ <field name="parentId"><string>/organization</string></field>
+ <field name="description"><string>the /organization/management group</string></field>
+ <field name="label"><string>Management</string></field>
+ </object>
+ </value>
+ <value>
+ <object type="org.exoplatform.services.organization.OrganizationConfig$Group">
+ <field name="name"><string>executive-board</string></field>
+ <field name="parentId"><string>/organization/management</string></field>
+ <field name="description"><string>the /organization/management/executive-board group</string></field>
+ <field name="label"><string>Executive Board</string></field>
+ </object>
+ </value>
+ <value>
+ <object type="org.exoplatform.services.organization.OrganizationConfig$Group">
+ <field name="name"><string>human-resources</string></field>
+ <field name="parentId"><string>/organization/management</string></field>
+ <field name="description"><string>the /organization/management/human-resource group</string></field>
+ <field name="label"><string>Human Resources</string></field>
+ </object>
+ </value>
+ <value>
+ <object type="org.exoplatform.services.organization.OrganizationConfig$Group">
+ <field name="name"><string>communication</string></field>
+ <field name="parentId"><string>/organization</string></field>
+ <field name="description"><string>the /organization/communication group</string></field>
+ <field name="label"><string>Communication</string></field>
+ </object>
+ </value>
+ <value>
+ <object type="org.exoplatform.services.organization.OrganizationConfig$Group">
+ <field name="name"><string>marketing</string></field>
+ <field name="parentId"><string>/organization/communication</string></field>
+ <field name="description"><string>the /organization/communication/marketing group</string></field>
+ <field name="label"><string>Marketing</string></field>
+ </object>
+ </value>
+ <value>
+ <object type="org.exoplatform.services.organization.OrganizationConfig$Group">
+ <field name="name"><string>press-and-media</string></field>
+ <field name="parentId"><string>/organization/communication</string></field>
+ <field name="description"><string>the /organization/communication/press-and-media group</string></field>
+ <field name="label"><string>Press and Media</string></field>
+ </object>
+ </value>
+ <value>
+ <object type="org.exoplatform.services.organization.OrganizationConfig$Group">
+ <field name="name"><string>operations</string></field>
+ <field name="parentId"><string>/organization</string></field>
+ <field name="description"><string>the /organization/operations and media group</string></field>
+ <field name="label"><string>Operations</string></field>
+ </object>
+ </value>
+ <value>
+ <object type="org.exoplatform.services.organization.OrganizationConfig$Group">
+ <field name="name"><string>sales</string></field>
+ <field name="parentId"><string>/organization/operations</string></field>
+ <field name="description"><string>the /organization/operations/sales group</string></field>
+ <field name="label"><string>Sales</string></field>
+ </object>
+ </value>
+ <value>
+ <object type="org.exoplatform.services.organization.OrganizationConfig$Group">
+ <field name="name"><string>finances</string></field>
+ <field name="parentId"><string>/organization/operations</string></field>
+ <field name="description"><string>the /organization/operations/finances group</string></field>
+ <field name="label"><string>Finances</string></field>
+ </object>
+ </value>
+ <value>
+ <object type="org.exoplatform.services.organization.OrganizationConfig$Group">
+ <field name="name"><string>customers</string></field>
+ <field name="parentId"><string></string></field>
+ <field name="description"><string>the /customers group</string></field>
+ <field name="label"><string>Customers</string></field>
+ </object>
+ </value>
+ <value>
+ <object type="org.exoplatform.services.organization.OrganizationConfig$Group">
+ <field name="name"><string>partners</string></field>
+ <field name="parentId"><string></string></field>
+ <field name="description"><string>the /partners group</string></field>
+ <field name="label"><string>Partners</string></field>
+ </object>
+ </value>
+ </collection>
+ </field>
+
+ <field name="user">
+ <collection type="java.util.ArrayList">
+ <value>
+ <object type="org.exoplatform.services.organization.OrganizationConfig$User">
+ <field name="userName"><string>root</string></field>
+ <field name="password"><string>exo</string></field>
+ <field name="firstName"><string>Root</string></field>
+ <field name="lastName"><string>Root</string></field>
+ <field name="email"><string>root at localhost</string></field>
+ <field name="groups">
+ <string>
+ manager:/platform/administrators,member:/platform/users,
+ member:/organization/management/executive-board
+ </string>
+ </field>
+ </object>
+ </value>
+
+ <value>
+ <object type="org.exoplatform.services.organization.OrganizationConfig$User">
+ <field name="userName"><string>john</string></field>
+ <field name="password"><string>exo</string></field>
+ <field name="firstName"><string>John</string></field>
+ <field name="lastName"><string>Anthony</string></field>
+ <field name="email"><string>john at localhost</string></field>
+ <field name="groups">
+ <string>
+ member:/platform/administrators,member:/platform/users,
+ manager:/organization/management/executive-board
+ </string>
+ </field>
+ </object>
+ </value>
+ <value>
+ <object type="org.exoplatform.services.organization.OrganizationConfig$User">
+ <field name="userName"><string>marry</string></field>
+ <field name="password"><string>exo</string></field>
+ <field name="firstName"><string>Marry</string></field>
+ <field name="lastName"><string>Kelly</string></field>
+ <field name="email"><string>marry at localhost</string></field>
+ <field name="groups">
+ <string>member:/platform/users</string>
+ </field>
+ </object>
+ </value>
+ <value>
+ <object type="org.exoplatform.services.organization.OrganizationConfig$User">
+ <field name="userName"><string>demo</string></field>
+ <field name="password"><string>exo</string></field>
+ <field name="firstName"><string>Demo</string></field>
+ <field name="lastName"><string>exo</string></field>
+ <field name="email"><string>demo at localhost</string></field>
+ <field name="groups">
+ <string>member:/platform/guests,member:/platform/users</string>
+ </field>
+ </object>
+ </value>
+ </collection>
+ </field>
+ </object>
+ </object-param>
+ </init-params>
+ </component-plugin>
+ </external-component-plugins>
+
</configuration>
Modified: core/trunk/exo.core.component.organization.tests/src/main/java/org/exoplatform/services/tck/organization/TestMembershipHandler.java
===================================================================
--- core/trunk/exo.core.component.organization.tests/src/main/java/org/exoplatform/services/tck/organization/TestMembershipHandler.java 2011-11-02 10:59:39 UTC (rev 5147)
+++ core/trunk/exo.core.component.organization.tests/src/main/java/org/exoplatform/services/tck/organization/TestMembershipHandler.java 2011-11-02 12:45:26 UTC (rev 5148)
@@ -24,6 +24,7 @@
import org.exoplatform.services.organization.MembershipType;
import org.exoplatform.services.organization.User;
+
import java.util.List;
/**
@@ -44,14 +45,15 @@
Membership m = mHandler.findMembershipByUserGroupAndType(userName, "/" + groupName1, membershipType);
assertNotNull(mHandler.findMembership(m.getId()));
- // try to find not existed membership. We are supposed to get null instead of Exception
+ // try to find not existed membership. We are supposed to get Exception
try
{
assertNull(mHandler.findMembership("not-existed-id"));
+ fail("Exception should be thrown");
}
catch (Exception e)
{
- fail("Exception should not be thrown");
+
}
}
@@ -104,8 +106,12 @@
Group g = gHandler.findGroupById("/platform/users");
assertEquals(mHandler.findMembershipsByGroup(g).size(), 4);
+ // try to find for non-existing group
g = gHandler.createGroupInstance();
g.setGroupName(groupName1);
+ gHandler.addChild(null, g, false);
+ assertEquals(g.getId(), gHandler.findGroupById("/" + groupName1).getId());
+ g = gHandler.removeGroup(g, false);
assertEquals(mHandler.findMembershipsByGroup(g).size(), 0);
}
@@ -148,8 +154,12 @@
{
}
+ // try to find for non-existing group
g = gHandler.createGroupInstance();
g.setGroupName(groupName1);
+ gHandler.addChild(null, g, false);
+ assertEquals(g.getId(), gHandler.findGroupById("/" + groupName1).getId());
+ g = gHandler.removeGroup(g, false);
assertEquals(mHandler.findMembershipsByGroup(g).size(), 0);
}
Modified: core/trunk/exo.core.component.organization.tests/src/main/java/org/exoplatform/services/tck/organization/TestUserHandler.java
===================================================================
--- core/trunk/exo.core.component.organization.tests/src/main/java/org/exoplatform/services/tck/organization/TestUserHandler.java 2011-11-02 10:59:39 UTC (rev 5147)
+++ core/trunk/exo.core.component.organization.tests/src/main/java/org/exoplatform/services/tck/organization/TestUserHandler.java 2011-11-02 12:45:26 UTC (rev 5148)
@@ -132,27 +132,32 @@
query.setUserName("tolik");
assertEquals(uHandler.findUsersByQuery(query).getSize(), 1);
- calc = Calendar.getInstance();
- calc.set(Calendar.YEAR, calc.get(Calendar.YEAR) + 1);
+ String skipDateTests = System.getProperty("orgservice.test.configuration.skipDateTests");
+ if (!"true".equals(skipDateTests))
+ {
+ calc = Calendar.getInstance();
+ calc.set(Calendar.YEAR, calc.get(Calendar.YEAR) + 1);
- query = new Query();
- query.setFromLoginDate(calc.getTime());
- assertEquals(uHandler.findUsersByQuery(query).getSize(), 0);
+ query = new Query();
+ query.setFromLoginDate(calc.getTime());
+ assertEquals(uHandler.findUsersByQuery(query).getSize(), 0);
- calc = Calendar.getInstance();
- calc.set(Calendar.YEAR, calc.get(Calendar.YEAR) - 1);
+ calc = Calendar.getInstance();
+ calc.set(Calendar.YEAR, calc.get(Calendar.YEAR) - 1);
- query = new Query();
- query.setToLoginDate(calc.getTime());
- assertEquals(uHandler.findUsersByQuery(query).getSize(), 0);
+ query = new Query();
+ query.setToLoginDate(calc.getTime());
+ assertEquals(uHandler.findUsersByQuery(query).getSize(), 0);
- calc = Calendar.getInstance();
- calc.set(Calendar.YEAR, calc.get(Calendar.YEAR) + 1);
+ calc = Calendar.getInstance();
+ calc.set(Calendar.YEAR, calc.get(Calendar.YEAR) + 1);
- query = new Query();
- query.setToLoginDate(calc.getTime());
- query.setUserName("tolik");
- assertEquals(uHandler.findUsersByQuery(query).getSize(), 1);
+ query = new Query();
+ query.setToLoginDate(calc.getTime());
+ query.setUserName("tolik");
+ assertEquals(uHandler.findUsersByQuery(query).getSize(), 1);
+
+ }
}
/**
@@ -216,24 +221,29 @@
calc = Calendar.getInstance();
calc.set(Calendar.YEAR, calc.get(Calendar.YEAR) + 1);
- query = new Query();
- query.setFromLoginDate(calc.getTime());
- assertEquals(uHandler.findUsersByQuery(query).getSize(), 0);
+ String skipDateTests = System.getProperty("orgservice.test.configuration.skipDateTests");
+ if (!"true".equals(skipDateTests))
+ {
+ query = new Query();
+ query.setFromLoginDate(calc.getTime());
+ assertEquals(uHandler.findUsersByQuery(query).getSize(), 0);
- calc = Calendar.getInstance();
- calc.set(Calendar.YEAR, calc.get(Calendar.YEAR) - 1);
+ calc = Calendar.getInstance();
+ calc.set(Calendar.YEAR, calc.get(Calendar.YEAR) - 1);
- query = new Query();
- query.setToLoginDate(calc.getTime());
- assertEquals(uHandler.findUsersByQuery(query).getSize(), 0);
+ query = new Query();
+ query.setToLoginDate(calc.getTime());
+ assertEquals(uHandler.findUsersByQuery(query).getSize(), 0);
- calc = Calendar.getInstance();
- calc.set(Calendar.YEAR, calc.get(Calendar.YEAR) + 1);
+ calc = Calendar.getInstance();
+ calc.set(Calendar.YEAR, calc.get(Calendar.YEAR) + 1);
- query = new Query();
- query.setToLoginDate(calc.getTime());
- query.setUserName("tolik");
- assertEquals(uHandler.findUsersByQuery(query).getSize(), 1);
+ query = new Query();
+ query.setToLoginDate(calc.getTime());
+ query.setUserName("tolik");
+ assertEquals(uHandler.findUsersByQuery(query).getSize(), 1);
+ }
+
}
/**
More information about the exo-jcr-commits
mailing list