Simplify the usage of the DA API:

- add a convience method to return the number of installed DPs;
- add a convience method to install a DP that closes the input stream after
  the DA is finished.



git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@1587474 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/deploymentadmin/itest/pom.xml b/deploymentadmin/itest/pom.xml
index 05e42d9..87f8c02 100644
--- a/deploymentadmin/itest/pom.xml
+++ b/deploymentadmin/itest/pom.xml
@@ -20,8 +20,8 @@
 	</parent>
 	<properties>
 		<osgi.version>4.2.0</osgi.version>
-		<pax.exam.version>3.1.0</pax.exam.version>
-		<pax.url.version>1.5.2</pax.url.version>
+		<pax.exam.version>3.4.0</pax.exam.version>
+		<pax.url.version>1.6.0</pax.url.version>
 	</properties>
 	<name>Apache Felix DeploymentAdmin Integration Tests</name>
 	<version>0.1.1-SNAPSHOT</version>
@@ -52,7 +52,7 @@
 		<dependency>
 			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.deploymentadmin</artifactId>
-			<version>0.9.6-SNAPSHOT</version>
+			<version>0.9.8-SNAPSHOT</version>
 			<scope>test</scope>
 		</dependency>
 		<dependency>
@@ -64,7 +64,7 @@
 		<dependency>
 			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.configadmin</artifactId>
-			<version>1.6.0</version>
+			<version>1.8.0</version>
 			<scope>test</scope>
 		</dependency>
 		<dependency>
diff --git a/deploymentadmin/itest/src/test/java/org/apache/felix/deploymentadmin/itest/BaseIntegrationTest.java b/deploymentadmin/itest/src/test/java/org/apache/felix/deploymentadmin/itest/BaseIntegrationTest.java
index eaa2796..8791f70 100644
--- a/deploymentadmin/itest/src/test/java/org/apache/felix/deploymentadmin/itest/BaseIntegrationTest.java
+++ b/deploymentadmin/itest/src/test/java/org/apache/felix/deploymentadmin/itest/BaseIntegrationTest.java
@@ -18,14 +18,11 @@
  */
 package org.apache.felix.deploymentadmin.itest;
 
-import static org.ops4j.pax.exam.CoreOptions.bootDelegationPackage;
-import static org.ops4j.pax.exam.CoreOptions.cleanCaches;
-import static org.ops4j.pax.exam.CoreOptions.junitBundles;
-import static org.ops4j.pax.exam.CoreOptions.mavenBundle;
-import static org.ops4j.pax.exam.CoreOptions.options;
 import static org.ops4j.pax.exam.CoreOptions.*;
 
 import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.util.ArrayList;
@@ -53,6 +50,7 @@
 import org.osgi.framework.wiring.FrameworkWiring;
 import org.osgi.service.deploymentadmin.DeploymentAdmin;
 import org.osgi.service.deploymentadmin.DeploymentException;
