[exo-jcr-commits] exo-jcr SVN: r5069 - in core/trunk: exo.core.component.database/src/main/java/org/exoplatform/services/database/impl and 4 other directories.

do-not-reply at jboss.org do-not-reply at jboss.org
Wed Oct 19 04:55:26 EDT 2011


Author: dkuleshov
Date: 2011-10-19 04:55:25 -0400 (Wed, 19 Oct 2011)
New Revision: 5069

Added:
   core/trunk/exo.core.component.organization.tests/src/main/java/org/exoplatform/services/tck/organization/TestMembershipTypeEventListener.java
Modified:
   core/trunk/exo.core.component.database/src/main/java/org/exoplatform/services/database/HibernateService.java
   core/trunk/exo.core.component.database/src/main/java/org/exoplatform/services/database/impl/HibernateServiceImpl.java
   core/trunk/exo.core.component.organization.jdbc/pom.xml
   core/trunk/exo.core.component.organization.jdbc/src/main/java/org/exoplatform/services/organization/hibernate/GroupDAOImpl.java
   core/trunk/exo.core.component.organization.jdbc/src/main/java/org/exoplatform/services/organization/hibernate/HibernateListAccess.java
   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/MembershipTypeDAOImpl.java
   core/trunk/exo.core.component.organization.jdbc/src/main/java/org/exoplatform/services/organization/hibernate/OrganizationServiceImpl.java
   core/trunk/exo.core.component.organization.jdbc/src/main/java/org/exoplatform/services/organization/hibernate/UserDAOImpl.java
   core/trunk/exo.core.component.organization.jdbc/src/main/java/org/exoplatform/services/organization/hibernate/UserProfileDAOImpl.java
   core/trunk/exo.core.component.organization.jdbc/src/test/resources/conf/standalone/test-configuration-hibernate.xml
   core/trunk/exo.core.component.organization.jdbc/src/test/resources/conf/standalone/test-configuration-jdbc.xml
   core/trunk/exo.core.component.organization.tests/src/main/java/org/exoplatform/services/tck/organization/TestGroupHandler.java
   core/trunk/exo.core.component.organization.tests/src/main/java/org/exoplatform/services/tck/organization/TestMembershipTypeHandler.java
   core/trunk/exo.core.component.organization.tests/src/main/java/org/exoplatform/services/tck/organization/TestUserHandler.java
Log:
EXOJCR-1588: Were made some adpotion of hibernate org service for TCK test:
- implemented some unsupported methods
- fixed exception handling in cases where they should be thrown
- fixed configuration files
- fixed and reorganized TCK tests


Modified: core/trunk/exo.core.component.database/src/main/java/org/exoplatform/services/database/HibernateService.java
===================================================================
--- core/trunk/exo.core.component.database/src/main/java/org/exoplatform/services/database/HibernateService.java	2011-10-19 08:09:57 UTC (rev 5068)
+++ core/trunk/exo.core.component.database/src/main/java/org/exoplatform/services/database/HibernateService.java	2011-10-19 08:55:25 UTC (rev 5069)
@@ -23,6 +23,7 @@
 import org.hibernate.cfg.Configuration;
 
 import java.io.Serializable;
+import java.util.Collection;
 
 /**
  * Created by The eXo Platform SAS . Author : Tuan Nguyen
@@ -45,6 +46,8 @@
 
    public Object findOne(Session session, String query, String id) throws Exception;
 
+   public Collection findAll(Session session, String query) throws Exception;
+
    public Object findExactOne(Session session, String query, String id) throws Exception;
 
    public Object findOne(Class clazz, java.io.Serializable id) throws Exception;

Modified: core/trunk/exo.core.component.database/src/main/java/org/exoplatform/services/database/impl/HibernateServiceImpl.java
===================================================================
--- core/trunk/exo.core.component.database/src/main/java/org/exoplatform/services/database/impl/HibernateServiceImpl.java	2011-10-19 08:09:57 UTC (rev 5068)
+++ core/trunk/exo.core.component.database/src/main/java/org/exoplatform/services/database/impl/HibernateServiceImpl.java	2011-10-19 08:55:25 UTC (rev 5069)
@@ -380,6 +380,19 @@
       }
    }
 
+   public Collection findAll(Session session, String query) throws Exception
+   {
+      List l = session.createQuery(query).list();
+      if (l.size() == 0)
+      {
+         return null;
+      }
+      else
+      {
+         return l;
+      }
+   }
+
    public Object findOne(Class clazz, Serializable id) throws Exception
    {
       Session session = openSession();

Modified: core/trunk/exo.core.component.organization.jdbc/pom.xml
===================================================================
--- core/trunk/exo.core.component.organization.jdbc/pom.xml	2011-10-19 08:09:57 UTC (rev 5068)
+++ core/trunk/exo.core.component.organization.jdbc/pom.xml	2011-10-19 08:55:25 UTC (rev 5069)
@@ -163,35 +163,6 @@
          </plugin>
          <plugin>
             <groupId>org.apache.maven.plugins</groupId>
-            <artifactId>maven-surefire-plugin</artifactId>
-            <configuration>
-               <argLine>${env.MAVEN_OPTS} -Djava.security.manager=org.exoplatform.commons.test.TestSecurityManager -Djava.security.policy=${project.build.directory}/test-classes/test.policy</argLine>
-               <systemProperties>
-                  <!--
-                     This property defines TCK tests configuration file location
-                  -->
-                  <property>
-                     <name>orgservice.test.configuration.file</name>
-                     <value>${orgservice.test.configuration.file}</value>
-                  </property>
-               </systemProperties>
-               <includes>
-                  <include>org/exoplatform/services/tck/organization/Test*.java</include>
-               </includes>                 
-               <excludes>
-                  <!--
-                     Temporary excluded, to investigate cause of failures and errors.
-                  -->
-                  <exclude>org/exoplatform/services/tck/organization/Test*.java</exclude>
-                  <!--
-                     Excluded as this class has no tests to be run
-                  -->
-                  <exclude>**/AbstractOrganizationServiceTest.java</exclude>
-               </excludes>  
-            </configuration>
-         </plugin>
-         <plugin>
-            <groupId>org.apache.maven.plugins</groupId>
             <artifactId>maven-antrun-plugin</artifactId>
             <executions>
                <execution>
