001
014
015 package com.liferay.portal.kernel.lock;
016
017 import com.liferay.registry.Registry;
018 import com.liferay.registry.RegistryUtil;
019 import com.liferay.registry.ServiceReference;
020 import com.liferay.registry.ServiceTracker;
021 import com.liferay.registry.ServiceTrackerCustomizer;
022
023 import java.util.HashMap;
024 import java.util.Map;
025
026
030 public class LockListenerRegistryUtil {
031
032 public static LockListener getLockListener(String className) {
033 return _instance._lockListeners.get(className);
034 }
035
036 private LockListenerRegistryUtil() {
037 Registry registry = RegistryUtil.getRegistry();
038
039 _serviceTracker = registry.trackServices(
040 LockListener.class, new LockListenerServiceTrackerCustomizer());
041
042 _serviceTracker.open();
043 }
044
045 private static final LockListenerRegistryUtil _instance =
046 new LockListenerRegistryUtil();
047
048 private final Map<String, LockListener> _lockListeners = new HashMap<>();
049 private final ServiceTracker<?, LockListener> _serviceTracker;
050
051 private class LockListenerServiceTrackerCustomizer
052 implements ServiceTrackerCustomizer<LockListener, LockListener> {
053
054 @Override
055 public LockListener addingService(
056 ServiceReference<LockListener> serviceReference) {
057
058 Registry registry = RegistryUtil.getRegistry();
059
060 LockListener lockListener = registry.getService(serviceReference);
061
062 _lockListeners.put(lockListener.getClassName(), lockListener);
063
064 return lockListener;
065 }
066
067 @Override
068 public void modifiedService(
069 ServiceReference<LockListener> serviceReference,
070 LockListener lockListener) {
071 }
072
073 @Override
074 public void removedService(
075 ServiceReference<LockListener> serviceReference,
076 LockListener lockListener) {
077
078 Registry registry = RegistryUtil.getRegistry();
079
080 registry.ungetService(serviceReference);
081
082 _lockListeners.remove(lockListener);
083 }
084
085 }
086
087 }