+import org.osgi.service.deploymentadmin.DeploymentPackage;
 import org.osgi.util.tracker.ServiceTracker;
 
 /**
@@ -68,7 +66,7 @@
     @Inject
     protected volatile BundleContext m_context;
     @Inject
-    protected volatile DeploymentAdmin m_deploymentAdmin;
+    private volatile DeploymentAdmin m_deploymentAdmin;
 
     protected volatile AtomicInteger m_gate = new AtomicInteger(0);
     protected volatile String m_testBundleBasePath;
@@ -177,6 +175,24 @@
         }
         return result;
     }
+    
+    protected final DeploymentPackage installDeploymentPackage(DeploymentPackageBuilder dpBuilder) throws Exception {
+        InputStream is = dpBuilder.generate();
+        try {
+            return m_deploymentAdmin.installDeploymentPackage(is);
+        } finally {
+            try {
+                is.close();
+            } catch (IOException e) {
+                // Nothing we can do about this, but log it...
+                e.printStackTrace();
+            }
+        }
+    }
+    
+    protected final int countDeploymentPackages() {
+        return m_deploymentAdmin.listDeploymentPackages().length;
+    }
 
     protected DeploymentPackageBuilder createNewDeploymentPackageBuilder(String version) {
         return createDeploymentPackageBuilder(String.format("itest%d", ++cnt), version);
diff --git a/deploymentadmin/itest/src/test/java/org/apache/felix/deploymentadmin/itest/CustomizerTest.java b/deploymentadmin/itest/src/test/java/org/apache/felix/deploymentadmin/itest/CustomizerTest.java
index 269b7bf..9d35fde 100644
--- a/deploymentadmin/itest/src/test/java/org/apache/felix/deploymentadmin/itest/CustomizerTest.java
+++ b/deploymentadmin/itest/src/test/java/org/apache/felix/deploymentadmin/itest/CustomizerTest.java
@@ -51,7 +51,7 @@
             .add(dpBuilder.createResource().setResourceProcessorPID(TEST_FAILING_BUNDLE_RP1).setUrl(getTestResource("test-config1.xml")))
             .add(dpBuilder.createBundleResource().setUrl(getTestBundle("bundle3")));
 
-        DeploymentPackage dp = m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+        DeploymentPackage dp = installDeploymentPackage(dpBuilder);
         assertNotNull("No deployment package returned?!", dp);
 
         awaitRefreshPackagesEvent();
@@ -60,7 +60,7 @@
         assertBundleExists(getSymbolicName("rp1"), "1.0.0");
         assertBundleExists(getSymbolicName("bundle3"), "1.0.0");
 
-        assertEquals("Expected a single deployment package?!", 1, m_deploymentAdmin.listDeploymentPackages().length);
+        assertEquals("Expected a single deployment package?!", 1, countDeploymentPackages());
     }
 
     /**
@@ -76,7 +76,7 @@
             .add(dpBuilder.createResource().setResourceProcessorPID(TEST_FAILING_BUNDLE_RP1).setUrl(getTestResource("test-config1.xml")));
 
         try {
-            m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+            installDeploymentPackage(dpBuilder);
             fail("Succeeded into installing a failing deployment package?!");
         }
         catch (DeploymentException exception) {
@@ -86,7 +86,7 @@
 
         assertTrue("No bundles should be started!", getCurrentBundles().isEmpty());
 
-        assertEquals("Expected no deployment package?!", 0, m_deploymentAdmin.listDeploymentPackages().length);
+        assertEquals("Expected no deployment package?!", 0, countDeploymentPackages());
     }
 
     /**
@@ -102,7 +102,7 @@
             .add(dpBuilder.createResource().setResourceProcessorPID(TEST_FAILING_BUNDLE_RP1).setUrl(getTestResource("test-config1.xml")));
 
         try {
-            m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+            installDeploymentPackage(dpBuilder);
             fail("Succeeded into installing a failing deployment package?!");
         }
         catch (DeploymentException exception) {
@@ -112,7 +112,7 @@
 
         assertTrue("No bundles should be started!", getCurrentBundles().isEmpty());
 
-        assertEquals("Expected no deployment package?!", 0, m_deploymentAdmin.listDeploymentPackages().length);
+        assertEquals("Expected no deployment package?!", 0, countDeploymentPackages());
     }
 
     /**
@@ -127,14 +127,14 @@
             .add(dpBuilder.createResourceProcessorResource().setUrl(getTestBundle("rp1")))
             .add(dpBuilder.createResource().setResourceProcessorPID(TEST_FAILING_BUNDLE_RP1).setUrl(getTestResource("test-config1.xml")));
 
-        DeploymentPackage dp = m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+        DeploymentPackage dp = installDeploymentPackage(dpBuilder);
         assertNotNull("No deployment package returned?!", dp);
 
         awaitRefreshPackagesEvent();
 
         assertTrue("One bundle should be started!", getCurrentBundles().size() == 1);
 
-        assertEquals("Expected no deployment package?!", 1, m_deploymentAdmin.listDeploymentPackages().length);
+        assertEquals("Expected no deployment package?!", 1, countDeploymentPackages());
     }
 
     /**
@@ -151,7 +151,7 @@
             .add(dpBuilder.createBundleResource().setUrl(getTestBundle("bundle3")));
 
         try {
-            m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+            installDeploymentPackage(dpBuilder);
             fail("Succeeded into installing a failing RP?!");
         }
         catch (DeploymentException exception) {
@@ -159,7 +159,7 @@
             assertDeploymentException(CODE_OTHER_ERROR, exception);
         }
 
-        assertEquals("Expected no deployment package?!", 0, m_deploymentAdmin.listDeploymentPackages().length);
+        assertEquals("Expected no deployment package?!", 0, countDeploymentPackages());
         assertTrue("Expected no artifacts to be installed?!", getCurrentBundles().isEmpty());
     }
 
@@ -172,11 +172,11 @@
         dpBuilder
             .add(dpBuilder.createResourceProcessorResource().setUrl(getTestBundle("rp1")));
 
-        m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+        installDeploymentPackage(dpBuilder);
 
         awaitRefreshPackagesEvent();
         
-        assertEquals("Expected no deployment package?!", 1, m_deploymentAdmin.listDeploymentPackages().length);
+        assertEquals("Expected no deployment package?!", 1, countDeploymentPackages());
         assertBundleExists(getSymbolicName("rp1"), "1.0.0");
 
         dpBuilder = createNewDeploymentPackageBuilder("1.0.0");
@@ -185,7 +185,7 @@
             .add(dpBuilder.createResource().setResourceProcessorPID(TEST_FAILING_BUNDLE_RP1).setUrl(getTestResource("test-config1.xml")));
 
         try {
-            m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+            installDeploymentPackage(dpBuilder);
             fail("Succeeded into installing a resource with an non-existing RP?!");
         }
         catch (DeploymentException exception) {
@@ -193,7 +193,7 @@
             assertDeploymentException(CODE_FOREIGN_CUSTOMIZER, exception);
         }
 
-        assertEquals("Expected no deployment package?!", 1, m_deploymentAdmin.listDeploymentPackages().length);
+        assertEquals("Expected no deployment package?!", 1, countDeploymentPackages());
         assertTrue("Expected no additional artifacts to be installed?!", getCurrentBundles().size() == 1);
     }
 
@@ -208,7 +208,7 @@
             .add(dpBuilder.createResource().setResourceProcessorPID("my.unknown.rp").setUrl(getTestResource("test-config1.xml")));
 
         try {
-            m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+            installDeploymentPackage(dpBuilder);
             fail("Succeeded into installing a resource with an non-existing RP?!");
         }
         catch (DeploymentException exception) {
@@ -216,7 +216,7 @@
             assertDeploymentException(CODE_PROCESSOR_NOT_FOUND, exception);
         }
 
-        assertEquals("Expected no deployment package?!", 0, m_deploymentAdmin.listDeploymentPackages().length);
+        assertEquals("Expected no deployment package?!", 0, countDeploymentPackages());
         assertTrue("Expected no artifacts to be installed?!", getCurrentBundles().isEmpty());
     }
 
diff --git a/deploymentadmin/itest/src/test/java/org/apache/felix/deploymentadmin/itest/DeploymentAdminEventTest.java b/deploymentadmin/itest/src/test/java/org/apache/felix/deploymentadmin/itest/DeploymentAdminEventTest.java
index 95996a6..8af682d 100644
--- a/deploymentadmin/itest/src/test/java/org/apache/felix/deploymentadmin/itest/DeploymentAdminEventTest.java
+++ b/deploymentadmin/itest/src/test/java/org/apache/felix/deploymentadmin/itest/DeploymentAdminEventTest.java
@@ -82,7 +82,7 @@
 
         try
         {
-            m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+            installDeploymentPackage(dpBuilder);
             fail("DeploymentException expected!");
         }
         catch (DeploymentException e)
@@ -146,7 +146,7 @@
 
         try
         {
-            m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+            installDeploymentPackage(dpBuilder);
 
             assertTrue("Not all events were received in time?!", cdl.await(5, TimeUnit.SECONDS));
             
@@ -198,7 +198,7 @@
             }
         };
 
-        DeploymentPackage dp = m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+        DeploymentPackage dp = installDeploymentPackage(dpBuilder);
         assertNotNull(dp);
         
         awaitRefreshPackagesEvent();
@@ -263,7 +263,7 @@
             }
         };
 
-        DeploymentPackage dp = m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+        DeploymentPackage dp = installDeploymentPackage(dpBuilder);
         assertNotNull("No deployment package returned?!", dp);
 
         awaitRefreshPackagesEvent();
diff --git a/deploymentadmin/itest/src/test/java/org/apache/felix/deploymentadmin/itest/DeploymentAdminTest.java b/deploymentadmin/itest/src/test/java/org/apache/felix/deploymentadmin/itest/DeploymentAdminTest.java
index 0b31972..adfc51a 100644
--- a/deploymentadmin/itest/src/test/java/org/apache/felix/deploymentadmin/itest/DeploymentAdminTest.java
+++ b/deploymentadmin/itest/src/test/java/org/apache/felix/deploymentadmin/itest/DeploymentAdminTest.java
@@ -48,7 +48,7 @@
             );
         
         try {
-            m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+            installDeploymentPackage(dpBuilder);
             fail("Succeeded into installing a bundle with a fake symbolic name?!");
         }
         catch (DeploymentException exception) {
@@ -70,7 +70,7 @@
             );
         
         try {
-            m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+            installDeploymentPackage(dpBuilder);
             fail("Succeeded into installing a bundle with a fake version?!");
         }
         catch (DeploymentException exception) {
@@ -92,7 +92,7 @@
             );
         
         try {
-            m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+            installDeploymentPackage(dpBuilder);
             fail("Succeeded into installing a bundle with a fake symbolic name?!");
         }
         catch (DeploymentException exception) {
@@ -114,7 +114,7 @@
             );
         
         try {
-            m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+            installDeploymentPackage(dpBuilder);
             fail("Succeeded into installing a bundle with a fake version?!");
         }
         catch (DeploymentException exception) {
diff --git a/deploymentadmin/itest/src/test/java/org/apache/felix/deploymentadmin/itest/InstallDeploymentPackageTest.java b/deploymentadmin/itest/src/test/java/org/apache/felix/deploymentadmin/itest/InstallDeploymentPackageTest.java
index e2d3e09..51f1bf0 100644
--- a/deploymentadmin/itest/src/test/java/org/apache/felix/deploymentadmin/itest/InstallDeploymentPackageTest.java
+++ b/deploymentadmin/itest/src/test/java/org/apache/felix/deploymentadmin/itest/InstallDeploymentPackageTest.java
@@ -47,7 +47,7 @@
 
         try
         {
-            m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+            installDeploymentPackage(dpBuilder);
             fail("DeploymentException expected!");
         }
         catch (DeploymentException e)
@@ -72,7 +72,7 @@
             .add(dpBuilder.createBundleResource().setUrl(getTestBundle("bundleapi1", "bundleapi1", "1.0.0")).setFilename("bundles/bundleapi1.jar"))
             .add(dpBuilder.createBundleResource().setUrl(getTestBundle("bundleimpl1", "bundleimpl1", "1.0.0")).setFilename("bundles/bundleimpl1.jar"));
 
-        DeploymentPackage dp = m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+        DeploymentPackage dp = installDeploymentPackage(dpBuilder);
         assertNotNull(dp);
 
         BundleInfo[] bundleInfos = dp.getBundleInfos();
@@ -93,7 +93,7 @@
         // missing bundle1 as dependency...
         dpBuilder.add(dpBuilder.createBundleResource().setUrl(getTestBundle("bundle2")));
 
-        DeploymentPackage dp1 = m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+        DeploymentPackage dp1 = installDeploymentPackage(dpBuilder);
         assertNotNull("No deployment package returned?!", dp1);
 
         awaitRefreshPackagesEvent();
@@ -108,7 +108,7 @@
             .add(dpBuilder.createBundleResource().setUrl(getTestBundle("bundle2")))
             .add(dpBuilder.createBundleResource().setUrl(getTestBundle("bundle1")));
 
-        DeploymentPackage dp2 = m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+        DeploymentPackage dp2 = installDeploymentPackage(dpBuilder);
         assertNotNull("No deployment package returned?!", dp2);
 
         awaitRefreshPackagesEvent();
@@ -126,7 +126,7 @@
         DeploymentPackageBuilder dpBuilder = createNewDeploymentPackageBuilder("1.0.0");
         dpBuilder.add(dpBuilder.createBundleResource().setUrl(getTestBundle("bundle2")));
 
-        DeploymentPackage dp1 = m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+        DeploymentPackage dp1 = installDeploymentPackage(dpBuilder);
         assertNotNull("No deployment package returned?!", dp1);
 
         awaitRefreshPackagesEvent();
@@ -142,7 +142,7 @@
         // as missing bundle1...
         dpBuilder.add(dpBuilder.createBundleResource().setUrl(getTestBundle("bundle1")));
 
-        DeploymentPackage dp2 = m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+        DeploymentPackage dp2 = installDeploymentPackage(dpBuilder);
         assertNotNull("No deployment package returned?!", dp2);
 
         awaitRefreshPackagesEvent();
@@ -170,7 +170,7 @@
             .add(dpBuilder.createBundleResource().setUrl(getTestBundle("bundle1")))
             .add(dpBuilder.createBundleResource().setUrl(getTestBundle("bundle3")));
 
-        DeploymentPackage dp = m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+        DeploymentPackage dp = installDeploymentPackage(dpBuilder);
         assertNotNull("No deployment package returned?!", dp);
 
         awaitRefreshPackagesEvent();
@@ -182,7 +182,7 @@
         // the bundle threw an exception during start, so it is not active...
         assertFalse(isBundleActive(dp.getBundle(getSymbolicName("bundle3"))));
 
-        assertEquals("Expected a single deployment package?!", 1, m_deploymentAdmin.listDeploymentPackages().length);
+        assertEquals("Expected a single deployment package?!", 1, countDeploymentPackages());
     }
 
     /**
@@ -196,7 +196,7 @@
             .add(dpBuilder.createBundleResource().setUrl(getTestBundle("bundle1")))
             .add(dpBuilder.createBundleResource().setUrl(getTestBundle("fragment1")));
 
-        DeploymentPackage dp = m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+        DeploymentPackage dp = installDeploymentPackage(dpBuilder);
         assertNotNull("No deployment package returned?!", dp);
 
         awaitRefreshPackagesEvent();
@@ -207,7 +207,7 @@
         assertTrue(isBundleActive(dp.getBundle(getSymbolicName("bundle1"))));
         assertFalse(isBundleActive(dp.getBundle(getSymbolicName("fragment1"))));
 
-        assertEquals("Expected a single deployment package?!", 1, m_deploymentAdmin.listDeploymentPackages().length);
+        assertEquals("Expected a single deployment package?!", 1, countDeploymentPackages());
     }
 
     /**
@@ -219,7 +219,7 @@
         DeploymentPackageBuilder dpBuilder = createNewDeploymentPackageBuilder("1.0.0");
         dpBuilder.add(dpBuilder.createBundleResource().setUrl(getTestBundle("bundle2")));
 
-        DeploymentPackage dp = m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+        DeploymentPackage dp = installDeploymentPackage(dpBuilder);
         assertNotNull("No deployment package returned?!", dp);
 
         awaitRefreshPackagesEvent();
@@ -244,7 +244,7 @@
             .add(dpBuilder.createResource().setResourceProcessorPID(TEST_FAILING_BUNDLE_RP1).setUrl(getTestResource("test-config1.xml")))
             .add(dpBuilder.createBundleResource().setUrl(getTestBundle("bundle3")));
 
-        DeploymentPackage dp = m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+        DeploymentPackage dp = installDeploymentPackage(dpBuilder);
         assertNotNull("No deployment package returned?!", dp);
 
         awaitRefreshPackagesEvent();
@@ -253,7 +253,7 @@
         assertBundleExists(getSymbolicName("rp1"), "1.0.0");
         assertBundleExists(getSymbolicName("bundle3"), "1.0.0");
 
-        assertEquals("Expected a single deployment package?!", 1, m_deploymentAdmin.listDeploymentPackages().length);
+        assertEquals("Expected a single deployment package?!", 1, countDeploymentPackages());
     }
 
     /**
@@ -265,7 +265,7 @@
         DeploymentPackageBuilder dpBuilder = createNewDeploymentPackageBuilder("1.0.0");
         dpBuilder.add(dpBuilder.createBundleResource().setUrl(getTestBundle("bundle1")));
 
-        DeploymentPackage dp = m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+        DeploymentPackage dp = installDeploymentPackage(dpBuilder);
         assertNotNull("No deployment package returned?!", dp);
 
         awaitRefreshPackagesEvent();
@@ -287,7 +287,7 @@
             .add(dpBuilder.createBundleResource().setUrl(getTestBundle("bundle1")))
             .add(dpBuilder.createBundleResource().setUrl(getTestBundle("bundle2")));
 
-        DeploymentPackage dp = m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+        DeploymentPackage dp = installDeploymentPackage(dpBuilder);
         assertNotNull("No deployment package returned?!", dp);
 
         awaitRefreshPackagesEvent();
@@ -312,7 +312,7 @@
             .add(dpBuilder.createBundleResource().setUrl(getTestBundle("bundle1")))
             .add(dpBuilder.createBundleResource().setUrl(getTestBundle("bundle3")));
 
-        DeploymentPackage dp = m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+        DeploymentPackage dp = installDeploymentPackage(dpBuilder);
         assertNotNull("No deployment package returned?!", dp);
 
         awaitRefreshPackagesEvent();
@@ -326,7 +326,7 @@
             .add(dpBuilder.createBundleResource().setUrl(getTestBundle("bundle1")))
             .add(dpBuilder.createBundleResource().setUrl(getTestBundle("bundle2")));
 
-        dp = m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+        dp = installDeploymentPackage(dpBuilder);
         assertNotNull("No deployment package returned?!", dp);
 
         assertBundleExists(getSymbolicName("bundle1"), "1.0.0");
@@ -336,7 +336,7 @@
         assertTrue(isBundleActive(dp.getBundle(getSymbolicName("bundle1"))));
         assertTrue(isBundleActive(dp.getBundle(getSymbolicName("bundle2"))));
 
-        assertEquals("Expected a single deployment package?!", 1, m_deploymentAdmin.listDeploymentPackages().length);
+        assertEquals("Expected a single deployment package?!", 1, countDeploymentPackages());
     }
 
     /**
@@ -350,7 +350,7 @@
             .add(dpBuilder.createBundleResource().setUrl(getTestBundle("bundle1")))
             .add(dpBuilder.createBundleResource().setUrl(getTestBundle("bundle3")));
 
-        DeploymentPackage dp = m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+        DeploymentPackage dp = installDeploymentPackage(dpBuilder);
         assertNotNull("No deployment package returned?!", dp);
 
         awaitRefreshPackagesEvent();
@@ -365,7 +365,7 @@
             .add(dpBuilder.createBundleResource().setUrl(getTestBundle("bundle2")))
             .add(dpBuilder.createBundleResource().setUrl(getTestBundle("bundle3")));
 
-        dp = m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+        dp = installDeploymentPackage(dpBuilder);
         assertNotNull("No deployment package returned?!", dp);
 
         assertBundleExists(getSymbolicName("bundle1"), "1.0.0");
@@ -376,6 +376,6 @@
         assertTrue(isBundleActive(dp.getBundle(getSymbolicName("bundle2"))));
         assertTrue(isBundleActive(dp.getBundle(getSymbolicName("bundle3"))));
 
-        assertEquals("Expected a single deployment package?!", 1, m_deploymentAdmin.listDeploymentPackages().length);
+        assertEquals("Expected a single deployment package?!", 1, countDeploymentPackages());
     }
 }
diff --git a/deploymentadmin/itest/src/test/java/org/apache/felix/deploymentadmin/itest/InstallFixPackageTest.java b/deploymentadmin/itest/src/test/java/org/apache/felix/deploymentadmin/itest/InstallFixPackageTest.java
index cb9762c..65a9801 100644
--- a/deploymentadmin/itest/src/test/java/org/apache/felix/deploymentadmin/itest/InstallFixPackageTest.java
+++ b/deploymentadmin/itest/src/test/java/org/apache/felix/deploymentadmin/itest/InstallFixPackageTest.java
@@ -48,7 +48,7 @@
         DeploymentPackageBuilder dpBuilder = createNewDeploymentPackageBuilder("1.0.0");
         dpBuilder.add(dpBuilder.createBundleResource().setUrl(getTestBundle("bundle2")));
 
-        DeploymentPackage dp1 = m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+        DeploymentPackage dp1 = installDeploymentPackage(dpBuilder);
         assertNotNull("No deployment package returned?!", dp1);
 
         awaitRefreshPackagesEvent();
@@ -61,7 +61,7 @@
         dpBuilder = createDeploymentPackageBuilder(dpBuilder.getSymbolicName(), "1.0.1");
         dpBuilder.setFixPackage("[1.0,2.0)").add(dpBuilder.createBundleResource().setUrl(getTestBundle("bundle1"))).add(dpBuilder.createBundleResource().setUrl(getTestBundle("bundle2")).setMissing());
 
-        DeploymentPackage dp2 = m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+        DeploymentPackage dp2 = installDeploymentPackage(dpBuilder);
         assertNotNull("No deployment package returned?!", dp2);
 
         awaitRefreshPackagesEvent();
@@ -84,7 +84,7 @@
         DeploymentPackageBuilder dpBuilder = createNewDeploymentPackageBuilder("1.0.0");
         dpBuilder.add(dpBuilder.createBundleResource().setUrl(getTestBundle("bundle2")));
 
-        DeploymentPackage dp1 = m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+        DeploymentPackage dp1 = installDeploymentPackage(dpBuilder);
         assertNotNull("No deployment package returned?!", dp1);
 
         awaitRefreshPackagesEvent();
@@ -100,7 +100,7 @@
 
         try
         {
-            m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+            installDeploymentPackage(dpBuilder);
             fail("Succeeded into installing fix package for undefined target package?!");
         }
         catch (DeploymentException exception)
@@ -119,7 +119,7 @@
         DeploymentPackageBuilder dpBuilder = createNewDeploymentPackageBuilder("1.0.0");
         dpBuilder.add(dpBuilder.createBundleResource().setUrl(getTestBundle("bundle2")));
 
-        DeploymentPackage dp1 = m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+        DeploymentPackage dp1 = installDeploymentPackage(dpBuilder);
         assertNotNull("No deployment package returned?!", dp1);
 
         awaitRefreshPackagesEvent();
@@ -135,7 +135,7 @@
 
         try
         {
-            m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+            installDeploymentPackage(dpBuilder);
             fail("Succeeded into installing fix package for undefined target package?!");
         }
         catch (DeploymentException exception)
@@ -156,7 +156,7 @@
 
         try
         {
-            m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+            installDeploymentPackage(dpBuilder);
             fail("Should not be able to install fix package without target?!");
         }
         catch (DeploymentException exception)
@@ -175,22 +175,22 @@
         DeploymentPackageBuilder dpBuilder = createNewDeploymentPackageBuilder("1.0.0");
         dpBuilder.add(dpBuilder.createBundleResource().setUrl(getTestBundle("bundle2")));
 
-        DeploymentPackage dp1 = m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+        DeploymentPackage dp1 = installDeploymentPackage(dpBuilder);
         assertNotNull("No deployment package returned?!", dp1);
 
-        assertEquals("Expected only a single deployment package?!", 1, m_deploymentAdmin.listDeploymentPackages().length);
+        assertEquals("Expected only a single deployment package?!", 1, countDeploymentPackages());
 
         awaitRefreshPackagesEvent();
 
         dpBuilder = createDeploymentPackageBuilder(dpBuilder.getSymbolicName(), "1.0.1");
         dpBuilder.setFixPackage("[1.0,2.0)").add(dpBuilder.createBundleResource().setUrl(getTestBundle("bundle1"))).add(dpBuilder.createBundleResource().setUrl(getTestBundle("bundle2")).setMissing());
 
-        DeploymentPackage dp2 = m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+        DeploymentPackage dp2 = installDeploymentPackage(dpBuilder);
         assertNotNull("No deployment package returned?!", dp2);
 
         awaitRefreshPackagesEvent();
 
-        assertEquals("Expected only a single deployment package?!", 1, m_deploymentAdmin.listDeploymentPackages().length);
+        assertEquals("Expected only a single deployment package?!", 1, countDeploymentPackages());
     }
 
     /**
@@ -203,10 +203,10 @@
         // missed valid-bundle1 as dependency...
         dpBuilder.add(dpBuilder.createBundleResource().setUrl(getTestBundle("bundle1")));
 
-        DeploymentPackage dp1 = m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+        DeploymentPackage dp1 = installDeploymentPackage(dpBuilder);
         assertNotNull("No deployment package returned?!", dp1);
 
-        assertEquals("Expected only a single deployment package?!", 1, m_deploymentAdmin.listDeploymentPackages().length);
+        assertEquals("Expected only a single deployment package?!", 1, countDeploymentPackages());
 
         awaitRefreshPackagesEvent();
 
@@ -215,7 +215,7 @@
 
         try
         {
-            m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+            installDeploymentPackage(dpBuilder);
             fail("Succeeded into installing a fix-package with a missing bundle on target?!");
         }
         catch (DeploymentException exception)
@@ -233,10 +233,10 @@
         DeploymentPackageBuilder dpBuilder = createNewDeploymentPackageBuilder("1.0.0");
         dpBuilder.add(dpBuilder.createBundleResource().setUrl(getTestBundle("bundle1")));
 
-        DeploymentPackage dp1 = m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+        DeploymentPackage dp1 = installDeploymentPackage(dpBuilder);
         assertNotNull("No deployment package returned?!", dp1);
 
-        assertEquals("Expected only a single deployment package?!", 1, m_deploymentAdmin.listDeploymentPackages().length);
+        assertEquals("Expected only a single deployment package?!", 1, countDeploymentPackages());
 
         awaitRefreshPackagesEvent();
 
@@ -246,7 +246,7 @@
 
         try
         {
-            m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+            installDeploymentPackage(dpBuilder);
             fail("Succeeded into installing a fix-package with a missing bundle on target?!");
         }
         catch (DeploymentException exception)
@@ -264,10 +264,10 @@
         DeploymentPackageBuilder dpBuilder = createNewDeploymentPackageBuilder("1.0.0");
         dpBuilder.add(dpBuilder.createBundleResource().setUrl(getTestBundle("bundle1")));
 
-        DeploymentPackage dp1 = m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+        DeploymentPackage dp1 = installDeploymentPackage(dpBuilder);
         assertNotNull("No deployment package returned?!", dp1);
 
-        assertEquals("Expected only a single deployment package?!", 1, m_deploymentAdmin.listDeploymentPackages().length);
+        assertEquals("Expected only a single deployment package?!", 1, countDeploymentPackages());
 
         awaitRefreshPackagesEvent();
 
@@ -277,7 +277,7 @@
 
         try
         {
-            m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+            installDeploymentPackage(dpBuilder);
             fail("Succeeded into installing a fix-package with a missing bundle on target?!");
         }
         catch (DeploymentException exception)
@@ -295,29 +295,29 @@
         DeploymentPackageBuilder dpBuilder = createNewDeploymentPackageBuilder("1.0.0");
         dpBuilder.add(dpBuilder.createBundleResource().setUrl(getTestBundle("bundle1")));
 
-        DeploymentPackage dp1 = m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+        DeploymentPackage dp1 = installDeploymentPackage(dpBuilder);
         assertNotNull("No deployment package returned?!", dp1);
 
         awaitRefreshPackagesEvent();
 
-        assertEquals("Expected only a single deployment package?!", 1, m_deploymentAdmin.listDeploymentPackages().length);
+        assertEquals("Expected only a single deployment package?!", 1, countDeploymentPackages());
 
         dpBuilder = createNewDeploymentPackageBuilder("1.0.0");
         dpBuilder.add(dpBuilder.createBundleResource().setUrl(getTestBundle("bundle2")));
 
-        DeploymentPackage dp2 = m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+        DeploymentPackage dp2 = installDeploymentPackage(dpBuilder);
         assertNotNull("No deployment package returned?!", dp2);
 
         awaitRefreshPackagesEvent();
 
-        assertEquals("Expected only a single deployment package?!", 2, m_deploymentAdmin.listDeploymentPackages().length);
+        assertEquals("Expected only a single deployment package?!", 2, countDeploymentPackages());
 
         dpBuilder = createDeploymentPackageBuilder(dpBuilder.getSymbolicName(), "1.0.1");
         dpBuilder.setFixPackage("[1.0,2.0)").add(dpBuilder.createBundleResource().setUrl(getTestBundle("bundle1")).setMissing()).add(dpBuilder.createBundleResource().setUrl(getTestBundle("bundle3")));
 
         try
         {
-            m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+            installDeploymentPackage(dpBuilder);
             fail("Succeeded into installing a fix-package with a missing bundle on target?!");
         }
         catch (DeploymentException exception)
@@ -335,7 +335,7 @@
         DeploymentPackageBuilder dpBuilder = createNewDeploymentPackageBuilder("1.0.0");
         dpBuilder.add(dpBuilder.createBundleResource().setUrl(getTestBundle("bundle2")));
 
-        DeploymentPackage dp1 = m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+        DeploymentPackage dp1 = installDeploymentPackage(dpBuilder);
         assertNotNull("No deployment package returned?!", dp1);
 
         awaitRefreshPackagesEvent();
@@ -350,7 +350,7 @@
 
         try
         {
-            m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+            installDeploymentPackage(dpBuilder);
             fail("Failed to install missing bundle?!");
         }
         catch (DeploymentException exception)
@@ -369,7 +369,7 @@
         DeploymentPackageBuilder dpBuilder = createNewDeploymentPackageBuilder("1.0.0");
         dpBuilder.add(dpBuilder.createBundleResource().setUrl(getTestBundle("bundle1"))).add(dpBuilder.createBundleResource().setUrl(getTestBundle("bundle2")));
 
-        DeploymentPackage dp1 = m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+        DeploymentPackage dp1 = installDeploymentPackage(dpBuilder);
         assertNotNull("No deployment package returned?!", dp1);
 
         awaitRefreshPackagesEvent();
@@ -383,7 +383,7 @@
         dpBuilder = createDeploymentPackageBuilder(dpBuilder.getSymbolicName(), "1.0.1");
         dpBuilder.setFixPackage("[1.0,2.0)").add(dpBuilder.createBundleResource().setUrl(getTestBundle("bundle1")).setMissing());
 
-        DeploymentPackage dp2 = m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+        DeploymentPackage dp2 = installDeploymentPackage(dpBuilder);
         assertNotNull("No deployment package returned?!", dp2);
 
         awaitRefreshPackagesEvent();
@@ -401,7 +401,7 @@
         DeploymentPackageBuilder dpBuilder = createNewDeploymentPackageBuilder("1.0.0");
         dpBuilder.add(dpBuilder.createBundleResource().setUrl(getTestBundle("bundle2")));
 
-        DeploymentPackage dp1 = m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+        DeploymentPackage dp1 = installDeploymentPackage(dpBuilder);
         assertNotNull("No deployment package returned?!", dp1);
 
         awaitRefreshPackagesEvent();
@@ -410,12 +410,12 @@
         dpBuilder = createDeploymentPackageBuilder(dpBuilder.getSymbolicName(), "1.0.1");
         dpBuilder.setFixPackage("[1.0,2.0)").add(dpBuilder.createBundleResource().setUrl(getTestBundle("bundle1"))).add(dpBuilder.createBundleResource().setUrl(getTestBundle("bundle2")).setMissing());
 
-        DeploymentPackage dp2 = m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+        DeploymentPackage dp2 = installDeploymentPackage(dpBuilder);
         assertNotNull("No deployment package returned?!", dp2);
 
         awaitRefreshPackagesEvent();
 
-        assertEquals("Expected a single deployment package?!", 1, m_deploymentAdmin.listDeploymentPackages().length);
+        assertEquals("Expected a single deployment package?!", 1, countDeploymentPackages());
 
         assertBundleExists(getSymbolicName("bundle1"), "1.0.0");
         assertBundleExists(getSymbolicName("bundle2"), "1.0.0");
@@ -425,7 +425,7 @@
 
         awaitRefreshPackagesEvent();
 
-        assertEquals("Expected no deployment package?!", 0, m_deploymentAdmin.listDeploymentPackages().length);
+        assertEquals("Expected no deployment package?!", 0, countDeploymentPackages());
 
         // None of our installed bundles should remain...
         assertBundleNotExists(getSymbolicName("bundle1"), "1.0.0");
@@ -441,7 +441,7 @@
         DeploymentPackageBuilder dpBuilder = createNewDeploymentPackageBuilder("1.0.0");
         dpBuilder.add(dpBuilder.createBundleResource().setUrl(getTestBundle("bundle1"))).add(dpBuilder.createBundleResource().setUrl(getTestBundle("bundle2")));
 
-        DeploymentPackage dp1 = m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+        DeploymentPackage dp1 = installDeploymentPackage(dpBuilder);
         assertNotNull("No deployment package returned?!", dp1);
 
         awaitRefreshPackagesEvent();
@@ -450,12 +450,12 @@
         dpBuilder = createDeploymentPackageBuilder(dpBuilder.getSymbolicName(), "1.0.1");
         dpBuilder.setFixPackage("[1.0,2.0)").add(dpBuilder.createBundleResource().setUrl(getTestBundle("bundle1")));
 
-        DeploymentPackage dp2 = m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+        DeploymentPackage dp2 = installDeploymentPackage(dpBuilder);
         assertNotNull("No deployment package returned?!", dp2);
 
         awaitRefreshPackagesEvent();
 
-        assertEquals("Expected a single deployment package?!", 1, m_deploymentAdmin.listDeploymentPackages().length);
+        assertEquals("Expected a single deployment package?!", 1, countDeploymentPackages());
 
         assertBundleExists(getSymbolicName("bundle1"), "1.0.0");
         assertBundleNotExists(getSymbolicName("bundle2"), "1.0.0");
@@ -465,7 +465,7 @@
 
         awaitRefreshPackagesEvent();
 
-        assertEquals("Expected no deployment package?!", 0, m_deploymentAdmin.listDeploymentPackages().length);
+        assertEquals("Expected no deployment package?!", 0, countDeploymentPackages());
 
         // None of our installed bundles should remain...
         assertBundleNotExists(getSymbolicName("bundle1"), "1.0.0");
@@ -481,31 +481,31 @@
         DeploymentPackageBuilder dpBuilder = createNewDeploymentPackageBuilder("1.0.0");
         dpBuilder.add(dpBuilder.createBundleResource().setUrl(getTestBundle("bundle1")));
 
-        DeploymentPackage dp1 = m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+        DeploymentPackage dp1 = installDeploymentPackage(dpBuilder);
         assertNotNull("No deployment package returned?!", dp1);
 
-        assertEquals("Expected a single deployment package?!", 1, m_deploymentAdmin.listDeploymentPackages().length);
+        assertEquals("Expected a single deployment package?!", 1, countDeploymentPackages());
 
         dpBuilder = createNewDeploymentPackageBuilder("1.0.0");
         dpBuilder.add(dpBuilder.createBundleResource().setUrl(getTestBundle("bundle2")));
 
-        DeploymentPackage dp2 = m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+        DeploymentPackage dp2 = installDeploymentPackage(dpBuilder);
         assertNotNull("No deployment package returned?!", dp2);
 
         awaitRefreshPackagesEvent();
 
-        assertEquals("Expected two deployment packages?!", 2, m_deploymentAdmin.listDeploymentPackages().length);
+        assertEquals("Expected two deployment packages?!", 2, countDeploymentPackages());
 
         // add bundle2 through fix package...
         dpBuilder = createDeploymentPackageBuilder(dpBuilder.getSymbolicName(), "1.0.1");
         dpBuilder.setFixPackage("[1.0,2.0)").add(dpBuilder.createBundleResource().setUrl(getTestBundle("bundle3"))).add(dpBuilder.createBundleResource().setUrl(getTestBundle("bundle2")).setMissing());
 
-        DeploymentPackage dp3 = m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+        DeploymentPackage dp3 = installDeploymentPackage(dpBuilder);
         assertNotNull("No deployment package returned?!", dp3);
 
         awaitRefreshPackagesEvent();
 
-        assertEquals("Expected two deployment packages?!", 2, m_deploymentAdmin.listDeploymentPackages().length);
+        assertEquals("Expected two deployment packages?!", 2, countDeploymentPackages());
 
         assertBundleExists(getSymbolicName("bundle1"), "1.0.0");
         assertBundleExists(getSymbolicName("bundle2"), "1.0.0");
@@ -516,7 +516,7 @@
 
         awaitRefreshPackagesEvent();
 
-        assertEquals("Expected a single deployment package?!", 1, m_deploymentAdmin.listDeploymentPackages().length);
+        assertEquals("Expected a single deployment package?!", 1, countDeploymentPackages());
 
         // None of our installed bundles should remain...
         assertBundleNotExists(getSymbolicName("bundle3"), "1.0.0");
@@ -536,17 +536,17 @@
         dpBuilder.add(dpBuilder.createBundleResource().setUrl(getTestBundle("bundleimpl1", "bundleimpl1", "1.0.0")));
         dpBuilder.add(dpBuilder.createBundleResource().setUrl(getTestBundle("bundleapi1", "bundleapi1", "1.0.0")));
 
-        DeploymentPackage dp1 = m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+        DeploymentPackage dp1 = installDeploymentPackage(dpBuilder);
         assertNotNull("No deployment package returned?!", dp1);
 
-        assertEquals("Expected a single deployment package?!", 1, m_deploymentAdmin.listDeploymentPackages().length);
+        assertEquals("Expected a single deployment package?!", 1, countDeploymentPackages());
 
         // then, install a fix package with implementation and api bundles in version 2.0.0
         dpBuilder = createDeploymentPackageBuilder("a", "2.0.0").setFixPackage("[1.0.0,2.0.0]");
         dpBuilder.add(dpBuilder.createBundleResource().setUrl(getTestBundle("bundleimpl2", "bundleimpl2", "2.0.0")));
         dpBuilder.add(dpBuilder.createBundleResource().setUrl(getTestBundle("bundleapi2", "bundleapi2", "2.0.0")));
 
-        DeploymentPackage dp2 = m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+        DeploymentPackage dp2 = installDeploymentPackage(dpBuilder);
         assertNotNull("No deployment package returned?!", dp2);
 
         awaitRefreshPackagesEvent();
@@ -573,7 +573,7 @@
         dpBuilder.add(dpBuilder.createBundleResource().setUrl(getTestBundle("bundleapi1", "bundleapi1", "1.0.0")));
 
         // Should succeed, as the DP is correct... 
-        DeploymentPackage dp1 = m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+        DeploymentPackage dp1 = installDeploymentPackage(dpBuilder);
         assertNotNull("No deployment package returned?!", dp1);
 
         // then, install a fix package with implementation and api bundles in version 2.0.0, but *also* containing the original implementation 
@@ -585,7 +585,7 @@
 
         try
         {
-            m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+            installDeploymentPackage(dpBuilder);
             fail("DeploymentException expected!");
         }
         catch (DeploymentException e)
diff --git a/deploymentadmin/itest/src/test/java/org/apache/felix/deploymentadmin/itest/ResourceSharingTest.java b/deploymentadmin/itest/src/test/java/org/apache/felix/deploymentadmin/itest/ResourceSharingTest.java
index 4bcdbfb..68f1612 100644
--- a/deploymentadmin/itest/src/test/java/org/apache/felix/deploymentadmin/itest/ResourceSharingTest.java
+++ b/deploymentadmin/itest/src/test/java/org/apache/felix/deploymentadmin/itest/ResourceSharingTest.java
@@ -51,14 +51,14 @@
                 .setUrl(getTestBundle("bundle1"))
             );
 
-        DeploymentPackage dp1 = m_deploymentAdmin.installDeploymentPackage(dpBuilder1.generate());
+        DeploymentPackage dp1 = installDeploymentPackage(dpBuilder1);
         assertNotNull("No deployment package returned?!", dp1);
 
         awaitRefreshPackagesEvent();
 
         try {
             // should fail: valid-bundle1 belongs to another DP...
-            m_deploymentAdmin.installDeploymentPackage(dpBuilder2.generate());
+            installDeploymentPackage(dpBuilder2);
             fail("Expected a DeploymentException with code " + DeploymentException.CODE_BUNDLE_SHARING_VIOLATION);
         }
         catch (DeploymentException exception) {
@@ -86,7 +86,7 @@
 
         try {
             // should fail: valid-bundle1 is installed, but does not belong to any DP...
-            m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+            installDeploymentPackage(dpBuilder);
             fail("Expected a DeploymentException with code " + DeploymentException.CODE_BUNDLE_SHARING_VIOLATION);
         }
         catch (DeploymentException exception) {
@@ -118,7 +118,7 @@
             );
         
         // should succeed: valid-bundle1 is installed, but has a different version than the one in our DP...
-        DeploymentPackage dp = m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+        DeploymentPackage dp = installDeploymentPackage(dpBuilder);
 
         awaitRefreshPackagesEvent();
 
diff --git a/deploymentadmin/itest/src/test/java/org/apache/felix/deploymentadmin/itest/UninstallDeploymentPackageTest.java b/deploymentadmin/itest/src/test/java/org/apache/felix/deploymentadmin/itest/UninstallDeploymentPackageTest.java
index 65a2620..d848a98 100644
--- a/deploymentadmin/itest/src/test/java/org/apache/felix/deploymentadmin/itest/UninstallDeploymentPackageTest.java
+++ b/deploymentadmin/itest/src/test/java/org/apache/felix/deploymentadmin/itest/UninstallDeploymentPackageTest.java
@@ -47,7 +47,7 @@
             .add(dpBuilder.createResourceProcessorResource().setUrl(getTestBundle("rp1")))
             .add(dpBuilder.createResource().setResourceProcessorPID(TEST_FAILING_BUNDLE_RP1).setUrl(getTestResource("test-config1.xml")));
 
-        DeploymentPackage dp = m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+        DeploymentPackage dp = installDeploymentPackage(dpBuilder);
         assertNotNull("No deployment package returned?!", dp);
 
         awaitRefreshPackagesEvent();
@@ -59,13 +59,16 @@
 
         assertTrue("One bundle should be started!", getCurrentBundles().size() == 1);
 
-        assertEquals("Expected no deployment package?!", 1, m_deploymentAdmin.listDeploymentPackages().length);
+        assertEquals("Expected no deployment package?!", 1, countDeploymentPackages());
 
         assertTrue(dp.uninstallForced());
+
+        // FELIX-4484: after a forced uninstall, the DP should be marked as stale...
+        assertTrue(dp.isStale());
         
         assertTrue("No bundle should be started!", getCurrentBundles().isEmpty());
 
-        assertEquals("Expected no deployment package?!", 0, m_deploymentAdmin.listDeploymentPackages().length);
+        assertEquals("Expected no deployment package?!", 0, countDeploymentPackages());
     }
 
     /**
@@ -78,7 +81,7 @@
             .add(dpBuilder.createBundleResource().setUrl(getTestBundle("bundle1")))
             .add(dpBuilder.createBundleResource().setUrl(getTestBundle("fragment1")));
 
-        DeploymentPackage dp = m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+        DeploymentPackage dp = installDeploymentPackage(dpBuilder);
         assertNotNull("No deployment package returned?!", dp);
 
         awaitRefreshPackagesEvent();
@@ -92,7 +95,7 @@
         // Should succeed...
         dp.uninstall();
 
-        assertEquals("Expected no deployment package?!", 0, m_deploymentAdmin.listDeploymentPackages().length);
+        assertEquals("Expected no deployment package?!", 0, countDeploymentPackages());
 
         // Both bundles should be uninstalled...
         assertBundleNotExists(getSymbolicName("bundle1"), "1.0.0");
@@ -112,7 +115,7 @@
                     .setUrl(getTestResource("test-config1.xml")))
             .add(dpBuilder.createBundleResource().setUrl(getTestBundle("bundle3")));
 
-        DeploymentPackage dp = m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+        DeploymentPackage dp = installDeploymentPackage(dpBuilder);
         assertNotNull("No deployment package returned?!", dp);
 
         awaitRefreshPackagesEvent();
@@ -121,12 +124,12 @@
         assertBundleExists(getSymbolicName("rp1"), "1.0.0");
         assertBundleExists(getSymbolicName("bundle3"), "1.0.0");
 
-        assertEquals("Expected a single deployment package?!", 1, m_deploymentAdmin.listDeploymentPackages().length);
+        assertEquals("Expected a single deployment package?!", 1, countDeploymentPackages());
 
         // Should succeed...
         dp.uninstall();
 
-        assertEquals("Expected no deployment package?!", 0, m_deploymentAdmin.listDeploymentPackages().length);
+        assertEquals("Expected no deployment package?!", 0, countDeploymentPackages());
 
         assertBundleNotExists(getSymbolicName("rp1"), "1.0.0");
         assertBundleNotExists(getSymbolicName("bundle3"), "1.0.0");
@@ -143,14 +146,14 @@
             .add(dpBuilder.createResourceProcessorResource().setUrl(getTestBundle("rp1")))
             .add(dpBuilder.createResource().setResourceProcessorPID(TEST_FAILING_BUNDLE_RP1).setUrl(getTestResource("test-config1.xml")));
 
-        DeploymentPackage dp = m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+        DeploymentPackage dp = installDeploymentPackage(dpBuilder);
         assertNotNull("No deployment package returned?!", dp);
 
         awaitRefreshPackagesEvent();
         
         assertTrue("Two bundles should be started!", getCurrentBundles().size() == 2);
 
-        assertEquals("Expected no deployment package?!", 1, m_deploymentAdmin.listDeploymentPackages().length);
+        assertEquals("Expected no deployment package?!", 1, countDeploymentPackages());
         
         System.setProperty("rp1", "commit");
 
@@ -158,7 +161,7 @@
 
         assertTrue("No bundles should be started! " + getCurrentBundles(), getCurrentBundles().isEmpty());
 
-        assertEquals("Expected no deployment package?!", 0, m_deploymentAdmin.listDeploymentPackages().length);
+        assertEquals("Expected no deployment package?!", 0, countDeploymentPackages());
     }
 
     /**
@@ -172,14 +175,14 @@
             .add(dpBuilder.createResourceProcessorResource().setUrl(getTestBundle("rp1")))
             .add(dpBuilder.createResource().setResourceProcessorPID(TEST_FAILING_BUNDLE_RP1).setUrl(getTestResource("test-config1.xml")));
 
-        DeploymentPackage dp = m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+        DeploymentPackage dp = installDeploymentPackage(dpBuilder);
         assertNotNull("No deployment package returned?!", dp);
 
         awaitRefreshPackagesEvent();
         
         assertTrue("Two bundles should be started!", getCurrentBundles().size() == 2);
 
-        assertEquals("Expected no deployment package?!", 1, m_deploymentAdmin.listDeploymentPackages().length);
+        assertEquals("Expected no deployment package?!", 1, countDeploymentPackages());
         
         System.setProperty("rp1", "dropAllResources");
 
@@ -191,10 +194,13 @@
             // Ok; expected
             assertDeploymentException(CODE_OTHER_ERROR, exception);
         }
+
+        // FELIX-4484: only after a successful uninstall, the DP should be marked as stale...
+        assertFalse(dp.isStale());
         
         assertTrue("Two bundles should be started!", getCurrentBundles().size() == 2);
 
-        assertEquals("Expected no deployment package?!", 1, m_deploymentAdmin.listDeploymentPackages().length);
+        assertEquals("Expected no deployment package?!", 1, countDeploymentPackages());
     }
 
     /**
@@ -208,14 +214,14 @@
             .add(dpBuilder.createResourceProcessorResource().setUrl(getTestBundle("rp1")))
             .add(dpBuilder.createResource().setResourceProcessorPID(TEST_FAILING_BUNDLE_RP1).setUrl(getTestResource("test-config1.xml")));
 
-        DeploymentPackage dp = m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+        DeploymentPackage dp = installDeploymentPackage(dpBuilder);
         assertNotNull("No deployment package returned?!", dp);
 
         awaitRefreshPackagesEvent();
         
         assertTrue("Two bundles should be started!", getCurrentBundles().size() == 2);
 
-        assertEquals("Expected no deployment package?!", 1, m_deploymentAdmin.listDeploymentPackages().length);
+        assertEquals("Expected no deployment package?!", 1, countDeploymentPackages());
         
         System.setProperty("rp1", "prepare");
 
@@ -230,7 +236,7 @@
         
         assertTrue("Two bundles should be started!", getCurrentBundles().size() == 2);
 
-        assertEquals("Expected no deployment package?!", 1, m_deploymentAdmin.listDeploymentPackages().length);
+        assertEquals("Expected no deployment package?!", 1, countDeploymentPackages());
     }
 
     /**
@@ -243,7 +249,7 @@
             .add(dpBuilder.createBundleResource().setUrl(getTestBundle("bundle1")))
             .add(dpBuilder.createBundleResource().setUrl(getTestBundle("bundle3")));
 
-        DeploymentPackage dp = m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+        DeploymentPackage dp = installDeploymentPackage(dpBuilder);
         assertNotNull("No deployment package returned?!", dp);
 
         awaitRefreshPackagesEvent();
@@ -252,11 +258,14 @@
 
         System.setProperty("bundle3", "stop");
         
-        dp.uninstall();
+        dp.uninstall(); // should succeed.
+
+        // FELIX-4484: only after a successful uninstall, the DP should be marked as stale...
+        assertTrue(dp.isStale());
 
         awaitRefreshPackagesEvent();
 
-        assertEquals("Expected no deployment package?!", 0, m_deploymentAdmin.listDeploymentPackages().length);
+        assertEquals("Expected no deployment package?!", 0, countDeploymentPackages());
         
         assertTrue("Expected no bundles to remain?!", getCurrentBundles().isEmpty());
     }
@@ -272,7 +281,7 @@
             .add(dpBuilder.createResourceProcessorResource().setUrl(getTestBundle("rp1")))
             .add(dpBuilder.createResource().setResourceProcessorPID(TEST_FAILING_BUNDLE_RP1).setUrl(getTestResource("test-config1.xml")));
 
-        DeploymentPackage dp = m_deploymentAdmin.installDeploymentPackage(dpBuilder.generate());
+        DeploymentPackage dp = installDeploymentPackage(dpBuilder);
         assertNotNull("No deployment package returned?!", dp);
 
         awaitRefreshPackagesEvent();
@@ -284,7 +293,7 @@
 
         assertTrue("One bundle should be started!", getCurrentBundles().size() == 1);
 
-        assertEquals("Expected no deployment package?!", 1, m_deploymentAdmin.listDeploymentPackages().length);
+        assertEquals("Expected no deployment package?!", 1, countDeploymentPackages());
 
         try {
             dp.uninstall();
@@ -297,6 +306,6 @@
         
         assertTrue("One bundle should be started!", getCurrentBundles().size() == 1);
 
-        assertEquals("Expected one deployment package?!", 1, m_deploymentAdmin.listDeploymentPackages().length);
+        assertEquals("Expected one deployment package?!", 1, countDeploymentPackages());
     }
 }