Author: tolusha
Date: 2009-10-16 04:08:49 -0400 (Fri, 16 Oct 2009)
New Revision: 287
Added:
core/trunk/component/organization/api/src/main/java/org/exoplatform/services/organization/cache/
core/trunk/component/organization/api/src/main/java/org/exoplatform/services/organization/cache/CacheableGroupHandlerImpl.java
core/trunk/component/organization/api/src/main/java/org/exoplatform/services/organization/cache/CacheableMembershipHandlerImpl.java
core/trunk/component/organization/api/src/main/java/org/exoplatform/services/organization/cache/CacheableMembershipTypeHandlerImpl.java
core/trunk/component/organization/api/src/main/java/org/exoplatform/services/organization/cache/CacheableUserHandlerImpl.java
core/trunk/component/organization/api/src/main/java/org/exoplatform/services/organization/cache/CacheableUserProfileHandlerImpl.java
core/trunk/component/organization/api/src/main/java/org/exoplatform/services/organization/cache/MembershipCacheKey.java
core/trunk/component/organization/api/src/main/java/org/exoplatform/services/organization/cache/OrganizationCacheHandler.java
Log:
EXOJCR-186: cacheable handlers
Added:
core/trunk/component/organization/api/src/main/java/org/exoplatform/services/organization/cache/CacheableGroupHandlerImpl.java
===================================================================
---
core/trunk/component/organization/api/src/main/java/org/exoplatform/services/organization/cache/CacheableGroupHandlerImpl.java
(rev 0)
+++
core/trunk/component/organization/api/src/main/java/org/exoplatform/services/organization/cache/CacheableGroupHandlerImpl.java 2009-10-16
08:08:49 UTC (rev 287)
@@ -0,0 +1,191 @@
+/*
+ * Copyright (C) 2003-2009 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.organization.cache;
+
+import org.exoplatform.services.cache.ExoCache;
+import org.exoplatform.services.organization.Group;
+import org.exoplatform.services.organization.GroupEventListener;
+import org.exoplatform.services.organization.GroupHandler;
+import org.exoplatform.services.organization.Membership;
+import org.exoplatform.services.organization.UserHandler;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * Created by The eXo Platform SAS.
+ *
+ * <br/>Date: 2009
+ *
+ * @author <a href="mailto:anatoliy.bazko@exoplatform.com.ua">Anatoliy
Bazko</a>
+ * @version $Id$
+ */
+public class CacheableGroupHandlerImpl implements GroupHandler
+{
+
+ private final ExoCache groupCache;
+
+ private final ExoCache membershipCache;
+
+ private final GroupHandler groupHandler;
+
+ /**
+ * CacheableUserHandler constructor.
+ *
+ * @param OrganizationCacheHandler
+ * - organization cache handler
+ * @param handler
+ * - user handler
+ */
+ public CacheableGroupHandlerImpl(OrganizationCacheHandler organizationCacheHandler,
GroupHandler handler)
+ {
+ this.groupCache = organizationCacheHandler.getGroupCache();
+ this.membershipCache = organizationCacheHandler.getMembershipCache();
+ this.groupHandler = handler;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void addChild(Group parent, Group child, boolean broadcast) throws Exception
+ {
+ groupHandler.addChild(parent, child, broadcast);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void addGroupEventListener(GroupEventListener listener)
+ {
+ groupHandler.addGroupEventListener(listener);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void createGroup(Group group, boolean broadcast) throws Exception
+ {
+ groupHandler.createGroup(group, broadcast);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public Group createGroupInstance()
+ {
+ return groupHandler.createGroupInstance();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public Group findGroupById(String groupId) throws Exception
+ {
+ Group group = (Group)groupCache.get(groupId);
+ if (group != null)
+ return group;
+
+ group = groupHandler.findGroupById(groupId);
+ if (group != null)
+ groupCache.put(groupId, group);
+
+ return group;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public Collection findGroupByMembership(String userName, String membershipType) throws
Exception
+ {
+ Collection<Group> groups = groupHandler.findGroupByMembership(userName,
membershipType);
+
+ for (Group group : groups)
+ groupCache.put(group.getId(), groups);
+
+ return groups;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public Collection findGroups(Group parent) throws Exception
+ {
+ Collection<Group> groups = groupHandler.findGroups(parent);
+ for (Group group : groups)
+ groupCache.put(group.getId(), groups);
+
+ return groups;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public Collection findGroupsOfUser(String user) throws Exception
+ {
+ Collection<Group> groups = groupHandler.findGroupsOfUser(user);
+ for (Group group : groups)
+ groupCache.put(group.getId(), groups);
+
+ return groups;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public Collection getAllGroups() throws Exception
+ {
+ Collection<Group> groups = groupHandler.getAllGroups();
+ for (Group group : groups)
+ groupCache.put(group.getId(), groups);
+
+ return groups;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public Group removeGroup(Group group, boolean broadcast) throws Exception
+ {
+ Group gr = groupHandler.removeGroup(group, broadcast);
+ if (gr != null)
+ {
+ groupCache.remove(gr.getId());
+
+ List<Membership> memberships = membershipCache.getCachedObjects();
+ for (Membership membership : memberships)
+ {
+ if (membership.getGroupId().equals(gr.getId()))
+ {
+ membershipCache.remove(membership.getId());
+ membershipCache.remove(new MembershipCacheKey(membership));
+ }
+ }
+ }
+
+ return gr;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void saveGroup(Group group, boolean broadcast) throws Exception
+ {
+ groupHandler.saveGroup(group, broadcast);
+ groupCache.put(group.getId(), group);
+ }
+
+}
Property changes on:
core/trunk/component/organization/api/src/main/java/org/exoplatform/services/organization/cache/CacheableGroupHandlerImpl.java
___________________________________________________________________
Name: svn:keywords
+ Id
Name: svn:eol-style
+ native
Added:
core/trunk/component/organization/api/src/main/java/org/exoplatform/services/organization/cache/CacheableMembershipHandlerImpl.java
===================================================================
---
core/trunk/component/organization/api/src/main/java/org/exoplatform/services/organization/cache/CacheableMembershipHandlerImpl.java
(rev 0)
+++
core/trunk/component/organization/api/src/main/java/org/exoplatform/services/organization/cache/CacheableMembershipHandlerImpl.java 2009-10-16
08:08:49 UTC (rev 287)
@@ -0,0 +1,208 @@
+/*
+ * Copyright (C) 2003-2009 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.organization.cache;
+
+import com.sun.org.apache.bcel.internal.generic.RETURN;
+
+import org.exoplatform.services.cache.ExoCache;
+import org.exoplatform.services.organization.Group;
+import org.exoplatform.services.organization.Membership;
+import org.exoplatform.services.organization.MembershipEventListener;
+import org.exoplatform.services.organization.MembershipHandler;
+import org.exoplatform.services.organization.MembershipType;
+import org.exoplatform.services.organization.User;
+import java.util.Collection;
+
+/**
+ * Created by The eXo Platform SAS.
+ *
+ * <br/>Date: 2009
+ *
+ * @author <a href="mailto:anatoliy.bazko@exoplatform.com.ua">Anatoliy
Bazko</a>
+ * @version $Id$
+ */
+public class CacheableMembershipHandlerImpl implements MembershipHandler
+{
+
+ private final ExoCache membershipCache;
+
+ private final MembershipHandler membershipHandler;
+
+ /**
+ * CacheableUserHandler constructor.
+ *
+ * @param organizationCacheHandler
+ * - organization cache handler
+ * @param membershipHandler
+ * - membership handler
+ */
+ public CacheableMembershipHandlerImpl(OrganizationCacheHandler
organizationCacheHandler,
+ MembershipHandler membershipHandler)
+ {
+ this.membershipCache = organizationCacheHandler.getMembershipCache();
+ this.membershipHandler = membershipHandler;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void addMembershipEventListener(MembershipEventListener listener)
+ {
+ membershipHandler.addMembershipEventListener(listener);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void createMembership(Membership m, boolean broadcast) throws Exception
+ {
+ membershipHandler.createMembership(m, broadcast);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public Membership createMembershipInstance()
+ {
+ return membershipHandler.createMembershipInstance();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public Membership findMembership(String id) throws Exception
+ {
+ Membership membership = (Membership)membershipCache.get(id);
+ if (membership != null)
+ return membership;
+
+ membership = membershipHandler.findMembership(id);
+
+ if (membership != null)
+ {
+ membershipCache.put(membership.getId(), membership);
+ membershipCache.put(new MembershipCacheKey(membership), membership);
+ }
+
+ return membership;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public Membership findMembershipByUserGroupAndType(String userName, String groupId,
String type) throws Exception
+ {
+ Membership membership = (Membership)membershipCache.get(new
MembershipCacheKey(userName, groupId, type));
+ if (membership != null)
+ return membership;
+
+ membership = membershipHandler.findMembershipByUserGroupAndType(userName, groupId,
type);
+
+ if (membership != null)
+ {
+ membershipCache.put(membership.getId(), membership);
+ membershipCache.put(new MembershipCacheKey(membership), membership);
+ }
+
+ return membership;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public Collection findMembershipsByGroup(Group group) throws Exception
+ {
+ Collection<Membership> memberships =
membershipHandler.findMembershipsByGroup(group);
+ for (Membership membership : memberships)
+ {
+ membershipCache.put(membership.getId(), membership);
+ membershipCache.put(new MembershipCacheKey(membership), membership);
+ }
+
+ return memberships;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public Collection findMembershipsByUser(String userName) throws Exception
+ {
+ Collection<Membership> memberships =
membershipHandler.findMembershipsByUser(userName);
+ for (Membership membership : memberships)
+ {
+ membershipCache.put(membership.getId(), membership);
+ membershipCache.put(new MembershipCacheKey(membership), membership);
+ }
+
+ return memberships;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public Collection findMembershipsByUserAndGroup(String userName, String groupId)
throws Exception
+ {
+ Collection<Membership> memberships =
membershipHandler.findMembershipsByUserAndGroup(userName, groupId);
+ for (Membership membership : memberships)
+ {
+ membershipCache.put(membership.getId(), membership);
+ membershipCache.put(new MembershipCacheKey(membership), membership);
+ }
+
+ return memberships;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void linkMembership(User user, Group group, MembershipType m, boolean
broadcast) throws Exception
+ {
+ membershipHandler.linkMembership(user, group, m, broadcast);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public Membership removeMembership(String id, boolean broadcast) throws Exception
+ {
+ Membership membership = membershipHandler.removeMembership(id, broadcast);
+ if (membership != null)
+ {
+ membershipCache.remove(membership.getId());
+ membershipCache.remove(new MembershipCacheKey(membership));
+ }
+
+ return membership;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public Collection removeMembershipByUser(String username, boolean broadcast) throws
Exception
+ {
+ Collection<Membership> memberships =
membershipHandler.removeMembershipByUser(username, broadcast);
+
+ for (Membership membership : memberships)
+ {
+ membershipCache.remove(membership.getId());
+ membershipCache.remove(new MembershipCacheKey(membership));
+ }
+
+ return memberships;
+ }
+
+}
Property changes on:
core/trunk/component/organization/api/src/main/java/org/exoplatform/services/organization/cache/CacheableMembershipHandlerImpl.java
___________________________________________________________________
Name: svn:keywords
+ Id
Name: svn:eol-style
+ native
Added:
core/trunk/component/organization/api/src/main/java/org/exoplatform/services/organization/cache/CacheableMembershipTypeHandlerImpl.java
===================================================================
---
core/trunk/component/organization/api/src/main/java/org/exoplatform/services/organization/cache/CacheableMembershipTypeHandlerImpl.java
(rev 0)
+++
core/trunk/component/organization/api/src/main/java/org/exoplatform/services/organization/cache/CacheableMembershipTypeHandlerImpl.java 2009-10-16
08:08:49 UTC (rev 287)
@@ -0,0 +1,145 @@
+/*
+ * Copyright (C) 2003-2009 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.organization.cache;
+
+import org.exoplatform.services.cache.ExoCache;
+import org.exoplatform.services.organization.Group;
+import org.exoplatform.services.organization.Membership;
+import org.exoplatform.services.organization.MembershipType;
+import org.exoplatform.services.organization.MembershipTypeHandler;
+import org.exoplatform.services.organization.UserHandler;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * Created by The eXo Platform SAS.
+ *
+ * <br/>Date: 2009
+ *
+ * @author <a href="mailto:anatoliy.bazko@exoplatform.com.ua">Anatoliy
Bazko</a>
+ * @version $Id$
+ */
+public class CacheableMembershipTypeHandlerImpl implements MembershipTypeHandler
+{
+
+ private final ExoCache membershipTypeCache;
+
+ private final ExoCache membershipCache;
+
+ private final MembershipTypeHandler membershipTypeHandler;
+
+ /**
+ * CacheableMembershipTypeHandler constructor.
+ *
+ * @param organizationCacheHandler
+ * - organization cache handler
+ * @param membershipTypeHandler
+ * - membership type handler
+ */
+ public CacheableMembershipTypeHandlerImpl(OrganizationCacheHandler
organizationCacheHandler,
+ MembershipTypeHandler membershipTypeHandler)
+ {
+ this.membershipTypeCache = organizationCacheHandler.getMembershipTypeCache();
+ this.membershipCache = organizationCacheHandler.getMembershipCache();
+ this.membershipTypeHandler = membershipTypeHandler;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public MembershipType createMembershipType(MembershipType mt, boolean broadcast)
throws Exception
+ {
+ MembershipType membershipType = membershipTypeHandler.createMembershipType(mt,
broadcast);
+ membershipTypeCache.put(membershipType.getName(), membershipType);
+
+ return membershipType;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public MembershipType createMembershipTypeInstance()
+ {
+ return membershipTypeHandler.createMembershipTypeInstance();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public MembershipType findMembershipType(String name) throws Exception
+ {
+ MembershipType membershipType = (MembershipType)membershipTypeCache.get(name);
+ if (membershipType != null)
+ return membershipType;
+
+ membershipType = membershipTypeHandler.findMembershipType(name);
+ if (membershipType != null)
+ membershipTypeCache.put(name, membershipType);
+
+ return membershipType;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public Collection findMembershipTypes() throws Exception
+ {
+
+ Collection<MembershipType> membershipTypes =
membershipTypeHandler.findMembershipTypes();
+ for (MembershipType membershipType : membershipTypes)
+ membershipTypeCache.put(membershipType.getName(), membershipType);
+
+ return membershipTypes;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public MembershipType removeMembershipType(String name, boolean broadcast) throws
Exception
+ {
+ MembershipType membershipType = membershipTypeHandler.removeMembershipType(name,
broadcast);
+ if (membershipType != null)
+ {
+ membershipTypeCache.remove(name);
+
+ List<Membership> memberships = membershipCache.getCachedObjects();
+ for (Membership membership : memberships)
+ {
+ if (membership.getMembershipType().equals(name))
+ {
+ membershipCache.remove(membership.getId());
+ membershipCache.remove(new MembershipCacheKey(membership));
+ }
+ }
+ }
+
+ return membershipType;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public MembershipType saveMembershipType(MembershipType mt, boolean broadcast) throws
Exception
+ {
+ MembershipType membershipType = membershipTypeHandler.saveMembershipType(mt,
broadcast);
+ membershipTypeCache.put(membershipType.getName(), membershipType);
+
+ return membershipType;
+ }
+
+}
Property changes on:
core/trunk/component/organization/api/src/main/java/org/exoplatform/services/organization/cache/CacheableMembershipTypeHandlerImpl.java
___________________________________________________________________
Name: svn:keywords
+ Id
Name: svn:eol-style
+ native
Added:
core/trunk/component/organization/api/src/main/java/org/exoplatform/services/organization/cache/CacheableUserHandlerImpl.java
===================================================================
---
core/trunk/component/organization/api/src/main/java/org/exoplatform/services/organization/cache/CacheableUserHandlerImpl.java
(rev 0)
+++
core/trunk/component/organization/api/src/main/java/org/exoplatform/services/organization/cache/CacheableUserHandlerImpl.java 2009-10-16
08:08:49 UTC (rev 287)
@@ -0,0 +1,181 @@
+/*
+ * Copyright (C) 2003-2009 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.organization.cache;
+
+import org.exoplatform.commons.utils.PageList;
+import org.exoplatform.services.cache.ExoCache;
+import org.exoplatform.services.organization.Membership;
+import org.exoplatform.services.organization.Query;
+import org.exoplatform.services.organization.User;
+import org.exoplatform.services.organization.UserEventListener;
+import org.exoplatform.services.organization.UserHandler;
+
+import java.util.List;
+
+/**
+ * Created by The eXo Platform SAS.
+ *
+ * <br/>Date: 2009
+ *
+ * @author <a href="mailto:anatoliy.bazko@exoplatform.com.ua">Anatoliy
Bazko</a>
+ * @version $Id$
+ */
+public class CacheableUserHandlerImpl implements UserHandler
+{
+
+ private final ExoCache userCache;
+
+ private final ExoCache userProfileCache;
+
+ private final ExoCache membershipCache;
+
+ private final UserHandler userHandler;
+
+ /**
+ * CacheableUserHandler constructor.
+ *
+ * @param cacheHandler
+ * - cache handler
+ * @param userHandler
+ * - user handler
+ */
+ public CacheableUserHandlerImpl(OrganizationCacheHandler organizationCacheHandler,
UserHandler userHandler)
+ {
+ this.userCache = organizationCacheHandler.getUserCache();
+ this.userProfileCache = organizationCacheHandler.getUserProfileCache();
+ this.membershipCache = organizationCacheHandler.getMembershipCache();
+ this.userHandler = userHandler;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void addUserEventListener(UserEventListener listener)
+ {
+ userHandler.addUserEventListener(listener);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public boolean authenticate(String username, String password) throws Exception
+ {
+ boolean authenticated = userHandler.authenticate(username, password);
+ userCache.remove(username);
+
+ return authenticated;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void createUser(User user, boolean broadcast) throws Exception
+ {
+ userHandler.createUser(user, broadcast);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public User createUserInstance()
+ {
+ return userHandler.createUserInstance();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public User createUserInstance(String username)
+ {
+ return userHandler.createUserInstance(username);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public User findUserByName(String userName) throws Exception
+ {
+ User user = (User)userCache.get(userName);
+ if (user != null)
+ return user;
+
+ user = userHandler.findUserByName(userName);
+ if (user != null)
+ userCache.put(userName, user);
+
+ return user;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public PageList findUsers(Query query) throws Exception
+ {
+ return userHandler.findUsers(query);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public PageList findUsersByGroup(String groupId) throws Exception
+ {
+ return userHandler.findUsersByGroup(groupId);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public PageList getUserPageList(int pageSize) throws Exception
+ {
+ return userHandler.getUserPageList(pageSize);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public User removeUser(String userName, boolean broadcast) throws Exception
+ {
+ User user = userHandler.removeUser(userName, broadcast);
+ if (user != null)
+ {
+ userCache.remove(userName);
+ userProfileCache.remove(userName);
+
+ List<Membership> memberships = membershipCache.getCachedObjects();
+ for (Membership membership : memberships)
+ {
+ if (membership.getUserName().equals(userName))
+ {
+ membershipCache.remove(membership.getId());
+ membershipCache.remove(new MembershipCacheKey(membership));
+ }
+ }
+ }
+
+ return user;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void saveUser(User user, boolean broadcast) throws Exception
+ {
+ userHandler.saveUser(user, broadcast);
+ userCache.put(user.getUserName(), user);
+ }
+
+}
Property changes on:
core/trunk/component/organization/api/src/main/java/org/exoplatform/services/organization/cache/CacheableUserHandlerImpl.java
___________________________________________________________________
Name: svn:keywords
+ Id
Name: svn:eol-style
+ native
Added:
core/trunk/component/organization/api/src/main/java/org/exoplatform/services/organization/cache/CacheableUserProfileHandlerImpl.java
===================================================================
---
core/trunk/component/organization/api/src/main/java/org/exoplatform/services/organization/cache/CacheableUserProfileHandlerImpl.java
(rev 0)
+++
core/trunk/component/organization/api/src/main/java/org/exoplatform/services/organization/cache/CacheableUserProfileHandlerImpl.java 2009-10-16
08:08:49 UTC (rev 287)
@@ -0,0 +1,130 @@
+/*
+ * Copyright (C) 2003-2009 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.organization.cache;
+
+import org.exoplatform.services.cache.ExoCache;
+import org.exoplatform.services.organization.UserHandler;
+import org.exoplatform.services.organization.UserProfile;
+import org.exoplatform.services.organization.UserProfileEventListener;
+import org.exoplatform.services.organization.UserProfileHandler;
+
+import java.util.Collection;
+
+/**
+ * Created by The eXo Platform SAS.
+ *
+ * <br/>Date: 2009
+ *
+ * @author <a href="mailto:anatoliy.bazko@exoplatform.com.ua">Anatoliy
Bazko</a>
+ * @version $Id$
+ */
+public class CacheableUserProfileHandlerImpl implements UserProfileHandler
+{
+
+ private final ExoCache userProfileCache;
+
+ private final UserProfileHandler userProfileHandler;
+
+ /**
+ * CacheableUserHandler constructor.
+ *
+ * @param organizationCacheHandler
+ * - organization cache handler
+ * @param userProfileHandler
+ * - user profile handler
+ */
+ public CacheableUserProfileHandlerImpl(OrganizationCacheHandler
organizationCacheHandler,
+ UserProfileHandler userProfileHandler)
+ {
+ this.userProfileCache = organizationCacheHandler.getUserProfileCache();
+ this.userProfileHandler = userProfileHandler;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void addUserProfileEventListener(UserProfileEventListener listener)
+ {
+ userProfileHandler.addUserProfileEventListener(listener);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public UserProfile createUserProfileInstance()
+ {
+ return userProfileHandler.createUserProfileInstance();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public UserProfile createUserProfileInstance(String userName)
+ {
+ return userProfileHandler.createUserProfileInstance(userName);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public UserProfile findUserProfileByName(String userName) throws Exception
+ {
+ UserProfile userProfile = (UserProfile)userProfileCache.get(userName);
+ if (userProfile != null)
+ return userProfile;
+
+ userProfile = userProfileHandler.findUserProfileByName(userName);
+ if (userProfile != null)
+ userProfileCache.put(userName, userProfile);
+
+ return userProfile;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public Collection findUserProfiles() throws Exception
+ {
+ Collection<UserProfile> userProfiles =
userProfileHandler.findUserProfiles();
+ for (UserProfile userProfile : userProfiles)
+ userProfileCache.put(userProfile.getUserName(), userProfile);
+
+ return userProfiles;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public UserProfile removeUserProfile(String userName, boolean broadcast) throws
Exception
+ {
+ UserProfile userProfile = userProfileHandler.removeUserProfile(userName,
broadcast);
+ if (userProfile != null)
+ userProfileCache.remove(userName);
+
+ return userProfile;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void saveUserProfile(UserProfile profile, boolean broadcast) throws Exception
+ {
+ userProfileHandler.saveUserProfile(profile, broadcast);
+ userProfileCache.put(profile.getUserName(), profile);
+ }
+
+}
Property changes on:
core/trunk/component/organization/api/src/main/java/org/exoplatform/services/organization/cache/CacheableUserProfileHandlerImpl.java
___________________________________________________________________
Name: svn:keywords
+ Id
Name: svn:eol-style
+ native
Added:
core/trunk/component/organization/api/src/main/java/org/exoplatform/services/organization/cache/MembershipCacheKey.java
===================================================================
---
core/trunk/component/organization/api/src/main/java/org/exoplatform/services/organization/cache/MembershipCacheKey.java
(rev 0)
+++
core/trunk/component/organization/api/src/main/java/org/exoplatform/services/organization/cache/MembershipCacheKey.java 2009-10-16
08:08:49 UTC (rev 287)
@@ -0,0 +1,115 @@
+/*
+ * Copyright (C) 2003-2009 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.organization.cache;
+
+import org.exoplatform.services.organization.Membership;
+
+import java.io.Serializable;
+
+/**
+ * Created by The eXo Platform SAS.
+ *
+ * <br/>Date: 2009
+ *
+ * @author <a href="mailto:anatoliy.bazko@exoplatform.com.ua">Anatoliy
Bazko</a>
+ * @version $Id$
+ */
+/**
+ * Will be used as key for cacheMembership.
+ */
+public class MembershipCacheKey implements Serializable
+{
+ /**
+ * serialVersionUID.
+ */
+ private static final long serialVersionUID = -188435911917156440L;
+
+ private final String userName;
+
+ private final String groupId;
+
+ private final String type;
+
+ private final int hashcode;
+
+ public MembershipCacheKey(String userName, String groupId, String type)
+ {
+ this.userName = userName;
+ this.groupId = groupId;
+ this.type = type;
+
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((groupId == null) ? 0 : groupId.hashCode());
+ result = prime * result + ((type == null) ? 0 : type.hashCode());
+ hashcode = prime * result + ((userName == null) ? 0 : userName.hashCode());
+ }
+
+ public MembershipCacheKey(Membership m)
+ {
+ this.userName = m.getUserName();
+ this.groupId = m.getGroupId();
+ this.type = m.getMembershipType();
+
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((groupId == null) ? 0 : groupId.hashCode());
+ result = prime * result + ((type == null) ? 0 : type.hashCode());
+ hashcode = prime * result + ((userName == null) ? 0 : userName.hashCode());
+ }
+
+ @Override
+ public int hashCode()
+ {
+ return hashcode;
+ }
+
+ @Override
+ public boolean equals(Object obj)
+ {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ MembershipCacheKey other = (MembershipCacheKey)obj;
+ if (groupId == null)
+ {
+ if (other.groupId != null)
+ return false;
+ }
+ else if (!groupId.equals(other.groupId))
+ return false;
+ if (type == null)
+ {
+ if (other.type != null)
+ return false;
+ }
+ else if (!type.equals(other.type))
+ return false;
+ if (userName == null)
+ {
+ if (other.userName != null)
+ return false;
+ }
+ else if (!userName.equals(other.userName))
+ return false;
+ return true;
+ }
+
+}
\ No newline at end of file
Property changes on:
core/trunk/component/organization/api/src/main/java/org/exoplatform/services/organization/cache/MembershipCacheKey.java
___________________________________________________________________
Name: svn:keywords
+ Id
Name: svn:eol-style
+ native
Added:
core/trunk/component/organization/api/src/main/java/org/exoplatform/services/organization/cache/OrganizationCacheHandler.java
===================================================================
---
core/trunk/component/organization/api/src/main/java/org/exoplatform/services/organization/cache/OrganizationCacheHandler.java
(rev 0)
+++
core/trunk/component/organization/api/src/main/java/org/exoplatform/services/organization/cache/OrganizationCacheHandler.java 2009-10-16
08:08:49 UTC (rev 287)
@@ -0,0 +1,146 @@
+/*
+ * Copyright (C) 2003-2009 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.organization.cache;
+
+import org.exoplatform.services.cache.CacheService;
+import org.exoplatform.services.cache.ExoCache;
+import org.exoplatform.services.organization.impl.GroupImpl;
+import org.exoplatform.services.organization.impl.MembershipImpl;
+import org.exoplatform.services.organization.impl.MembershipTypeImpl;
+import org.exoplatform.services.organization.impl.UserImpl;
+import org.exoplatform.services.organization.impl.UserProfileImpl;
+
+/**
+ * Created by The eXo Platform SAS.
+ *
+ * <br/>Date: 2009
+ *
+ * @author <a href="mailto:anatoliy.bazko@exoplatform.com.ua">Anatoliy
Bazko</a>
+ * @version $Id$
+ */
+public class OrganizationCacheHandler
+{
+
+ /**
+ * Use cache.
+ */
+ private final ExoCache userCache;
+
+ /**
+ * User profile cache.
+ */
+ private final ExoCache userProfileCache;
+
+ /**
+ * Membership cache.
+ */
+ private final ExoCache membershipCache;
+
+ /**
+ * Membership type cache.
+ */
+ private final ExoCache membershipTypeCache;
+
+ /**
+ * Group cache.
+ */
+ private final ExoCache groupCache;
+
+ /**
+ * OrganizationCacheHandler constructor.
+ *
+ * @param cservice
+ * cache service
+ */
+ public OrganizationCacheHandler(CacheService cservice)
+ {
+ userCache = cservice.getCacheInstance(UserImpl.class.getName());
+ userProfileCache = cservice.getCacheInstance(UserProfileImpl.class.getName());
+ membershipCache = cservice.getCacheInstance(MembershipImpl.class.getName());
+ membershipTypeCache =
cservice.getCacheInstance(MembershipTypeImpl.class.getName());
+ groupCache = cservice.getCacheInstance(GroupImpl.class.getName());
+ }
+
+ /**
+ * OrganizationCacheHandler constructor.
+ *
+ * @param cservice
+ * cache service
+ * @param lifeTime
+ * lifetime cache param
+ */
+ public OrganizationCacheHandler(CacheService cservice, long lifeTime)
+ {
+ this(cservice);
+
+ userCache.setLiveTime(lifeTime);
+ userProfileCache.setLiveTime(lifeTime);
+ membershipCache.setLiveTime(lifeTime);
+ membershipTypeCache.setLiveTime(lifeTime);
+ groupCache.setLiveTime(lifeTime);
+ }
+
+ /**
+ * Returns user profile cache.
+ *
+ * @return user profile cache
+ */
+ public ExoCache getUserProfileCache()
+ {
+ return userProfileCache;
+ }
+
+ /**
+ * Returns user cache.
+ *
+ * @return user cache
+ */
+ public ExoCache getUserCache()
+ {
+ return userCache;
+ }
+
+ /**
+ * Returns membership type cache.
+ *
+ * @return membership type cache
+ */
+ public ExoCache getMembershipTypeCache()
+ {
+ return membershipTypeCache;
+ }
+
+ /**
+ * Returns membership cache.
+ *
+ * @return membership cache
+ */
+ public ExoCache getMembershipCache()
+ {
+ return membershipCache;
+ }
+
+ /**
+ * Returns group cache.
+ *
+ * @return group cache
+ */
+ public ExoCache getGroupCache()
+ {
+ return groupCache;
+ }
+}
Property changes on:
core/trunk/component/organization/api/src/main/java/org/exoplatform/services/organization/cache/OrganizationCacheHandler.java
___________________________________________________________________
Name: svn:keywords
+ Id
Name: svn:eol-style
+ native