You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by ro...@apache.org on 2020/04/13 16:48:24 UTC

[aries-cdi] branch master updated: osgi-test 0.9.0 & simplify

This is an automated email from the ASF dual-hosted git repository.

rotty3000 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/aries-cdi.git


The following commit(s) were added to refs/heads/master by this push:
     new 1943aaf  osgi-test 0.9.0 & simplify
1943aaf is described below

commit 1943aaf1bfe0d97d82d14e0311587181c3ad7571
Author: Raymond Augé <ro...@apache.org>
AuthorDate: Sat Apr 11 15:06:31 2020 -0400

    osgi-test 0.9.0 & simplify
    
    Signed-off-by: Raymond Augé <ro...@apache.org>
---
 cdi-extension-mp-config/owb-itest.bndrun           |   8 +-
 cdi-extension-mp-config/pom.xml                    |  10 --
 .../cdi/extension/mp/config/test/BaseTestCase.java |  24 +++-
 .../extension/mp/config/test/MpConfigTests.java    |   2 +-
 cdi-extension-mp-config/weld-itest.bndrun          |   8 +-
 cdi-extension-mp-jwt-auth/owb-itest.bndrun         |  11 +-
 cdi-extension-mp-jwt-auth/pom.xml                  |  22 ----
 .../cdi/extension/mp/jwt/test/BaseTestCase.java    |  35 +++++-
 .../cdi/extension/mp/jwt/test/CookieTest.java      |  10 +-
 .../extension/mp/jwt/test/HttpBaseTestCase.java    |  33 ++----
 .../cdi/extension/mp/jwt/test/JaxRsAsyncTest.java  |  19 ++--
 .../extension/mp/jwt/test/JaxrsBaseTestCase.java   |  16 +--
 .../cdi/extension/mp/jwt/test/MpJwtAuthTests.java  |   4 +-
 .../mp/jwt/test/PreProvidedTokenTest.java          |  10 +-
 cdi-extension-mp-jwt-auth/weld-itest.bndrun        |  11 +-
 cdi-extension-mp-metrics/owb-itest.bndrun          |  11 +-
 cdi-extension-mp-metrics/pom.xml                   |  16 ---
 .../extension/mp/metrics/test/BaseTestCase.java    |  24 +++-
 .../mp/metrics/test/HttpBaseTestCase.java          |  33 ++----
 .../mp/metrics/test/JaxrsBaseTestCase.java         |  16 ++-
 .../extension/mp/metrics/test/MpMetricsTests.java  |  19 ++--
 cdi-extension-mp-metrics/weld-itest.bndrun         |   9 +-
 cdi-itests/owb-itest.bndrun                        |   9 +-
 cdi-itests/pom.xml                                 |   7 +-
 .../aries/cdi/test/cases/BeanPropertyTypeTest.java |   2 +-
 .../apache/aries/cdi/test/cases/CdiBeanTests.java  |   2 +-
 .../aries/cdi/test/cases/CdiContainerTests.java    |   4 +-
 .../aries/cdi/test/cases/ConfigurationTests.java   |  12 +-
 .../cdi/test/cases/DisableComponentTests.java      |   8 +-
 .../apache/aries/cdi/test/cases/EventsTests.java   |  20 ++--
 .../apache/aries/cdi/test/cases/ExcludeTests.java  |  12 +-
 .../cdi/test/cases/FactoryComponentTests.java      |   6 +-
 .../apache/aries/cdi/test/cases/HttpTestCase.java  |  12 +-
 .../aries/cdi/test/cases/JndiExtensionTests.java   |   6 +-
 .../cdi/test/cases/OSGiBeanDescriptorTests.java    |   6 +-
 .../cases/OptionalReluctantReferenceTests.java     |  38 +++----
 .../apache/aries/cdi/test/cases/ProducerTest.java  |   2 +-
 .../org/apache/aries/cdi/test/cases/Test152_2.java |   8 +-
 .../org/apache/aries/cdi/test/cases/Test152_3.java |   2 +-
 .../apache/aries/cdi/test/cases/Test152_3_1.java   |  22 ++--
 .../apache/aries/cdi/test/cases/Test152_3_1_1.java | 126 ++++++++++-----------
 .../cdi/test/cases/Test_discoverByBeansXml.java    |   4 +-
 .../org/apache/aries/cdi/test/cases/TrimTests.java |   4 +-
 .../aries/cdi/test/cases/base/BaseTestCase.java    |  28 +++--
 .../cdi/test/cases/base/HttpBaseTestCase.java      |  20 ++--
 .../cdi/test/cases/base/JaxrsBaseTestCase.java     |  16 +--
 .../aries/cdi/test/cases/jaxrs/ResourceTests.java  |   6 +-
 cdi-itests/weld-itest.bndrun                       |   9 +-
 pom.xml                                            |  13 +++
 49 files changed, 369 insertions(+), 386 deletions(-)

diff --git a/cdi-extension-mp-config/owb-itest.bndrun b/cdi-extension-mp-config/owb-itest.bndrun
index 1569a25..0ae93f8 100644
--- a/cdi-extension-mp-config/owb-itest.bndrun
+++ b/cdi-extension-mp-config/owb-itest.bndrun
@@ -23,8 +23,8 @@
 	openwebbeans-impl;version='[2.0.13,2.0.14)',\
 	openwebbeans-spi;version='[2.0.13,2.0.14)',\
 	org.apache.aries.cdi.extender;version='[1.1.2,1.1.3)',\
-	org.apache.aries.cdi.extension.mp-config;version='[1.1.2,1.1.3)',\
 	org.apache.aries.cdi.extension.mp-config-tests;version='[1.1.2,1.1.3)',\
+	org.apache.aries.cdi.extension.mp-config;version='[1.1.2,1.1.3)',\
 	org.apache.aries.cdi.extension.spi;version='[1.1.2,1.1.3)',\
 	org.apache.aries.cdi.owb;version='[1.1.2,1.1.3)',\
 	org.apache.aries.cdi.spi;version='[1.1.2,1.1.3)',\
@@ -44,7 +44,7 @@
 	org.apache.xbean.bundleutils;version='[4.15.0,4.15.1)',\
 	org.apache.xbean.finder-shaded;version='[4.13.0,4.13.1)',\
 	org.osgi.service.cdi;version='[1.0.0,1.0.1)',\
-	org.osgi.test.common;version='[1.0.0,1.0.1)',\
-	org.osgi.test.junit4;version='[1.0.0,1.0.1)',\
+	org.osgi.test.common;version='[0.9.0,0.9.1)',\
+	org.osgi.test.junit4;version='[0.9.0,0.9.1)',\
 	org.osgi.util.function;version='[1.1.0,1.1.1)',\
-	org.osgi.util.promise;version='[1.1.0,1.1.1)'
\ No newline at end of file
+	org.osgi.util.promise;version='[1.1.0,1.1.1)'
diff --git a/cdi-extension-mp-config/pom.xml b/cdi-extension-mp-config/pom.xml
index dc20fee..f2d8c0d 100644
--- a/cdi-extension-mp-config/pom.xml
+++ b/cdi-extension-mp-config/pom.xml
@@ -205,20 +205,10 @@
 				<dependency>
 					<groupId>org.osgi</groupId>
 					<artifactId>org.osgi.test.assertj</artifactId>
-					<version>1.0.0-SNAPSHOT</version>
-					<scope>test</scope>
-					<exclusions>
-						<exclusion>
-							<groupId>org.osgi</groupId>
-							<artifactId>osgi.promise</artifactId>
-						</exclusion>
-					</exclusions>
 				</dependency>
 				<dependency>
 					<groupId>org.osgi</groupId>
 					<artifactId>org.osgi.test.junit4</artifactId>
-					<version>1.0.0-SNAPSHOT</version>
-					<scope>test</scope>
 				</dependency>
 			</dependencies>
 
diff --git a/cdi-extension-mp-config/src/test/java/org/apache/aries/cdi/extension/mp/config/test/BaseTestCase.java b/cdi-extension-mp-config/src/test/java/org/apache/aries/cdi/extension/mp/config/test/BaseTestCase.java
index b2075d7..9d48bf0 100644
--- a/cdi-extension-mp-config/src/test/java/org/apache/aries/cdi/extension/mp/config/test/BaseTestCase.java
+++ b/cdi-extension-mp-config/src/test/java/org/apache/aries/cdi/extension/mp/config/test/BaseTestCase.java
@@ -27,8 +27,12 @@ import org.osgi.framework.BundleContext;
 import org.osgi.framework.Filter;
 import org.osgi.framework.ServiceReference;
 import org.osgi.service.cdi.runtime.CDIComponentRuntime;
+import org.osgi.test.common.annotation.InjectBundleContext;
+import org.osgi.test.common.annotation.InjectInstallBundle;
+import org.osgi.test.common.annotation.InjectService;
+import org.osgi.test.common.install.InstallBundle;
 import org.osgi.test.junit4.context.BundleContextRule;
-import org.osgi.test.junit4.service.ServiceUseRule;
+import org.osgi.test.junit4.service.ServiceRule;
 import org.osgi.util.tracker.ServiceTracker;
 import org.osgi.util.tracker.ServiceTrackerCustomizer;
 
