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