@@ -236,6 +207,42 @@
          <properties>
             <orgservice.test.configuration.file>/conf/standalone/test-configuration-hibernate.xml</orgservice.test.configuration.file>
          </properties>
+         <build>
+            <plugins>
+               <plugin>
+                  <groupId>org.apache.maven.plugins</groupId>
+                  <artifactId>maven-surefire-plugin</artifactId>
+                  <configuration>
+                     <argLine>${env.MAVEN_OPTS} -Djava.security.manager=org.exoplatform.commons.test.TestSecurityManager -Djava.security.policy=${project.build.directory}/test-classes/test.policy</argLine>
+                     <systemProperties>
+                        <!--
+                           This property defines TCK tests configuration file location
+                        -->
+                        <property>
+                           <name>orgservice.test.configuration.file</name>
+                           <value>${orgservice.test.configuration.file}</value>
+                        </property>
+                     </systemProperties>
+                     <includes>
+                        <include>org/exoplatform/services/tck/organization/Test*.java</include>
+                     </includes>                 
+                     <excludes>
+                        <!--
+                           Excluded as there some hibernate cache issues on pre-, postoperations
+                           (e.g. preDelete, postDelete, etc.)
+                        -->
+
+                        <exclude>org/exoplatform/services/tck/organization/TestMembershipTypeEventListener.java</exclude>
+
+                        <!--
+                           Excluded as this class has no tests to be run
+                        -->
+                        <exclude>**/AbstractOrganizationServiceTest.java</exclude>
+                     </excludes>  
+                  </configuration>
+               </plugin>
+            </plugins>
+         </build>
       </profile>
       <profile>
          <id>jdbc</id>
@@ -245,6 +252,40 @@
          <properties>
             <orgservice.test.configuration.file>/conf/standalone/test-configuration-jdbc.xml</orgservice.test.configuration.file>
          </properties>
+         <build>
+           <plugins>
+           <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-surefire-plugin</artifactId>
+            <configuration>
+               <argLine>${env.MAVEN_OPTS} -Djava.security.manager=org.exoplatform.commons.test.TestSecurityManager -Djava.security.policy=${project.build.directory}/test-classes/test.policy</argLine>
+               <systemProperties>
+                  <!--
+                     This property defines TCK tests configuration file location
+                  -->
+                  <property>
+                     <name>orgservice.test.configuration.file</name>
+                     <value>${orgservice.test.configuration.file}</value>
+                  </property>
+               </systemProperties>
+               <includes>
+                  <include>org/exoplatform/services/tck/organization/Test*.java</include>
+               </includes>                 
+               <excludes>
+                  <!--
+                     Temporary excluded, to investigate cause of failures and errors.
+                  -->
+
+                  <exclude>org/exoplatform/services/tck/organization/Test*.java</exclude>
+                  <!--
+                     Excluded as this class has no tests to be run
+                  -->
+                  <exclude>**/AbstractOrganizationServiceTest.java</exclude>
+               </excludes>  
+            </configuration>
+         </plugin>
+         </plugins>
+         </build>
       </profile>
    </profiles>
 </project>

Modified: core/trunk/exo.core.component.organization.jdbc/src/main/java/org/exoplatform/services/organization/hibernate/GroupDAOImpl.java
===================================================================
--- core/trunk/exo.core.component.organization.jdbc/src/main/java/org/exoplatform/services/organization/hibernate/GroupDAOImpl.java	2011-10-19 08:09:57 UTC (rev 5068)
+++ core/trunk/exo.core.component.organization.jdbc/src/main/java/org/exoplatform/services/organization/hibernate/GroupDAOImpl.java	2011-10-19 08:55:25 UTC (rev 5069)
@@ -33,6 +33,8 @@
 import java.util.Collections;
 import java.util.List;
 
