[exo-jcr-commits] exo-jcr SVN: r4395 - in core/trunk: exo.core.component.organization.jdbc/src/main/java/org/exoplatform/services/organization/hibernate and 3 other directories.

do-not-reply at jboss.org do-not-reply at jboss.org
Thu May 19 06:07:49 EDT 2011


Author: tolusha
Date: 2011-05-19 06:07:48 -0400 (Thu, 19 May 2011)
New Revision: 4395

Modified:
   core/trunk/exo.core.component.organization.api/src/main/java/org/exoplatform/services/organization/MembershipHandler.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/OrganizationServiceImpl.java
   core/trunk/exo.core.component.organization.jdbc/src/main/java/org/exoplatform/services/organization/jdbc/MembershipDAOImpl.java
   core/trunk/exo.core.component.organization.jdbc/src/main/java/org/exoplatform/services/organization/jdbc/OrganizationServiceImpl.java
   core/trunk/exo.core.component.organization.jdbc/src/test/java/org/exoplatform/services/organization/TestOrganizationService.java
   core/trunk/exo.core.component.organization.ldap/src/main/java/org/exoplatform/services/organization/ldap/ADMembershipDAOImpl.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/OrganizationServiceImpl.java
Log:
EXOJCR-1009: check if membership type is present before membership is created

Modified: core/trunk/exo.core.component.organization.api/src/main/java/org/exoplatform/services/organization/MembershipHandler.java
===================================================================
--- core/trunk/exo.core.component.organization.api/src/main/java/org/exoplatform/services/organization/MembershipHandler.java	2011-05-19 08:09:58 UTC (rev 4394)
+++ core/trunk/exo.core.component.organization.api/src/main/java/org/exoplatform/services/organization/MembershipHandler.java	2011-05-19 10:07:48 UTC (rev 4395)
@@ -54,10 +54,9 @@
     * @param m The MembershipType of the memebership
     * @param broadcast Broadcast the event if the value of the broadcast is
     *          'true'
-    * @throws Exception An exception is throwed if the method is fail to access
-    *           the database, a membership record with the same user , group and
-    *           membership type exisited or any listener fail to handle the
-    *           event.
+    * @throws Exception An exception is thrown if the method is fail to access
+    *           the database, membership type not existed, a membership record with the same user, 
+    *           group and membership type existed, or any listener fail to handle the event.
     */
    public void linkMembership(User user, Group group, MembershipType m, boolean broadcast) throws Exception;
 

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-05-19 08:09:58 UTC (rev 4394)
+++ core/trunk/exo.core.component.organization.jdbc/src/main/java/org/exoplatform/services/organization/hibernate/MembershipDAOImpl.java	2011-05-19 10:07:48 UTC (rev 4395)
@@ -27,6 +27,7 @@
 import org.exoplatform.services.organization.MembershipEventListenerHandler;
 import org.exoplatform.services.organization.MembershipHandler;
 import org.exoplatform.services.organization.MembershipType;
+import org.exoplatform.services.organization.OrganizationService;
 import org.exoplatform.services.organization.User;
 import org.exoplatform.services.organization.impl.MembershipImpl;
 import org.hibernate.Session;
@@ -66,10 +67,16 @@
 
    private List listeners_;
 
-   public MembershipDAOImpl(HibernateService service)
+   /**
+    * Organization service.
+    */
+   protected final OrganizationService orgService;
+
+   public MembershipDAOImpl(HibernateService service, OrganizationService orgService)
    {
-      service_ = service;
-      listeners_ = new ListenerStack(5);
+      this.service_ = service;
+      this.orgService = orgService;
+      this.listeners_ = new ListenerStack(5);
    }
 
    public void addMembershipEventListener(MembershipEventListener listener)
@@ -84,26 +91,28 @@
 
    public void createMembership(Membership m, boolean broadcast) throws Exception
    {
+      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.");
+      }
+
       if (broadcast)
          preSave(m, true);
       Session session = service_.openSession();
-      session.save(IdentifierUtil.generateUUID(m), m);
+      session.save(m);
       if (broadcast)
          postSave(m, true);
       session.flush();
    }
 
