You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by cs...@apache.org on 2018/02/01 17:04:33 UTC
[4/5] aries-rsa git commit: [ARIES-1763] Change config discovery to
EndpointEventListener
[ARIES-1763] Change config discovery to EndpointEventListener
Project: http://git-wip-us.apache.org/repos/asf/aries-rsa/repo
Commit: http://git-wip-us.apache.org/repos/asf/aries-rsa/commit/c10f3821
Tree: http://git-wip-us.apache.org/repos/asf/aries-rsa/tree/c10f3821
Diff: http://git-wip-us.apache.org/repos/asf/aries-rsa/diff/c10f3821
Branch: refs/heads/master
Commit: c10f3821e53ca34bd4603d5c98aa4ea44c987764
Parents: 89ff16c
Author: Christian Schneider <cs...@adobe.com>
Authored: Thu Feb 1 18:00:06 2018 +0100
Committer: Christian Schneider <cs...@adobe.com>
Committed: Thu Feb 1 18:00:06 2018 +0100
----------------------------------------------------------------------
.../aries/rsa/discovery/config/Activator.java | 26 ++++----
.../rsa/discovery/config/ConfigDiscovery.java | 63 +++++++++-----------
2 files changed, 43 insertions(+), 46 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/aries-rsa/blob/c10f3821/discovery/config/src/main/java/org/apache/aries/rsa/discovery/config/Activator.java
----------------------------------------------------------------------
diff --git a/discovery/config/src/main/java/org/apache/aries/rsa/discovery/config/Activator.java b/discovery/config/src/main/java/org/apache/aries/rsa/discovery/config/Activator.java
index 9b0cf09..315baa8 100644
--- a/discovery/config/src/main/java/org/apache/aries/rsa/discovery/config/Activator.java
+++ b/discovery/config/src/main/java/org/apache/aries/rsa/discovery/config/Activator.java
@@ -19,17 +19,21 @@
package org.apache.aries.rsa.discovery.config;
-import org.osgi.framework.*;
+import java.util.Hashtable;
+
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.Constants;
+import org.osgi.framework.ServiceReference;
+import org.osgi.framework.ServiceRegistration;
import org.osgi.service.cm.ManagedServiceFactory;
-import org.osgi.service.remoteserviceadmin.EndpointListener;
+import org.osgi.service.remoteserviceadmin.EndpointEventListener;
import org.osgi.util.tracker.ServiceTracker;
-import java.util.Hashtable;
-
public class Activator implements BundleActivator {
private static final String FACTORY_PID = "org.apache.aries.rsa.discovery.config";
- private ServiceTracker<EndpointListener, EndpointListener> listenerTracker;
+ private ServiceTracker<EndpointEventListener, EndpointEventListener> listenerTracker;
private ServiceRegistration<ManagedServiceFactory> registration;
public void start(BundleContext context) {
@@ -46,23 +50,23 @@ public class Activator implements BundleActivator {
listenerTracker.close();
}
- private final class EPListenerTracker extends ServiceTracker<EndpointListener, EndpointListener> {
+ private final class EPListenerTracker extends ServiceTracker<EndpointEventListener, EndpointEventListener> {
private final ConfigDiscovery configDiscovery;
private EPListenerTracker(BundleContext context, ConfigDiscovery configDiscovery) {
- super(context, EndpointListener.class, null);
+ super(context, EndpointEventListener.class, null);
this.configDiscovery = configDiscovery;
}
@Override
- public EndpointListener addingService(ServiceReference<EndpointListener> reference) {
- EndpointListener service = super.addingService(reference);
+ public EndpointEventListener addingService(ServiceReference<EndpointEventListener> reference) {
+ EndpointEventListener service = super.addingService(reference);
configDiscovery.addListener(reference, service);
return service;
}
@Override
- public void modifiedService(ServiceReference<EndpointListener> reference, EndpointListener service) {
+ public void modifiedService(ServiceReference<EndpointEventListener> reference, EndpointEventListener service) {
super.modifiedService(reference, service);
configDiscovery.removeListener(service);
@@ -73,7 +77,7 @@ public class Activator implements BundleActivator {
}
@Override
- public void removedService(ServiceReference<EndpointListener> reference, EndpointListener service) {
+ public void removedService(ServiceReference<EndpointEventListener> reference, EndpointEventListener service) {
super.removedService(reference, service);
configDiscovery.removeListener(service);
}
http://git-wip-us.apache.org/repos/asf/aries-rsa/blob/c10f3821/discovery/config/src/main/java/org/apache/aries/rsa/discovery/config/ConfigDiscovery.java
----------------------------------------------------------------------
diff --git a/discovery/config/src/main/java/org/apache/aries/rsa/discovery/config/ConfigDiscovery.java b/discovery/config/src/main/java/org/apache/aries/rsa/discovery/config/ConfigDiscovery.java
index efdd06c..7da6eec 100644
--- a/discovery/config/src/main/java/org/apache/aries/rsa/discovery/config/ConfigDiscovery.java
+++ b/discovery/config/src/main/java/org/apache/aries/rsa/discovery/config/ConfigDiscovery.java
@@ -26,15 +26,16 @@ import org.osgi.framework.ServiceReference;
import org.osgi.service.cm.ConfigurationException;
import org.osgi.service.cm.ManagedServiceFactory;
import org.osgi.service.remoteserviceadmin.EndpointDescription;
-import org.osgi.service.remoteserviceadmin.EndpointListener;
+import org.osgi.service.remoteserviceadmin.EndpointEvent;
+import org.osgi.service.remoteserviceadmin.EndpointEventListener;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
class ConfigDiscovery implements ManagedServiceFactory {
private final Map<EndpointDescription, String> endpointDescriptions = new ConcurrentHashMap<>();
- private final Map<EndpointListener, Collection<String>> listenerToFilters = new HashMap<>();
- private final Map<String, Collection<EndpointListener>> filterToListeners = new HashMap<>();
+ private final Map<EndpointEventListener, Collection<String>> listenerToFilters = new HashMap<>();
+ private final Map<String, Collection<EndpointEventListener>> filterToListeners = new HashMap<>();
@Override
public String getName() {
@@ -51,8 +52,8 @@ class ConfigDiscovery implements ManagedServiceFactory {
removeServiceDeclaredInConfig(pid);
}
- void addListener(ServiceReference<EndpointListener> endpointListenerRef, EndpointListener endpointListener) {
- List<String> filters = StringPlus.normalize(endpointListenerRef.getProperty(EndpointListener.ENDPOINT_LISTENER_SCOPE));
+ void addListener(ServiceReference<EndpointEventListener> endpointListenerRef, EndpointEventListener endpointListener) {
+ List<String> filters = StringPlus.normalize(endpointListenerRef.getProperty(EndpointEventListener.ENDPOINT_LISTENER_SCOPE));
if (filters.isEmpty()) {
return;
}
@@ -60,7 +61,7 @@ class ConfigDiscovery implements ManagedServiceFactory {
synchronized (listenerToFilters) {
listenerToFilters.put(endpointListener, filters);
for (String filter : filters) {
- Collection<EndpointListener> listeners = filterToListeners.get(filter);
+ Collection<EndpointEventListener> listeners = filterToListeners.get(filter);
if (listeners == null) {
listeners = new ArrayList<>();
filterToListeners.put(filter, listeners);
@@ -72,7 +73,7 @@ class ConfigDiscovery implements ManagedServiceFactory {
triggerCallbacks(filters, endpointListener);
}
- void removeListener(EndpointListener endpointListener) {
+ void removeListener(EndpointEventListener endpointListener) {
synchronized (listenerToFilters) {
Collection<String> filters = listenerToFilters.remove(endpointListener);
if (filters == null) {
@@ -80,7 +81,7 @@ class ConfigDiscovery implements ManagedServiceFactory {
}
for (String filter : filters) {
- Collection<EndpointListener> listeners = filterToListeners.get(filter);
+ Collection<EndpointEventListener> listeners = filterToListeners.get(filter);
if (listeners != null) {
listeners.remove(endpointListener);
if (listeners.isEmpty()) {
@@ -91,11 +92,11 @@ class ConfigDiscovery implements ManagedServiceFactory {
}
}
- private Map<String, Collection<EndpointListener>> getMatchingListeners(EndpointDescription endpoint) {
+ private Map<String, Collection<EndpointEventListener>> getMatchingListeners(EndpointDescription endpoint) {
// return a copy of matched filters/listeners so that caller doesn't need to hold locks while triggering events
- Map<String, Collection<EndpointListener>> matched = new HashMap<>();
+ Map<String, Collection<EndpointEventListener>> matched = new HashMap<>();
synchronized (listenerToFilters) {
- for (Map.Entry<String, Collection<EndpointListener>> entry : filterToListeners.entrySet()) {
+ for (Map.Entry<String, Collection<EndpointEventListener>> entry : filterToListeners.entrySet()) {
String filter = entry.getKey();
if (matchFilter(filter, endpoint)) {
matched.put(filter, new ArrayList<>(entry.getValue()));
@@ -109,7 +110,8 @@ class ConfigDiscovery implements ManagedServiceFactory {
private void addDeclaredRemoteService(String pid, Dictionary config) {
EndpointDescription endpoint = new EndpointDescription(PropertyValidator.validate(config));
endpointDescriptions.put(endpoint, pid);
- addedEndpointDescription(endpoint);
+ EndpointEvent event = new EndpointEvent(EndpointEvent.ADDED, endpoint);
+ triggerCallbacks(event);
}
private void removeServiceDeclaredInConfig(String pid) {
@@ -117,46 +119,37 @@ class ConfigDiscovery implements ManagedServiceFactory {
i.hasNext(); ) {
Map.Entry<EndpointDescription, String> entry = i.next();
if (pid.equals(entry.getValue())) {
- removedEndpointDescription(entry.getKey());
+ EndpointEvent event = new EndpointEvent(EndpointEvent.REMOVED, entry.getKey());
+ triggerCallbacks(event);
i.remove();
}
}
}
- private void addedEndpointDescription(EndpointDescription endpoint) {
- triggerCallbacks(endpoint, true);
- }
-
- private void removedEndpointDescription(EndpointDescription endpoint) {
- triggerCallbacks(endpoint, false);
- }
-
- private void triggerCallbacks(EndpointDescription endpoint, boolean added) {
- for (Map.Entry<String, Collection<EndpointListener>> entry : getMatchingListeners(endpoint).entrySet()) {
+ private void triggerCallbacks(EndpointEvent event) {
+ EndpointDescription endpoint = event.getEndpoint();
+ for (Map.Entry<String, Collection<EndpointEventListener>> entry : getMatchingListeners(endpoint).entrySet()) {
String filter = entry.getKey();
- for (EndpointListener listener : entry.getValue()) {
- triggerCallbacks(listener, filter, endpoint, added);
+ for (EndpointEventListener listener : entry.getValue()) {
+ triggerCallbacks(listener, filter, event);
}
}
}
- private void triggerCallbacks(EndpointListener endpointListener, String filter,
- EndpointDescription endpoint, boolean added) {
- if (!matchFilter(filter, endpoint)) {
+ private void triggerCallbacks(EndpointEventListener endpointListener, String filter,
+ EndpointEvent event) {
+ if (!matchFilter(filter, event.getEndpoint())) {
return;
}
- if (added) {
- endpointListener.endpointAdded(endpoint, filter);
- } else {
- endpointListener.endpointRemoved(endpoint, filter);
- }
+ endpointListener.endpointChanged(event, filter);
}
- private void triggerCallbacks(Collection<String> filters, EndpointListener endpointListener) {
+ private void triggerCallbacks(Collection<String> filters, EndpointEventListener endpointListener) {
for (String filter : filters) {
for (EndpointDescription endpoint : endpointDescriptions.keySet()) {
- triggerCallbacks(endpointListener, filter, endpoint, true);
+ EndpointEvent event = new EndpointEvent(EndpointEvent.ADDED, endpoint);
+ triggerCallbacks(endpointListener, filter, event);
}
}
}