[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