You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicemix.apache.org by ge...@apache.org on 2009/02/20 15:44:33 UTC
svn commit: r746257 - in /servicemix/smx4/nmr/trunk/jbi/deployer/src:
main/java/org/apache/servicemix/jbi/deployer/artifacts/ServiceAssemblyImpl.java
test/java/org/apache/servicemix/jbi/deployer/artifacts/ServiceAssemblyImplTest.java
Author: gertv
Date: Fri Feb 20 14:44:33 2009
New Revision: 746257
URL: http://svn.apache.org/viewvc?rev=746257&view=rev
Log:
SMX4NMR-20: Removing wire from registry when SA is stopped
Modified:
servicemix/smx4/nmr/trunk/jbi/deployer/src/main/java/org/apache/servicemix/jbi/deployer/artifacts/ServiceAssemblyImpl.java
servicemix/smx4/nmr/trunk/jbi/deployer/src/test/java/org/apache/servicemix/jbi/deployer/artifacts/ServiceAssemblyImplTest.java
Modified: servicemix/smx4/nmr/trunk/jbi/deployer/src/main/java/org/apache/servicemix/jbi/deployer/artifacts/ServiceAssemblyImpl.java
URL: http://svn.apache.org/viewvc/servicemix/smx4/nmr/trunk/jbi/deployer/src/main/java/org/apache/servicemix/jbi/deployer/artifacts/ServiceAssemblyImpl.java?rev=746257&r1=746256&r2=746257&view=diff
==============================================================================
--- servicemix/smx4/nmr/trunk/jbi/deployer/src/main/java/org/apache/servicemix/jbi/deployer/artifacts/ServiceAssemblyImpl.java (original)
+++ servicemix/smx4/nmr/trunk/jbi/deployer/src/main/java/org/apache/servicemix/jbi/deployer/artifacts/ServiceAssemblyImpl.java Fri Feb 20 14:44:33 2009
@@ -18,24 +18,22 @@
import java.net.URL;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.jbi.JBIException;
-import javax.xml.namespace.QName;
import org.apache.servicemix.jbi.deployer.ServiceAssembly;
import org.apache.servicemix.jbi.deployer.ServiceUnit;
import org.apache.servicemix.jbi.deployer.descriptor.Connection;
import org.apache.servicemix.jbi.deployer.descriptor.DescriptorFactory;
-import org.apache.servicemix.jbi.deployer.descriptor.Provider;
import org.apache.servicemix.jbi.deployer.descriptor.ServiceAssemblyDesc;
import org.apache.servicemix.jbi.deployer.impl.AssemblyReferencesListener;
-import org.apache.servicemix.nmr.api.Endpoint;
import org.apache.servicemix.nmr.api.Wire;
-import org.apache.servicemix.nmr.api.service.ServiceHelper;
import org.apache.servicemix.nmr.core.util.MapToDictionary;
import org.osgi.framework.Bundle;
+import org.osgi.framework.ServiceRegistration;
import org.osgi.service.prefs.Preferences;
/**
@@ -73,6 +71,9 @@
private final AssemblyReferencesListener listener;
+ // map of wires and the matching OSGi ServiceRegistration
+ private Map<Wire, ServiceRegistration> wires = new HashMap<Wire, ServiceRegistration>();
+
public ServiceAssemblyImpl(Bundle bundle,
ServiceAssemblyDesc serviceAssemblyDesc,
List<ServiceUnitImpl> serviceUnits,
@@ -256,26 +257,19 @@
if (serviceAssemblyDesc.getConnections() != null && serviceAssemblyDesc.getConnections().getConnections() != null) {
for (Connection connection : serviceAssemblyDesc.getConnections().getConnections()) {
Wire wire = connection.getWire();
- registerWire(wire, wire.getFrom());
+ wires.put(wire, registerWire(wire));
}
}
}
private void stopConnections() {
- if (serviceAssemblyDesc.getConnections() != null && serviceAssemblyDesc.getConnections().getConnections() != null) {
- for (Connection connection : serviceAssemblyDesc.getConnections().getConnections()) {
- Wire wire = connection.getWire();
- unregisterWire(wire, wire.getFrom());
- }
+ for (Wire wire : wires.keySet()) {
+ wires.get(wire).unregister();
}
}
- protected void registerWire(Wire wire, Map<String, ?> from) {
- bundle.getBundleContext().registerService(Wire.class.getName(),
- wire, new MapToDictionary(from));
- }
-
- protected void unregisterWire(Wire wire, Map<String, ?> from) {
- // TODO
+ protected ServiceRegistration registerWire(Wire wire) {
+ return bundle.getBundleContext().registerService(Wire.class.getName(),
+ wire, new MapToDictionary(wire.getFrom()));
}
}
Modified: servicemix/smx4/nmr/trunk/jbi/deployer/src/test/java/org/apache/servicemix/jbi/deployer/artifacts/ServiceAssemblyImplTest.java
URL: http://svn.apache.org/viewvc/servicemix/smx4/nmr/trunk/jbi/deployer/src/test/java/org/apache/servicemix/jbi/deployer/artifacts/ServiceAssemblyImplTest.java?rev=746257&r1=746256&r2=746257&view=diff
==============================================================================
--- servicemix/smx4/nmr/trunk/jbi/deployer/src/test/java/org/apache/servicemix/jbi/deployer/artifacts/ServiceAssemblyImplTest.java (original)
+++ servicemix/smx4/nmr/trunk/jbi/deployer/src/test/java/org/apache/servicemix/jbi/deployer/artifacts/ServiceAssemblyImplTest.java Fri Feb 20 14:44:33 2009
@@ -33,6 +33,7 @@
import org.jmock.Mockery;
import org.junit.Before;
import org.junit.Test;
+import org.osgi.framework.ServiceRegistration;
import org.osgi.service.prefs.Preferences;
/**
@@ -59,21 +60,25 @@
one(prefs).put("state", State.Stopped.name());
one(prefs).flush();
}});
- final List<Wire> wires = new LinkedList<Wire>();
+ final List<ServiceRegistration> wires = new LinkedList<ServiceRegistration>();
ServiceAssembly sa = new ServiceAssemblyImpl(null, descriptor, new ArrayList<ServiceUnitImpl>(), prefs, new AssemblyReferencesListener(), false) {
@Override
- protected void registerWire(Wire wire, Map<String, ?> from) {
- wires.add(wire);
- }
- @Override
- protected void unregisterWire(Wire wire, Map<String, ?> from) {
- wires.remove(wire);
+ protected ServiceRegistration registerWire(Wire wire) {
+ ServiceRegistration registration = mockery.mock(ServiceRegistration.class, wire.getFrom().toString());
+ wires.add(registration);
+ return registration;
}
};
sa.start();
assertEquals(2, wires.size());
+ // ServiceRegistrations should be unregistered when the SA is stopped
+ for (final ServiceRegistration registration : wires) {
+ mockery.checking(new Expectations() {{
+ one(registration).unregister();
+ }});
+ }
sa.stop();
- assertEquals(0, wires.size());
+ mockery.assertIsSatisfied();
}
}