+import javax.naming.InvalidNameException;
+
 /**
  * Created by The eXo Platform SAS Author : Mestrallet Benjamin
  * benjmestrallet at users.sourceforge.net Author : Tuan Nguyen
@@ -150,6 +152,13 @@
       if (broadcast)
          preDelete(group);
       Session session = service_.openSession();
+
+      if (session.get(group.getClass(), group.getId()) == null)
+      {
+         throw new InvalidNameException("Can not remove group " + group.getGroupName()
+            + "record, because group does not exist.");
+      }
+
       session.delete(group);
       List entries = session.createQuery(queryFindGroupByParent).setString(0, group.getId()).list();
       for (int i = 0; i < entries.size(); i++)

Modified: core/trunk/exo.core.component.organization.jdbc/src/main/java/org/exoplatform/services/organization/hibernate/HibernateListAccess.java
===================================================================
--- core/trunk/exo.core.component.organization.jdbc/src/main/java/org/exoplatform/services/organization/hibernate/HibernateListAccess.java	2011-10-19 08:09:57 UTC (rev 5068)
+++ core/trunk/exo.core.component.organization.jdbc/src/main/java/org/exoplatform/services/organization/hibernate/HibernateListAccess.java	2011-10-19 08:55:25 UTC (rev 5069)
@@ -44,8 +44,8 @@
 import org.hibernate.Query;
 import org.hibernate.Session;
 
+import java.lang.reflect.Array;
 import java.security.PrivilegedAction;
-import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
@@ -163,8 +163,6 @@
          throw new IllegalArgumentException("Illegal length: length must be a positive number");
       }
 
-      List<E> entities = new ArrayList<E>(length);
-
       Query query = SecurityHelper.doPrivilegedAction(new PrivilegedAction<Query>()
       {
          public Query run()
@@ -174,7 +172,11 @@
       });
       bindFields(query);
 
-      Iterator<Object> results = query.iterate();
+      // here we're creating an array of elements of class E
+      // this looks complicated because we use generic class
+      E[] entities = (E[])Array.newInstance(query.getReturnTypes()[0].getReturnedClass(), length);
+      Iterator<E> results = query.iterate();
+
       for (int p = 0, counter = 0; counter < length; p++)
       {
          if (!results.hasNext())
@@ -183,16 +185,15 @@
                "Illegal index or length: sum of the index and the length cannot be greater than the list size");
          }
 
-         Object result = results.next();
+         E result = results.next();
 
          if (p >= index)
          {
-            entities.add((E)result);
-            counter++;
+            entities[counter++] = result;
          }
       }
 
-      return (E[])entities.toArray();
+      return entities;
    }
 
    /**

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-10-19 08:09:57 UTC (rev 5068)
+++ core/trunk/exo.core.component.organization.jdbc/src/main/java/org/exoplatform/services/organization/hibernate/MembershipDAOImpl.java	2011-10-19 08:55:25 UTC (rev 5069)
@@ -51,6 +51,9 @@
       "from m in class org.exoplatform.services.organization.impl.MembershipImpl " + "where m.userName = ? "
          + "  and m.groupId = ? " + "  and m.membershipType = ? ";
 
+   private static final String queryFindMembershipByType =
+      "from m in class org.exoplatform.services.organization.impl.MembershipImpl " + "where m.membershipType = ? ";
+
    private static final String queryFindMembershipsByUserAndGroup =
       "from m in class org.exoplatform.services.organization.impl.MembershipImpl " + "where m.userName = ? "
          + "  and m.groupId = ? ";
@@ -111,10 +114,22 @@
    {
       if (orgService.getMembershipTypeHandler().findMembershipType(m.getMembershipType()) == null)
       {
-         throw new InvalidNameException("Can not create membership record " + m.getId()
-                  + " because membership type " + m.getMembershipType() + " is not exists.");
+         throw new InvalidNameException("Can not create membership record " + m.getId() + ", because membership"
+            + "type " + m.getMembershipType() + " does not exist.");
       }
+      
+      if (orgService.getGroupHandler().findGroupById(m.getGroupId()) == null)
+      {
+         throw new InvalidNameException("Can not create membership record " + m.getId() + ", because group "
+            + m.getGroupId() + " does not exist.");
+      }
 
+      if (orgService.getUserHandler().findUserByName(m.getUserName()) == null)
+      {
+         throw new InvalidNameException("Can not create membership record " + m.getId() + ", because user "
+            + m.getGroupId() + " does not exist.");
+      }
+
       // check if we already have membership record
       if (findMembershipByUserGroupAndType(m.getUserName(), m.getGroupId(), m.getMembershipType()) != null)
       {
@@ -289,6 +304,15 @@
          session.delete(entries.get(i));
    }
 
+   static void removeMembershipEntriesOfMembershipType(MembershipType mt, Session session) throws Exception
+   {
+      List<?> entries = session.createQuery(queryFindMembershipByType).setString(0, mt.getName()).list();
+      for (int i = 0; i < entries.size(); i++)
+      {
+         session.delete(entries.get(i));
+      }
+   }
+
    Collection findMembershipsByUser(String userName, Session session) throws Exception
    {
       return session.createQuery(queryFindMembershipsByUser).setString(0, userName).list();

Modified: core/trunk/exo.core.component.organization.jdbc/src/main/java/org/exoplatform/services/organization/hibernate/MembershipTypeDAOImpl.java
===================================================================
--- core/trunk/exo.core.component.organization.jdbc/src/main/java/org/exoplatform/services/organization/hibernate/MembershipTypeDAOImpl.java	2011-10-19 08:09:57 UTC (rev 5068)
+++ core/trunk/exo.core.component.organization.jdbc/src/main/java/org/exoplatform/services/organization/hibernate/MembershipTypeDAOImpl.java	2011-10-19 08:55:25 UTC (rev 5069)
@@ -32,6 +32,8 @@
 import java.util.Date;
 import java.util.List;
 
+import javax.naming.InvalidNameException;
+
 /**
  * Created by The eXo Platform SAS Author : Mestrallet Benjamin
  * benjmestrallet at users.sourceforge.net Author : Tuan Nguyen
@@ -117,38 +119,29 @@
    public MembershipType removeMembershipType(String name, boolean broadcast) throws Exception
    {
       Session session = service_.openSession();
-      MembershipTypeImpl m = (MembershipTypeImpl)session.get(MembershipTypeImpl.class, name);
+      MembershipTypeImpl mt = (MembershipTypeImpl)session.get(MembershipTypeImpl.class, name);
 
-      try
+      if (mt == null)
       {
-         List entries =
-            session.createQuery(
-               "from m in class " + " org.exoplatform.services.organization.impl.MembershipImpl "
-                  + "where m.membershipType = '" + name + "'").list();
-         for (int i = 0; i < entries.size(); i++)
-            session.delete(entries.get(i));
+         throw new InvalidNameException("Can not remove membership type" + name
+            + "record, because membership type does not exist.");
       }
-      catch (Exception exp)
-      {
-      }
 
       if (broadcast)
       {
-         preDelete(m);
+         preDelete(mt);
       }
 
-      if (m != null)
-      {
-         session.delete(m);
-         session.flush();
-      }
+      session.delete(mt);
+      MembershipDAOImpl.removeMembershipEntriesOfMembershipType(mt, session);
+      session.flush();
 
       if (broadcast)
       {
-         postDelete(m);
+         postDelete(mt);
       }
 
-      return m;
+      return mt;
    }
 
    public Collection findMembershipTypes() throws Exception

Modified: core/trunk/exo.core.component.organization.jdbc/src/main/java/org/exoplatform/services/organization/hibernate/OrganizationServiceImpl.java
===================================================================
--- core/trunk/exo.core.component.organization.jdbc/src/main/java/org/exoplatform/services/organization/hibernate/OrganizationServiceImpl.java	2011-10-19 08:09:57 UTC (rev 5068)
+++ core/trunk/exo.core.component.organization.jdbc/src/main/java/org/exoplatform/services/organization/hibernate/OrganizationServiceImpl.java	2011-10-19 08:55:25 UTC (rev 5069)
@@ -33,7 +33,7 @@
 
    public OrganizationServiceImpl(HibernateService hservice, CacheService cservice) throws Exception
    {
-      userDAO_ = new UserDAOImpl(hservice, cservice);
+      userDAO_ = new UserDAOImpl(hservice, cservice, this);
       userProfileDAO_ = new UserProfileDAOImpl(hservice, cservice);
       groupDAO_ = new GroupDAOImpl(hservice);
       membershipTypeDAO_ = new MembershipTypeDAOImpl(hservice);

Modified: core/trunk/exo.core.component.organization.jdbc/src/main/java/org/exoplatform/services/organization/hibernate/UserDAOImpl.java
===================================================================
--- core/trunk/exo.core.component.organization.jdbc/src/main/java/org/exoplatform/services/organization/hibernate/UserDAOImpl.java	2011-10-19 08:09:57 UTC (rev 5068)
+++ core/trunk/exo.core.component.organization.jdbc/src/main/java/org/exoplatform/services/organization/hibernate/UserDAOImpl.java	2011-10-19 08:55:25 UTC (rev 5069)
@@ -26,6 +26,7 @@
 import org.exoplatform.services.database.HibernateService;
 import org.exoplatform.services.database.ObjectQuery;
 import org.exoplatform.services.organization.ExtendedUserHandler;
+import org.exoplatform.services.organization.OrganizationService;
 import org.exoplatform.services.organization.Query;
 import org.exoplatform.services.organization.User;
 import org.exoplatform.services.organization.UserEventListener;
@@ -58,10 +59,13 @@
 
    private List<UserEventListener> listeners_ = new ArrayList<UserEventListener>(3);
 
-   public UserDAOImpl(HibernateService service, CacheService cservice) throws Exception
+   private OrganizationService orgService;
+
+   public UserDAOImpl(HibernateService service, CacheService cservice, OrganizationService orgService) throws Exception
    {
       service_ = service;
       cache_ = cservice.getCacheInstance(UserImpl.class.getName());
+      this.orgService = orgService;
    }
 
    final public List getUserEventListeners()
@@ -139,6 +143,7 @@
    {
       Session session = service_.openSession();
       User foundUser = findUserByName(userName, session);
+
       if (foundUser == null)
          return null;
 
@@ -146,6 +151,8 @@
          preDelete(foundUser);
       session = service_.openSession();
       session.delete(foundUser);
+      ((UserProfileDAOImpl)orgService.getUserProfileHandler()).removeUserProfileEntry(userName, session);
+      MembershipDAOImpl.removeMembershipEntriesOfUser(userName, session);
       if (broadcast)
          postDelete(foundUser);
       session.flush();
@@ -226,7 +233,7 @@
       ObjectQuery oq = new ObjectQuery(UserImpl.class);
       if (q.getUserName() != null)
       {
-         oq.addLIKE("UPPER(userName)", q.getUserName().toUpperCase());
+         oq.addLIKE("UPPER(userName)", addAsterisk(q.getUserName().toUpperCase()));
       }
       if (q.getFirstName() != null)
       {
@@ -301,6 +308,22 @@
          listener.postDelete(user);
    }
 
+   private String addAsterisk(String s)
+   {
+      StringBuffer sb = new StringBuffer(s);
+      if (!s.startsWith("*"))
+      {
+         sb.insert(0, "*");
+      }
+      if (!s.endsWith("*"))
+      {
+         sb.append("*");
+      }
+
+      return sb.toString();
+
+   }
+
    /**
     * {@inheritDoc}
     */

