SLING-6110 ServerSideTeleporter can't read the bundle header Sling-Test-WaitForService-Timeout (patch provided by Marcel Jolk)
git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1763743 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/pom.xml b/pom.xml
index 31296b6..f29cda1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -123,10 +123,12 @@
<dependency>
<groupId>org.osgi</groupId>
<artifactId>org.osgi.core</artifactId>
+ <version>4.3.0</version>
</dependency>
<dependency>
<groupId>org.osgi</groupId>
<artifactId>org.osgi.compendium</artifactId>
+ <version>4.3.0</version>
</dependency>
<dependency>
<groupId>org.apache.felix</groupId>
diff --git a/src/main/java/org/apache/sling/junit/rules/ServerSideTeleporter.java b/src/main/java/org/apache/sling/junit/rules/ServerSideTeleporter.java
index 055cbc3..643b9d6 100644
--- a/src/main/java/org/apache/sling/junit/rules/ServerSideTeleporter.java
+++ b/src/main/java/org/apache/sling/junit/rules/ServerSideTeleporter.java
@@ -20,7 +20,9 @@
import java.util.List;
import org.apache.sling.junit.Activator;
+import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
+import org.osgi.framework.FrameworkUtil;
import org.osgi.framework.ServiceReference;
/** Server-side variant of the TeleporterRule, which provides
@@ -30,14 +32,21 @@
class ServerSideTeleporter extends TeleporterRule {
private final List<ServiceReference> toUnget = new ArrayList<ServiceReference>();
private final BundleContext bundleContext;
+ private final Bundle bundleUnderTest;
private static final int WAITFOR_SERVICE_TIMEOUT_DEFAULT_SECONDS = 10;
- ServerSideTeleporter() {
+ ServerSideTeleporter(Class<?> classUnderTest) {
bundleContext = Activator.getBundleContext();
- if(bundleContext == null) {
+ if (bundleContext == null) {
throw new IllegalStateException("Null BundleContext, should not happen when this class is used");
}
+
+ Bundle bundle = FrameworkUtil.getBundle(classUnderTest);
+ if (bundle == null) {
+ bundle = bundleContext.getBundle();
+ }
+ bundleUnderTest = bundle;
}
@Override
@@ -54,7 +63,7 @@
* Get OSGi service - if it is not available (yet?) try again and again until the configured timeout is reached.
*/
public <T> T getService (Class<T> serviceClass, String ldapFilter) {
- String configuredTimeout = (String)bundleContext.getBundle().getHeaders().get("Sling-Test-WaitForService-Timeout");
+ String configuredTimeout = (String)bundleUnderTest.getHeaders().get("Sling-Test-WaitForService-Timeout");
if (configuredTimeout == null) {
configuredTimeout = Integer.toString(WAITFOR_SERVICE_TIMEOUT_DEFAULT_SECONDS);
}
diff --git a/src/main/java/org/apache/sling/junit/rules/TeleporterRule.java b/src/main/java/org/apache/sling/junit/rules/TeleporterRule.java
index 6d2b01a..5a36654 100644
--- a/src/main/java/org/apache/sling/junit/rules/TeleporterRule.java
+++ b/src/main/java/org/apache/sling/junit/rules/TeleporterRule.java
@@ -78,7 +78,7 @@
TeleporterRule result = null;
if(isServerSide()) {
- result = new ServerSideTeleporter();
+ result = new ServerSideTeleporter(classUnderTest);
} else {
// Client-side. Instantiate the class dynamically to
// avoid bringing its dependencies into this module when