-   // static void createMembershipEntries(Collection c, Session session) throws
-   // Exception {
-   // Iterator i = c.iterator() ;
-   // while(i.hasNext()) {
-   // Membership impl = (Membership) i.next() ;
-   // session.save(impl, impl.getId());
-   // }
-   // }
-
    public void linkMembership(User user, Group g, MembershipType mt, boolean broadcast) throws Exception
    {
+      if (user == null)
+      {
+         throw new InvalidNameException("Can not create membership record because user is null");
+      }
+
       if (g == null)
       {
          throw new InvalidNameException("Can not create membership record for " + user.getUserName()
@@ -117,25 +126,15 @@
       }
 
       MembershipImpl membership = new MembershipImpl();
-      // User user
-      // =(User)service_.findExactOne(session,UserHandlerImpl.queryFindUserByName,
-      // userName);
       membership.setUserName(user.getUserName());
       membership.setMembershipType(mt.getName());
       membership.setGroupId(g.getId());
-      if (membership.getId() != null)
-         throw new Exception(" Membership id isn't null!");
+      membership.setId(IdentifierUtil.generateUUID(membership));
+
       if (findMembershipByUserGroupAndType(user.getUserName(), g.getId(), mt.getName()) != null)
          return;
-      String id = IdentifierUtil.generateUUID(membership);
-      if (broadcast)
-         preSave(membership, true);
-      membership.setId(id);
-      Session session = service_.openSession();
-      session.save(membership);
-      if (broadcast)
-         postSave(membership, true);
-      session.flush();
+
+      createMembership(membership, broadcast);
    }
 
    public void saveMembership(Membership m, boolean broadcast) 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-05-19 08:09:58 UTC (rev 4394)
+++ core/trunk/exo.core.component.organization.jdbc/src/main/java/org/exoplatform/services/organization/hibernate/OrganizationServiceImpl.java	2011-05-19 10:07:48 UTC (rev 4395)
@@ -36,7 +36,7 @@
       userDAO_ = new UserDAOImpl(hservice, cservice);
       userProfileDAO_ = new UserProfileDAOImpl(hservice, cservice);
       groupDAO_ = new GroupDAOImpl(hservice);
-      membershipDAO_ = new MembershipDAOImpl(hservice);
       membershipTypeDAO_ = new MembershipTypeDAOImpl(hservice);
+      membershipDAO_ = new MembershipDAOImpl(hservice, this);
    }
 }

Modified: core/trunk/exo.core.component.organization.jdbc/src/main/java/org/exoplatform/services/organization/jdbc/MembershipDAOImpl.java
===================================================================
--- core/trunk/exo.core.component.organization.jdbc/src/main/java/org/exoplatform/services/organization/jdbc/MembershipDAOImpl.java	2011-05-19 08:09:58 UTC (rev 4394)
+++ core/trunk/exo.core.component.organization.jdbc/src/main/java/org/exoplatform/services/organization/jdbc/MembershipDAOImpl.java	2011-05-19 10:07:48 UTC (rev 4395)
@@ -32,6 +32,7 @@
 import org.exoplatform.services.organization.MembershipEventListener;
 import org.exoplatform.services.organization.MembershipHandler;
 import org.exoplatform.services.organization.MembershipType;
+import org.exoplatform.services.organization.OrganizationService;
 import org.exoplatform.services.organization.User;
 
 import java.sql.Connection;
@@ -49,12 +50,16 @@
 
    protected static Log log = ExoLogger.getLogger("exo.core.component.organization.jdbc.MembershipDAOImpl");
 
+   protected final OrganizationService service;
+
    protected ListenerService listenerService_;
 
-   public MembershipDAOImpl(ListenerService lService, ExoDatasource datasource, DBObjectMapper<MembershipImpl> mapper)
+   public MembershipDAOImpl(ListenerService lService, ExoDatasource datasource, DBObjectMapper<MembershipImpl> mapper,
+      OrganizationService service)
    {
       super(datasource, mapper, MembershipImpl.class);
-      listenerService_ = lService;
+      this.service = service;
+      this.listenerService_ = lService;
    }
 
    public Membership createMembershipInstance()