Modified: core/trunk/exo.core.component.organization.jdbc/src/main/java/org/exoplatform/services/organization/hibernate/UserProfileDAOImpl.java
===================================================================
--- core/trunk/exo.core.component.organization.jdbc/src/main/java/org/exoplatform/services/organization/hibernate/UserProfileDAOImpl.java	2011-10-19 08:09:57 UTC (rev 5068)
+++ core/trunk/exo.core.component.organization.jdbc/src/main/java/org/exoplatform/services/organization/hibernate/UserProfileDAOImpl.java	2011-10-19 08:55:25 UTC (rev 5069)
@@ -46,6 +46,9 @@
    private static final String queryFindUserProfileByName =
       "from u in class org.exoplatform.services.organization.impl.UserProfileData " + "where u.userName = ?";
 
+   private static final String queryFindUserProfiles =
+      "from u in class org.exoplatform.services.organization.impl.UserProfileData";
+
    private HibernateService service_;
 
    private ExoCache cache_;
@@ -176,16 +179,20 @@
       return null;
    }
 
-   static void removeUserProfileEntry(String userName, Session session) throws Exception
+   void removeUserProfileEntry(String userName, Session session) throws Exception
    {
       Object user = session.createQuery(queryFindUserProfileByName).setString(0, userName).uniqueResult();
       if (user != null)
+      {
          session.delete(user);
+         cache_.remove(userName);
+      }
    }
 
    public Collection findUserProfiles() throws Exception
    {
-      return null;
+      Session session = service_.openSession();
+      return service_.findAll(session, queryFindUserProfiles);
    }
 
    private void preSave(UserProfile profile, boolean isNew) throws Exception

