001
014
015 package com.liferay.portal.security.membershippolicy;
016
017 import com.liferay.portal.kernel.exception.PortalException;
018 import com.liferay.portal.kernel.log.Log;
019 import com.liferay.portal.kernel.log.LogFactoryUtil;
020 import com.liferay.portal.util.PropsValues;
021 import com.liferay.registry.Registry;
022 import com.liferay.registry.RegistryUtil;
023 import com.liferay.registry.ServiceReference;
024 import com.liferay.registry.ServiceTracker;
025 import com.liferay.registry.ServiceTrackerCustomizer;
026
027
032 public class UserGroupMembershipPolicyFactoryImpl
033 implements UserGroupMembershipPolicyFactory {
034
035 @Override
036 public UserGroupMembershipPolicy getUserGroupMembershipPolicy() {
037 return _instance._serviceTracker.getService();
038 }
039
040 private UserGroupMembershipPolicyFactoryImpl() {
041 Registry registry = RegistryUtil.getRegistry();
042
043 _serviceTracker = registry.trackServices(
044 UserGroupMembershipPolicy.class,
045 new UserGroupMembershipPolicyTrackerCustomizer());
046
047 _serviceTracker.open();
048 }
049
050 private static final Log _log = LogFactoryUtil.getLog(
051 UserGroupMembershipPolicyFactoryImpl.class);
052
053 private static final UserGroupMembershipPolicyFactoryImpl
054 _instance = new UserGroupMembershipPolicyFactoryImpl();
055
056 private final ServiceTracker<?, UserGroupMembershipPolicy> _serviceTracker;
057
058 private class UserGroupMembershipPolicyTrackerCustomizer
059 implements
060 ServiceTrackerCustomizer
061 <UserGroupMembershipPolicy, UserGroupMembershipPolicy> {
062
063 @Override
064 public UserGroupMembershipPolicy addingService(
065 ServiceReference<UserGroupMembershipPolicy> serviceReference) {
066
067 Registry registry = RegistryUtil.getRegistry();
068
069 UserGroupMembershipPolicy userGroupMembershipPolicy =
070 registry.getService(serviceReference);
071
072 if (PropsValues.MEMBERSHIP_POLICY_AUTO_VERIFY) {
073 try {
074 userGroupMembershipPolicy.verifyPolicy();
075 }
076 catch (PortalException pe) {
077 _log.error(pe, pe);
078 }
079 }
080
081 return userGroupMembershipPolicy;
082 }
083
084 @Override
085 public void modifiedService(
086 ServiceReference<UserGroupMembershipPolicy> serviceReference,
087 UserGroupMembershipPolicy userGroupMembershipPolicy) {
088 }
089
090 @Override
091 public void removedService(
092 ServiceReference<UserGroupMembershipPolicy> serviceReference,
093 UserGroupMembershipPolicy userGroupMembershipPolicy) {
094
095 Registry registry = RegistryUtil.getRegistry();
096
097 registry.ungetService(serviceReference);
098 }
099
100 }
101
102 }