001
014
015 package com.liferay.portal.kernel.lar.lifecycle;
016
017 import com.liferay.registry.Registry;
018 import com.liferay.registry.RegistryUtil;
019 import com.liferay.registry.ServiceReference;
020 import com.liferay.registry.ServiceRegistration;
021 import com.liferay.registry.ServiceTracker;
022 import com.liferay.registry.ServiceTrackerCustomizer;
023 import com.liferay.registry.collections.ServiceRegistrationMap;
024
025 import java.util.HashSet;
026 import java.util.List;
027 import java.util.Set;
028
029
032 public class ExportImportLifecycleEventListenerRegistryUtil {
033
034 public static Set<ExportImportLifecycleListener>
035 getAsyncExportImportLifecycleListeners() {
036
037 return _instance._getAsyncExportImportLifecycleListeners();
038 }
039
040 public static Set<ExportImportLifecycleListener>
041 getSyncExportImportLifecycleListeners() {
042
043 return _instance._getSyncExportImportLifecycleListeners();
044 }
045
046 public static void register(
047 ExportImportLifecycleListener exportImportLifecycleListener) {
048
049 _instance._register(exportImportLifecycleListener);
050 }
051
052 public static void unregister(
053 ExportImportLifecycleListener exportImportLifecycleListener) {
054
055 _instance._unregister(exportImportLifecycleListener);
056 }
057
058 public static void unregister(
059 List<ExportImportLifecycleListener> exportImportLifecycleListeners) {
060
061 for (ExportImportLifecycleListener exportImportLifecycleListener :
062 exportImportLifecycleListeners) {
063
064 unregister(exportImportLifecycleListener);
065 }
066 }
067
068 private ExportImportLifecycleEventListenerRegistryUtil() {
069 Registry registry = RegistryUtil.getRegistry();
070
071 _serviceTracker = registry.trackServices(
072 ExportImportLifecycleListener.class,
073 new ExportImportLifecycleListenerServiceTrackerCustomizer());
074
075 _serviceTracker.open();
076 }
077
078 private Set<ExportImportLifecycleListener>
079 _getAsyncExportImportLifecycleListeners() {
080
081 return _asyncExportImportLifecycleListeners;
082 }
083
084 private Set<ExportImportLifecycleListener>
085 _getSyncExportImportLifecycleListeners() {
086
087 return _syncExportImportLifecycleListeners;
088 }
089
090 private void _register(
091 ExportImportLifecycleListener exportImportLifecycleListener) {
092
093 Registry registry = RegistryUtil.getRegistry();
094
095 ServiceRegistration<ExportImportLifecycleListener> serviceRegistration =
096 registry.registerService(
097 ExportImportLifecycleListener.class,
098 exportImportLifecycleListener);
099
100 _serviceRegistrations.put(
101 exportImportLifecycleListener, serviceRegistration);
102 }
103
104 private void _unregister(
105 ExportImportLifecycleListener exportImportLifecycleListener) {
106
107 ServiceRegistration<ExportImportLifecycleListener> serviceRegistration =
108 _serviceRegistrations.remove(exportImportLifecycleListener);
109
110 if (serviceRegistration != null) {
111 serviceRegistration.unregister();
112 }
113 }
114
115 private static final ExportImportLifecycleEventListenerRegistryUtil
116 _instance = new ExportImportLifecycleEventListenerRegistryUtil();
117
118 private final Set<ExportImportLifecycleListener>
119 _asyncExportImportLifecycleListeners =
120 new HashSet<ExportImportLifecycleListener>();
121 private final ServiceRegistrationMap<ExportImportLifecycleListener>
122 _serviceRegistrations =
123 new ServiceRegistrationMap<ExportImportLifecycleListener>();
124 private final ServiceTracker
125 <ExportImportLifecycleListener, ExportImportLifecycleListener>
126 _serviceTracker;
127 private final Set<ExportImportLifecycleListener>
128 _syncExportImportLifecycleListeners =
129 new HashSet<ExportImportLifecycleListener>();
130
131 private class ExportImportLifecycleListenerServiceTrackerCustomizer
132 implements ServiceTrackerCustomizer
133 <ExportImportLifecycleListener, ExportImportLifecycleListener> {
134
135 @Override
136 public ExportImportLifecycleListener addingService(
137 ServiceReference<ExportImportLifecycleListener> serviceReference) {
138
139 Registry registry = RegistryUtil.getRegistry();
140
141 ExportImportLifecycleListener exportImportLifecycleListener =
142 registry.getService(serviceReference);
143
144 if (exportImportLifecycleListener.isParallel()) {
145 _asyncExportImportLifecycleListeners.add(
146 exportImportLifecycleListener);
147 }
148 else {
149 _syncExportImportLifecycleListeners.add(
150 exportImportLifecycleListener);
151 }
152
153 return exportImportLifecycleListener;
154 }
155
156 @Override
157 public void modifiedService(
158 ServiceReference<ExportImportLifecycleListener> serviceReference,
159 ExportImportLifecycleListener exportImportLifecycleListener) {
160 }
161
162 @Override
163 public void removedService(
164 ServiceReference<ExportImportLifecycleListener> serviceReference,
165 ExportImportLifecycleListener exportImportLifecycleListener) {
166
167 Registry registry = RegistryUtil.getRegistry();
168
169 registry.ungetService(serviceReference);
170
171 if (exportImportLifecycleListener.isParallel()) {
172 _asyncExportImportLifecycleListeners.remove(
173 exportImportLifecycleListener);
174 }
175 else {
176 _syncExportImportLifecycleListeners.remove(
177 exportImportLifecycleListener);
178 }
179 }
180
181 }
182
183 }