001
014
015 package com.liferay.portal.kernel.portlet.configuration;
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.List;
024 import java.util.concurrent.CopyOnWriteArrayList;
025
026
029 public class PortletConfigurationIconTracker {
030
031 public static List<PortletConfigurationIconFactory>
032 getPortletConfigurationIcons() {
033
034 return _portletConfigurationIconFactories;
035 }
036
037 public PortletConfigurationIconTracker() {
038 Registry registry = RegistryUtil.getRegistry();
039
040 _serviceTracker = registry.trackServices(
041 PortletConfigurationIconFactory.class,
042 new PortletConfigurationIconServiceTrackerCustomizer());
043
044 _serviceTracker.open();
045 }
046
047 private static final List<PortletConfigurationIconFactory>
048 _portletConfigurationIconFactories = new CopyOnWriteArrayList<>();
049
050 private final ServiceTracker
051 <PortletConfigurationIconFactory, PortletConfigurationIconFactory>
052 _serviceTracker;
053
054 private static class PortletConfigurationIconServiceTrackerCustomizer
055 implements ServiceTrackerCustomizer
056 <PortletConfigurationIconFactory, PortletConfigurationIconFactory> {
057
058 @Override
059 public PortletConfigurationIconFactory addingService(
060 ServiceReference<PortletConfigurationIconFactory>
061 serviceReference) {
062
063 Registry registry = RegistryUtil.getRegistry();
064
065 PortletConfigurationIconFactory portletConfigurationIconFactory =
066 registry.getService(serviceReference);
067
068 _portletConfigurationIconFactories.add(
069 portletConfigurationIconFactory);
070
071 return portletConfigurationIconFactory;
072 }
073
074 @Override
075 public void modifiedService(
076 ServiceReference<PortletConfigurationIconFactory> serviceReference,
077 PortletConfigurationIconFactory portletConfigurationIconFactory) {
078 }
079
080 @Override
081 public void removedService(
082 ServiceReference<PortletConfigurationIconFactory> serviceReference,
083 PortletConfigurationIconFactory portletConfigurationIconFactory) {
084
085 Registry registry = RegistryUtil.getRegistry();
086
087 registry.ungetService(serviceReference);
088
089 _portletConfigurationIconFactories.remove(
090 portletConfigurationIconFactory);
091 }
092
093 }
094
095 }