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/01/29 16:57:44 UTC
aries-rsa git commit: ARIES-1764 Send events using eventadmin
Repository: aries-rsa
Updated Branches:
refs/heads/master bce388e25 -> c8b8492e3
ARIES-1764 Send events using eventadmin
Project: http://git-wip-us.apache.org/repos/asf/aries-rsa/repo
Commit: http://git-wip-us.apache.org/repos/asf/aries-rsa/commit/c8b8492e
Tree: http://git-wip-us.apache.org/repos/asf/aries-rsa/tree/c8b8492e
Diff: http://git-wip-us.apache.org/repos/asf/aries-rsa/diff/c8b8492e
Branch: refs/heads/master
Commit: c8b8492e3dc14ef6674dcbda571178d6e7bbd97d
Parents: bce388e
Author: Christian Schneider <cs...@adobe.com>
Authored: Mon Jan 29 17:57:38 2018 +0100
Committer: Christian Schneider <cs...@adobe.com>
Committed: Mon Jan 29 17:57:38 2018 +0100
----------------------------------------------------------------------
.../aries/rsa/core/ExportRegistrationImpl.java | 32 ++++++++++++++------
.../aries/rsa/core/ImportRegistrationImpl.java | 12 ++++++--
.../aries/rsa/core/RemoteServiceAdminCore.java | 6 ++--
.../aries/rsa/core/event/EventProducer.java | 10 ++++++
.../rsa/core/ClientServiceFactoryTest.java | 2 +-
.../rsa/core/ImportRegistrationImplTest.java | 6 ++--
.../aries/rsa/core/event/EventProducerTest.java | 4 +--
.../exporter/EndpointListenerNotifier.java | 9 ++++++
.../exporter/EndpointRepository.java | 6 +++-
9 files changed, 65 insertions(+), 22 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/aries-rsa/blob/c8b8492e/rsa/src/main/java/org/apache/aries/rsa/core/ExportRegistrationImpl.java
----------------------------------------------------------------------
diff --git a/rsa/src/main/java/org/apache/aries/rsa/core/ExportRegistrationImpl.java b/rsa/src/main/java/org/apache/aries/rsa/core/ExportRegistrationImpl.java
index 7018804..454aabb 100644
--- a/rsa/src/main/java/org/apache/aries/rsa/core/ExportRegistrationImpl.java
+++ b/rsa/src/main/java/org/apache/aries/rsa/core/ExportRegistrationImpl.java
@@ -21,14 +21,17 @@ package org.apache.aries.rsa.core;
import java.io.Closeable;
import java.io.IOException;
import java.util.Arrays;
+import java.util.HashMap;
import java.util.Map;
import java.util.Set;
+import org.apache.aries.rsa.core.event.EventProducer;
import org.apache.aries.rsa.spi.Endpoint;
import org.osgi.framework.ServiceReference;
import org.osgi.service.remoteserviceadmin.EndpointDescription;
import org.osgi.service.remoteserviceadmin.ExportReference;
import org.osgi.service.remoteserviceadmin.ExportRegistration;
+import org.osgi.service.remoteserviceadmin.RemoteServiceAdminEvent;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -46,8 +49,15 @@ public class ExportRegistrationImpl implements ExportRegistration {
private int instanceCount;
private volatile boolean closed;
- private ExportRegistrationImpl(ExportRegistrationImpl parent, RemoteServiceAdminCore rsaCore,
- ExportReferenceImpl exportReference, Closeable server, Throwable exception) {
+ private EventProducer sender;
+
+ private ExportRegistrationImpl(ExportRegistrationImpl parent,
+ RemoteServiceAdminCore rsaCore,
+ EventProducer sender,
+ ExportReferenceImpl exportReference,
+ Closeable server,
+ Throwable exception) {
+ this.sender = sender;
this.parent = parent != null ? parent.parent : this; // a parent points to itself
this.parent.addInstance();
this.rsaCore = rsaCore;
@@ -58,18 +68,18 @@ public class ExportRegistrationImpl implements ExportRegistration {
// create a clone of the provided ExportRegistrationImpl that is linked to it
public ExportRegistrationImpl(ExportRegistrationImpl parent) {
- this(parent, parent.rsaCore, new ExportReferenceImpl(parent.exportReference),
+ this(parent, parent.rsaCore, parent.sender, new ExportReferenceImpl(parent.exportReference),
parent.server, parent.exception);
}
// create a new (parent) instance which was exported successfully with the given server
- public ExportRegistrationImpl(ServiceReference sref, Endpoint endpoint, RemoteServiceAdminCore rsaCore) {
- this(null, rsaCore, new ExportReferenceImpl(sref, endpoint.description()), endpoint, null);
+ public ExportRegistrationImpl(ServiceReference sref, Endpoint endpoint, RemoteServiceAdminCore rsaCore, EventProducer sender) {
+ this(null, rsaCore, sender, new ExportReferenceImpl(sref, endpoint.description()), endpoint, null);
}
// create a new (parent) instance which failed to be exported with the given exception
- public ExportRegistrationImpl(RemoteServiceAdminCore rsaCore, Throwable exception) {
- this(null, rsaCore, null, null, exception);
+ public ExportRegistrationImpl(RemoteServiceAdminCore rsaCore, EventProducer sender, Throwable exception) {
+ this(null, rsaCore, sender, null, null, exception);
}
private void ensureParent() {
@@ -164,7 +174,11 @@ public class ExportRegistrationImpl implements ExportRegistration {
@Override
public EndpointDescription update(Map<String, ?> properties) {
- // TODO Auto-generated method stub
- return null;
+ Map<String, Object> newProps = new HashMap<String, Object>(getExportReference().getExportedEndpoint().getProperties());
+ for (String key : properties.keySet()) {
+ newProps.put(key, properties.get(key));
+ }
+ this.sender.notifyUpdate(this.getExportReference());
+ return new EndpointDescription(newProps);
}
}
http://git-wip-us.apache.org/repos/asf/aries-rsa/blob/c8b8492e/rsa/src/main/java/org/apache/aries/rsa/core/ImportRegistrationImpl.java
----------------------------------------------------------------------
diff --git a/rsa/src/main/java/org/apache/aries/rsa/core/ImportRegistrationImpl.java b/rsa/src/main/java/org/apache/aries/rsa/core/ImportRegistrationImpl.java
index 5d8a072..0d703ef 100644
--- a/rsa/src/main/java/org/apache/aries/rsa/core/ImportRegistrationImpl.java
+++ b/rsa/src/main/java/org/apache/aries/rsa/core/ImportRegistrationImpl.java
@@ -19,8 +19,10 @@
package org.apache.aries.rsa.core;
import java.util.ArrayList;
+import java.util.Hashtable;
import java.util.List;
+import org.apache.aries.rsa.core.event.EventProducer;
import org.osgi.framework.ServiceReference;
import org.osgi.framework.ServiceRegistration;
import org.osgi.service.remoteserviceadmin.EndpointDescription;
@@ -45,14 +47,17 @@ public class ImportRegistrationImpl implements ImportRegistration, ImportReferen
private ImportRegistrationImpl parent;
private List<ImportRegistrationImpl> children; // used only in parent
+ private EventProducer eventProducer;
+
public ImportRegistrationImpl(Throwable ex) {
exception = ex;
initParent();
}
- public ImportRegistrationImpl(EndpointDescription endpoint, RemoteServiceAdminCore rsac) {
+ public ImportRegistrationImpl(EndpointDescription endpoint, RemoteServiceAdminCore rsac, EventProducer eventProducer) {
this.endpoint = endpoint;
this.rsaCore = rsac;
+ this.eventProducer = eventProducer;
initParent();
}
@@ -230,7 +235,8 @@ public class ImportRegistrationImpl implements ImportRegistration, ImportReferen
@Override
public boolean update(EndpointDescription endpoint) {
- // TODO Auto-generated method stub
- return false;
+ importedService.setProperties(new Hashtable<>(endpoint.getProperties()));
+ eventProducer.notifyUpdate(this);
+ return true;
}
}
http://git-wip-us.apache.org/repos/asf/aries-rsa/blob/c8b8492e/rsa/src/main/java/org/apache/aries/rsa/core/RemoteServiceAdminCore.java
----------------------------------------------------------------------
diff --git a/rsa/src/main/java/org/apache/aries/rsa/core/RemoteServiceAdminCore.java b/rsa/src/main/java/org/apache/aries/rsa/core/RemoteServiceAdminCore.java
index 3f2359f..7b7b38d 100644
--- a/rsa/src/main/java/org/apache/aries/rsa/core/RemoteServiceAdminCore.java
+++ b/rsa/src/main/java/org/apache/aries/rsa/core/RemoteServiceAdminCore.java
@@ -214,9 +214,9 @@ public class RemoteServiceAdminCore implements RemoteServiceAdmin {
if (endpoint == null) {
return null;
}
- return new ExportRegistrationImpl(serviceReference, endpoint, this);
+ return new ExportRegistrationImpl(serviceReference, endpoint, this, eventProducer);
} catch (Exception e) {
- return new ExportRegistrationImpl(this, e);
+ return new ExportRegistrationImpl(this, eventProducer, e);
}
}
@@ -414,7 +414,7 @@ public class RemoteServiceAdminCore implements RemoteServiceAdmin {
protected ImportRegistrationImpl exposeServiceFactory(String[] interfaceNames,
EndpointDescription epd,
DistributionProvider handler) {
- ImportRegistrationImpl imReg = new ImportRegistrationImpl(epd, this);
+ ImportRegistrationImpl imReg = new ImportRegistrationImpl(epd, this, eventProducer);
try {
EndpointDescription endpoint = imReg.getImportedEndpointDescription();
Dictionary<String, Object> serviceProps = new Hashtable<String, Object>(endpoint.getProperties());
http://git-wip-us.apache.org/repos/asf/aries-rsa/blob/c8b8492e/rsa/src/main/java/org/apache/aries/rsa/core/event/EventProducer.java
----------------------------------------------------------------------
diff --git a/rsa/src/main/java/org/apache/aries/rsa/core/event/EventProducer.java b/rsa/src/main/java/org/apache/aries/rsa/core/event/EventProducer.java
index 1ad79d4..94aacd3 100644
--- a/rsa/src/main/java/org/apache/aries/rsa/core/event/EventProducer.java
+++ b/rsa/src/main/java/org/apache/aries/rsa/core/event/EventProducer.java
@@ -20,6 +20,7 @@ package org.apache.aries.rsa.core.event;
import java.util.List;
+import org.apache.aries.rsa.core.ExportRegistrationImpl;
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
import org.osgi.framework.InvalidSyntaxException;
@@ -120,4 +121,13 @@ public class EventProducer {
}
eventAdminSender.send(rsae);
}
+
+ public void notifyUpdate(ExportReference exportRef) {
+ notify(RemoteServiceAdminEvent.EXPORT_UPDATE, exportRef, null);
+ }
+
+ public void notifyUpdate(ImportRegistration importReg) {
+ notify(RemoteServiceAdminEvent.IMPORT_UPDATE, importReg.getImportReference(), importReg.getException());
+
+ }
}
http://git-wip-us.apache.org/repos/asf/aries-rsa/blob/c8b8492e/rsa/src/test/java/org/apache/aries/rsa/core/ClientServiceFactoryTest.java
----------------------------------------------------------------------
diff --git a/rsa/src/test/java/org/apache/aries/rsa/core/ClientServiceFactoryTest.java b/rsa/src/test/java/org/apache/aries/rsa/core/ClientServiceFactoryTest.java
index cd692e6..5c83b7f 100644
--- a/rsa/src/test/java/org/apache/aries/rsa/core/ClientServiceFactoryTest.java
+++ b/rsa/src/test/java/org/apache/aries/rsa/core/ClientServiceFactoryTest.java
@@ -48,7 +48,7 @@ public class ClientServiceFactoryTest extends TestCase {
IMocksControl control = EasyMock.createControl();
EndpointDescription endpoint = createTestEndpointDesc();
- ImportRegistrationImpl iri = new ImportRegistrationImpl(endpoint, null);
+ ImportRegistrationImpl iri = new ImportRegistrationImpl(endpoint, null, null);
BundleContext consumerContext = control.createMock(BundleContext.class);
Bundle consumerBundle = control.createMock(Bundle.class);
http://git-wip-us.apache.org/repos/asf/aries-rsa/blob/c8b8492e/rsa/src/test/java/org/apache/aries/rsa/core/ImportRegistrationImplTest.java
----------------------------------------------------------------------
diff --git a/rsa/src/test/java/org/apache/aries/rsa/core/ImportRegistrationImplTest.java b/rsa/src/test/java/org/apache/aries/rsa/core/ImportRegistrationImplTest.java
index ce7c19c..49aae53 100644
--- a/rsa/src/test/java/org/apache/aries/rsa/core/ImportRegistrationImplTest.java
+++ b/rsa/src/test/java/org/apache/aries/rsa/core/ImportRegistrationImplTest.java
@@ -53,7 +53,7 @@ public class ImportRegistrationImplTest {
c.replay();
- ImportRegistrationImpl i = new ImportRegistrationImpl(endpoint, rsac);
+ ImportRegistrationImpl i = new ImportRegistrationImpl(endpoint, rsac, null);
assertNull(i.getException());
assertEquals(i, i.getParent());
@@ -73,7 +73,7 @@ public class ImportRegistrationImplTest {
c.replay();
- ImportRegistrationImpl i1 = new ImportRegistrationImpl(endpoint, rsac);
+ ImportRegistrationImpl i1 = new ImportRegistrationImpl(endpoint, rsac, null);
ImportRegistrationImpl i2 = new ImportRegistrationImpl(i1);
@@ -143,7 +143,7 @@ public class ImportRegistrationImplTest {
c.replay();
- ImportRegistrationImpl i1 = new ImportRegistrationImpl(endpoint, rsac);
+ ImportRegistrationImpl i1 = new ImportRegistrationImpl(endpoint, rsac, null);
ImportRegistrationImpl i2 = new ImportRegistrationImpl(i1);
http://git-wip-us.apache.org/repos/asf/aries-rsa/blob/c8b8492e/rsa/src/test/java/org/apache/aries/rsa/core/event/EventProducerTest.java
----------------------------------------------------------------------
diff --git a/rsa/src/test/java/org/apache/aries/rsa/core/event/EventProducerTest.java b/rsa/src/test/java/org/apache/aries/rsa/core/event/EventProducerTest.java
index 602bcbe..6bb693e 100644
--- a/rsa/src/test/java/org/apache/aries/rsa/core/event/EventProducerTest.java
+++ b/rsa/src/test/java/org/apache/aries/rsa/core/event/EventProducerTest.java
@@ -103,7 +103,7 @@ public class EventProducerTest {
EasyMock.replay(bc);
EventProducer eventProducer = new EventProducer(bc);
- ExportRegistrationImpl ereg = new ExportRegistrationImpl(sref, endpoint, rsaCore);
+ ExportRegistrationImpl ereg = new ExportRegistrationImpl(sref, endpoint, rsaCore, eventProducer);
eventProducer.publishNotification(ereg);
EasyMock.verify(rsaCore, sref, bundle, rsal, rsalSref, bc);
@@ -158,7 +158,7 @@ public class EventProducerTest {
EasyMock.replay(bc);
EventProducer eventProducer = new EventProducer(bc);
- ExportRegistrationImpl ereg = new ExportRegistrationImpl(rsaCore, exportException);
+ ExportRegistrationImpl ereg = new ExportRegistrationImpl(rsaCore, eventProducer, exportException);
eventProducer.publishNotification(Arrays.<ExportRegistration>asList(ereg));
EasyMock.verify(rsaCore, sref, bundle, rsal, rsalSref, bc);
http://git-wip-us.apache.org/repos/asf/aries-rsa/blob/c8b8492e/topology-manager/src/main/java/org/apache/aries/rsa/topologymanager/exporter/EndpointListenerNotifier.java
----------------------------------------------------------------------
diff --git a/topology-manager/src/main/java/org/apache/aries/rsa/topologymanager/exporter/EndpointListenerNotifier.java b/topology-manager/src/main/java/org/apache/aries/rsa/topologymanager/exporter/EndpointListenerNotifier.java
index 9b0386a..18a8ea2 100644
--- a/topology-manager/src/main/java/org/apache/aries/rsa/topologymanager/exporter/EndpointListenerNotifier.java
+++ b/topology-manager/src/main/java/org/apache/aries/rsa/topologymanager/exporter/EndpointListenerNotifier.java
@@ -83,6 +83,7 @@ public class EndpointListenerNotifier implements EndpointListener {
@Override
public void endpointRemoved(EndpointDescription endpoint, String matchedFilter) {
+ LOG.info("endpoint " + endpoint);
notifyListeners(NotifyType.REMOVED, endpoint);
}
@@ -107,6 +108,11 @@ public class EndpointListenerNotifier implements EndpointListener {
*/
private void notifyListener(NotifyType type, EndpointListener listener, Set<Filter> filters,
EndpointDescription endpoint) {
+ if (endpoint == null) {
+ throw new NullPointerException("Endpoint should not be null");
+ //LOG.warn("Endpoint should not be null");
+ //return;
+ }
LOG.debug("Endpoint {}", type);
Set<Filter> matchingFilters = getMatchingFilters(filters, endpoint);
for (Filter filter : matchingFilters) {
@@ -120,6 +126,9 @@ public class EndpointListenerNotifier implements EndpointListener {
private static Set<Filter> getMatchingFilters(Set<Filter> filters, EndpointDescription endpoint) {
Set<Filter> matchingFilters = new HashSet<Filter>();
+ if (endpoint == null) {
+ return matchingFilters;
+ }
Dictionary<String, Object> dict = new Hashtable<String, Object>(endpoint.getProperties());
for (Filter filter : filters) {
if (filter.match(dict)) {
http://git-wip-us.apache.org/repos/asf/aries-rsa/blob/c8b8492e/topology-manager/src/main/java/org/apache/aries/rsa/topologymanager/exporter/EndpointRepository.java
----------------------------------------------------------------------
diff --git a/topology-manager/src/main/java/org/apache/aries/rsa/topologymanager/exporter/EndpointRepository.java b/topology-manager/src/main/java/org/apache/aries/rsa/topologymanager/exporter/EndpointRepository.java
index 71a9a29..5bebe4e 100644
--- a/topology-manager/src/main/java/org/apache/aries/rsa/topologymanager/exporter/EndpointRepository.java
+++ b/topology-manager/src/main/java/org/apache/aries/rsa/topologymanager/exporter/EndpointRepository.java
@@ -26,6 +26,7 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
+import org.osgi.framework.Bundle;
import org.osgi.framework.ServiceReference;
import org.osgi.service.remoteserviceadmin.EndpointDescription;
import org.osgi.service.remoteserviceadmin.EndpointListener;
@@ -87,7 +88,10 @@ public class EndpointRepository {
public synchronized void addService(ServiceReference sref) {
if (!exportedServices.containsKey(sref)) {
- LOG.info("Marking service from bundle {} for export", sref.getBundle().getSymbolicName());
+ Bundle bundle = sref.getBundle();
+ if (bundle != null) {
+ LOG.info("Marking service from bundle {} for export", bundle.getSymbolicName());
+ }
exportedServices.put(sref, new LinkedHashMap<RemoteServiceAdmin, Collection<EndpointDescription>>());
}
}