Modified: core/trunk/exo.core.component.organization.jdbc/src/test/resources/conf/standalone/test-configuration-hibernate.xml
===================================================================
--- core/trunk/exo.core.component.organization.jdbc/src/test/resources/conf/standalone/test-configuration-hibernate.xml	2011-10-19 08:09:57 UTC (rev 5068)
+++ core/trunk/exo.core.component.organization.jdbc/src/test/resources/conf/standalone/test-configuration-hibernate.xml	2011-10-19 08:55:25 UTC (rev 5069)
@@ -46,7 +46,7 @@
         <description>Default Hibernate Service</description>
         <property name="hibernate.show_sql" value="false"/>
         <property name="hibernate.cglib.use_reflection_optimizer" value="true"/>
-        <property name="hibernate.connection.url" value="jdbc:hsqldb:file:../temp/data/exodb"/>
+        <property name="hibernate.connection.url" value="jdbc:hsqldb:file:target/temp/data/exodb"/>
         <property name="hibernate.connection.driver_class" value="org.hsqldb.jdbcDriver"/>
         <property name="hibernate.connection.autocommit" value="true"/>
         <property name="hibernate.connection.username" value="sa"/>
@@ -82,6 +82,16 @@
         </values-param>
       </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 -->

Modified: core/trunk/exo.core.component.organization.jdbc/src/test/resources/conf/standalone/test-configuration-jdbc.xml
===================================================================
--- core/trunk/exo.core.component.organization.jdbc/src/test/resources/conf/standalone/test-configuration-jdbc.xml	2011-10-19 08:09:57 UTC (rev 5068)
+++ core/trunk/exo.core.component.organization.jdbc/src/test/resources/conf/standalone/test-configuration-jdbc.xml	2011-10-19 08:55:25 UTC (rev 5069)
@@ -76,7 +76,7 @@
             <name>connection.config</name>
             <description>Connection configuration</description>
             <property name='connection.driver' value='org.hsqldb.jdbcDriver' />
-            <property name='connection.url' value='jdbc:hsqldb:file:target/temp' />
+            <property name='connection.url' value='jdbc:hsqldb:file:target/temp/data/exodb' />
             <property name='connection.login' value='sa' />
             <property name='connection.password' value='' />
             <property name='connection.min-size' value='3' />

