001
014
015 package com.liferay.portlet.exportimport.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 = new HashSet<>();
120 private final ServiceRegistrationMap<ExportImportLifecycleListener>
121 _serviceRegistrations = new ServiceRegistrationMap<>();
122 private final ServiceTracker
123 <ExportImportLifecycleListener, ExportImportLifecycleListener>
124 _serviceTracker;
125 private final Set<ExportImportLifecycleListener>
126 _syncExportImportLifecycleListeners = new HashSet<>();
127
128 private class ExportImportLifecycleListenerServiceTrackerCustomizer
129 implements ServiceTrackerCustomizer
130 <ExportImportLifecycleListener, ExportImportLifecycleListener> {
131
132 @Override
133 public ExportImportLifecycleListener addingService(
134 ServiceReference<ExportImportLifecycleListener> serviceReference) {
135
136 Registry registry = RegistryUtil.getRegistry();
137
138 ExportImportLifecycleListener exportImportLifecycleListener =
139 registry.getService(serviceReference);
140
141 if (exportImportLifecycleListener.isParallel()) {
142 _asyncExportImportLifecycleListeners.add(
143 exportImportLifecycleListener);
144 }
145 else {
146 _syncExportImportLifecycleListeners.add(
147 exportImportLifecycleListener);
148 }
149
150 return exportImportLifecycleListener;
151 }
152
153 @Override
154 public void modifiedService(
155 ServiceReference<ExportImportLifecycleListener> serviceReference,
156 ExportImportLifecycleListener exportImportLifecycleListener) {
157 }
158
159 @Override
160 public void removedService(
161 ServiceReference<ExportImportLifecycleListener> serviceReference,
162 ExportImportLifecycleListener exportImportLifecycleListener) {
163
164 Registry registry = RegistryUtil.getRegistry();
165
166 registry.ungetService(serviceReference);
167
168 if (exportImportLifecycleListener.isParallel()) {
169 _asyncExportImportLifecycleListeners.remove(
170 exportImportLifecycleListener);
171 }
172 else {
173 _syncExportImportLifecycleListeners.remove(
174 exportImportLifecycleListener);
175 }
176 }
177
178 }
179
180 }