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