Modified: core/trunk/exo.core.component.organization.tests/src/main/java/org/exoplatform/services/tck/organization/TestGroupHandler.java
===================================================================
--- core/trunk/exo.core.component.organization.tests/src/main/java/org/exoplatform/services/tck/organization/TestGroupHandler.java	2011-10-19 08:09:57 UTC (rev 5068)
+++ core/trunk/exo.core.component.organization.tests/src/main/java/org/exoplatform/services/tck/organization/TestGroupHandler.java	2011-10-19 08:55:25 UTC (rev 5069)
@@ -86,13 +86,22 @@
     */
    public void testRemoveGroup() throws Exception
    {
+      createUser(userName);
       createGroup("/organization", groupName1, "label", "desc");
       createGroup("/organization/" + groupName1, groupName1, "label", "desc");
+      
+      createMembership(newUserName, groupName2, membershipType);
+      assertEquals("We expect to find single membership for user " + newUserName, 1,
+         mHandler.findMembershipsByUser(newUserName).size());
 
       Group group = gHandler.removeGroup(gHandler.findGroupById("/organization/group1"), true);
       assertNull(gHandler.findGroupById("/organization/group1"));
       assertNull(gHandler.findGroupById("/organization/group1/group2"));
 
+      gHandler.removeGroup(gHandler.findGroupById("/" + groupName2), true);
+      assertEquals("We expect to find no membership for user " + newUserName, 0,
+         mHandler.findMembershipsByUser(newUserName).size());
+      
       // try to remove not exited group. Exception should be thrown
       try
       {

Added: core/trunk/exo.core.component.organization.tests/src/main/java/org/exoplatform/services/tck/organization/TestMembershipTypeEventListener.java
===================================================================
--- core/trunk/exo.core.component.organization.tests/src/main/java/org/exoplatform/services/tck/organization/TestMembershipTypeEventListener.java	                        (rev 0)
+++ core/trunk/exo.core.component.organization.tests/src/main/java/org/exoplatform/services/tck/organization/TestMembershipTypeEventListener.java	2011-10-19 08:55:25 UTC (rev 5069)
@@ -0,0 +1,163 @@
+/**
+ * 
+ */
+/*
+ * Copyright (C) 2003-2007 eXo Platform SAS.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation; either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see<http://www.gnu.org/licenses/>.
+ */
+package org.exoplatform.services.tck.organization;
+
+import org.exoplatform.services.organization.MembershipType;
+import org.exoplatform.services.organization.MembershipTypeEventListener;
+import org.exoplatform.services.organization.MembershipTypeEventListenerHandler;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Created by The eXo Platform SAS.
+ * 
+ * @author <a href="dmitry.kuleshov at exoplatform.com">Dmitry Kuleshov</a>
+ * @version $Id: TestMembershipTypeHandlerImpl.java 111 2008-11-11 11:11:11Z $
+ */
+public class TestMembershipTypeEventListener extends AbstractOrganizationServiceTest
+{
+
+   /**
+    * Test get listeners.
+    */
+   public void testGetListeners() throws Exception
+   {
+      if (mtHandler instanceof MembershipTypeEventListenerHandler)
+      {
+         List<MembershipTypeEventListener> list =
+            ((MembershipTypeEventListenerHandler)mtHandler).getMembershipTypeListeners();
+
+         assertEquals(1, list.size());
+         try
+         {
+            list.clear();
+            fail("We are not supposed to change list of listeners");
+         }
+         catch (Exception e)
+         {
+         }
+      }
+   }
+
+   /**
+    * Test events.
+    */
+   public void testMembershipTypeEventListener() throws Exception
+   {
+      TesterMembershipTypeEventListener testListener = new TesterMembershipTypeEventListener();
+      mtHandler.addMembershipTypeEventListener(testListener);
+
+      if (mtHandler instanceof MembershipTypeEventListenerHandler)
+      {
+         List<MembershipTypeEventListener> list =
+            ((MembershipTypeEventListenerHandler)mtHandler).getMembershipTypeListeners();
+
+         assertEquals(2, list.size());
+      }
+
+      // Create new membership type. In preSave event there is not recored in db.
+      createMembershipType(membershipType, "desc");
+
+      assertEquals(2, testListener.mtInEvent.size());
+      assertEquals(2, testListener.mtInStorage.size());
+
+      // preSave Event
+      assertEquals(membershipType, testListener.mtInEvent.get(0).getName());
+      assertNull(testListener.mtInStorage.get(0));
+
+      // postSave Event
+      assertEquals(membershipType, testListener.mtInEvent.get(1).getName());
+      assertNotNull(testListener.mtInStorage.get(1));
+      assertEquals(membershipType, testListener.mtInStorage.get(1).getName());
+
+      testListener.mtInEvent.clear();
+      testListener.mtInStorage.clear();
+
+      // Modify membership type. In preSave event there is old record in storage.
+      MembershipType mt = mtHandler.findMembershipType(membershipType);
+      mt.setDescription("newDesc");
+
+      mtHandler.saveMembershipType(mt, true);
+
+      // preSave Event
+      assertEquals(2, testListener.mtInEvent.size());
+      assertEquals(2, testListener.mtInStorage.size());
+
+      assertEquals("newDesc", testListener.mtInEvent.get(0).getDescription());
+      assertEquals("desc", testListener.mtInStorage.get(0).getDescription());
+
+      // postSave Event
+      assertEquals("newDesc", testListener.mtInEvent.get(1).getDescription());
+      assertEquals("newDesc", testListener.mtInStorage.get(1).getDescription());
+
+      testListener.mtInEvent.clear();
+      testListener.mtInStorage.clear();
+
+      // Remove membership type. In preDelete Event there is still record in storage
+      mtHandler.removeMembershipType(membershipType, true);
+
+      assertEquals(2, testListener.mtInEvent.size());
+      assertEquals(2, testListener.mtInStorage.size());
+
+      // preDelete Event
+      assertEquals(membershipType, testListener.mtInEvent.get(0).getName());
+      assertNotNull(testListener.mtInStorage.get(0));
+
+      // postDelete Event
+      assertEquals(membershipType, testListener.mtInEvent.get(1).getName());
+      assertNull(testListener.mtInStorage.get(1));
+
+      testListener.mtInEvent.clear();
+      testListener.mtInStorage.clear();
+
+   }
+
+   private class TesterMembershipTypeEventListener extends MembershipTypeEventListener
+   {
+      List<MembershipType> mtInEvent = new ArrayList<MembershipType>();
+
+      List<MembershipType> mtInStorage = new ArrayList<MembershipType>();
+
+      public void preSave(MembershipType type, boolean isNew) throws Exception
+      {
+         mtInEvent.add(type);
+         mtInStorage.add(mtHandler.findMembershipType(type.getName()));
+      }
+
+      public void postSave(MembershipType type, boolean isNew) throws Exception
+      {
+         mtInEvent.add(type);
+         mtInStorage.add(mtHandler.findMembershipType(type.getName()));
+      }
+
+      public void preDelete(MembershipType type) throws Exception
+      {
+         mtInEvent.add(type);
+         mtInStorage.add(mtHandler.findMembershipType(type.getName()));
+      }
+
+      public void postDelete(MembershipType type) throws Exception
+      {
+         mtInEvent.add(type);
+         mtInStorage.add(mtHandler.findMembershipType(type.getName()));
+      }
+   }
+}

Modified: core/trunk/exo.core.component.organization.tests/src/main/java/org/exoplatform/services/tck/organization/TestMembershipTypeHandler.java
===================================================================
--- core/trunk/exo.core.component.organization.tests/src/main/java/org/exoplatform/services/tck/organization/TestMembershipTypeHandler.java	2011-10-19 08:09:57 UTC (rev 5068)
+++ core/trunk/exo.core.component.organization.tests/src/main/java/org/exoplatform/services/tck/organization/TestMembershipTypeHandler.java	2011-10-19 08:55:25 UTC (rev 5069)
@@ -20,12 +20,7 @@
 package org.exoplatform.services.tck.organization;
 
 import org.exoplatform.services.organization.MembershipType;
-import org.exoplatform.services.organization.MembershipTypeEventListener;
-import org.exoplatform.services.organization.MembershipTypeEventListenerHandler;
 
-import java.util.ArrayList;
-import java.util.List;
-
 /**
  * Created by The eXo Platform SAS.
  * 
@@ -62,20 +57,24 @@
     */
    public void testRemoveMembershipType() throws Exception
    {
-      createMembershipType(membershipType, "desc");
+      createMembership(userName, groupName1, membershipType);
+      assertEquals("We expect to find single membership for user " + userName, 1,
+         mHandler.findMembershipsByUser(userName).size());
 
       MembershipType mt = mtHandler.removeMembershipType("type", true);
       assertEquals(mt.getName(), membershipType);
       assertNull(mtHandler.findMembershipType("type"));
+      assertEquals("We expect to find no membership for user " + userName, 0, mHandler.findMembershipsByUser(userName)
+         .size());
 
       // try to remove not existed membership type. We are supposed to get "null" instead of Exception
       try
       {
          assertNull(mtHandler.removeMembershipType("not-existed-mt", true));
+         fail("Exception should be thrown");
       }
       catch (Exception e)
       {
-         fail("Exception should not be thrown");
       }
    }
 
@@ -95,129 +94,4 @@
       assertEquals(mt.getDescription(), "newDesc");
    }
 
-   /**
-    * Test get listeners.
-    */
-   public void testGetListeners() throws Exception
-   {
-      if (mtHandler instanceof MembershipTypeEventListenerHandler)
-      {
-         List<MembershipTypeEventListener> list =
-            ((MembershipTypeEventListenerHandler)mtHandler).getMembershipTypeListeners();
-         
-         assertEquals(1, list.size());
-         try
-         {
-            list.clear();
-            fail("We are not supposed to change list of listeners");
-         }
-         catch (Exception e)
-         {
-         }
-      }
-   }
-
-   /**
-    * Test events.
-    */
-   public void testMembershipTypeEventListener() throws Exception
-   {
-      TesterMembershipTypeEventListener testListener = new TesterMembershipTypeEventListener();
-      mtHandler.addMembershipTypeEventListener(testListener);
-
-      if (mtHandler instanceof MembershipTypeEventListenerHandler)
-      {
-         List<MembershipTypeEventListener> list =
-            ((MembershipTypeEventListenerHandler)mtHandler).getMembershipTypeListeners();
-
-         assertEquals(2, list.size());
-      }
-
-      // Create new membership type. In preSave event there is not recored in db.
-      createMembershipType(membershipType, "desc");
-
-      assertEquals(2, testListener.mtInEvent.size());
-      assertEquals(2, testListener.mtInStorage.size());
-
-      // preSave Event
-      assertEquals(membershipType, testListener.mtInEvent.get(0).getName());
-      assertNull(testListener.mtInStorage.get(0));
-
-      // postSave Event
-      assertEquals(membershipType, testListener.mtInEvent.get(1).getName());
-      assertNotNull(testListener.mtInStorage.get(1));
-      assertEquals(membershipType, testListener.mtInStorage.get(1).getName());
-
-      testListener.mtInEvent.clear();
-      testListener.mtInStorage.clear();
-
-      // Modify membership type. In preSave event there is old record in storage.
-      MembershipType mt = mtHandler.findMembershipType(membershipType);
-      mt.setDescription("newDesc");
-
-      mtHandler.saveMembershipType(mt, true);
-
-      // preSave Event
-      assertEquals(2, testListener.mtInEvent.size());
-      assertEquals(2, testListener.mtInStorage.size());
-
-      assertEquals("newDesc", testListener.mtInEvent.get(0).getDescription());
-      assertEquals("desc", testListener.mtInStorage.get(0).getDescription());
-
-      // postSave Event
-      assertEquals("newDesc", testListener.mtInEvent.get(1).getDescription());
-      assertEquals("newDesc", testListener.mtInStorage.get(1).getDescription());
-
-      testListener.mtInEvent.clear();
-      testListener.mtInStorage.clear();
-
-      // Remove membership type. In preDelete Event there is still record in storage
-      mtHandler.removeMembershipType(membershipType, true);
-      
-      assertEquals(2, testListener.mtInEvent.size());
-      assertEquals(2, testListener.mtInStorage.size());
-      
-      // preDelete Event
-      assertEquals(membershipType, testListener.mtInEvent.get(0).getName());
-      assertNotNull(testListener.mtInStorage.get(0));
-
-      // postDelete Event
-      assertEquals(membershipType, testListener.mtInEvent.get(1).getName());
-      assertNull(testListener.mtInStorage.get(1));
-      
-      testListener.mtInEvent.clear();
-      testListener.mtInStorage.clear();
-
-   }
-
-   private class TesterMembershipTypeEventListener extends MembershipTypeEventListener
-   {
-      List<MembershipType> mtInEvent = new ArrayList<MembershipType>();
-
-      List<MembershipType> mtInStorage = new ArrayList<MembershipType>();
-      
-      public void preSave(MembershipType type, boolean isNew) throws Exception
-      {
-         mtInEvent.add(type);
-         mtInStorage.add(mtHandler.findMembershipType(type.getName()));
-      }
-
-      public void postSave(MembershipType type, boolean isNew) throws Exception
-      {
-         mtInEvent.add(type);
-         mtInStorage.add(mtHandler.findMembershipType(type.getName()));
-      }
-
-      public void preDelete(MembershipType type) throws Exception
-      {
-         mtInEvent.add(type);
-         mtInStorage.add(mtHandler.findMembershipType(type.getName()));
-      }
-
-      public void postDelete(MembershipType type) throws Exception
-      {
-         mtInEvent.add(type);
-         mtInStorage.add(mtHandler.findMembershipType(type.getName()));
-      }
-   }
 }

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-10-19 08:09:57 UTC (rev 5068)
+++ core/trunk/exo.core.component.organization.tests/src/main/java/org/exoplatform/services/tck/organization/TestUserHandler.java	2011-10-19 08:55:25 UTC (rev 5069)
@@ -129,6 +129,7 @@
 
       query = new Query();
       query.setFromLoginDate(calc.getTime());
