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