@@ -40,7 +44,14 @@ public abstract class BaseTestCase {
 	@Rule
 	public BundleContextRule bcr = new BundleContextRule();
 	@Rule
-	public ServiceUseRule<CDIComponentRuntime> ccrr = new ServiceUseRule.Builder<CDIComponentRuntime>(CDIComponentRuntime.class, bcr).build();
+	public ServiceRule sr = new ServiceRule();
+
+	@InjectBundleContext
+	BundleContext bundleContext;
+	@InjectInstallBundle
+	InstallBundle installBundle;
+	@InjectService
+	CDIComponentRuntime ccrr;
 
 	@Rule
 	public TestWatcher watchman= new TestWatcher() {
@@ -56,19 +67,19 @@ public abstract class BaseTestCase {
 	};
 
 	public <S,T> CloseableTracker<S, T> track(Class<S> typeToTrack) {
-		CloseableTracker<S, T> tracker = new CloseableTracker<>(bcr.getBundleContext(), typeToTrack);
+		CloseableTracker<S, T> tracker = new CloseableTracker<>(bundleContext, typeToTrack);
 		tracker.open();
 		return tracker;
 	}
 
 	public <S,T> CloseableTracker<S, T> track(Class<S> typeToTrack, String pattern, Object... objects) {
-		CloseableTracker<S, T> tracker = new CloseableTracker<>(bcr.getBundleContext(), format("(&(objectClass=%s)%s)", typeToTrack.getName(), format(pattern, objects)));
+		CloseableTracker<S, T> tracker = new CloseableTracker<>(bundleContext, format("(&(objectClass=%s)%s)", typeToTrack.getName(), format(pattern, objects)));
 		tracker.open();
 		return tracker;
 	}
 
 	public <S,T> CloseableTracker<S, T> track(Filter filter) {
-		CloseableTracker<S, T> tracker = new CloseableTracker<>(bcr.getBundleContext(), filter);
+		CloseableTracker<S, T> tracker = new CloseableTracker<>(bundleContext, filter);
 		tracker.open();
 		return tracker;
 	}
@@ -82,7 +93,7 @@ public abstract class BaseTestCase {
 	}
 
 	public <S> CloseableTracker<S, ServiceReference<S>> trackSR(Filter filter) {
-		CloseableTracker<S, ServiceReference<S>> tracker = new CloseableTracker<>(bcr.getBundleContext(), filter, new ServiceTrackerCustomizer<S, ServiceReference<S>>() {
+		CloseableTracker<S, ServiceReference<S>> tracker = new CloseableTracker<>(bundleContext, filter, new ServiceTrackerCustomizer<S, ServiceReference<S>>() {
 
 			@Override
 			public ServiceReference<S> addingService(ServiceReference<S> reference) {
@@ -144,4 +155,5 @@ public abstract class BaseTestCase {
 		}
 
 	}
+
 }
diff --git a/cdi-extension-mp-config/src/test/java/org/apache/aries/cdi/extension/mp/config/test/MpConfigTests.java b/cdi-extension-mp-config/src/test/java/org/apache/aries/cdi/extension/mp/config/test/MpConfigTests.java
index 87690c8..0d9086f 100644
--- a/cdi-extension-mp-config/src/test/java/org/apache/aries/cdi/extension/mp/config/test/MpConfigTests.java
+++ b/cdi-extension-mp-config/src/test/java/org/apache/aries/cdi/extension/mp/config/test/MpConfigTests.java
@@ -26,7 +26,7 @@ public class MpConfigTests extends BaseTestCase {
 
 	@Test
 	public void testConfigIsSet() throws Exception {
-		Bundle bundle = bcr.installBundle("tb01.jar");
+		Bundle bundle = installBundle.installBundle("tb01.jar");
 
 		try (CloseableTracker<BeanManager, BeanManager> bmt = track(BeanManager.class, "(service.bundleid=%d)", bundle.getBundleId())) {
 			assertThat(bmt.waitForService(timeout)).isNotNull();
diff --git a/cdi-extension-mp-config/weld-itest.bndrun b/cdi-extension-mp-config/weld-itest.bndrun
index caf9adc..94b68d9 100644
--- a/cdi-extension-mp-config/weld-itest.bndrun
+++ b/cdi-extension-mp-config/weld-itest.bndrun
@@ -23,8 +23,8 @@
 	assertj-core;version='[3.15.0,3.15.1)',\
 	jboss-classfilewriter;version='[1.2.4,1.2.5)',\
 	org.apache.aries.cdi.extender;version='[1.1.2,1.1.3)',\
-	org.apache.aries.cdi.extension.mp-config;version='[1.1.2,1.1.3)',\
 	org.apache.aries.cdi.extension.mp-config-tests;version='[1.1.2,1.1.3)',\
+	org.apache.aries.cdi.extension.mp-config;version='[1.1.2,1.1.3)',\
 	org.apache.aries.cdi.extension.spi;version='[1.1.2,1.1.3)',\
 	org.apache.aries.cdi.spi;version='[1.1.2,1.1.3)',\
 	org.apache.aries.cdi.weld;version='[1.1.2,1.1.3)',\
@@ -45,7 +45,7 @@
 	org.jboss.spec.javax.ejb.jboss-ejb-api_3.2_spec;version='[2.0.0,2.0.1)',\
 	org.jboss.weld.osgi-bundle;version='[3.1.3,3.1.4)',\
 	org.osgi.service.cdi;version='[1.0.0,1.0.1)',\
-	org.osgi.test.common;version='[1.0.0,1.0.1)',\
-	org.osgi.test.junit4;version='[1.0.0,1.0.1)',\
+	org.osgi.test.common;version='[0.9.0,0.9.1)',\
+	org.osgi.test.junit4;version='[0.9.0,0.9.1)',\
 	org.osgi.util.function;version='[1.1.0,1.1.1)',\
-	org.osgi.util.promise;version='[1.1.0,1.1.1)'
\ No newline at end of file
+	org.osgi.util.promise;version='[1.1.0,1.1.1)'
diff --git a/cdi-extension-mp-jwt-auth/owb-itest.bndrun b/cdi-extension-mp-jwt-auth/owb-itest.bndrun
index 56b7bdc..1386a7b 100644
--- a/cdi-extension-mp-jwt-auth/owb-itest.bndrun
+++ b/cdi-extension-mp-jwt-auth/owb-itest.bndrun
@@ -27,8 +27,8 @@
 	org.apache.aries.cdi.extender;version='[1.1.2,1.1.3)',\
 	org.apache.aries.cdi.extension.jaxrs;version='[1.1.2,1.1.3)',\
 	org.apache.aries.cdi.extension.mp-config;version='[1.1.2,1.1.3)',\
-	org.apache.aries.cdi.extension.mp-jwt-auth;version='[1.1.2,1.1.3)',\
 	org.apache.aries.cdi.extension.mp-jwt-auth-tests;version='[1.1.2,1.1.3)',\
+	org.apache.aries.cdi.extension.mp-jwt-auth;version='[1.1.2,1.1.3)',\
 	org.apache.aries.cdi.extension.servlet.common;version='[1.1.2,1.1.3)',\
 	org.apache.aries.cdi.extension.servlet.owb;version='[1.1.2,1.1.3)',\
 	org.apache.aries.cdi.extension.spi;version='[1.1.2,1.1.3)',\
@@ -38,7 +38,6 @@
 	org.apache.aries.jax.rs.whiteboard;version='[1.0.7,1.0.8)',\
 	org.apache.aries.spifly.dynamic.framework.extension;version='[1.2.4,1.2.5)',\
 	org.apache.commons.io;version='[2.6.0,2.6.1)',\
-	org.apache.commons.logging;version='[1.2.0,1.2.1)',\
 	org.apache.felix.configadmin;version='[1.9.10,1.9.11)',\
 	org.apache.felix.converter;version='[1.0.12,1.0.13)',\
 	org.apache.felix.gogo.command;version='[1.1.0,1.1.1)',\
@@ -54,8 +53,6 @@
 	org.apache.geronimo.specs.geronimo-jcdi_2.0_spec;version='[1.1.0,1.1.1)',\
 	org.apache.geronimo.specs.geronimo-json_1.1_spec;version='[1.3.0,1.3.1)',\
 	org.apache.geronimo.specs.geronimo-jsonb_1.0_spec;version='[1.2.0,1.2.1)',\
-	org.apache.httpcomponents.httpclient;version='[4.5.3,4.5.4)',\
-	org.apache.httpcomponents.httpcore;version='[4.4.6,4.4.7)',\
 	org.apache.johnzon.core;version='[1.2.3,1.2.4)',\
 	org.apache.johnzon.jsonb;version='[1.2.3,1.2.4)',\
 	org.apache.johnzon.mapper;version='[1.2.3,1.2.4)',\
@@ -66,7 +63,7 @@
 	org.apache.xbean.finder-shaded;version='[4.13.0,4.13.1)',\
 	org.osgi.service.cdi;version='[1.0.0,1.0.1)',\
 	org.osgi.service.jaxrs;version='[1.0.0,1.0.1)',\
-	org.osgi.test.common;version='[1.0.0,1.0.1)',\
-	org.osgi.test.junit4;version='[1.0.0,1.0.1)',\
+	org.osgi.test.common;version='[0.9.0,0.9.1)',\
+	org.osgi.test.junit4;version='[0.9.0,0.9.1)',\
 	org.osgi.util.function;version='[1.1.0,1.1.1)',\
-	org.osgi.util.promise;version='[1.1.0,1.1.1)'
\ No newline at end of file
+	org.osgi.util.promise;version='[1.1.0,1.1.1)'
diff --git a/cdi-extension-mp-jwt-auth/pom.xml b/cdi-extension-mp-jwt-auth/pom.xml
index 3af3d78..fb48cd5 100644
--- a/cdi-extension-mp-jwt-auth/pom.xml
+++ b/cdi-extension-mp-jwt-auth/pom.xml
@@ -329,32 +329,10 @@
 				<dependency>
 					<groupId>org.osgi</groupId>
 					<artifactId>org.osgi.test.assertj</artifactId>
-					<version>1.0.0-SNAPSHOT</version>
-					<scope>test</scope>
-					<exclusions>
-						<exclusion>
-							<groupId>org.osgi</groupId>
-							<artifactId>osgi.promise</artifactId>
-						</exclusion>
-					</exclusions>
 				</dependency>
 				<dependency>
 					<groupId>org.osgi</groupId>
 					<artifactId>org.osgi.test.junit4</artifactId>
-					<version>1.0.0-SNAPSHOT</version>
-					<scope>test</scope>
-				</dependency>
-				<dependency>
-					<groupId>org.apache.httpcomponents</groupId>
-					<artifactId>httpclient-osgi</artifactId>
-					<version>4.5.3</version>
-					<scope>test</scope>
-				</dependency>
-				<dependency>
-					<groupId>org.apache.httpcomponents</groupId>
-					<artifactId>httpcore-osgi</artifactId>
-					<version>4.4.6</version>
-					<scope>test</scope>
 				</dependency>
 			</dependencies>
 
diff --git a/cdi-extension-mp-jwt-auth/src/test/java/org/apache/aries/cdi/extension/mp/jwt/test/BaseTestCase.java b/cdi-extension-mp-jwt-auth/src/test/java/org/apache/aries/cdi/extension/mp/jwt/test/BaseTestCase.java
index f36e8ed..983466a 100644
--- a/cdi-extension-mp-jwt-auth/src/test/java/org/apache/aries/cdi/extension/mp/jwt/test/BaseTestCase.java
+++ b/cdi-extension-mp-jwt-auth/src/test/java/org/apache/aries/cdi/extension/mp/jwt/test/BaseTestCase.java
@@ -26,8 +26,12 @@ import org.osgi.framework.BundleContext;
 import org.osgi.framework.Filter;
 import org.osgi.framework.ServiceReference;
 import org.osgi.service.cdi.runtime.CDIComponentRuntime;
+import org.osgi.test.common.annotation.InjectBundleContext;
+import org.osgi.test.common.annotation.InjectInstallBundle;
+import org.osgi.test.common.annotation.InjectService;
+import org.osgi.test.common.install.InstallBundle;
 import org.osgi.test.junit4.context.BundleContextRule;
-import org.osgi.test.junit4.service.ServiceUseRule;
+import org.osgi.test.junit4.service.ServiceRule;
 import org.osgi.util.tracker.ServiceTracker;
 import org.osgi.util.tracker.ServiceTrackerCustomizer;
 
@@ -38,7 +42,14 @@ public abstract class BaseTestCase {
 	@Rule
 	public BundleContextRule bcr = new BundleContextRule();
 	@Rule
-	public ServiceUseRule<CDIComponentRuntime> ccrr = new ServiceUseRule.Builder<CDIComponentRuntime>(CDIComponentRuntime.class, bcr).build();
+	public ServiceRule sr = new ServiceRule();
+
+	@InjectBundleContext
+	BundleContext bundleContext;
+	@InjectInstallBundle
+	InstallBundle installBundle;
+	@InjectService
+	CDIComponentRuntime ccrr;
 
 	@Rule
 	public TestWatcher watchman= new TestWatcher() {
@@ -53,8 +64,20 @@ public abstract class BaseTestCase {
 		}
 	};
 
+	public <S,T> CloseableTracker<S, T> track(Class<S> typeToTrack) {
+		CloseableTracker<S, T> tracker = new CloseableTracker<>(bundleContext, typeToTrack);
+		tracker.open();
+		return tracker;
+	}
+
+	public <S,T> CloseableTracker<S, T> track(Class<S> typeToTrack, String pattern, Object... objects) {
+		CloseableTracker<S, T> tracker = new CloseableTracker<>(bundleContext, format("(&(objectClass=%s)%s)", typeToTrack.getName(), format(pattern, objects)));
+		tracker.open();
+		return tracker;
+	}
+
 	public <S,T> CloseableTracker<S, T> track(Filter filter) {
-		CloseableTracker<S, T> tracker = new CloseableTracker<>(bcr.getBundleContext(), filter);
+		CloseableTracker<S, T> tracker = new CloseableTracker<>(bundleContext, filter);
 		tracker.open();
 		return tracker;
 	}
@@ -68,7 +91,7 @@ public abstract class BaseTestCase {
 	}
 
 	public <S> CloseableTracker<S, ServiceReference<S>> trackSR(Filter filter) {
-		CloseableTracker<S, ServiceReference<S>> tracker = new CloseableTracker<>(bcr.getBundleContext(), filter, new ServiceTrackerCustomizer<S, ServiceReference<S>>() {
+		CloseableTracker<S, ServiceReference<S>> tracker = new CloseableTracker<>(bundleContext, filter, new ServiceTrackerCustomizer<S, ServiceReference<S>>() {
 
 			@Override
 			public ServiceReference<S> addingService(ServiceReference<S> reference) {
@@ -112,6 +135,10 @@ public abstract class BaseTestCase {
 
 	public static class CloseableTracker<S, T> extends ServiceTracker<S, T> implements AutoCloseable {
 
+		public CloseableTracker(BundleContext context, Class<S> typeToTrack) {
+			super(context, typeToTrack, null);
+		}
+
 		public CloseableTracker(BundleContext context, Filter filter) {
 			super(context, filter, null);
 		}
diff --git a/cdi-extension-mp-jwt-auth/src/test/java/org/apache/aries/cdi/extension/mp/jwt/test/CookieTest.java b/cdi-extension-mp-jwt-auth/src/test/java/org/apache/aries/cdi/extension/mp/jwt/test/CookieTest.java
index 4df619c..86b0624 100644
--- a/cdi-extension-mp-jwt-auth/src/test/java/org/apache/aries/cdi/extension/mp/jwt/test/CookieTest.java
+++ b/cdi-extension-mp-jwt-auth/src/test/java/org/apache/aries/cdi/extension/mp/jwt/test/CookieTest.java
@@ -26,19 +26,17 @@ import javax.ws.rs.client.ClientBuilder;
 import javax.ws.rs.core.Cookie;
 
 import org.eclipse.microprofile.jwt.tck.util.TokenUtils;
-import org.junit.Rule;
 import org.junit.Test;
-import org.osgi.test.junit4.service.ServiceUseRule;
+import org.osgi.test.common.annotation.InjectService;
 
 // NOTE: reuses tck resources and token generation
 public class CookieTest extends MpJwtAuthTests {
-	@Rule
-	public ServiceUseRule<ClientBuilder> cbr = new ServiceUseRule.Builder<>(ClientBuilder.class) //
-		.build();
+
+	@InjectService
+	ClientBuilder cb;
 
 	@Test
 	public void test() throws Exception {
-		final ClientBuilder cb = cbr.getService();
 		cb.connectTimeout(1000, TimeUnit.SECONDS);
 		cb.readTimeout(1000, TimeUnit.SECONDS);
 
diff --git a/cdi-extension-mp-jwt-auth/src/test/java/org/apache/aries/cdi/extension/mp/jwt/test/HttpBaseTestCase.java b/cdi-extension-mp-jwt-auth/src/test/java/org/apache/aries/cdi/extension/mp/jwt/test/HttpBaseTestCase.java
index 6383425..1b5d725 100644
--- a/cdi-extension-mp-jwt-auth/src/test/java/org/apache/aries/cdi/extension/mp/jwt/test/HttpBaseTestCase.java
+++ b/cdi-extension-mp-jwt-auth/src/test/java/org/apache/aries/cdi/extension/mp/jwt/test/HttpBaseTestCase.java
@@ -16,56 +16,37 @@ package org.apache.aries.cdi.extension.mp.jwt.test;
 
 import static org.junit.Assert.assertTrue;
 
-import java.io.InputStream;
-
-import org.apache.http.HttpEntity;
-import org.apache.http.osgi.services.HttpClientBuilderFactory;
 import org.assertj.core.util.Arrays;
-import org.junit.Rule;
 import org.osgi.service.http.runtime.HttpServiceRuntime;
 import org.osgi.service.http.runtime.dto.ServletContextDTO;
 import org.osgi.service.http.runtime.dto.ServletDTO;
 import org.osgi.service.http.whiteboard.HttpWhiteboardConstants;
-import org.osgi.test.junit4.service.ServiceUseRule;
+import org.osgi.test.common.annotation.InjectService;
+import org.osgi.test.common.service.ServiceAware;
 
 public abstract class HttpBaseTestCase extends BaseTestCase {
 
-	@Rule
-	public ServiceUseRule<HttpServiceRuntime> hsrr = new ServiceUseRule.Builder<HttpServiceRuntime>(HttpServiceRuntime.class, bcr).build();
-	@Rule
-	public ServiceUseRule<HttpClientBuilderFactory> hcbfr = new ServiceUseRule.Builder<HttpClientBuilderFactory>(HttpClientBuilderFactory.class, bcr).build();
+	@InjectService
+	ServiceAware<HttpServiceRuntime> hsrSA;
 
 	public String getHttpEndpoint() {
-		String[] endpoints = (String[])hsrr.getServiceReference().getProperty("osgi.http.endpoint");
+		String[] endpoints = (String[])hsrSA.getServiceReference().getProperty("osgi.http.endpoint");
 
 		if (endpoints == null || endpoints.length == 0) {
-			String port = (String)hsrr.getServiceReference().getProperty("org.osgi.service.http.port");
+			String port = (String)hsrSA.getServiceReference().getProperty("org.osgi.service.http.port");
 			return "http://localhost:" + port;
 		}
 
 		return endpoints[0];
 	}
 
-	public String read(HttpEntity entity) throws Exception {
-		if (entity == null) {
-			return null;
-		}
-
-		try (InputStream in = entity.getContent();
-			java.util.Scanner s = new java.util.Scanner(in)) {
-
-			s.useDelimiter("\\A");
-			return s.hasNext() ? s.next() : "";
-		}
-	}
-
 	public ServletDTO waitFor(String path) throws InterruptedException {
 		return waitFor(path, 20);
 	}
 
 	public ServletDTO waitFor(String path, int intervals) throws InterruptedException {
 		for (int j = intervals; j > 0; j--) {
-			for (ServletContextDTO scDTO : hsrr.getService().getRuntimeDTO().servletContextDTOs) {
+			for (ServletContextDTO scDTO : hsrSA.getService().getRuntimeDTO().servletContextDTOs) {
 				if (scDTO.name.equals(HttpWhiteboardConstants.HTTP_WHITEBOARD_DEFAULT_CONTEXT_NAME)) {
 					for (ServletDTO sDTO : scDTO.servletDTOs) {
 						if (Arrays.asList(sDTO.patterns).contains(path)) {
diff --git a/cdi-extension-mp-jwt-auth/src/test/java/org/apache/aries/cdi/extension/mp/jwt/test/JaxRsAsyncTest.java b/cdi-extension-mp-jwt-auth/src/test/java/org/apache/aries/cdi/extension/mp/jwt/test/JaxRsAsyncTest.java
index 24ffe7f..81eaf91 100644
--- a/cdi-extension-mp-jwt-auth/src/test/java/org/apache/aries/cdi/extension/mp/jwt/test/JaxRsAsyncTest.java
+++ b/cdi-extension-mp-jwt-auth/src/test/java/org/apache/aries/cdi/extension/mp/jwt/test/JaxRsAsyncTest.java
@@ -29,25 +29,22 @@ import javax.ws.rs.client.ClientBuilder;
 import javax.ws.rs.ext.MessageBodyReader;
 
 import org.eclipse.microprofile.jwt.tck.util.TokenUtils;
-import org.junit.Rule;
 import org.junit.Test;
-import org.osgi.test.junit4.service.ServiceUseRule;
+import org.osgi.test.common.annotation.InjectService;
 
 // NOTE: reuses tck resources and token generation
 public class JaxRsAsyncTest extends MpJwtAuthTests {
-	@Rule
+
+	@InjectService
+	ClientBuilder cb;
+
+	@InjectService(filter = "(%s=%s)", filterArguments = {JAX_RS_MEDIA_TYPE, APPLICATION_JSON})
 	@SuppressWarnings("rawtypes")
-	public ServiceUseRule<MessageBodyReader> mbr = new ServiceUseRule.Builder<>(MessageBodyReader.class) //
-		.filter("(%s=%s)", JAX_RS_MEDIA_TYPE, APPLICATION_JSON)
-		.build();
-	@Rule
-	public ServiceUseRule<ClientBuilder> cbr = new ServiceUseRule.Builder<>(ClientBuilder.class) //
-		.build();
+	MessageBodyReader mbr;
 
 	@Test
 	public void runAsync() throws Exception {
-		final ClientBuilder cb = cbr.getService();
-		cb.register(mbr.getService());
+		cb.register(mbr);
 		cb.connectTimeout(1000, TimeUnit.SECONDS);
 		cb.readTimeout(1000, TimeUnit.SECONDS);
 
diff --git a/cdi-extension-mp-jwt-auth/src/test/java/org/apache/aries/cdi/extension/mp/jwt/test/JaxrsBaseTestCase.java b/cdi-extension-mp-jwt-auth/src/test/java/org/apache/aries/cdi/extension/mp/jwt/test/JaxrsBaseTestCase.java
index 1f1f9c1..5e4c674 100644
--- a/cdi-extension-mp-jwt-auth/src/test/java/org/apache/aries/cdi/extension/mp/jwt/test/JaxrsBaseTestCase.java
+++ b/cdi-extension-mp-jwt-auth/src/test/java/org/apache/aries/cdi/extension/mp/jwt/test/JaxrsBaseTestCase.java
@@ -18,20 +18,22 @@ import java.util.Collection;
 
 import javax.ws.rs.client.ClientBuilder;
 
-import org.junit.Rule;
 import org.osgi.service.jaxrs.runtime.JaxrsServiceRuntime;
 import org.osgi.service.jaxrs.runtime.JaxrsServiceRuntimeConstants;
-import org.osgi.test.junit4.service.ServiceUseRule;
+import org.osgi.test.common.annotation.InjectService;
+import org.osgi.test.common.service.ServiceAware;
 
 public abstract class JaxrsBaseTestCase extends HttpBaseTestCase {
 
-	@Rule
-	public ServiceUseRule<JaxrsServiceRuntime> jsrr = new ServiceUseRule.Builder<JaxrsServiceRuntime>(JaxrsServiceRuntime.class, bcr).build();
-	@Rule
-	public ServiceUseRule<ClientBuilder> cbr = new ServiceUseRule.Builder<ClientBuilder>(ClientBuilder.class, bcr).build();
+	@InjectService
+	ServiceAware<ClientBuilder> cbSA;
+	@InjectService
+	JaxrsServiceRuntime jsr;
+	@InjectService
+	ServiceAware<JaxrsServiceRuntime> jsrSA;
 
 	public String getJaxrsEndpoint() {
-		Object endpointsObj = jsrr.getServiceReference().getProperty(
+		Object endpointsObj = jsrSA.getServiceReference().getProperty(
 			JaxrsServiceRuntimeConstants.JAX_RS_SERVICE_ENDPOINT);
 
 		if (endpointsObj instanceof String) {
diff --git a/cdi-extension-mp-jwt-auth/src/test/java/org/apache/aries/cdi/extension/mp/jwt/test/MpJwtAuthTests.java b/cdi-extension-mp-jwt-auth/src/test/java/org/apache/aries/cdi/extension/mp/jwt/test/MpJwtAuthTests.java
index 5bb9094..7a8f98b 100644
--- a/cdi-extension-mp-jwt-auth/src/test/java/org/apache/aries/cdi/extension/mp/jwt/test/MpJwtAuthTests.java
+++ b/cdi-extension-mp-jwt-auth/src/test/java/org/apache/aries/cdi/extension/mp/jwt/test/MpJwtAuthTests.java
@@ -23,11 +23,11 @@ public class MpJwtAuthTests extends JaxrsBaseTestCase {
 
 	@Before
 	public void setUp() throws Exception {
-		bcr.installBundle("tb01.jar");
+		installBundle.installBundle("tb01.jar");
 
 		int count = 100;
 		RuntimeDTO runtimeDTO;
-		while ((runtimeDTO = jsrr.getService().getRuntimeDTO()).defaultApplication.resourceDTOs.length < 3 && (count > 0)) {
+		while ((runtimeDTO = jsr.getRuntimeDTO()).defaultApplication.resourceDTOs.length < 3 && (count > 0)) {
 			count--;
 			Thread.sleep(100);
 		}
diff --git a/cdi-extension-mp-jwt-auth/src/test/java/org/apache/aries/cdi/extension/mp/jwt/test/PreProvidedTokenTest.java b/cdi-extension-mp-jwt-auth/src/test/java/org/apache/aries/cdi/extension/mp/jwt/test/PreProvidedTokenTest.java
index 3fbf61d..d4a28bf 100644
--- a/cdi-extension-mp-jwt-auth/src/test/java/org/apache/aries/cdi/extension/mp/jwt/test/PreProvidedTokenTest.java
+++ b/cdi-extension-mp-jwt-auth/src/test/java/org/apache/aries/cdi/extension/mp/jwt/test/PreProvidedTokenTest.java
@@ -25,14 +25,16 @@ import javax.ws.rs.client.Client;
 import javax.ws.rs.client.ClientBuilder;
 
 import org.junit.Test;
-import org.osgi.framework.ServiceObjects;
+import org.osgi.test.common.annotation.InjectService;
 
 // NOTE: reuses tck resources and token generation
 public class PreProvidedTokenTest extends MpJwtAuthTests {
+
+	@InjectService
+	ClientBuilder cb;
+
 	@Test
 	public void runAsync() {
-		ServiceObjects<ClientBuilder> cbSO = bcr.getBundleContext().getServiceObjects(cbr.getServiceReference());
-		final ClientBuilder cb = cbSO.getService();
 		cb.connectTimeout(100, TimeUnit.SECONDS);
 		cb.readTimeout(100, TimeUnit.SECONDS);
 
@@ -48,7 +50,7 @@ public class PreProvidedTokenTest extends MpJwtAuthTests {
 			assertEquals("run-as", value);
 		} finally {
 			client.close();
-			cbSO.ungetService(cb);
 		}
 	}
+
 }
diff --git a/cdi-extension-mp-jwt-auth/weld-itest.bndrun b/cdi-extension-mp-jwt-auth/weld-itest.bndrun
index 40b70b3..15f7dbd 100644
--- a/cdi-extension-mp-jwt-auth/weld-itest.bndrun
+++ b/cdi-extension-mp-jwt-auth/weld-itest.bndrun
@@ -25,8 +25,8 @@
 	org.apache.aries.cdi.extender;version='[1.1.2,1.1.3)',\
 	org.apache.aries.cdi.extension.jaxrs;version='[1.1.2,1.1.3)',\
 	org.apache.aries.cdi.extension.mp-config;version='[1.1.2,1.1.3)',\
-	org.apache.aries.cdi.extension.mp-jwt-auth;version='[1.1.2,1.1.3)',\
 	org.apache.aries.cdi.extension.mp-jwt-auth-tests;version='[1.1.2,1.1.3)',\
+	org.apache.aries.cdi.extension.mp-jwt-auth;version='[1.1.2,1.1.3)',\
 	org.apache.aries.cdi.extension.servlet.common;version='[1.1.2,1.1.3)',\
 	org.apache.aries.cdi.extension.servlet.weld;version='[1.1.2,1.1.3)',\
 	org.apache.aries.cdi.extension.spi;version='[1.1.2,1.1.3)',\
@@ -36,7 +36,6 @@
 	org.apache.aries.jax.rs.whiteboard;version='[1.0.7,1.0.8)',\
 	org.apache.aries.spifly.dynamic.framework.extension;version='[1.2.4,1.2.5)',\
 	org.apache.commons.io;version='[2.6.0,2.6.1)',\
-	org.apache.commons.logging;version='[1.2.0,1.2.1)',\
 	org.apache.felix.configadmin;version='[1.9.10,1.9.11)',\
 	org.apache.felix.converter;version='[1.0.12,1.0.13)',\
 	org.apache.felix.gogo.command;version='[1.1.0,1.1.1)',\
@@ -52,8 +51,6 @@
 	org.apache.geronimo.specs.geronimo-jcdi_2.0_spec;version='[1.1.0,1.1.1)',\
 	org.apache.geronimo.specs.geronimo-json_1.1_spec;version='[1.3.0,1.3.1)',\
 	org.apache.geronimo.specs.geronimo-jsonb_1.0_spec;version='[1.2.0,1.2.1)',\
-	org.apache.httpcomponents.httpclient;version='[4.5.3,4.5.4)',\
-	org.apache.httpcomponents.httpcore;version='[4.4.6,4.4.7)',\
 	org.apache.johnzon.core;version='[1.2.3,1.2.4)',\
 	org.apache.johnzon.jsonb;version='[1.2.3,1.2.4)',\
 	org.apache.johnzon.mapper;version='[1.2.3,1.2.4)',\
@@ -64,7 +61,7 @@
 	org.jboss.weld.osgi-bundle;version='[3.1.3,3.1.4)',\
 	org.osgi.service.cdi;version='[1.0.0,1.0.1)',\
 	org.osgi.service.jaxrs;version='[1.0.0,1.0.1)',\
-	org.osgi.test.common;version='[1.0.0,1.0.1)',\
-	org.osgi.test.junit4;version='[1.0.0,1.0.1)',\
+	org.osgi.test.common;version='[0.9.0,0.9.1)',\
+	org.osgi.test.junit4;version='[0.9.0,0.9.1)',\
 	org.osgi.util.function;version='[1.1.0,1.1.1)',\
-	org.osgi.util.promise;version='[1.1.0,1.1.1)'
\ No newline at end of file
+	org.osgi.util.promise;version='[1.1.0,1.1.1)'
diff --git a/cdi-extension-mp-metrics/owb-itest.bndrun b/cdi-extension-mp-metrics/owb-itest.bndrun
index f13a376..877668d 100644
--- a/cdi-extension-mp-metrics/owb-itest.bndrun
+++ b/cdi-extension-mp-metrics/owb-itest.bndrun
@@ -23,15 +23,14 @@
 	openwebbeans-impl;version='[2.0.13,2.0.14)',\
 	openwebbeans-spi;version='[2.0.13,2.0.14)',\
 	org.apache.aries.cdi.extender;version='[1.1.2,1.1.3)',\
-	org.apache.aries.cdi.extension.mp-metrics;version='[1.1.2,1.1.3)',\
 	org.apache.aries.cdi.extension.mp-metrics-tests;version='[1.1.2,1.1.3)',\
+	org.apache.aries.cdi.extension.mp-metrics;version='[1.1.2,1.1.3)',\
 	org.apache.aries.cdi.extension.spi;version='[1.1.2,1.1.3)',\
 	org.apache.aries.cdi.extra;version='[1.1.2,1.1.3)',\
 	org.apache.aries.cdi.owb;version='[1.1.2,1.1.3)',\
 	org.apache.aries.cdi.spi;version='[1.1.2,1.1.3)',\
 	org.apache.aries.jax.rs.whiteboard;version='[1.0.7,1.0.8)',\
 	org.apache.aries.spifly.dynamic.framework.extension;version='[1.2.4,1.2.5)',\
-	org.apache.commons.logging;version='[1.2.0,1.2.1)',\
 	org.apache.felix.configadmin;version='[1.9.10,1.9.11)',\
 	org.apache.felix.converter;version='[1.0.12,1.0.13)',\
 	org.apache.felix.gogo.command;version='[1.1.0,1.1.1)',\
@@ -47,8 +46,6 @@
 	org.apache.geronimo.specs.geronimo-jcdi_2.0_spec;version='[1.1.0,1.1.1)',\
 	org.apache.geronimo.specs.geronimo-json_1.1_spec;version='[1.3.0,1.3.1)',\
 	org.apache.geronimo.specs.geronimo-jsonb_1.0_spec;version='[1.2.0,1.2.1)',\
-	org.apache.httpcomponents.httpclient;version='[4.5.3,4.5.4)',\
-	org.apache.httpcomponents.httpcore;version='[4.4.6,4.4.7)',\
 	org.apache.johnzon.core;version='[1.2.3,1.2.4)',\
 	org.apache.johnzon.jsonb;version='[1.2.3,1.2.4)',\
 	org.apache.johnzon.mapper;version='[1.2.3,1.2.4)',\
@@ -59,7 +56,7 @@
 	org.apache.xbean.finder-shaded;version='[4.13.0,4.13.1)',\
 	org.osgi.service.cdi;version='[1.0.0,1.0.1)',\
 	org.osgi.service.jaxrs;version='[1.0.0,1.0.1)',\
-	org.osgi.test.common;version='[1.0.0,1.0.1)',\
-	org.osgi.test.junit4;version='[1.0.0,1.0.1)',\
+	org.osgi.test.common;version='[0.9.0,0.9.1)',\
+	org.osgi.test.junit4;version='[0.9.0,0.9.1)',\
 	org.osgi.util.function;version='[1.1.0,1.1.1)',\
-	org.osgi.util.promise;version='[1.1.0,1.1.1)'
\ No newline at end of file
+	org.osgi.util.promise;version='[1.1.0,1.1.1)'
diff --git a/cdi-extension-mp-metrics/pom.xml b/cdi-extension-mp-metrics/pom.xml
index ebc3ce8..807847b 100644
--- a/cdi-extension-mp-metrics/pom.xml
+++ b/cdi-extension-mp-metrics/pom.xml
@@ -240,26 +240,10 @@
 				<dependency>
 					<groupId>org.osgi</groupId>
 					<artifactId>org.osgi.test.assertj</artifactId>
-					<version>1.0.0-SNAPSHOT</version>
-					<scope>test</scope>
 				</dependency>
 				<dependency>
 					<groupId>org.osgi</groupId>
 					<artifactId>org.osgi.test.junit4</artifactId>
-					<version>1.0.0-SNAPSHOT</version>
-					<scope>test</scope>
-				</dependency>
-				<dependency>
-					<groupId>org.apache.httpcomponents</groupId>
-					<artifactId>httpclient-osgi</artifactId>
-					<version>4.5.3</version>
-					<scope>test</scope>
-				</dependency>
-				<dependency>
-					<groupId>org.apache.httpcomponents</groupId>
-					<artifactId>httpcore-osgi</artifactId>
-					<version>4.4.6</version>
-					<scope>test</scope>
 				</dependency>
 			</dependencies>
 
diff --git a/cdi-extension-mp-metrics/src/test/java/org/apache/aries/cdi/extension/mp/metrics/test/BaseTestCase.java b/cdi-extension-mp-metrics/src/test/java/org/apache/aries/cdi/extension/mp/metrics/test/BaseTestCase.java
index b4a9161..47ccf3d 100644
--- a/cdi-extension-mp-metrics/src/test/java/org/apache/aries/cdi/extension/mp/metrics/test/BaseTestCase.java
+++ b/cdi-extension-mp-metrics/src/test/java/org/apache/aries/cdi/extension/mp/metrics/test/BaseTestCase.java
@@ -26,8 +26,12 @@ import org.osgi.framework.BundleContext;
 import org.osgi.framework.Filter;
 import org.osgi.framework.ServiceReference;
 import org.osgi.service.cdi.runtime.CDIComponentRuntime;
+import org.osgi.test.common.annotation.InjectBundleContext;
+import org.osgi.test.common.annotation.InjectInstallBundle;
+import org.osgi.test.common.annotation.InjectService;
+import org.osgi.test.common.install.InstallBundle;
 import org.osgi.test.junit4.context.BundleContextRule;
-import org.osgi.test.junit4.service.ServiceUseRule;
+import org.osgi.test.junit4.service.ServiceRule;
 import org.osgi.util.tracker.ServiceTracker;
 import org.osgi.util.tracker.ServiceTrackerCustomizer;
 
@@ -38,7 +42,14 @@ public abstract class BaseTestCase {
 	@Rule
 	public BundleContextRule bcr = new BundleContextRule();
 	@Rule
-	public ServiceUseRule<CDIComponentRuntime> ccrr = new ServiceUseRule.Builder<CDIComponentRuntime>(CDIComponentRuntime.class, bcr).build();
+	public ServiceRule sr = new ServiceRule();
+
+	@InjectBundleContext
+	BundleContext bundleContext;
+	@InjectInstallBundle
+	InstallBundle installBundle;
+	@InjectService
+	CDIComponentRuntime ccrr;
 
 	@Rule
 	public TestWatcher watchman= new TestWatcher() {
@@ -54,19 +65,19 @@ public abstract class BaseTestCase {
 	};
 
 	public <S,T> CloseableTracker<S, T> track(Class<S> typeToTrack) {
-		CloseableTracker<S, T> tracker = new CloseableTracker<>(bcr.getBundleContext(), typeToTrack);
+		CloseableTracker<S, T> tracker = new CloseableTracker<>(bundleContext, typeToTrack);
 		tracker.open();
 		return tracker;
 	}
 
 	public <S,T> CloseableTracker<S, T> track(Class<S> typeToTrack, String pattern, Object... objects) {
-		CloseableTracker<S, T> tracker = new CloseableTracker<>(bcr.getBundleContext(), format("(&(objectClass=%s)%s)", typeToTrack.getName(), format(pattern, objects)));
+		CloseableTracker<S, T> tracker = new CloseableTracker<>(bundleContext, format("(&(objectClass=%s)%s)", typeToTrack.getName(), format(pattern, objects)));
 		tracker.open();
 		return tracker;
 	}
 
 	public <S,T> CloseableTracker<S, T> track(Filter filter) {
-		CloseableTracker<S, T> tracker = new CloseableTracker<>(bcr.getBundleContext(), filter);
+		CloseableTracker<S, T> tracker = new CloseableTracker<>(bundleContext, filter);
 		tracker.open();
 		return tracker;
 	}
@@ -80,7 +91,7 @@ public abstract class BaseTestCase {
 	}
 
 	public <S> CloseableTracker<S, ServiceReference<S>> trackSR(Filter filter) {
-		CloseableTracker<S, ServiceReference<S>> tracker = new CloseableTracker<>(bcr.getBundleContext(), filter, new ServiceTrackerCustomizer<S, ServiceReference<S>>() {
+		CloseableTracker<S, ServiceReference<S>> tracker = new CloseableTracker<>(bundleContext, filter, new ServiceTrackerCustomizer<S, ServiceReference<S>>() {
 
 			@Override
 			public ServiceReference<S> addingService(ServiceReference<S> reference) {
@@ -142,4 +153,5 @@ public abstract class BaseTestCase {
 		}
 
 	}
+
 }
diff --git a/cdi-extension-mp-metrics/src/test/java/org/apache/aries/cdi/extension/mp/metrics/test/HttpBaseTestCase.java b/cdi-extension-mp-metrics/src/test/java/org/apache/aries/cdi/extension/mp/metrics/test/HttpBaseTestCase.java
index 9bec5f6..2ef9d1c 100644
--- a/cdi-extension-mp-metrics/src/test/java/org/apache/aries/cdi/extension/mp/metrics/test/HttpBaseTestCase.java
+++ b/cdi-extension-mp-metrics/src/test/java/org/apache/aries/cdi/extension/mp/metrics/test/HttpBaseTestCase.java
@@ -16,56 +16,37 @@ package org.apache.aries.cdi.extension.mp.metrics.test;
 
 import static org.junit.Assert.assertTrue;
 
-import java.io.InputStream;
-
-import org.apache.http.HttpEntity;
-import org.apache.http.osgi.services.HttpClientBuilderFactory;
 import org.assertj.core.util.Arrays;
-import org.junit.Rule;
 import org.osgi.service.http.runtime.HttpServiceRuntime;
 import org.osgi.service.http.runtime.dto.ServletContextDTO;
 import org.osgi.service.http.runtime.dto.ServletDTO;
 import org.osgi.service.http.whiteboard.HttpWhiteboardConstants;
-import org.osgi.test.junit4.service.ServiceUseRule;
+import org.osgi.test.common.annotation.InjectService;
+import org.osgi.test.common.service.ServiceAware;
 
 public abstract class HttpBaseTestCase extends BaseTestCase {
 
-	@Rule
-	public ServiceUseRule<HttpServiceRuntime> hsrr = new ServiceUseRule.Builder<HttpServiceRuntime>(HttpServiceRuntime.class, bcr).build();
-	@Rule
-	public ServiceUseRule<HttpClientBuilderFactory> hcbfr = new ServiceUseRule.Builder<HttpClientBuilderFactory>(HttpClientBuilderFactory.class, bcr).build();
+	@InjectService
+	ServiceAware<HttpServiceRuntime> hsrSA;
 
 	public String getHttpEndpoint() {
-		String[] endpoints = (String[])hsrr.getServiceReference().getProperty("osgi.http.endpoint");
+		String[] endpoints = (String[])hsrSA.getServiceReference().getProperty("osgi.http.endpoint");
 
 		if (endpoints == null || endpoints.length == 0) {
-			String port = (String)hsrr.getServiceReference().getProperty("org.osgi.service.http.port");
+			String port = (String)hsrSA.getServiceReference().getProperty("org.osgi.service.http.port");
 			return "http://localhost:" + port;
 		}
 
 		return endpoints[0];
 	}
 
-	public String read(HttpEntity entity) throws Exception {
-		if (entity == null) {
-			return null;
-		}
-
-		try (InputStream in = entity.getContent();
-			java.util.Scanner s = new java.util.Scanner(in)) {
-
-			s.useDelimiter("\\A");
-			return s.hasNext() ? s.next() : "";
-		}
-	}
-
 	public ServletDTO waitFor(String path) throws InterruptedException {
 		return waitFor(path, 20);
 	}
 
 	public ServletDTO waitFor(String path, int intervals) throws InterruptedException {
 		for (int j = intervals; j > 0; j--) {
-			for (ServletContextDTO scDTO : hsrr.getService().getRuntimeDTO().servletContextDTOs) {
+			for (ServletContextDTO scDTO : hsrSA.getService().getRuntimeDTO().servletContextDTOs) {
 				if (scDTO.name.equals(HttpWhiteboardConstants.HTTP_WHITEBOARD_DEFAULT_CONTEXT_NAME)) {
 					for (ServletDTO sDTO : scDTO.servletDTOs) {
 						if (Arrays.asList(sDTO.patterns).contains(path)) {
diff --git a/cdi-extension-mp-metrics/src/test/java/org/apache/aries/cdi/extension/mp/metrics/test/JaxrsBaseTestCase.java b/cdi-extension-mp-metrics/src/test/java/org/apache/aries/cdi/extension/mp/metrics/test/JaxrsBaseTestCase.java
index b1ea0f9..021c11e 100644
--- a/cdi-extension-mp-metrics/src/test/java/org/apache/aries/cdi/extension/mp/metrics/test/JaxrsBaseTestCase.java
+++ b/cdi-extension-mp-metrics/src/test/java/org/apache/aries/cdi/extension/mp/metrics/test/JaxrsBaseTestCase.java
@@ -16,22 +16,20 @@ package org.apache.aries.cdi.extension.mp.metrics.test;
 
 import java.util.Collection;
 
-import javax.ws.rs.client.ClientBuilder;
-
-import org.junit.Rule;
 import org.osgi.service.jaxrs.runtime.JaxrsServiceRuntime;
 import org.osgi.service.jaxrs.runtime.JaxrsServiceRuntimeConstants;
-import org.osgi.test.junit4.service.ServiceUseRule;
+import org.osgi.test.common.annotation.InjectService;
+import org.osgi.test.common.service.ServiceAware;
 
 public abstract class JaxrsBaseTestCase extends HttpBaseTestCase {
 
-	@Rule
-	public ServiceUseRule<JaxrsServiceRuntime> jsrr = new ServiceUseRule.Builder<JaxrsServiceRuntime>(JaxrsServiceRuntime.class, bcr).build();
-	@Rule
-	public ServiceUseRule<ClientBuilder> cbr = new ServiceUseRule.Builder<ClientBuilder>(ClientBuilder.class, bcr).build();
+	@InjectService
+	JaxrsServiceRuntime jsr;
+	@InjectService
+	ServiceAware<JaxrsServiceRuntime> jsrSA;
 
 	public String getJaxrsEndpoint() {
-		Object endpointsObj = jsrr.getServiceReference().getProperty(
+		Object endpointsObj = jsrSA.getServiceReference().getProperty(
 			JaxrsServiceRuntimeConstants.JAX_RS_SERVICE_ENDPOINT);
 
 		if (endpointsObj instanceof String) {
diff --git a/cdi-extension-mp-metrics/src/test/java/org/apache/aries/cdi/extension/mp/metrics/test/MpMetricsTests.java b/cdi-extension-mp-metrics/src/test/java/org/apache/aries/cdi/extension/mp/metrics/test/MpMetricsTests.java
index d7b8751..fd0776e 100644
--- a/cdi-extension-mp-metrics/src/test/java/org/apache/aries/cdi/extension/mp/metrics/test/MpMetricsTests.java
+++ b/cdi-extension-mp-metrics/src/test/java/org/apache/aries/cdi/extension/mp/metrics/test/MpMetricsTests.java
@@ -29,22 +29,24 @@ import javax.ws.rs.ext.MessageBodyReader;
 
 import org.apache.aries.cdi.extension.mp.metrics.test.interfaces.Pojo;
 import org.assertj.core.api.Assertions;
-import org.junit.Rule;
 import org.junit.Test;
 import org.osgi.framework.Bundle;
-import org.osgi.test.junit4.service.ServiceUseRule;
+import org.osgi.test.common.annotation.InjectService;
 
 public class MpMetricsTests extends JaxrsBaseTestCase {
 
-	@Rule
+	@InjectService
+	ClientBuilder cb;
+
+	@InjectService(filter = "(%s=%s)", filterArguments = {JAX_RS_MEDIA_TYPE, APPLICATION_JSON})
 	@SuppressWarnings("rawtypes")
-	public ServiceUseRule<MessageBodyReader> mbr = new ServiceUseRule.Builder<>(MessageBodyReader.class) //
-		.filter("(%s=%s)", JAX_RS_MEDIA_TYPE, APPLICATION_JSON)
-		.build();
+	MessageBodyReader mbr;
 
 	@Test
 	public void testMetrics() throws Exception {
-		Bundle bundle = bcr.installBundle("tb01.jar");
+		Bundle bundle = installBundle.installBundle("tb01.jar");
+
+		cb.register(mbr);
 
 		try (CloseableTracker<BeanManager, BeanManager> bmt = track(BeanManager.class, "(service.bundleid=%d)", bundle.getBundleId())) {
 			assertThat(bmt.waitForService(timeout)).isNotNull();
@@ -53,9 +55,6 @@ public class MpMetricsTests extends JaxrsBaseTestCase {
 				Pojo pojo = tracker.waitForService(timeout);
 				assertNotNull(pojo);
 
-				final ClientBuilder cb = cbr.getService();
-				cb.register(mbr.getService());
-
 				WebTarget webTarget = cb.build().target(getJaxrsEndpoint()).path("/metrics/application");
 
 				Response response = webTarget.request(APPLICATION_JSON_TYPE).get();
diff --git a/cdi-extension-mp-metrics/weld-itest.bndrun b/cdi-extension-mp-metrics/weld-itest.bndrun
index 282d695..504da07 100644
--- a/cdi-extension-mp-metrics/weld-itest.bndrun
+++ b/cdi-extension-mp-metrics/weld-itest.bndrun
@@ -23,15 +23,14 @@
 	assertj-core;version='[3.15.0,3.15.1)',\
 	jboss-classfilewriter;version='[1.2.4,1.2.5)',\
 	org.apache.aries.cdi.extender;version='[1.1.2,1.1.3)',\
-	org.apache.aries.cdi.extension.mp-metrics;version='[1.1.2,1.1.3)',\
 	org.apache.aries.cdi.extension.mp-metrics-tests;version='[1.1.2,1.1.3)',\
+	org.apache.aries.cdi.extension.mp-metrics;version='[1.1.2,1.1.3)',\
 	org.apache.aries.cdi.extension.spi;version='[1.1.2,1.1.3)',\
 	org.apache.aries.cdi.extra;version='[1.1.2,1.1.3)',\
 	org.apache.aries.cdi.spi;version='[1.1.2,1.1.3)',\
 	org.apache.aries.cdi.weld;version='[1.1.2,1.1.3)',\
 	org.apache.aries.jax.rs.whiteboard;version='[1.0.7,1.0.8)',\
 	org.apache.aries.spifly.dynamic.framework.extension;version='[1.2.4,1.2.5)',\
-	org.apache.commons.logging;version='[1.2.0,1.2.1)',\
 	org.apache.felix.configadmin;version='[1.9.10,1.9.11)',\
 	org.apache.felix.converter;version='[1.0.12,1.0.13)',\
 	org.apache.felix.gogo.command;version='[1.1.0,1.1.1)',\
@@ -47,8 +46,6 @@
 	org.apache.geronimo.specs.geronimo-jcdi_2.0_spec;version='[1.1.0,1.1.1)',\
 	org.apache.geronimo.specs.geronimo-json_1.1_spec;version='[1.3.0,1.3.1)',\
 	org.apache.geronimo.specs.geronimo-jsonb_1.0_spec;version='[1.2.0,1.2.1)',\
-	org.apache.httpcomponents.httpclient;version='[4.5.3,4.5.4)',\
-	org.apache.httpcomponents.httpcore;version='[4.4.6,4.4.7)',\
 	org.apache.johnzon.core;version='[1.2.3,1.2.4)',\
 	org.apache.johnzon.jsonb;version='[1.2.3,1.2.4)',\
 	org.apache.johnzon.mapper;version='[1.2.3,1.2.4)',\
@@ -59,7 +56,7 @@
 	org.jboss.weld.osgi-bundle;version='[3.1.3,3.1.4)',\
 	org.osgi.service.cdi;version='[1.0.0,1.0.1)',\
 	org.osgi.service.jaxrs;version='[1.0.0,1.0.1)',\
-	org.osgi.test.common;version='[1.0.0,1.0.1)',\
-	org.osgi.test.junit4;version='[1.0.0,1.0.1)',\
+	org.osgi.test.common;version='[0.9.0,0.9.1)',\
+	org.osgi.test.junit4;version='[0.9.0,0.9.1)',\
 	org.osgi.util.function;version='[1.1.0,1.1.1)',\
 	org.osgi.util.promise;version='[1.1.0,1.1.1)'
\ No newline at end of file
diff --git a/cdi-itests/owb-itest.bndrun b/cdi-itests/owb-itest.bndrun
index 05626cd..9d9f8ce 100644
--- a/cdi-itests/owb-itest.bndrun
+++ b/cdi-itests/owb-itest.bndrun
@@ -19,7 +19,7 @@
 -runblacklist: \
 	osgi.identity;filter:='(osgi.identity=*weld*)'
 -runbundles: \
-	biz.aQute.junit;version='[5.0.1,5.0.2)',\
+	assertj-core;version='[3.15.0,3.15.1)',\
 	javax.servlet.jsp-api;version='[2.3.3,2.3.4)',\
 	openwebbeans-impl;version='[2.0.13,2.0.14)',\
 	openwebbeans-spi;version='[2.0.13,2.0.14)',\
@@ -55,12 +55,13 @@
 	org.apache.geronimo.specs.geronimo-jcdi_2.0_spec;version='[1.1.0,1.1.1)',\
 	org.apache.httpcomponents.httpclient;version='[4.5.3,4.5.4)',\
 	org.apache.httpcomponents.httpcore;version='[4.4.6,4.4.7)',\
+	org.apache.servicemix.bundles.junit;version='[4.12.0,4.12.1)',\
 	org.apache.xbean.asm7-shaded;version='[4.13.0,4.13.1)',\
 	org.apache.xbean.bundleutils;version='[4.15.0,4.15.1)',\
 	org.apache.xbean.finder-shaded;version='[4.13.0,4.13.1)',\
 	org.osgi.service.cdi;version='[1.0.0,1.0.1)',\
 	org.osgi.service.jaxrs;version='[1.0.0,1.0.1)',\
-	org.osgi.test.common;version='[1.0.0,1.0.1)',\
-	org.osgi.test.junit4;version='[1.0.0,1.0.1)',\
+	org.osgi.test.common;version='[0.9.0,0.9.1)',\
+	org.osgi.test.junit4;version='[0.9.0,0.9.1)',\
 	org.osgi.util.function;version='[1.1.0,1.1.1)',\
-	org.osgi.util.promise;version='[1.1.0,1.1.1)'
\ No newline at end of file
+	org.osgi.util.promise;version='[1.1.0,1.1.1)'
diff --git a/cdi-itests/pom.xml b/cdi-itests/pom.xml
index 144e6f1..2e65ed3 100644
--- a/cdi-itests/pom.xml
+++ b/cdi-itests/pom.xml
@@ -147,8 +147,13 @@
 		</dependency>
 		<dependency>
 			<groupId>org.osgi</groupId>
+			<artifactId>org.osgi.test.assertj</artifactId>
+			<scope>compile</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.osgi</groupId>
 			<artifactId>org.osgi.test.junit4</artifactId>
-			<version>1.0.0-SNAPSHOT</version>
+			<scope>compile</scope>
 		</dependency>
 
 		<!-- RUNTIME dependencies not found in BOMs -->
diff --git a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/BeanPropertyTypeTest.java b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/BeanPropertyTypeTest.java
index abdb7cf..69059d4 100644
--- a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/BeanPropertyTypeTest.java
+++ b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/BeanPropertyTypeTest.java
@@ -31,7 +31,7 @@ public class BeanPropertyTypeTest extends SlimBaseTestCase {
 
 	@Test
 	public void beanPropertyAnnotationsWereUsed() throws Exception {
-		Bundle tbBundle = bcr.installBundle("tb13.jar");
+		Bundle tbBundle = installBundle.installBundle("tb13.jar");
 
 		getBeanManager(tbBundle);
 
diff --git a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/CdiBeanTests.java b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/CdiBeanTests.java
index 4cebbda..cd716d4 100644
--- a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/CdiBeanTests.java
+++ b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/CdiBeanTests.java
@@ -123,7 +123,7 @@ public class CdiBeanTests extends BaseTestCase {
 			assertNotNull(beanService);
 			assertEquals("PREFIXMETHOD", beanService.doSomething());
 
-			ContainerDTO containerDTO = getContainerDTO(ccrr.getService(), cdiBundle);
+			ContainerDTO containerDTO = getContainerDTO(cdiBundle);
 			assertNotNull(containerDTO);
 
 			ComponentDTO containerComponentDTO = containerDTO.components.stream().filter(
diff --git a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/CdiContainerTests.java b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/CdiContainerTests.java
index c417df1..c00dc31 100644
--- a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/CdiContainerTests.java
+++ b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/CdiContainerTests.java
@@ -55,11 +55,11 @@ public class CdiContainerTests extends BaseTestCase {
 
 	@Test
 	public void testContainerComponentSingleton() throws Exception {
-		while (getContainerDTO(ccrr.getService(), cdiBundle).components.isEmpty()) {
+		while (getContainerDTO(cdiBundle).components.isEmpty()) {
 			Thread.sleep(10);
 		}
 
-		ContainerDTO containerDTO = getContainerDTO(ccrr.getService(), cdiBundle);
+		ContainerDTO containerDTO = getContainerDTO(cdiBundle);
 		assertNotNull(containerDTO);
 
 		ComponentDTO containerComponentDTO = containerDTO.components.stream()
diff --git a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/ConfigurationTests.java b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/ConfigurationTests.java
index 2a0e621..ffa25dc 100644
--- a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/ConfigurationTests.java
+++ b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/ConfigurationTests.java
@@ -43,7 +43,7 @@ public class ConfigurationTests extends SlimBaseTestCase {
 	@Test
 	@SuppressWarnings({ "rawtypes", "unchecked" })
 	public void testConfiguration() throws Exception {
-		Bundle tb3Bundle = bcr.installBundle("tb3.jar");
+		Bundle tb3Bundle = installBundle.installBundle("tb3.jar");
 
 		Configuration configurationA = null, configurationB = null;
 
@@ -52,7 +52,7 @@ public class ConfigurationTests extends SlimBaseTestCase {
 			ComponentDTO configurationBeanA = null;
 
 			while (--attempts > 0) {
-				ContainerDTO containerDTO = getContainerDTO(ccrr.getService(), tb3Bundle);
+				ContainerDTO containerDTO = getContainerDTO(tb3Bundle);
 
 				configurationBeanA = containerDTO.components.stream().filter(
 					c -> c.template.name.equals("configurationBeanA")
@@ -74,7 +74,7 @@ public class ConfigurationTests extends SlimBaseTestCase {
 				)
 			);
 
-			configurationA = car.getService().getConfiguration("configurationBeanA", "?");
+			configurationA = car.getConfiguration("configurationBeanA", "?");
 
 			Dictionary<String, Object> p1 = new Hashtable<>();
 			p1.put("ports", new int[] {12, 4567});
@@ -86,7 +86,7 @@ public class ConfigurationTests extends SlimBaseTestCase {
 				)
 			);
 
-			configurationB = car.getService().getConfiguration("configurationBeanB", "?");
+			configurationB = car.getConfiguration("configurationBeanB", "?");
 
 			Dictionary<String, Object> p2 = new Hashtable<>();
 			p2.put("color", "green");
@@ -161,7 +161,7 @@ public class ConfigurationTests extends SlimBaseTestCase {
 	@Test
 	@SuppressWarnings({ "rawtypes", "unchecked" })
 	public void testOptionalConfiguration() throws Exception {
-		bcr.installBundle("tb5.jar");
+		installBundle.installBundle("tb5.jar");
 
 		Configuration configurationC = null;
 
@@ -173,7 +173,7 @@ public class ConfigurationTests extends SlimBaseTestCase {
 			assertArrayEquals(new int[] {35777}, beanService.get().call());
 		}
 
-		configurationC = car.getService().getConfiguration("foo.bar", "?");
+		configurationC = car.getConfiguration("foo.bar", "?");
 
 		Dictionary<String, Object> properties = new Hashtable<>();
 		properties.put("ports", new int[] {12, 4567});
diff --git a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/DisableComponentTests.java b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/DisableComponentTests.java
index 2790c29..63661fa 100644
--- a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/DisableComponentTests.java
+++ b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/DisableComponentTests.java
@@ -31,7 +31,7 @@ public class DisableComponentTests extends SlimBaseTestCase {
 
 	@Test
 	public void testDisableContainerComponent() throws Exception {
-		Bundle tb8Bundle = bcr.installBundle("tb8.jar");
+		Bundle tb8Bundle = installBundle.installBundle("tb8.jar");
 
 		try (CloseableTracker<Pojo, Pojo> tracker = track(
 				"(&(objectClass=%s)(objectClass=*.%s)(service.bundleid=%s))",
@@ -46,7 +46,7 @@ public class DisableComponentTests extends SlimBaseTestCase {
 			Configuration configurationA = null;
 
 			try {
-				configurationA = car.getService().getConfiguration("osgi.cdi.cdi.itests.tb8", "?");
+				configurationA = car.getConfiguration("osgi.cdi.cdi.itests.tb8", "?");
 
 				Dictionary<String, Object> p1 = new Hashtable<>();
 				p1.put("cdi-itests.tb8.enabled", false);
@@ -89,7 +89,7 @@ public class DisableComponentTests extends SlimBaseTestCase {
 
 	@Test
 	public void testDisableSingleComponent() throws Exception {
-		Bundle tb8Bundle = bcr.installBundle("tb8.jar");
+		Bundle tb8Bundle = installBundle.installBundle("tb8.jar");
 
 		try (CloseableTracker<Pojo, Pojo> tracker = track(
 			"(&(objectClass=%s)(objectClass=*.%s)(service.bundleid=%s))",
@@ -104,7 +104,7 @@ public class DisableComponentTests extends SlimBaseTestCase {
 			Configuration configurationA = null;
 
 			try {
-				configurationA = car.getService().getConfiguration("osgi.cdi.cdi.itests.tb8", "?");
+				configurationA = car.getConfiguration("osgi.cdi.cdi.itests.tb8", "?");
 
 				Dictionary<String, Object> p1 = new Hashtable<>();
 				p1.put("singleComponentBean.enabled", false);
diff --git a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/EventsTests.java b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/EventsTests.java
index e555536..7a3fe13 100644
--- a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/EventsTests.java
+++ b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/EventsTests.java
@@ -30,7 +30,7 @@ public class EventsTests extends SlimBaseTestCase {
 
 	@Test
 	public void testContainerComponentReferenceEventHandler() throws Exception {
-		Bundle tb = bcr.installBundle("tb9.jar");
+		Bundle tb = installBundle.installBundle("tb9.jar");
 
 		try (CloseableTracker<Pojo, Pojo> tracker = track("(objectClass=%s)", Pojo.class.getName())) {
 			Pojo pojo = tracker.waitForService(timeout);
@@ -38,14 +38,14 @@ public class EventsTests extends SlimBaseTestCase {
 			assertEquals(0, pojo.getCount());
 			assertEquals("[]", pojo.foo(null));
 
-			ContainerDTO containerDTO = getContainerDTO(ccrr.getService(), tb);
+			ContainerDTO containerDTO = getContainerDTO(tb);
 
 			long changeCount = containerDTO.changeCount;
 
 			ServiceRegistration<Integer> int1 = bcr.getBundleContext().registerService(Integer.class, new Integer(12), null);
 
 			try {
-				for (long i = 10; i > 0 && (getContainerDTO(ccrr.getService(), tb).changeCount == changeCount); i--) {
+				for (long i = 10; i > 0 && (getContainerDTO(tb).changeCount == changeCount); i--) {
 					Thread.sleep(20);
 				}
 
@@ -58,7 +58,7 @@ public class EventsTests extends SlimBaseTestCase {
 				properties.put("foo", "bar");
 				int1.setProperties(properties);
 
-				for (long i = 10; i > 0 && (getContainerDTO(ccrr.getService(), tb).changeCount == changeCount); i--) {
+				for (long i = 10; i > 0 && (getContainerDTO(tb).changeCount == changeCount); i--) {
 					Thread.sleep(20);
 				}
 
@@ -69,7 +69,7 @@ public class EventsTests extends SlimBaseTestCase {
 
 				int1.unregister();
 
-				for (long i = 10; i > 0 && (getContainerDTO(ccrr.getService(), tb).changeCount == changeCount); i--) {
+				for (long i = 10; i > 0 && (getContainerDTO(tb).changeCount == changeCount); i--) {
 					Thread.sleep(20);
 				}
 
@@ -81,7 +81,7 @@ public class EventsTests extends SlimBaseTestCase {
 
 	@Test
 	public void testSingleComponentReferenceEventHandler() throws Exception {
-		Bundle tb = bcr.installBundle("tb10.jar");
+		Bundle tb = installBundle.installBundle("tb10.jar");
 
 		try (CloseableTracker<Pojo, Pojo> tracker = track("(objectClass=%s)", Pojo.class.getName())) {
 			Pojo pojo = tracker.waitForService(timeout);
@@ -89,14 +89,14 @@ public class EventsTests extends SlimBaseTestCase {
 			assertEquals(0, pojo.getCount());
 			assertEquals("[]", pojo.foo(null));
 
-			ContainerDTO containerDTO = getContainerDTO(ccrr.getService(), tb);
+			ContainerDTO containerDTO = getContainerDTO(tb);
 
 			long changeCount = containerDTO.changeCount;
 
 			ServiceRegistration<Integer> int1 = bcr.getBundleContext().registerService(Integer.class, new Integer(12), null);
 
 			try {
-				for (long i = 10; i > 0 && (getContainerDTO(ccrr.getService(), tb).changeCount == changeCount); i--) {
+				for (long i = 10; i > 0 && (getContainerDTO(tb).changeCount == changeCount); i--) {
 					Thread.sleep(20);
 				}
 
@@ -109,7 +109,7 @@ public class EventsTests extends SlimBaseTestCase {
 				properties.put("foo", "bar");
 				int1.setProperties(properties);
 
-				for (long i = 10; i > 0 && (getContainerDTO(ccrr.getService(), tb).changeCount == changeCount); i--) {
+				for (long i = 10; i > 0 && (getContainerDTO(tb).changeCount == changeCount); i--) {
 					Thread.sleep(20);
 				}
 
@@ -120,7 +120,7 @@ public class EventsTests extends SlimBaseTestCase {
 
 				int1.unregister();
 
-				for (long i = 10; i > 0 && (getContainerDTO(ccrr.getService(), tb).changeCount == changeCount); i--) {
+				for (long i = 10; i > 0 && (getContainerDTO(tb).changeCount == changeCount); i--) {
 					Thread.sleep(20);
 				}
 
diff --git a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/ExcludeTests.java b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/ExcludeTests.java
index 1aade58..20987ff 100644
--- a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/ExcludeTests.java
+++ b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/ExcludeTests.java
@@ -26,9 +26,9 @@ public class ExcludeTests extends BaseTestCase {
 
 	@Test
 	public void testExclude_ByName() throws Exception {
-		Bundle tb2Bundle = bcr.installBundle("tb18.jar");
+		Bundle tb2Bundle = installBundle.installBundle("tb18.jar");
 
-		ContainerDTO containerDTO = getContainerDTO(ccrr.getService(), tb2Bundle);
+		ContainerDTO containerDTO = getContainerDTO(tb2Bundle);
 		assertNotNull(containerDTO);
 
 		assertEquals(1, containerDTO.template.components.size());
@@ -38,9 +38,9 @@ public class ExcludeTests extends BaseTestCase {
 
 	@Test
 	public void testExclude_IfClassAvailable() throws Exception {
-		Bundle tb2Bundle = bcr.installBundle("tb19.jar");
+		Bundle tb2Bundle = installBundle.installBundle("tb19.jar");
 
-		ContainerDTO containerDTO = getContainerDTO(ccrr.getService(), tb2Bundle);
+		ContainerDTO containerDTO = getContainerDTO(tb2Bundle);
 		assertNotNull(containerDTO);
 
 		assertEquals(1, containerDTO.template.components.size());
@@ -50,9 +50,9 @@ public class ExcludeTests extends BaseTestCase {
 
 	@Test
 	public void testExclude_IfSystemProperty() throws Exception {
-		Bundle tb2Bundle = bcr.installBundle("tb20.jar");
+		Bundle tb2Bundle = installBundle.installBundle("tb20.jar");
 
-		ContainerDTO containerDTO = getContainerDTO(ccrr.getService(), tb2Bundle);
+		ContainerDTO containerDTO = getContainerDTO(tb2Bundle);
 		assertNotNull(containerDTO);
 
 		assertEquals(1, containerDTO.template.components.size());
diff --git a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/FactoryComponentTests.java b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/FactoryComponentTests.java
index 3cec8f6..66b5c21 100644
--- a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/FactoryComponentTests.java
+++ b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/FactoryComponentTests.java
@@ -32,7 +32,7 @@ public class FactoryComponentTests extends SlimBaseTestCase {
 	@SuppressWarnings("rawtypes")
 	@Test
 	public void testFactoryComponent() throws Exception {
-		bcr.installBundle("tb7.jar");
+		installBundle.installBundle("tb7.jar");
 
 		try (CloseableTracker<BeanService, BeanService> tracker = track(
 			"(&(objectClass=%s)(objectClass=*.%s))",
@@ -54,7 +54,7 @@ public class FactoryComponentTests extends SlimBaseTestCase {
 					BeanService.class.getName(),
 					"ConfigurationBeanF")) {
 
-				configurationA = car.getService().getFactoryConfiguration("configurationBeanF", "one");
+				configurationA = car.getFactoryConfiguration("configurationBeanF", "one");
 
 				Dictionary<String, Object> p1 = new Hashtable<>();
 				p1.put("ports", new int[] {12, 4567});
@@ -65,7 +65,7 @@ public class FactoryComponentTests extends SlimBaseTestCase {
 
 				assertNotNull(beanServiceA);
 
-				configurationB = car.getService().getFactoryConfiguration("configurationBeanF", "two");
+				configurationB = car.getFactoryConfiguration("configurationBeanF", "two");
 
 				p1 = new Hashtable<>();
 				p1.put("ports", new int[] {45689, 1065});
diff --git a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/HttpTestCase.java b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/HttpTestCase.java
index f424fcd..801f8a1 100644
--- a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/HttpTestCase.java
+++ b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/HttpTestCase.java
@@ -37,8 +37,8 @@ public class HttpTestCase extends HttpBaseTestCase {
 
 	@Test
 	public void testSessionScoped() throws Exception {
-		bcr.installBundle("tb6.jar");
-		bcr.installBundle("tb2.jar");
+		installBundle.installBundle("tb6.jar");
+		installBundle.installBundle("tb2.jar");
 
 		String path = "/foo";
 
@@ -46,7 +46,7 @@ public class HttpTestCase extends HttpBaseTestCase {
 
 		assertEquals("foo", servletDTO.name);
 
-		HttpClientBuilder clientBuilder = hcbfr.getService().newBuilder();
+		HttpClientBuilder clientBuilder = hcbf.newBuilder();
 		CloseableHttpClient httpclient = clientBuilder.build();
 
 		CookieStore cookieStore = new BasicCookieStore();
@@ -95,8 +95,8 @@ public class HttpTestCase extends HttpBaseTestCase {
 
 	@Test
 	public void testRequestScopedWithReference() throws Exception {
-		bcr.installBundle("tb6.jar");
-		bcr.installBundle("tb2.jar");
+		installBundle.installBundle("tb6.jar");
+		installBundle.installBundle("tb2.jar");
 
 		String path = "/bar";
 
@@ -104,7 +104,7 @@ public class HttpTestCase extends HttpBaseTestCase {
 
 		assertEquals("bar", servletDTO.name);
 
-		HttpClientBuilder clientBuilder = hcbfr.getService().newBuilder();
+		HttpClientBuilder clientBuilder = hcbf.newBuilder();
 		CloseableHttpClient httpclient = clientBuilder.build();
 
 		CookieStore cookieStore = new BasicCookieStore();
diff --git a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/JndiExtensionTests.java b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/JndiExtensionTests.java
index de0928e..e0b5a02 100644
--- a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/JndiExtensionTests.java
+++ b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/JndiExtensionTests.java
@@ -36,7 +36,7 @@ public class JndiExtensionTests extends SlimBaseTestCase {
 
 	@Test
 	public void testGetBeanManagerThroughJNDI() throws Exception {
-		Bundle testBundle = bcr.installBundle("tb21.jar");
+		Bundle testBundle = installBundle.installBundle("tb21.jar");
 
 		assertNotNull(getBeanManager(testBundle));
 
@@ -58,7 +58,7 @@ public class JndiExtensionTests extends SlimBaseTestCase {
 
 	@Test
 	public void testDisableExtensionAndCDIContainerWaits() throws Exception {
-		BundleTracker<Bundle> bundleTracker = new BundleTracker<Bundle>(bcr.getBundleContext(), Bundle.ACTIVE, null) {
+		BundleTracker<Bundle> bundleTracker = new BundleTracker<Bundle>(bundleContext, Bundle.ACTIVE, null) {
 			@Override
 			public Bundle addingBundle(Bundle bundle, BundleEvent event) {
 				if (bundle.getSymbolicName().equals("org.apache.aries.cdi.extension.jndi")) {
@@ -74,7 +74,7 @@ public class JndiExtensionTests extends SlimBaseTestCase {
 		try (CloseableTracker<Pojo, Pojo> tracker = track("(objectClass=%s)", Pojo.class.getName())) {
 			Bundle extensionBundle = bundleTracker.getBundles()[0];
 
-			Bundle testBundle = bcr.installBundle("tb21.jar", false);
+			Bundle testBundle = installBundle.installBundle("tb21.jar", false);
 
 			try (CloseableTracker<BeanManager, BeanManager> bmTracker = trackBM(testBundle.getBundleId());) {
 				assertThat(bmTracker).matches(CloseableTracker::isEmpty, "BeanManager tracker is empty");
diff --git a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/OSGiBeanDescriptorTests.java b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/OSGiBeanDescriptorTests.java
index 3f0984c..3f33762 100644
--- a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/OSGiBeanDescriptorTests.java
+++ b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/OSGiBeanDescriptorTests.java
@@ -35,7 +35,7 @@ public class OSGiBeanDescriptorTests extends BaseTestCase {
 
 	@Test
 	public void testServices() throws Exception {
-		bcr.installBundle("tb2.jar");
+		installBundle.installBundle("tb2.jar");
 
 		try (CloseableTracker<Pojo, Pojo> tracker = track("(objectClass=%s)", Pojo.class.getName())) {
 			Pojo pojo = tracker.waitForService(timeout);
@@ -46,8 +46,8 @@ public class OSGiBeanDescriptorTests extends BaseTestCase {
 	@SuppressWarnings("serial")
 	@Test
 	public void testReferences() throws Exception {
-		Bundle tb1Bundle = bcr.installBundle("tb1.jar");
-		bcr.installBundle("tb2.jar");
+		Bundle tb1Bundle = installBundle.installBundle("tb1.jar");
+		installBundle.installBundle("tb2.jar");
 
 		BeanManager beanManager = getBeanManager(tb1Bundle);
 		Set<Bean<?>> beans = beanManager.getBeans("beanimpl");
diff --git a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/OptionalReluctantReferenceTests.java b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/OptionalReluctantReferenceTests.java
index 64c2eb3..7653928 100644
--- a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/OptionalReluctantReferenceTests.java
+++ b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/OptionalReluctantReferenceTests.java
@@ -33,7 +33,7 @@ public class OptionalReluctantReferenceTests extends BaseTestCase {
 
 	@Test
 	public void applicationScoped() throws Exception {
-		Bundle tb = bcr.installBundle("tb11.jar");
+		Bundle tb = installBundle.installBundle("tb11.jar");
 
 		try (CloseableTracker<Pojo, Pojo> tracker = track("(&(objectClass=%s)(bean.id=as))", Pojo.class.getName());) {
 			Pojo pojo = tracker.waitForService(timeout);
@@ -41,16 +41,16 @@ public class OptionalReluctantReferenceTests extends BaseTestCase {
 			assertEquals(-1, pojo.getCount());
 			assertEquals("-1", pojo.foo(""));
 
-			ContainerDTO containerDTO = getContainerDTO(ccrr.getService(), tb);
+			ContainerDTO containerDTO = getContainerDTO(tb);
 
 			long changeCount = containerDTO.changeCount;
 
-			ServiceRegistration<Integer> int1 = bcr.getBundleContext().registerService(
+			ServiceRegistration<Integer> int1 = bundleContext.registerService(
 				Integer.class, new Integer(12),
 				new Hashtable<>(Collections.singletonMap("bean.id", "as")));
 
 			try {
-				for (long i = 10; i > 0 && (getContainerDTO(ccrr.getService(), tb).changeCount == changeCount); i--) {
+				for (long i = 10; i > 0 && (getContainerDTO(tb).changeCount == changeCount); i--) {
 					Thread.sleep(20);
 				}
 
@@ -66,11 +66,11 @@ public class OptionalReluctantReferenceTests extends BaseTestCase {
 				assertEquals("12", pojo.foo(""));
 			}
 			finally {
-				changeCount = getContainerDTO(ccrr.getService(), tb).changeCount;
+				changeCount = getContainerDTO(tb).changeCount;
 
 				int1.unregister();
 
-				for (long i = 10; i > 0 && (getContainerDTO(ccrr.getService(), tb).changeCount == changeCount); i--) {
+				for (long i = 10; i > 0 && (getContainerDTO(tb).changeCount == changeCount); i--) {
 					Thread.sleep(20);
 				}
 
@@ -84,7 +84,7 @@ public class OptionalReluctantReferenceTests extends BaseTestCase {
 
 	@Test
 	public void singleComponent() throws Exception {
-		Bundle tb = bcr.installBundle("tb11.jar");
+		Bundle tb = installBundle.installBundle("tb11.jar");
 
 		try (CloseableTracker<Pojo, Pojo> tracker = track("(&(objectClass=%s)(bean.id=sc))", Pojo.class.getName());) {
 			Pojo pojo = tracker.waitForService(timeout);
@@ -92,16 +92,16 @@ public class OptionalReluctantReferenceTests extends BaseTestCase {
 			assertEquals(-1, pojo.getCount());
 			assertEquals("-1", pojo.foo(""));
 
-			ContainerDTO containerDTO = getContainerDTO(ccrr.getService(), tb);
+			ContainerDTO containerDTO = getContainerDTO(tb);
 
 			long changeCount = containerDTO.changeCount;
 
-			ServiceRegistration<Integer> int1 = bcr.getBundleContext().registerService(
+			ServiceRegistration<Integer> int1 = bundleContext.registerService(
 				Integer.class, new Integer(12),
 				new Hashtable<>(Collections.singletonMap("bean.id", "sc")));
 
 			try {
-				for (long i = 10; i > 0 && (getContainerDTO(ccrr.getService(), tb).changeCount == changeCount); i--) {
+				for (long i = 10; i > 0 && (getContainerDTO(tb).changeCount == changeCount); i--) {
 					Thread.sleep(20);
 				}
 
@@ -117,11 +117,11 @@ public class OptionalReluctantReferenceTests extends BaseTestCase {
 				assertEquals("12", pojo.foo(""));
 			}
 			finally {
-				changeCount = getContainerDTO(ccrr.getService(), tb).changeCount;
+				changeCount = getContainerDTO(tb).changeCount;
 
 				int1.unregister();
 
-				for (long i = 10; i > 0 && (getContainerDTO(ccrr.getService(), tb).changeCount == changeCount); i--) {
+				for (long i = 10; i > 0 && (getContainerDTO(tb).changeCount == changeCount); i--) {
 					Thread.sleep(20);
 				}
 
@@ -135,7 +135,7 @@ public class OptionalReluctantReferenceTests extends BaseTestCase {
 
 	@Test
 	public void factoryComponent() throws Exception {
-		Bundle tb = bcr.installBundle("tb11.jar");
+		Bundle tb = installBundle.installBundle("tb11.jar");
 
 		try (CloseableTracker<Pojo, Pojo> tracker = track("(&(objectClass=%s)(bean.id=fc))", Pojo.class.getName());) {
 			Pojo pojo = tracker.waitForService(timeout);
@@ -144,7 +144,7 @@ public class OptionalReluctantReferenceTests extends BaseTestCase {
 
 			int trackingCount = tracker.getTrackingCount();
 
-			Configuration configuration = car.getService().createFactoryConfiguration("optionalReference_FC");
+			Configuration configuration = car.createFactoryConfiguration("optionalReference_FC");
 			configuration.update(new Hashtable<>(Collections.singletonMap("foo", "bar")));
 
 			for (long i = 10; i > 0 && (tracker.getTrackingCount() == trackingCount); i--) {
@@ -156,16 +156,16 @@ public class OptionalReluctantReferenceTests extends BaseTestCase {
 			assertEquals(-1, pojo.getCount());
 			assertEquals("-1", pojo.foo(""));
 
-			ContainerDTO containerDTO = getContainerDTO(ccrr.getService(), tb);
+			ContainerDTO containerDTO = getContainerDTO(tb);
 
 			long changeCount = containerDTO.changeCount;
 
-			ServiceRegistration<Integer> int1 = bcr.getBundleContext().registerService(
+			ServiceRegistration<Integer> int1 = bundleContext.registerService(
 				Integer.class, new Integer(12),
 				new Hashtable<>(Collections.singletonMap("bean.id", "fc")));
 
 			try {
-				for (long i = 10; i > 0 && (getContainerDTO(ccrr.getService(), tb).changeCount == changeCount); i--) {
+				for (long i = 10; i > 0 && (getContainerDTO(tb).changeCount == changeCount); i--) {
 					Thread.sleep(20);
 				}
 
@@ -181,11 +181,11 @@ public class OptionalReluctantReferenceTests extends BaseTestCase {
 				assertEquals("12", pojo.foo(""));
 			}
 			finally {
-				changeCount = getContainerDTO(ccrr.getService(), tb).changeCount;
+				changeCount = getContainerDTO(tb).changeCount;
 
 				int1.unregister();
 
-				for (long i = 10; i > 0 && (getContainerDTO(ccrr.getService(), tb).changeCount == changeCount); i--) {
+				for (long i = 10; i > 0 && (getContainerDTO(tb).changeCount == changeCount); i--) {
 					Thread.sleep(20);
 				}
 
diff --git a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/ProducerTest.java b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/ProducerTest.java
index 37a112a..f1c9c7d 100644
--- a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/ProducerTest.java
+++ b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/ProducerTest.java
@@ -28,7 +28,7 @@ public class ProducerTest extends SlimBaseTestCase {
 
 	@Test
 	public void checkProducersAreProperlyHandled() throws Exception {
-		bcr.installBundle("tb12.jar");
+		installBundle.installBundle("tb12.jar");
 
 		try (CloseableTracker<Pojo, Pojo> track = track("(&(objectClass=%s)(component.name=integerManager))", Pojo.class.getName())) {
 			Pojo pojo = track.waitForService(5000);
diff --git a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/Test152_2.java b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/Test152_2.java
index bb14cfe..c2b0d67 100644
--- a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/Test152_2.java
+++ b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/Test152_2.java
@@ -25,22 +25,22 @@ public class Test152_2 extends BaseTestCase {
 
 	@Test
 	public void checkUniqueComponentNames() throws Exception {
-		Bundle tb = bcr.installBundle("tb152_2.jar");
+		Bundle tb = installBundle.installBundle("tb152_2.jar");
 
 		getBeanManager(tb);
 
-		ContainerDTO containerDTO = getContainerDTO(ccrr.getService(), tb);
+		ContainerDTO containerDTO = getContainerDTO(tb);
 		assertThat(containerDTO).isNotNull();
 		assertThat(containerDTO.errors).isNotNull().asList().isNotEmpty();
 	}
 
 	@Test
 	public void checkUniqueComponentNames_b() throws Exception {
-		Bundle tb = bcr.installBundle("tb152_2b.jar");
+		Bundle tb = installBundle.installBundle("tb152_2b.jar");
 
 		getBeanManager(tb);
 
-		ContainerDTO containerDTO = getContainerDTO(ccrr.getService(), tb);
+		ContainerDTO containerDTO = getContainerDTO(tb);
 		assertThat(containerDTO).isNotNull();
 		assertThat(containerDTO.errors).isNotNull().asList().isNotEmpty();
 	}
diff --git a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/Test152_3.java b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/Test152_3.java
index 509becb..da8f0e9 100644
--- a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/Test152_3.java
+++ b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/Test152_3.java
@@ -29,7 +29,7 @@ public class Test152_3 extends SlimBaseTestCase {
 
 	@Test
 	public void componentScopeContext() throws Exception {
-		Bundle tbBundle = bcr.installBundle("tb152_3.jar");
+		Bundle tbBundle = installBundle.installBundle("tb152_3.jar");
 
 		try (CloseableTracker<Object, Object> oneTracker = track("(&(objectClass=%s)(%s=%s))", BeanService.class.getName(), Constants.SERVICE_DESCRIPTION, "one");
 				CloseableTracker<Object, Object> twoTracker = track("(&(objectClass=%s)(%s=%s))", BeanService.class.getName(), Constants.SERVICE_DESCRIPTION, "two")) {
diff --git a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/Test152_3_1.java b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/Test152_3_1.java
index 88b53cc..8980a79 100644
--- a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/Test152_3_1.java
+++ b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/Test152_3_1.java
@@ -39,7 +39,7 @@ public class Test152_3_1 extends SlimBaseTestCase {
 	@SuppressWarnings({ "rawtypes", "serial", "unchecked" })
 	@Test
 	public void checkSingleComponentContextEvents() throws Exception {
-		Bundle tb152_3_1Bundle = bcr.installBundle("tb152_3_1.jar");
+		Bundle tb152_3_1Bundle = installBundle.installBundle("tb152_3_1.jar");
 
 		AtomicReference<Object[]> a = new AtomicReference<>();
 		AtomicReference<Object[]> b = new AtomicReference<>();
@@ -64,15 +64,15 @@ public class Test152_3_1 extends SlimBaseTestCase {
 			return null;
 		};
 
-		bcr.getBundleContext().registerService(
+		bundleContext.registerService(
 			Function.class, onInitialized,
 			new Hashtable() {{put(Constants.SERVICE_DESCRIPTION, "onInitialized");}});
 
-		bcr.getBundleContext().registerService(
+		bundleContext.registerService(
 			Function.class, onBeforeDestroyed,
 			new Hashtable() {{put(Constants.SERVICE_DESCRIPTION, "onBeforeDestroyed");}});
 
-		bcr.getBundleContext().registerService(
+		bundleContext.registerService(
 			Function.class, onDestroyed,
 			new Hashtable() {{put(Constants.SERVICE_DESCRIPTION, "onDestroyed");}});
 
@@ -86,7 +86,7 @@ public class Test152_3_1 extends SlimBaseTestCase {
 			twoTracker.open();
 			int trackingCount = twoTracker.getTrackingCount();
 
-			ServiceRegistration<Integer> integerReg = bcr.getBundleContext().registerService(
+			ServiceRegistration<Integer> integerReg = bundleContext.registerService(
 				Integer.class, new Integer(45),
 				new Hashtable() {{put(Constants.SERVICE_DESCRIPTION, "two");}});
 
@@ -135,7 +135,7 @@ public class Test152_3_1 extends SlimBaseTestCase {
 	@SuppressWarnings({ "rawtypes", "serial", "unchecked" })
 	@Test
 	public void checkFactoryComponentContextEvents() throws Exception {
-		Bundle tb152_3_1Bundle = bcr.installBundle("tb152_3_1.jar");
+		Bundle tb152_3_1Bundle = installBundle.installBundle("tb152_3_1.jar");
 
 		AtomicReference<Object[]> a = new AtomicReference<>();
 		AtomicReference<Object[]> b = new AtomicReference<>();
@@ -160,15 +160,15 @@ public class Test152_3_1 extends SlimBaseTestCase {
 			return null;
 		};
 
-		bcr.getBundleContext().registerService(
+		bundleContext.registerService(
 			Function.class, onInitialized,
 			new Hashtable() {{put(Constants.SERVICE_DESCRIPTION, "onInitialized");}});
 
-		bcr.getBundleContext().registerService(
+		bundleContext.registerService(
 			Function.class, onBeforeDestroyed,
 			new Hashtable() {{put(Constants.SERVICE_DESCRIPTION, "onBeforeDestroyed");}});
 
-		bcr.getBundleContext().registerService(
+		bundleContext.registerService(
 			Function.class, onDestroyed,
 			new Hashtable() {{put(Constants.SERVICE_DESCRIPTION, "onDestroyed");}});
 
@@ -184,7 +184,7 @@ public class Test152_3_1 extends SlimBaseTestCase {
 			threeTracker.open();
 			int trackingCount = threeTracker.getTrackingCount();
 
-			ServiceRegistration<Integer> integerReg = bcr.getBundleContext().registerService(
+			ServiceRegistration<Integer> integerReg = bundleContext.registerService(
 				Integer.class, new Integer(45),
 				new Hashtable() {{put(Constants.SERVICE_DESCRIPTION, "three");}});
 
@@ -196,7 +196,7 @@ public class Test152_3_1 extends SlimBaseTestCase {
 			assertThat(b.get()).isNull();
 			assertThat(c.get()).isNull();
 
-			configuration = car.getService().createFactoryConfiguration("three");
+			configuration = car.createFactoryConfiguration("three");
 			configuration.update(new Hashtable() {{put("foo", "bar");}});
 
 			count = 10;
diff --git a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/Test152_3_1_1.java b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/Test152_3_1_1.java
index db1fd14..781a5e8 100644
--- a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/Test152_3_1_1.java
+++ b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/Test152_3_1_1.java
@@ -49,19 +49,19 @@ public class Test152_3_1_1 extends SlimBaseTestCase {
 		Consumer<Object[]> onBeforeDestroyed = (o) -> {try {b.get().resolve(o);} catch (Exception e) {}};
 		Consumer<Object[]> onDestroyed = (o) -> {try {c.get().resolve(o);} catch (Exception e) {}};
 
-		bcr.getBundleContext().registerService(
+		bundleContext.registerService(
 			Consumer.class, onInitialized,
 			new Hashtable() {{put(Constants.SERVICE_DESCRIPTION, "onInitialized");}});
 
-		bcr.getBundleContext().registerService(
+		bundleContext.registerService(
 			Consumer.class, onBeforeDestroyed,
 			new Hashtable() {{put(Constants.SERVICE_DESCRIPTION, "onBeforeDestroyed");}});
 
-		bcr.getBundleContext().registerService(
+		bundleContext.registerService(
 			Consumer.class, onDestroyed,
 			new Hashtable() {{put(Constants.SERVICE_DESCRIPTION, "onDestroyed");}});
 
-		Bundle tbBundle = bcr.installBundle("tb152_3_1_1l.jar");
+		Bundle tbBundle = installBundle.installBundle("tb152_3_1_1l.jar");
 		Configuration configuration = null;
 
 		try {
@@ -75,7 +75,7 @@ public class Test152_3_1_1 extends SlimBaseTestCase {
 				// we didn't do a "get" yet so this should fail
 				assertPromiseIsNotResolved(a);
 
-				configuration = car.getService().getConfiguration("prototypeFactory", "?");
+				configuration = car.getConfiguration("prototypeFactory", "?");
 
 				// this will trigger the onInitialized because of the tracker
 				configuration.update(new Hashtable() {{put("foo", "bar");}});
@@ -85,12 +85,12 @@ public class Test152_3_1_1 extends SlimBaseTestCase {
 
 				configuration.delete();
 
-				configuration = car.getService().getFactoryConfiguration("prototypeFactory", "one", "?");
+				configuration = car.getFactoryConfiguration("prototypeFactory", "one", "?");
 				configuration.update(new Hashtable() {{put("foo", "bar");}});
 
 				assertThat(tracker.waitForService(50)).isNotNull();
 
-				ServiceObjects<Object> serviceObjects = bcr.getBundleContext().getServiceObjects(tracker.getService());
+				ServiceObjects<Object> serviceObjects = bundleContext.getServiceObjects(tracker.getService());
 
 				a.set(new Deferred<>());
 				b.set(new Deferred<>());
@@ -253,19 +253,19 @@ public class Test152_3_1_1 extends SlimBaseTestCase {
 		Consumer<Object[]> onBeforeDestroyed = (o) -> b.get().resolve(o);
 		Consumer<Object[]> onDestroyed = (o) -> c.get().resolve(o);
 
-		bcr.getBundleContext().registerService(
+		bundleContext.registerService(
 			Consumer.class, onInitialized,
 			new Hashtable() {{put(Constants.SERVICE_DESCRIPTION, "onInitialized");}});
 
-		bcr.getBundleContext().registerService(
+		bundleContext.registerService(
 			Consumer.class, onBeforeDestroyed,
 			new Hashtable() {{put(Constants.SERVICE_DESCRIPTION, "onBeforeDestroyed");}});
 
-		bcr.getBundleContext().registerService(
+		bundleContext.registerService(
 			Consumer.class, onDestroyed,
 			new Hashtable() {{put(Constants.SERVICE_DESCRIPTION, "onDestroyed");}});
 
-		Bundle tbBundle = bcr.installBundle("tb152_3_1_1k.jar");
+		Bundle tbBundle = installBundle.installBundle("tb152_3_1_1k.jar");
 		Configuration configuration = null;
 
 		try {
@@ -284,7 +284,7 @@ public class Test152_3_1_1 extends SlimBaseTestCase {
 				// we didn't do a "get" yet so this should fail
 				a.get().getPromise().timeout(timeout).then(assertFailed).getFailure();
 
-				configuration = car.getService().getConfiguration("prototypeSingle_C", "?");
+				configuration = car.getConfiguration("prototypeSingle_C", "?");
 
 				configuration.update(new Hashtable() {{put("foo", "bar");}});
 
@@ -292,7 +292,7 @@ public class Test152_3_1_1 extends SlimBaseTestCase {
 				b.get().getPromise().timeout(timeout).then(assertFailed).getFailure();
 				c.get().getPromise().timeout(timeout).then(assertFailed).getFailure();
 
-				ServiceObjects<Object> serviceObjects = bcr.getBundleContext().getServiceObjects(tracker.getService());
+				ServiceObjects<Object> serviceObjects = bundleContext.getServiceObjects(tracker.getService());
 
 				Object instance1 = serviceObjects.getService();
 				assertThat(instance1).isNotNull();
@@ -426,19 +426,19 @@ public class Test152_3_1_1 extends SlimBaseTestCase {
 		Consumer<Object[]> onBeforeDestroyed = (o) -> {try {b.get().resolve(o);} catch (Exception e) {}};
 		Consumer<Object[]> onDestroyed = (o) -> {try {c.get().resolve(o);} catch (Exception e) {}};
 
-		bcr.getBundleContext().registerService(
+		bundleContext.registerService(
 			Consumer.class, onInitialized,
 			new Hashtable() {{put(Constants.SERVICE_DESCRIPTION, "onInitialized");}});
 
-		bcr.getBundleContext().registerService(
+		bundleContext.registerService(
 			Consumer.class, onBeforeDestroyed,
 			new Hashtable() {{put(Constants.SERVICE_DESCRIPTION, "onBeforeDestroyed");}});
 
-		bcr.getBundleContext().registerService(
+		bundleContext.registerService(
 			Consumer.class, onDestroyed,
 			new Hashtable() {{put(Constants.SERVICE_DESCRIPTION, "onDestroyed");}});
 
-		Bundle tbBundle = bcr.installBundle("tb152_3_1_1j.jar");
+		Bundle tbBundle = installBundle.installBundle("tb152_3_1_1j.jar");
 
 		getBeanManager(tbBundle);
 
@@ -452,7 +452,7 @@ public class Test152_3_1_1 extends SlimBaseTestCase {
 		try (CloseableTracker<Object, ServiceReference<Object>> tracker = trackSR("(objectClass=%s)", Pojo.class.getName())) {
 			assertThat(tracker.waitForService(50)).isNotNull();
 
-			ServiceObjects<Object> serviceObjects = bcr.getBundleContext().getServiceObjects(tracker.getService());
+			ServiceObjects<Object> serviceObjects = bundleContext.getServiceObjects(tracker.getService());
 
 			a.set(new Deferred<>());
 
@@ -574,19 +574,19 @@ public class Test152_3_1_1 extends SlimBaseTestCase {
 		Consumer<Object[]> onBeforeDestroyed = (o) -> b.get().resolve(o);
 		Consumer<Object[]> onDestroyed = (o) -> c.get().resolve(o);
 
-		bcr.getBundleContext().registerService(
+		bundleContext.registerService(
 			Consumer.class, onInitialized,
 			new Hashtable() {{put(Constants.SERVICE_DESCRIPTION, "onInitialized");}});
 
-		bcr.getBundleContext().registerService(
+		bundleContext.registerService(
 			Consumer.class, onBeforeDestroyed,
 			new Hashtable() {{put(Constants.SERVICE_DESCRIPTION, "onBeforeDestroyed");}});
 
-		bcr.getBundleContext().registerService(
+		bundleContext.registerService(
 			Consumer.class, onDestroyed,
 			new Hashtable() {{put(Constants.SERVICE_DESCRIPTION, "onDestroyed");}});
 
-		Bundle tbBundle = bcr.installBundle("tb152_3_1_1i.jar");
+		Bundle tbBundle = installBundle.installBundle("tb152_3_1_1i.jar");
 		Configuration configuration = null;
 
 		try {
@@ -594,7 +594,7 @@ public class Test152_3_1_1 extends SlimBaseTestCase {
 
 			assertPromiseIsNotResolved(a);
 
-			configuration = car.getService().getConfiguration("bundleFactory", "?");
+			configuration = car.getConfiguration("bundleFactory", "?");
 			configuration.update(new Hashtable() {{put("foo", "bar");}});
 
 			// only accept factory configuration instances
@@ -608,7 +608,7 @@ public class Test152_3_1_1 extends SlimBaseTestCase {
 
 			configuration.delete();
 
-			configuration = car.getService().getFactoryConfiguration("bundleFactory", "one", "?");
+			configuration = car.getFactoryConfiguration("bundleFactory", "one", "?");
 			configuration.update(new Hashtable() {{put("foo", "bar");}});
 
 			// Even with configuration, there's still no instance until a "get" is performed
@@ -716,19 +716,19 @@ public class Test152_3_1_1 extends SlimBaseTestCase {
 		Consumer<Object[]> onBeforeDestroyed = (o) -> b.get().resolve(o);
 		Consumer<Object[]> onDestroyed = (o) -> c.get().resolve(o);
 
-		bcr.getBundleContext().registerService(
+		bundleContext.registerService(
 			Consumer.class, onInitialized,
 			new Hashtable() {{put(Constants.SERVICE_DESCRIPTION, "onInitialized");}});
 
-		bcr.getBundleContext().registerService(
+		bundleContext.registerService(
 			Consumer.class, onBeforeDestroyed,
 			new Hashtable() {{put(Constants.SERVICE_DESCRIPTION, "onBeforeDestroyed");}});
 
-		bcr.getBundleContext().registerService(
+		bundleContext.registerService(
 			Consumer.class, onDestroyed,
 			new Hashtable() {{put(Constants.SERVICE_DESCRIPTION, "onDestroyed");}});
 
-		Bundle tbBundle = bcr.installBundle("tb152_3_1_1h.jar");
+		Bundle tbBundle = installBundle.installBundle("tb152_3_1_1h.jar");
 		Configuration configuration = null;
 
 		try {
@@ -736,7 +736,7 @@ public class Test152_3_1_1 extends SlimBaseTestCase {
 
 			assertPromiseIsNotResolved(a);
 
-			configuration = car.getService().getConfiguration("bundleSingle_C", "?");
+			configuration = car.getConfiguration("bundleSingle_C", "?");
 			configuration.update(new Hashtable() {{put("foo", "bar");}});
 
 			assertPromiseIsNotResolved(a);
@@ -834,19 +834,19 @@ public class Test152_3_1_1 extends SlimBaseTestCase {
 		Consumer<Object[]> onBeforeDestroyed = (o) -> {try {b.resolve(o);} catch (Exception e) {}};
 		Consumer<Object[]> onDestroyed = (o) -> {try {c.resolve(o);} catch (Exception e) {}};
 
-		bcr.getBundleContext().registerService(
+		bundleContext.registerService(
 			Consumer.class, onInitialized,
 			new Hashtable() {{put(Constants.SERVICE_DESCRIPTION, "onInitialized");}});
 
-		bcr.getBundleContext().registerService(
+		bundleContext.registerService(
 			Consumer.class, onBeforeDestroyed,
 			new Hashtable() {{put(Constants.SERVICE_DESCRIPTION, "onBeforeDestroyed");}});
 
-		bcr.getBundleContext().registerService(
+		bundleContext.registerService(
 			Consumer.class, onDestroyed,
 			new Hashtable() {{put(Constants.SERVICE_DESCRIPTION, "onDestroyed");}});
 
-		Bundle tbBundle = bcr.installBundle("tb152_3_1_1g.jar");
+		Bundle tbBundle = installBundle.installBundle("tb152_3_1_1g.jar");
 
 		try {
 			getBeanManager(tbBundle);
@@ -921,19 +921,19 @@ public class Test152_3_1_1 extends SlimBaseTestCase {
 		Consumer<Object[]> onBeforeDestroyed = (o) -> {try {b.resolve(o);} catch (Exception e) {}};
 		Consumer<Object[]> onDestroyed = (o) -> {try {c.resolve(o);} catch (Exception e) {}};
 
-		bcr.getBundleContext().registerService(
+		bundleContext.registerService(
 			Consumer.class, onInitialized,
 			new Hashtable() {{put(Constants.SERVICE_DESCRIPTION, "onInitialized");}});
 
-		bcr.getBundleContext().registerService(
+		bundleContext.registerService(
 			Consumer.class, onBeforeDestroyed,
 			new Hashtable() {{put(Constants.SERVICE_DESCRIPTION, "onBeforeDestroyed");}});
 
-		bcr.getBundleContext().registerService(
+		bundleContext.registerService(
 			Consumer.class, onDestroyed,
 			new Hashtable() {{put(Constants.SERVICE_DESCRIPTION, "onDestroyed");}});
 
-		Bundle tbBundle = bcr.installBundle("tb152_3_1_1f.jar");
+		Bundle tbBundle = installBundle.installBundle("tb152_3_1_1f.jar");
 		Configuration configuration = null;
 
 		try {
@@ -946,7 +946,7 @@ public class Test152_3_1_1 extends SlimBaseTestCase {
 
 			a.getPromise().timeout(timeout).then(assertFailed).getFailure();
 
-			configuration = car.getService().getConfiguration("singletonFactory", "?");
+			configuration = car.getConfiguration("singletonFactory", "?");
 			configuration.update(new Hashtable() {{put("foo", "bar");}});
 
 			// only accept factory configuration instances
@@ -954,7 +954,7 @@ public class Test152_3_1_1 extends SlimBaseTestCase {
 
 			configuration.delete();
 
-			configuration = car.getService().getFactoryConfiguration("singletonFactory", "one", "?");
+			configuration = car.getFactoryConfiguration("singletonFactory", "one", "?");
 			configuration.update(new Hashtable() {{put("foo", "bar");}});
 
 			Success<Object[], Object[]> assertSucceeded = s -> {
@@ -1051,19 +1051,19 @@ public class Test152_3_1_1 extends SlimBaseTestCase {
 		Consumer<Object[]> onBeforeDestroyed = (o) -> {try {b.resolve(o);} catch (Exception e) {}};
 		Consumer<Object[]> onDestroyed = (o) -> {try {c.resolve(o);} catch (Exception e) {}};
 
-		bcr.getBundleContext().registerService(
+		bundleContext.registerService(
 			Consumer.class, onInitialized,
 			new Hashtable() {{put(Constants.SERVICE_DESCRIPTION, "onInitialized");}});
 
-		bcr.getBundleContext().registerService(
+		bundleContext.registerService(
 			Consumer.class, onBeforeDestroyed,
 			new Hashtable() {{put(Constants.SERVICE_DESCRIPTION, "onBeforeDestroyed");}});
 
-		bcr.getBundleContext().registerService(
+		bundleContext.registerService(
 			Consumer.class, onDestroyed,
 			new Hashtable() {{put(Constants.SERVICE_DESCRIPTION, "onDestroyed");}});
 
-		Bundle tbBundle = bcr.installBundle("tb152_3_1_1e.jar");
+		Bundle tbBundle = installBundle.installBundle("tb152_3_1_1e.jar");
 		Configuration configuration = null;
 
 		try {
@@ -1076,7 +1076,7 @@ public class Test152_3_1_1 extends SlimBaseTestCase {
 
 			a.getPromise().timeout(timeout).then(assertFailed).getFailure();
 
-			configuration = car.getService().getConfiguration("singletonSingle_C", "?");
+			configuration = car.getConfiguration("singletonSingle_C", "?");
 			configuration.update(new Hashtable() {{put("foo", "bar");}});
 
 			Success<Object[], Object[]> assertSucceeded = s -> {
@@ -1167,19 +1167,19 @@ public class Test152_3_1_1 extends SlimBaseTestCase {
 		Consumer<Object[]> onBeforeDestroyed = (o) -> {try {b.resolve(o);} catch (Exception e) {}};
 		Consumer<Object[]> onDestroyed = (o) -> {try {c.resolve(o);} catch (Exception e) {}};
 
-		bcr.getBundleContext().registerService(
+		bundleContext.registerService(
 			Consumer.class, onInitialized,
 			new Hashtable() {{put(Constants.SERVICE_DESCRIPTION, "onInitialized");}});
 
-		bcr.getBundleContext().registerService(
+		bundleContext.registerService(
 			Consumer.class, onBeforeDestroyed,
 			new Hashtable() {{put(Constants.SERVICE_DESCRIPTION, "onBeforeDestroyed");}});
 
-		bcr.getBundleContext().registerService(
+		bundleContext.registerService(
 			Consumer.class, onDestroyed,
 			new Hashtable() {{put(Constants.SERVICE_DESCRIPTION, "onDestroyed");}});
 
-		Bundle tbBundle = bcr.installBundle("tb152_3_1_1d.jar");
+		Bundle tbBundle = installBundle.installBundle("tb152_3_1_1d.jar");
 
 		try {
 			getBeanManager(tbBundle);
@@ -1247,19 +1247,19 @@ public class Test152_3_1_1 extends SlimBaseTestCase {
 		Consumer<Object[]> onBeforeDestroyed = (o) -> {try {b.resolve(o);} catch (Exception e) {}};
 		Consumer<Object[]> onDestroyed = (o) -> {try {c.resolve(o);} catch (Exception e) {}};
 
-		bcr.getBundleContext().registerService(
+		bundleContext.registerService(
 			Consumer.class, onInitialized,
 			new Hashtable() {{put(Constants.SERVICE_DESCRIPTION, "onInitialized");}});
 
-		bcr.getBundleContext().registerService(
+		bundleContext.registerService(
 			Consumer.class, onBeforeDestroyed,
 			new Hashtable() {{put(Constants.SERVICE_DESCRIPTION, "onBeforeDestroyed");}});
 
-		bcr.getBundleContext().registerService(
+		bundleContext.registerService(
 			Consumer.class, onDestroyed,
 			new Hashtable() {{put(Constants.SERVICE_DESCRIPTION, "onDestroyed");}});
 
-		Bundle tbBundle = bcr.installBundle("tb152_3_1_1c.jar");
+		Bundle tbBundle = installBundle.installBundle("tb152_3_1_1c.jar");
 		Configuration configuration = null;
 
 		try {
@@ -1272,7 +1272,7 @@ public class Test152_3_1_1 extends SlimBaseTestCase {
 
 			a.getPromise().timeout(timeout).then(assertFailed).getFailure();
 
-			configuration = car.getService().getConfiguration("immediateFactory", "?");
+			configuration = car.getConfiguration("immediateFactory", "?");
 			configuration.update(new Hashtable() {{put("foo", "bar");}});
 
 			// only accept factory configuration instances
@@ -1280,7 +1280,7 @@ public class Test152_3_1_1 extends SlimBaseTestCase {
 
 			configuration.delete();
 
-			configuration = car.getService().getFactoryConfiguration("immediateFactory", "one", "?");
+			configuration = car.getFactoryConfiguration("immediateFactory", "one", "?");
 			configuration.update(new Hashtable() {{put("foo", "bar");}});
 
 			Success<Object[], Object[]> assertSucceeded = s -> {
@@ -1345,19 +1345,19 @@ public class Test152_3_1_1 extends SlimBaseTestCase {
 		Consumer<Object[]> onBeforeDestroyed = (o) -> {try {b.resolve(o);} catch (Exception e) {}};
 		Consumer<Object[]> onDestroyed = (o) -> {try {c.resolve(o);} catch (Exception e) {}};
 
-		bcr.getBundleContext().registerService(
+		bundleContext.registerService(
 			Consumer.class, onInitialized,
 			new Hashtable() {{put(Constants.SERVICE_DESCRIPTION, "onInitialized");}});
 
-		bcr.getBundleContext().registerService(
+		bundleContext.registerService(
 			Consumer.class, onBeforeDestroyed,
 			new Hashtable() {{put(Constants.SERVICE_DESCRIPTION, "onBeforeDestroyed");}});
 
-		bcr.getBundleContext().registerService(
+		bundleContext.registerService(
 			Consumer.class, onDestroyed,
 			new Hashtable() {{put(Constants.SERVICE_DESCRIPTION, "onDestroyed");}});
 
-		Bundle tbBundle = bcr.installBundle("tb152_3_1_1b.jar");
+		Bundle tbBundle = installBundle.installBundle("tb152_3_1_1b.jar");
 		Configuration configuration = null;
 
 		try {
@@ -1370,7 +1370,7 @@ public class Test152_3_1_1 extends SlimBaseTestCase {
 
 			a.getPromise().timeout(timeout).then(assertFailed).getFailure();
 
-			configuration = car.getService().getConfiguration("immediateSingle_C", "?");
+			configuration = car.getConfiguration("immediateSingle_C", "?");
 			configuration.update(new Hashtable() {{put("foo", "bar");}});
 
 			Success<Object[], Object[]> assertSucceeded = s -> {
@@ -1433,19 +1433,19 @@ public class Test152_3_1_1 extends SlimBaseTestCase {
 		Consumer<Object[]> onBeforeDestroyed = (o) -> {try {b.resolve(o);} catch (Exception e) {}};
 		Consumer<Object[]> onDestroyed = (o) -> {try {c.resolve(o);} catch (Exception e) {}};
 
-		bcr.getBundleContext().registerService(
+		bundleContext.registerService(
 			Consumer.class, onInitialized,
 			new Hashtable() {{put(Constants.SERVICE_DESCRIPTION, "onInitialized");}});
 
-		bcr.getBundleContext().registerService(
+		bundleContext.registerService(
 			Consumer.class, onBeforeDestroyed,
 			new Hashtable() {{put(Constants.SERVICE_DESCRIPTION, "onBeforeDestroyed");}});
 
-		bcr.getBundleContext().registerService(
+		bundleContext.registerService(
 			Consumer.class, onDestroyed,
 			new Hashtable() {{put(Constants.SERVICE_DESCRIPTION, "onDestroyed");}});
 
-		Bundle tbBundle = bcr.installBundle("tb152_3_1_1a.jar");
+		Bundle tbBundle = installBundle.installBundle("tb152_3_1_1a.jar");
 
 		try {
 			getBeanManager(tbBundle);
diff --git a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/Test_discoverByBeansXml.java b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/Test_discoverByBeansXml.java
index 8610726..39aa15e 100644
--- a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/Test_discoverByBeansXml.java
+++ b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/Test_discoverByBeansXml.java
@@ -28,11 +28,11 @@ public class Test_discoverByBeansXml extends SlimBaseTestCase {
 
 	@Test
 	public void componentScopeContext() throws Exception {
-		Bundle tbBundle = bcr.installBundle("tb14.jar");
+		Bundle tbBundle = installBundle.installBundle("tb14.jar");
 
 		getBeanManager(tbBundle);
 
-		ContainerTemplateDTO containerTemplateDTO = ccrr.getService().getContainerTemplateDTO(tbBundle);
+		ContainerTemplateDTO containerTemplateDTO = ccr.getContainerTemplateDTO(tbBundle);
 
 		assertThat(containerTemplateDTO).isNotNull();
 
diff --git a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/TrimTests.java b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/TrimTests.java
index 160de96..d8b914d 100644
--- a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/TrimTests.java
+++ b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/TrimTests.java
@@ -26,9 +26,9 @@ public class TrimTests extends SlimBaseTestCase {
 
 	@Test
 	public void testTrimmed() throws Exception {
-		Bundle tb2Bundle = bcr.installBundle("tb17.jar");
+		Bundle tb2Bundle = installBundle.installBundle("tb17.jar");
 
-		ContainerDTO containerDTO = getContainerDTO(ccrr.getService(), tb2Bundle);
+		ContainerDTO containerDTO = getContainerDTO(tb2Bundle);
 		assertNotNull(containerDTO);
 
 		assertEquals(5, containerDTO.template.components.get(0).beans.size());
diff --git a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/base/BaseTestCase.java b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/base/BaseTestCase.java
index ece8cf0..2dd6988 100644
--- a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/base/BaseTestCase.java
+++ b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/base/BaseTestCase.java
@@ -37,6 +37,7 @@ import org.junit.Rule;
 import org.junit.rules.TestWatcher;
 import org.junit.runner.Description;
 import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
 import org.osgi.framework.Filter;
 import org.osgi.framework.ServiceReference;
 import org.osgi.framework.wiring.BundleWire;
@@ -46,8 +47,12 @@ import org.osgi.service.cdi.CDIConstants;
 import org.osgi.service.cdi.runtime.CDIComponentRuntime;
 import org.osgi.service.cdi.runtime.dto.ContainerDTO;
 import org.osgi.service.cm.ConfigurationAdmin;
+import org.osgi.test.common.annotation.InjectBundleContext;
+import org.osgi.test.common.annotation.InjectInstallBundle;
+import org.osgi.test.common.annotation.InjectService;
+import org.osgi.test.common.install.InstallBundle;
 import org.osgi.test.junit4.context.BundleContextRule;
-import org.osgi.test.junit4.service.ServiceUseRule;
+import org.osgi.test.junit4.service.ServiceRule;
 import org.osgi.util.promise.PromiseFactory;
 import org.osgi.util.tracker.ServiceTrackerCustomizer;
 
@@ -61,9 +66,16 @@ public abstract class BaseTestCase {
 	@Rule
 	public BundleContextRule bcr = new BundleContextRule();
 	@Rule
-	public ServiceUseRule<CDIComponentRuntime> ccrr = new ServiceUseRule.Builder<CDIComponentRuntime>(CDIComponentRuntime.class, bcr).build();
-	@Rule
-	public ServiceUseRule<ConfigurationAdmin> car = new ServiceUseRule.Builder<ConfigurationAdmin>(ConfigurationAdmin.class, bcr).build();
+	public ServiceRule sr = new ServiceRule();
+
+	@InjectBundleContext
+	public BundleContext bundleContext;
+	@InjectInstallBundle
+	public InstallBundle installBundle;
+	@InjectService
+	public CDIComponentRuntime ccr;
+	@InjectService
+	public ConfigurationAdmin car;
 
 	@Rule
 	public TestWatcher watchman= new TestWatcher() {
@@ -80,9 +92,9 @@ public abstract class BaseTestCase {
 
 	@Before
 	public void setUp() throws Exception {
-		servicesBundle = bcr.installBundle("services-one.jar", false);
+		servicesBundle = installBundle.installBundle("services-one.jar", false);
 		servicesBundle.start();
-		cdiBundle = bcr.installBundle("basic-beans.jar", false);
+		cdiBundle = installBundle.installBundle("basic-beans.jar", false);
 		cdiBundle.start();
 	}
 
@@ -124,12 +136,12 @@ public abstract class BaseTestCase {
 		return null;
 	}
 
-	public ContainerDTO getContainerDTO(CDIComponentRuntime runtime, Bundle bundle) {
+	public ContainerDTO getContainerDTO(Bundle bundle) {
 		Iterator<ContainerDTO> iterator;
 		ContainerDTO containerDTO = null;
 		int attempts = 50;
 		while (--attempts > 0) {
-			iterator = ccrr.getService().getContainerDTOs(bundle).iterator();
+			iterator = ccr.getContainerDTOs(bundle).iterator();
 			if (iterator.hasNext()) {
 				containerDTO = iterator.next();
 				if (containerDTO != null) {
diff --git a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/base/HttpBaseTestCase.java b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/base/HttpBaseTestCase.java
index d3d03ef..741ac5f 100644
--- a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/base/HttpBaseTestCase.java
+++ b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/base/HttpBaseTestCase.java
@@ -21,25 +21,27 @@ import java.io.InputStream;
 import org.apache.http.HttpEntity;
 import org.apache.http.osgi.services.HttpClientBuilderFactory;
 import org.assertj.core.util.Arrays;
-import org.junit.Rule;
 import org.osgi.service.http.runtime.HttpServiceRuntime;
 import org.osgi.service.http.runtime.dto.ServletContextDTO;
 import org.osgi.service.http.runtime.dto.ServletDTO;
 import org.osgi.service.http.whiteboard.HttpWhiteboardConstants;
-import org.osgi.test.junit4.service.ServiceUseRule;
+import org.osgi.test.common.annotation.InjectService;
+import org.osgi.test.common.service.ServiceAware;
 
 public abstract class HttpBaseTestCase extends SlimBaseTestCase {
 
-	@Rule
-	public ServiceUseRule<HttpServiceRuntime> hsrr = new ServiceUseRule.Builder<HttpServiceRuntime>(HttpServiceRuntime.class, bcr).build();
-	@Rule
-	public ServiceUseRule<HttpClientBuilderFactory> hcbfr = new ServiceUseRule.Builder<HttpClientBuilderFactory>(HttpClientBuilderFactory.class, bcr).build();
+	@InjectService
+	public HttpServiceRuntime hsr;
+	@InjectService
+	public ServiceAware<HttpServiceRuntime> hsrSA;
+	@InjectService
+	public HttpClientBuilderFactory hcbf;
 
 	public String getHttpEndpoint() {
-		String[] endpoints = (String[])hsrr.getServiceReference().getProperty("osgi.http.endpoint");
+		String[] endpoints = (String[])hsrSA.getServiceReference().getProperty("osgi.http.endpoint");
 
 		if (endpoints == null || endpoints.length == 0) {
-			String port = (String)hsrr.getServiceReference().getProperty("org.osgi.service.http.port");
+			String port = (String)hsrSA.getServiceReference().getProperty("org.osgi.service.http.port");
 			return "http://localhost:" + port;
 		}
 
@@ -65,7 +67,7 @@ public abstract class HttpBaseTestCase extends SlimBaseTestCase {
 
 	public ServletDTO waitFor(String path, int intervals) throws InterruptedException {
 		for (int j = intervals; j > 0; j--) {
-			for (ServletContextDTO scDTO : hsrr.getService().getRuntimeDTO().servletContextDTOs) {
+			for (ServletContextDTO scDTO : hsr.getRuntimeDTO().servletContextDTOs) {
 				if (scDTO.name.equals(HttpWhiteboardConstants.HTTP_WHITEBOARD_DEFAULT_CONTEXT_NAME)) {
 					for (ServletDTO sDTO : scDTO.servletDTOs) {
 						if (Arrays.asList(sDTO.patterns).contains(path)) {
diff --git a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/base/JaxrsBaseTestCase.java b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/base/JaxrsBaseTestCase.java
index 209eb4e..99e5e6c 100644
--- a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/base/JaxrsBaseTestCase.java
+++ b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/base/JaxrsBaseTestCase.java
@@ -18,20 +18,22 @@ import java.util.Collection;
 
 import javax.ws.rs.client.ClientBuilder;
 
-import org.junit.Rule;
 import org.osgi.service.jaxrs.runtime.JaxrsServiceRuntime;
 import org.osgi.service.jaxrs.runtime.JaxrsServiceRuntimeConstants;
-import org.osgi.test.junit4.service.ServiceUseRule;
+import org.osgi.test.common.annotation.InjectService;
+import org.osgi.test.common.service.ServiceAware;
 
 public abstract class JaxrsBaseTestCase extends HttpBaseTestCase {
 
-	@Rule
-	public ServiceUseRule<JaxrsServiceRuntime> jsrr = new ServiceUseRule.Builder<JaxrsServiceRuntime>(JaxrsServiceRuntime.class, bcr).build();
-	@Rule
-	public ServiceUseRule<ClientBuilder> cbr = new ServiceUseRule.Builder<ClientBuilder>(ClientBuilder.class, bcr).build();
+	@InjectService
+	public JaxrsServiceRuntime jsr;
+	@InjectService
+	public ServiceAware<JaxrsServiceRuntime> jsrSA;
+	@InjectService
+	public ClientBuilder cb;
 
 	public String getJaxrsEndpoint() {
-		Object endpointsObj = jsrr.getServiceReference().getProperty(
+		Object endpointsObj = jsrSA.getServiceReference().getProperty(
 			JaxrsServiceRuntimeConstants.JAX_RS_SERVICE_ENDPOINT);
 
 		if (endpointsObj instanceof String) {
diff --git a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/jaxrs/ResourceTests.java b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/jaxrs/ResourceTests.java
index 8d72c90..9eb180a 100644
--- a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/jaxrs/ResourceTests.java
+++ b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/jaxrs/ResourceTests.java
@@ -21,7 +21,6 @@ import static org.junit.Assert.assertEquals;
 import java.util.concurrent.TimeUnit;
 
 import javax.ws.rs.client.Client;
-import javax.ws.rs.client.ClientBuilder;
 
 import org.apache.aries.cdi.test.cases.base.JaxrsBaseTestCase;
 import org.junit.After;
@@ -35,11 +34,11 @@ public class ResourceTests extends JaxrsBaseTestCase {
 	@Override
 	public void setUp() throws Exception {
 		super.setUp();
-		cdiBundle = bcr.installBundle("tb24.jar");
+		cdiBundle = installBundle.installBundle("tb24.jar");
 
 		int count = 100;
 		RuntimeDTO runtimeDTO;
-		while ((runtimeDTO = jsrr.getService().getRuntimeDTO()).defaultApplication.resourceDTOs.length < 1 && (count > 0)) {
+		while ((runtimeDTO = jsr.getRuntimeDTO()).defaultApplication.resourceDTOs.length < 1 && (count > 0)) {
 			count--;
 			Thread.sleep(100);
 		}
@@ -56,7 +55,6 @@ public class ResourceTests extends JaxrsBaseTestCase {
 
 	@Test
 	public void test() throws Exception {
-		final ClientBuilder cb = cbr.getService();
 		cb.connectTimeout(1000, TimeUnit.SECONDS);
 		cb.readTimeout(1000, TimeUnit.SECONDS);
 
diff --git a/cdi-itests/weld-itest.bndrun b/cdi-itests/weld-itest.bndrun
index 28e075a..f65f9e1 100644
--- a/cdi-itests/weld-itest.bndrun
+++ b/cdi-itests/weld-itest.bndrun
@@ -20,7 +20,7 @@
 -runblacklist: \
 	osgi.identity;filter:='(osgi.identity=*owb*)'
 -runbundles: \
-	biz.aQute.junit;version='[5.0.1,5.0.2)',\
+	assertj-core;version='[3.15.0,3.15.1)',\
 	jboss-classfilewriter;version='[1.2.4,1.2.5)',\
 	org.apache.aries.cdi.extender;version='[1.1.2,1.1.3)',\
 	org.apache.aries.cdi.extension.jaxrs;version='[1.1.2,1.1.3)',\
@@ -53,12 +53,13 @@
 	org.apache.geronimo.specs.geronimo-jcdi_2.0_spec;version='[1.1.0,1.1.1)',\
 	org.apache.httpcomponents.httpclient;version='[4.5.3,4.5.4)',\
 	org.apache.httpcomponents.httpcore;version='[4.4.6,4.4.7)',\
+	org.apache.servicemix.bundles.junit;version='[4.12.0,4.12.1)',\
 	org.jboss.logging.jboss-logging;version='[3.3.2,3.3.3)',\
 	org.jboss.spec.javax.ejb.jboss-ejb-api_3.2_spec;version='[2.0.0,2.0.1)',\
 	org.jboss.weld.osgi-bundle;version='[3.1.3,3.1.4)',\
 	org.osgi.service.cdi;version='[1.0.0,1.0.1)',\
 	org.osgi.service.jaxrs;version='[1.0.0,1.0.1)',\
-	org.osgi.test.common;version='[1.0.0,1.0.1)',\
-	org.osgi.test.junit4;version='[1.0.0,1.0.1)',\
+	org.osgi.test.common;version='[0.9.0,0.9.1)',\
+	org.osgi.test.junit4;version='[0.9.0,0.9.1)',\
 	org.osgi.util.function;version='[1.1.0,1.1.1)',\
-	org.osgi.util.promise;version='[1.1.0,1.1.1)'
\ No newline at end of file
+	org.osgi.util.promise;version='[1.1.0,1.1.1)'
diff --git a/pom.xml b/pom.xml
index b747edb..46774a5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -51,6 +51,7 @@
 		<mp.config.version>1.3</mp.config.version>
 		<mp.jwt.auth.version>1.1.1</mp.jwt.auth.version>
 		<mp.metrics.version>1.1.1</mp.metrics.version>
+		<osgi.test.version>0.9.0-SNAPSHOT</osgi.test.version>
 		<owb.version>2.0.13</owb.version>
 		<slf4j.version>1.7.28</slf4j.version>
 		<surefire.version>2.12</surefire.version>
@@ -241,6 +242,18 @@
 				<version>7.0.0</version>
 				<scope>provided</scope>
 			</dependency>
+			<dependency>
+				<groupId>org.osgi</groupId>
+				<artifactId>org.osgi.test.assertj</artifactId>
+				<version>${osgi.test.version}</version>
+				<scope>test</scope>
+			</dependency>
+			<dependency>
+				<groupId>org.osgi</groupId>
+				<artifactId>org.osgi.test.junit4</artifactId>
+				<version>${osgi.test.version}</version>
+				<scope>test</scope>
+			</dependency>
 		</dependencies>
 	</dependencyManagement>