+      query.setUserName("tolik");
       assertEquals(uHandler.findUsersByQuery(query).getSize(), 1);
 
       calc = Calendar.getInstance();
@@ -150,6 +151,7 @@
 
       query = new Query();
       query.setToLoginDate(calc.getTime());
+      query.setUserName("tolik");
       assertEquals(uHandler.findUsersByQuery(query).getSize(), 1);
    }
 
@@ -208,6 +210,7 @@
 
       query = new Query();
       query.setFromLoginDate(calc.getTime());
+      query.setUserName("tolik");
       assertEquals(uHandler.findUsersByQuery(query).getSize(), 1);
 
       calc = Calendar.getInstance();
@@ -229,6 +232,7 @@
 
       query = new Query();
       query.setToLoginDate(calc.getTime());
+      query.setUserName("tolik");
       assertEquals(uHandler.findUsersByQuery(query).getSize(), 1);
    }
 
@@ -253,9 +257,17 @@
     */
    public void testRemoveUser() throws Exception
    {
-      createUser(userName);
+      createMembership(userName, groupName2, membershipType);
+
+      assertEquals("We expect to find single membership for user " + userName, 1,
+         mHandler.findMembershipsByUser(userName).size());
+
       assertNotNull(uHandler.removeUser(userName, true));
 
+      assertNull(upHandler.findUserProfileByName(userName));
+      assertEquals("We expect to find no membership for user " + userName, 0, mHandler.findMembershipsByUser(userName)
+         .size());
+
       // try to find user after remove. We are supposed to get "null" instead of exception
       try
       {
@@ -283,14 +295,6 @@
       uHandler.saveUser(u, true);
       assertEquals(newEmail, uHandler.findUserByName(userName).getEmail());
 
-      // change name
-      u = uHandler.findUserByName(userName);
-      u.setUserName(newUserName);
-      uHandler.saveUser(u, true);
-
-      // we should to find user with new name but not with old one
-      assertNotNull(uHandler.findUserByName(newUserName));
-      assertNull(uHandler.findUserByName(userName));
    }
 
    /**



More information about the exo-jcr-commits mailing list