Merge pull request #28 from amichair/illegalstate
Add explicit IllegalStateException in exportService
diff --git a/itests/felix/src/test/java/org/apache/aries/rsa/itests/felix/RsaTestBase.java b/itests/felix/src/test/java/org/apache/aries/rsa/itests/felix/RsaTestBase.java
index 346960d..c08bfce 100644
--- a/itests/felix/src/test/java/org/apache/aries/rsa/itests/felix/RsaTestBase.java
+++ b/itests/felix/src/test/java/org/apache/aries/rsa/itests/felix/RsaTestBase.java
@@ -70,7 +70,7 @@
}
}
- protected int getFreePort() throws IOException {
+ protected static int getFreePort() throws IOException {
try (ServerSocket socket = new ServerSocket()) {
socket.setReuseAddress(true); // enables quickly reopening socket on same port
socket.bind(new InetSocketAddress(0)); // zero finds a free port
@@ -178,10 +178,14 @@
.asOption();
}
- protected static Option configFastBinPort(String port) {
+ protected static Option configFastBinPort(int port) {
return newConfiguration("org.apache.aries.rsa.provider.fastbin") //
.put("uri", "tcp://0.0.0.0:" + port) //
.asOption();
}
+ protected static Option configFastBinFreePort() throws IOException {
+ return configFastBinPort(getFreePort());
+ }
+
}
diff --git a/itests/felix/src/test/java/org/apache/aries/rsa/itests/felix/fastbin/TestFastbinRoundTrip.java b/itests/felix/src/test/java/org/apache/aries/rsa/itests/felix/fastbin/TestFastbinRoundTrip.java
index 36d86ca..14d4ffd 100644
--- a/itests/felix/src/test/java/org/apache/aries/rsa/itests/felix/fastbin/TestFastbinRoundTrip.java
+++ b/itests/felix/src/test/java/org/apache/aries/rsa/itests/felix/fastbin/TestFastbinRoundTrip.java
@@ -37,17 +37,10 @@
@RunWith(TwoContainerPaxExam.class)
public class TestFastbinRoundTrip extends RsaTestBase {
- private static String FASTBIN_PORT_SERVER = "2544";
- private static String FASTBIN_PORT_CLIENT = "2545";
@Inject
EchoService echoService;
-
- public TestFastbinRoundTrip() throws IOException {
- FASTBIN_PORT_CLIENT = "" + getFreePort();
- FASTBIN_PORT_SERVER = "" + getFreePort();
- }
-
+
@ServerConfiguration
public static Option[] remoteConfig() throws IOException {
return new Option[] //
@@ -58,7 +51,7 @@
echoTcpService(), //
configZKServer(), //
configZKDiscovery(), //
- configFastBinPort(FASTBIN_PORT_SERVER),
+ configFastBinFreePort()
};
}
@@ -71,7 +64,7 @@
rsaProviderFastBin(), //
echoTcpConsumer(), //
configZKDiscovery(), //
- configFastBinPort(FASTBIN_PORT_CLIENT)
+ configFastBinFreePort()
};
}
diff --git a/itests/felix/src/test/java/org/apache/aries/rsa/itests/felix/rsa/TestRSAListener.java b/itests/felix/src/test/java/org/apache/aries/rsa/itests/felix/rsa/TestRSAListener.java
index 0371787..3cf0267 100644
--- a/itests/felix/src/test/java/org/apache/aries/rsa/itests/felix/rsa/TestRSAListener.java
+++ b/itests/felix/src/test/java/org/apache/aries/rsa/itests/felix/rsa/TestRSAListener.java
@@ -57,7 +57,7 @@
rsaCore(), //
rsaProviderFastBin(), //
echoTcpService(), //
- configFastBinPort("2545"),
+ configFastBinFreePort()
};
}
diff --git a/parent/pom.xml b/parent/pom.xml
index 37887e8..d329371 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -35,13 +35,13 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<baseline>1.9.0</baseline>
<baseline.skip>true</baseline.skip>
- <zookeeper.version>3.4.13</zookeeper.version>
+ <zookeeper.version>3.4.14</zookeeper.version>
<rsa.version>1.0.0</rsa.version>
<slf4j.version>1.7.14</slf4j.version>
<log4j.version>1.2.6</log4j.version>
<hawtdispatch.version>1.21</hawtdispatch.version>
<hawtbuf.version>1.11</hawtbuf.version>
- <exam.version>4.12.0</exam.version>
+ <exam.version>4.13.0</exam.version>
<cxf.resources.base.path />
<cxf.checkstyle.extension />
</properties>
diff --git a/rsa/src/main/java/org/apache/aries/rsa/core/RemoteServiceAdminFactory.java b/rsa/src/main/java/org/apache/aries/rsa/core/RemoteServiceAdminFactory.java
index 92c189b..ef64adf 100644
--- a/rsa/src/main/java/org/apache/aries/rsa/core/RemoteServiceAdminFactory.java
+++ b/rsa/src/main/java/org/apache/aries/rsa/core/RemoteServiceAdminFactory.java
@@ -46,6 +46,6 @@
RemoteServiceAdmin serviceObject) {
LOG.debug("RemoteServiceAdmin ServiceInstance removed for Bundle {}", b.getSymbolicName());
instances--;
- ((RemoteServiceAdminInstance)serviceObject).close(instances == 0);
+ ((RemoteServiceAdminInstance)serviceObject).close(b, instances == 0);
}
}
diff --git a/rsa/src/main/java/org/apache/aries/rsa/core/RemoteServiceAdminInstance.java b/rsa/src/main/java/org/apache/aries/rsa/core/RemoteServiceAdminInstance.java
index 7158f52..a5e8135 100644
--- a/rsa/src/main/java/org/apache/aries/rsa/core/RemoteServiceAdminInstance.java
+++ b/rsa/src/main/java/org/apache/aries/rsa/core/RemoteServiceAdminInstance.java
@@ -25,6 +25,7 @@
import java.util.List;
import java.util.Map;
+import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
import org.osgi.framework.Constants;
import org.osgi.framework.ServiceReference;
@@ -78,9 +79,9 @@
});
}
- public void close(boolean closeAll) {
+ public void close(Bundle bundle, boolean closeAll) {
closed = true;
- rsaCore.removeExportRegistrations(bctx.getBundle());
+ rsaCore.removeExportRegistrations(bundle);
if (closeAll) {
rsaCore.close();
}
diff --git a/rsa/src/main/java/org/apache/aries/rsa/core/event/EventAdminSender.java b/rsa/src/main/java/org/apache/aries/rsa/core/event/EventAdminSender.java
index d36ae45..22974ba 100644
--- a/rsa/src/main/java/org/apache/aries/rsa/core/event/EventAdminSender.java
+++ b/rsa/src/main/java/org/apache/aries/rsa/core/event/EventAdminSender.java
@@ -23,11 +23,13 @@
import java.util.HashMap;
import java.util.Map;
+import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceReference;
import org.osgi.service.event.Event;
import org.osgi.service.event.EventAdmin;
import org.osgi.service.remoteserviceadmin.EndpointDescription;
+import org.osgi.service.remoteserviceadmin.ImportReference;
import org.osgi.service.remoteserviceadmin.RemoteServiceAdminEvent;
public class EventAdminSender {
@@ -67,15 +69,17 @@
private Event toEvent(RemoteServiceAdminEvent rsaEvent) {
String topic = getTopic(rsaEvent);
Map<String, Object> props = new HashMap<>();
- props.put("bundle", rsaEvent.getSource());
- props.put("bundle.id", rsaEvent.getSource().getBundleId());
- props.put("bundle.symbolicname", rsaEvent.getSource().getSymbolicName());
- props.put("bundle.version", rsaEvent.getSource().getVersion());
+ Bundle bundle = rsaEvent.getSource();
+ props.put("bundle", bundle);
+ props.put("bundle.id", bundle.getBundleId());
+ props.put("bundle.symbolicname", bundle.getSymbolicName());
+ props.put("bundle.version", bundle.getVersion());
props.put("bundle.signer", ""); // TODO What to put here
- if (rsaEvent.getException() != null) {
- props.put("exception", rsaEvent.getException());
- props.put("exception.class", rsaEvent.getException().getClass());
- props.put("exception.class", rsaEvent.getException().getMessage());
+ Throwable exception = rsaEvent.getException();
+ if (exception != null) {
+ props.put("exception", exception);
+ props.put("exception.class", exception.getClass().getName());
+ props.put("exception.message", exception.getMessage());
}
if (rsaEvent.getExportReference() != null) {
EndpointDescription endpoint = rsaEvent.getExportReference().getExportedEndpoint();
@@ -83,8 +87,9 @@
props.put("endpoint.id", endpoint.getId());
props.put("objectClass", endpoint.getInterfaces());
}
- if (rsaEvent.getImportReference() != null && rsaEvent.getImportReference().getImportedEndpoint() != null) {
- props.put("service.imported.configs", rsaEvent.getImportReference().getImportedEndpoint().getConfigurationTypes());
+ ImportReference importReference = rsaEvent.getImportReference();
+ if (importReference != null && importReference.getImportedEndpoint() != null) {
+ props.put("service.imported.configs", importReference.getImportedEndpoint().getConfigurationTypes());
}
props.put("timestamp", System.currentTimeMillis());
props.put("event", rsaEvent);