@@ -64,6 +69,12 @@
 
    public void createMembership(Membership membership, boolean broadcast) throws Exception
    {
+      if (service.getMembershipTypeHandler().findMembershipType(membership.getMembershipType()) == null)
+      {
+         throw new InvalidNameException("Can not create membership record " + membership.getId()
+            + " because membership type " + membership.getMembershipType() + " not exists.");
+      }
+      
       MembershipImpl membershipImpl = (MembershipImpl)membership;
       if (broadcast)
          listenerService_.broadcast("organization.membership.preSave", this, membershipImpl);
@@ -75,6 +86,11 @@
 
    public void linkMembership(User user, Group group, MembershipType mt, boolean broadcast) throws Exception
    {
+      if (user == null)
+      {
+         throw new InvalidNameException("Can not create membership record because group is null");
+      }
+
       if (group == null)
       {
          throw new InvalidNameException("Can not create membership record for " + user.getUserName()
@@ -239,5 +255,4 @@
    {
       throw new RuntimeException("This method is not supported anymore, please use the new api");
    }
-
 }

Modified: core/trunk/exo.core.component.organization.jdbc/src/main/java/org/exoplatform/services/organization/jdbc/OrganizationServiceImpl.java
===================================================================
--- core/trunk/exo.core.component.organization.jdbc/src/main/java/org/exoplatform/services/organization/jdbc/OrganizationServiceImpl.java	2011-05-19 08:09:58 UTC (rev 4394)
+++ core/trunk/exo.core.component.organization.jdbc/src/main/java/org/exoplatform/services/organization/jdbc/OrganizationServiceImpl.java	2011-05-19 10:07:48 UTC (rev 4395)
@@ -45,7 +45,7 @@
       groupDAO_ = new GroupDAOImpl(listenerService, datasource, new GroupMapper());
       membershipTypeDAO_ = new MembershipTypeDAOImpl(listenerService, datasource, new MembershipTypeMapper());
 
-      membershipDAO_ = new MembershipDAOImpl(listenerService, datasource, new MembershipMapper());
+      membershipDAO_ = new MembershipDAOImpl(listenerService, datasource, new MembershipMapper(), this);
       userProfileDAO_ = new UserProfileDAOImpl(listenerService, datasource, new UserProfileMapper());
 
       DBTableManager dbManager = datasource.getDBTableManager();

Modified: core/trunk/exo.core.component.organization.jdbc/src/test/java/org/exoplatform/services/organization/TestOrganizationService.java
===================================================================
--- core/trunk/exo.core.component.organization.jdbc/src/test/java/org/exoplatform/services/organization/TestOrganizationService.java	2011-05-19 08:09:58 UTC (rev 4394)
+++ core/trunk/exo.core.component.organization.jdbc/src/test/java/org/exoplatform/services/organization/TestOrganizationService.java	2011-05-19 10:07:48 UTC (rev 4395)
@@ -26,6 +26,8 @@
 import java.util.Calendar;
 import java.util.List;
 
+import javax.naming.InvalidNameException;
+
 /**
  * Created by The eXo Platform SAS Author : Hoa Pham hoapham at exoplatform.com,phamvuxuanhoa at yahoo.com
  * Oct 27, 2005
@@ -284,7 +286,13 @@
 
       mt = mtHandler_.createMembershipTypeInstance();
       mt.setName("membershipType3");
-      membershipHandler_.linkMembership(userBenj, group2, mt, true);
+      try
+      {
+         membershipHandler_.linkMembership(userBenj, group2, mt, true);
+      }
+      catch (InvalidNameException e)
+      {
+      }
 
       /*
        * find all memberships in group2 Expect result: 4 membership: 3 for

Modified: core/trunk/exo.core.component.organization.ldap/src/main/java/org/exoplatform/services/organization/ldap/ADMembershipDAOImpl.java
===================================================================
--- core/trunk/exo.core.component.organization.ldap/src/main/java/org/exoplatform/services/organization/ldap/ADMembershipDAOImpl.java	2011-05-19 08:09:58 UTC (rev 4394)
+++ core/trunk/exo.core.component.organization.ldap/src/main/java/org/exoplatform/services/organization/ldap/ADMembershipDAOImpl.java	2011-05-19 10:07:48 UTC (rev 4395)
@@ -21,6 +21,7 @@
 import org.exoplatform.services.ldap.LDAPService;
 import org.exoplatform.services.organization.Group;
 import org.exoplatform.services.organization.Membership;
+import org.exoplatform.services.organization.OrganizationService;
 import org.exoplatform.services.organization.impl.MembershipImpl;
 
 import java.util.ArrayList;
@@ -50,10 +51,10 @@
     * @param ad See {@link ADSearchBySID}
     * @throws Exception if any errors occurs
     */
-   public ADMembershipDAOImpl(LDAPAttributeMapping ldapAttrMapping, LDAPService ldapService, ADSearchBySID ad)
-      throws Exception
+   public ADMembershipDAOImpl(LDAPAttributeMapping ldapAttrMapping, LDAPService ldapService, ADSearchBySID ad,
+      OrganizationService service) throws Exception
    {
-      super(ldapAttrMapping, ldapService);
+      super(ldapAttrMapping, ldapService, service);
       adSearch = ad;
    }
 
@@ -184,7 +185,7 @@
          results = ctx.search(userDN, filter, constraints);
          while (results.hasMore())
          {
-            SearchResult sr = (SearchResult)results.next();
+            SearchResult sr = results.next();
             Attributes attrs = sr.getAttributes();
             Attribute attr = attrs.get("tokenGroups");
             for (int x = 0; x < attr.size(); x++)

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-05-19 08:09:58 UTC (rev 4394)
+++ core/trunk/exo.core.component.organization.ldap/src/main/java/org/exoplatform/services/organization/ldap/MembershipDAOImpl.java	2011-05-19 10:07:48 UTC (rev 4395)
@@ -27,6 +27,7 @@
 import org.exoplatform.services.organization.MembershipEventListenerHandler;
 import org.exoplatform.services.organization.MembershipHandler;
 import org.exoplatform.services.organization.MembershipType;
+import org.exoplatform.services.organization.OrganizationService;
 import org.exoplatform.services.organization.User;
 import org.exoplatform.services.organization.impl.MembershipImpl;
 
@@ -64,19 +65,28 @@
     * See {@link MembershipEventListener}.
     */
    protected List<MembershipEventListener> listeners;
+   
+   /**
+    * Organization service;
+    */
+   protected final OrganizationService service;
 
    /**
     * @param ldapAttrMapping
     *          mapping LDAP attributes to eXo organization service items (users, groups, etc)
     * @param ldapService
     *          {@link LDAPService}
+    * @param service 
+    *          Organization service implementation covering the handler. 
     * @throws Exception
     *           if any errors occurs
     */
-   public MembershipDAOImpl(LDAPAttributeMapping ldapAttrMapping, LDAPService ldapService) throws Exception
+   public MembershipDAOImpl(LDAPAttributeMapping ldapAttrMapping, LDAPService ldapService, OrganizationService service)
+      throws Exception
    {
       super(ldapAttrMapping, ldapService);
       this.listeners = new ArrayList<MembershipEventListener>(3);
+      this.service = service;
    }
 
    /**
@@ -104,6 +114,12 @@
       LdapContext ctx = ldapService.getLdapContext();
       try
       {
+         if (service.getMembershipTypeHandler().findMembershipType(m.getMembershipType()) == null)
+         {
+            throw new InvalidNameException("Can not create membership record " + m.getId()
+                     + " because membership type " + m.getMembershipType() + " is not exists.");
+         }
+
          for (int err = 0;; err++)
          {
             try
@@ -171,6 +187,11 @@
     */
    public void linkMembership(User user, Group group, MembershipType mt, boolean broadcast) throws Exception
    {
+      if (user == null)
+      {
+         throw new InvalidNameException("Can not create membership record because user is null");
+      }
+
       if (group == null)
       {
          throw new InvalidNameException("Can not create membership record for " + user.getUserName()
@@ -182,7 +203,7 @@
          throw new InvalidNameException("Can not create membership record for " + user.getUserName()
             + " because membership type is null");
       }
-
+      
       MembershipImpl membership = new MembershipImpl();
       membership.setMembershipType(mt.getName());
       membership.setUserName(user.getUserName());

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-05-19 08:09:58 UTC (rev 4394)
+++ core/trunk/exo.core.component.organization.ldap/src/main/java/org/exoplatform/services/organization/ldap/OrganizationServiceImpl.java	2011-05-19 10:07:48 UTC (rev 4395)
@@ -53,7 +53,7 @@
          //      ADSearchBySID adSearch = new ADSearchBySID(ldapAttrMapping, ldapService);
          ADSearchBySID adSearch = new ADSearchBySID(ldapAttrMapping);
          groupDAO_ = new ADGroupDAOImpl(ldapAttrMapping, ldapService, adSearch);
-         membershipDAO_ = new ADMembershipDAOImpl(ldapAttrMapping, ldapService, adSearch);
+         membershipDAO_ = new ADMembershipDAOImpl(ldapAttrMapping, ldapService, adSearch, this);
       }
       else
       {
@@ -61,7 +61,7 @@
          //      ldapAttrMapping.userDNKey = param.getValue();
          userDAO_ = new UserDAOImpl(ldapAttrMapping, ldapService);
          groupDAO_ = new GroupDAOImpl(ldapAttrMapping, ldapService);
-         membershipDAO_ = new MembershipDAOImpl(ldapAttrMapping, ldapService);
+         membershipDAO_ = new MembershipDAOImpl(ldapAttrMapping, ldapService, this);
       }
       // userProfileHandler_ = new UserProfileHandlerImpl(ldapAttrMapping, ldapService) ;
       userProfileDAO_ = new UserProfileDAOImpl(hservice, cservice);



More information about the exo-jcr-commits mailing list