You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by ti...@apache.org on 2010/01/11 16:15:38 UTC

svn commit: r897896 - /incubator/aries/trunk/jpa/jpa-container/src/test/java/org/apache/aries/jpa/container/PersistenceBundleLifecycleTest.java

Author: timothyjward
Date: Mon Jan 11 15:15:37 2010
New Revision: 897896

URL: http://svn.apache.org/viewvc?rev=897896&view=rev
Log:
ARIES-79: Create and manage EntityManagerFactory services for persistence units

Modified:
    incubator/aries/trunk/jpa/jpa-container/src/test/java/org/apache/aries/jpa/container/PersistenceBundleLifecycleTest.java

Modified: incubator/aries/trunk/jpa/jpa-container/src/test/java/org/apache/aries/jpa/container/PersistenceBundleLifecycleTest.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/jpa/jpa-container/src/test/java/org/apache/aries/jpa/container/PersistenceBundleLifecycleTest.java?rev=897896&r1=897895&r2=897896&view=diff
==============================================================================
--- incubator/aries/trunk/jpa/jpa-container/src/test/java/org/apache/aries/jpa/container/PersistenceBundleLifecycleTest.java (original)
+++ incubator/aries/trunk/jpa/jpa-container/src/test/java/org/apache/aries/jpa/container/PersistenceBundleLifecycleTest.java Mon Jan 11 15:15:37 2010
@@ -18,29 +18,26 @@
  */
 
 
-package com.ibm.osgi.jpa.unit.manager.test;
+package org.apache.aries.jpa.container;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertSame;
 
 import java.io.File;
-import java.io.IOException;
 import java.io.InputStream;
-import java.lang.reflect.Method;
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.util.Hashtable;
 import java.util.Vector;
-import java.util.jar.Attributes;
-import java.util.jar.JarInputStream;
-import java.util.jar.Manifest;
 
 import javax.persistence.spi.PersistenceProvider;
 
-import mocks.BundleContextMock;
-import mocks.BundleMock;
-
+import org.apache.aries.jpa.container.impl.PersistenceBundleManager;
+import org.apache.aries.mocks.BundleContextMock;
+import org.apache.aries.mocks.BundleMock;
+import org.apache.aries.unittest.mocks.MethodCall;
+import org.apache.aries.unittest.mocks.Skeleton;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
@@ -51,11 +48,6 @@
 import org.osgi.framework.InvalidSyntaxException;
 import org.osgi.framework.ServiceReference;
 import org.osgi.framework.Version;
-import org.osgi.service.jpa.PersistenceUnitInfoService;
-
-import com.ibm.aries.unittest.mocks.MethodCall;
-import com.ibm.aries.unittest.mocks.Skeleton;
-import com.ibm.osgi.jpa.unit.PersistenceBundleManager;
 
 public class PersistenceBundleLifecycleTest
 {
@@ -102,910 +94,910 @@
     BundleContextMock.clear();
   }
   
-  @Test
-  public void testManagerStartOneExistingPersistenceBundleNoExistingProvider() throws Exception
-  {
-    //Check we don't register anything (the bundle was installed before we started)
-
-    PersistenceBundleManager mgr = new PersistenceBundleManager();
-    
-    BundleContext ctx = extenderBundle.getBundleContext();
-    
-    Skeleton.getSkeleton(ctx).setReturnValue(
-        new MethodCall(BundleContext.class, "getBundles"),
-        new Bundle[] {persistenceBundle});
-    
-    setupPersistenceBundle("unittest/resources/file4/");
-    
-    mgr.start(ctx);
-    
-    BundleContextMock.assertNoServiceExists(PersistenceUnitInfoService.class.getName());
-    
-  }
-
-  @Test
-  public void testManagerStartOneExistingPersistenceBundleOneExistingProvider() throws Exception
-  {
-    //Check we don't register anything (the bundle was installed before we started)
-
-    PersistenceProvider pp = Skeleton.newMock(PersistenceProvider.class);
-    
-    Hashtable<String,String> hash1 = new Hashtable<String, String>();
-    persistenceBundle.getBundleContext().registerService(new String[] {PersistenceProvider.class.getName(), "no.such.Provider"} ,
-        pp, hash1 );
-    
-    PersistenceBundleManager mgr = new PersistenceBundleManager();
-    
-    BundleContext ctx = extenderBundle.getBundleContext();
-    
-    Skeleton.getSkeleton(ctx).setReturnValue(
-        new MethodCall(BundleContext.class, "getBundles"),
-        new Bundle[] {persistenceBundle});
-    
-    setupPersistenceBundle("unittest/resources/file4/");
-    
-    mgr.start(ctx);
-    
-    BundleContextMock.assertNoServiceExists(PersistenceUnitInfoService.class.getName());
-  }
-  
-  @Test
-  public void testManagerStopUnregistersUnits() throws Exception
-  {
-    PersistenceProvider pp = Skeleton.newMock(PersistenceProvider.class);
-    
-    Hashtable<String,String> hash1 = new Hashtable<String, String>();
-    persistenceBundle.getBundleContext().registerService(new String[] {PersistenceProvider.class.getName(), "no.such.Provider"} ,
-        pp, hash1 );
-    
-    PersistenceBundleManager mgr = new PersistenceBundleManager();
-    
-    BundleContext ctx = extenderBundle.getBundleContext();
-    
-    setupPersistenceBundle("unittest/resources/file4/");
-    mgr.start(ctx);
-
-    testSuccessfulInstalledEvent(mgr, ctx, 1);
-    
-    mgr.stop(ctx);
-    
-    BundleContextMock.assertNoServiceExists(PersistenceUnitInfoService.class.getName());
-  }
-
-  @Test
-  public void testBundleChangedInstalledOnePreexistingProvider() throws Exception
-  {
-    //Check we correctly parse and register Persistence Units
-
-    PersistenceProvider pp = Skeleton.newMock(PersistenceProvider.class);
-    
-    Hashtable<String,String> hash1 = new Hashtable<String, String>();
-    persistenceBundle.getBundleContext().registerService(new String[] {PersistenceProvider.class.getName(), "no.such.Provider"} ,
-        pp, hash1 );
-    
-    PersistenceBundleManager mgr = new PersistenceBundleManager();
-    
-    BundleContext ctx = extenderBundle.getBundleContext();
-    
-    setupPersistenceBundle("unittest/resources/file4/");
-    mgr.start(ctx);
-
-    testSuccessfulInstalledEvent(mgr, ctx, 1);
-  }
-  
-  @Test
-  public void testBundleChangedUninstalled() throws Exception
-  {
-    PersistenceProvider pp = Skeleton.newMock(PersistenceProvider.class);
-    
-    Hashtable<String,String> hash1 = new Hashtable<String, String>();
-    persistenceBundle.getBundleContext().registerService(new String[] {PersistenceProvider.class.getName(), "no.such.Provider"} ,
-        pp, hash1 );
-    
-    PersistenceBundleManager mgr = new PersistenceBundleManager();
-    
-    BundleContext ctx = extenderBundle.getBundleContext();
-    
-    Bundle fragment = Skeleton.newMock(Bundle.class);
-    
-    Skeleton.getSkeleton(ctx).setReturnValue(new MethodCall(BundleContext.class, "installBundle",
-        FRAGMENT_SYM_NAME, InputStream.class), fragment);
-    
-    setupPersistenceBundle("unittest/resources/file4/");
-    mgr.start(ctx);
-
-    testSuccessfulInstalledEvent(mgr, ctx, 1);
-    
-    mgr.bundleChanged(new BundleEvent(BundleEvent.UNINSTALLED, persistenceBundle));
-    
-    BundleContextMock.assertNoServiceExists(PersistenceUnitInfoService.class.getName());
-    
-    Skeleton.getSkeleton(fragment).assertCalled(new MethodCall(Bundle.class, "uninstall"));
-  }
-  
-  @Test
-  public void testBundleChangedUpdated() throws Exception
-  {
-    PersistenceProvider pp = Skeleton.newMock(PersistenceProvider.class);
-    
-    Hashtable<String,String> hash1 = new Hashtable<String, String>();
-    persistenceBundle.getBundleContext().registerService(new String[] {PersistenceProvider.class.getName(), "no.such.Provider"} ,
-        pp, hash1 );
-    
-    PersistenceBundleManager mgr = new PersistenceBundleManager();
-    
-    BundleContext ctx = extenderBundle.getBundleContext();
-    
-    Bundle fragment = Skeleton.newMock(Bundle.class);
-    
-    Skeleton.getSkeleton(ctx).setReturnValue(new MethodCall(BundleContext.class, "installBundle",
-        FRAGMENT_SYM_NAME, InputStream.class), fragment);
-    
-    setupPersistenceBundle("unittest/resources/file4/");
-    mgr.start(ctx);
-
-    testSuccessfulInstalledEvent(mgr, ctx, 1);
-    
-    Skeleton.getSkeleton(ctx).clearMethodCalls();
-    
-    mgr.bundleChanged(new BundleEvent(BundleEvent.UPDATED, persistenceBundle));
-    
-    BundleContextMock.assertServiceExists(PersistenceUnitInfoService.class.getName());
-    
-    ServiceReference[] refs = ctx.getServiceReferences(PersistenceUnitInfoService.class.getName(), null);
-    
-    assertEquals("Too many persistence units registered", 1, refs.length);
-    
-    Skeleton.getSkeleton(fragment).assertCalled(new MethodCall(Bundle.class, "uninstall"));
-    Skeleton.getSkeleton(ctx).assertCalled(new MethodCall(BundleContext.class, "installBundle",
-        FRAGMENT_SYM_NAME, InputStream.class));
-  }
-  
-  @Test
-  public void testBundleChangedUnresolved() throws Exception
-  {
-    PersistenceProvider pp = Skeleton.newMock(PersistenceProvider.class);
-    
-    Hashtable<String,String> hash1 = new Hashtable<String, String>();
-    persistenceBundle.getBundleContext().registerService(new String[] {PersistenceProvider.class.getName(), "no.such.Provider"} ,
-        pp, hash1 );
-    
-    PersistenceBundleManager mgr = new PersistenceBundleManager();
-    
-    BundleContext ctx = extenderBundle.getBundleContext();
-    
-    Bundle fragment = Skeleton.newMock(Bundle.class);
-    
-    Skeleton.getSkeleton(ctx).setReturnValue(new MethodCall(BundleContext.class, "installBundle",
-        FRAGMENT_SYM_NAME, InputStream.class), fragment);
-    
-    setupPersistenceBundle("unittest/resources/file4/");
-    mgr.start(ctx);
-
-    testSuccessfulInstalledEvent(mgr, ctx, 1);
-    
-    Skeleton.getSkeleton(ctx).clearMethodCalls();
-    
-    mgr.bundleChanged(new BundleEvent(BundleEvent.UNRESOLVED, persistenceBundle));
-    
-    BundleContextMock.assertServiceExists(PersistenceUnitInfoService.class.getName());
-    
-    ServiceReference[] refs = ctx.getServiceReferences(PersistenceUnitInfoService.class.getName(), null);
-    
-    assertEquals("Too many persistence units registered", 1, refs.length);
-    
-    Skeleton.getSkeleton(fragment).assertCalled(new MethodCall(Bundle.class, "uninstall"));
-    Skeleton.getSkeleton(ctx).assertCalled(new MethodCall(BundleContext.class, "installBundle",
-        FRAGMENT_SYM_NAME, InputStream.class));
-  }
-  
-  @Test
-  public void testBundleChangedInstalledOnePostRegisteredProvider() throws Exception
-  {
-    //Check we correctly parse and register Persistence Units
-    
-    PersistenceBundleManager mgr = new PersistenceBundleManager();
-    
-    BundleContext ctx = extenderBundle.getBundleContext();
-    
-    setupPersistenceBundle("unittest/resources/file4/");
-    mgr.start(ctx);
-
-    BundleContextMock.assertNoServiceExists(PersistenceUnitInfoService.class.getName());
-
-    PersistenceProvider pp = Skeleton.newMock(PersistenceProvider.class);
-    
-    Hashtable<String,String> hash1 = new Hashtable<String, String>();
-    persistenceBundle.getBundleContext().registerService(new String[] {PersistenceProvider.class.getName(), "no.such.Provider"} ,
-        pp, hash1 );
-    
-    testSuccessfulInstalledEvent(mgr, ctx, 1);
-  }
-  
-  @Test
-  public void testBundleChangedInstalledNoProvider() throws Exception
-  {
-    //Check we correctly parse and register Persistence Units
-    
-    PersistenceBundleManager mgr = new PersistenceBundleManager();
-    
-    BundleContext ctx = extenderBundle.getBundleContext();
-    
-    setupPersistenceBundle("unittest/resources/file4/");
-    mgr.start(ctx);
-
-    testUnsuccessfulInstalledEvent(mgr, ctx);
-  }
-  
-  @Test
-  public void testInstalledWithBadXML() throws Exception
-  {
-    //Check we correctly parse and register EMFactories
-
-    PersistenceBundleManager mgr = new PersistenceBundleManager();
-    
-    BundleContext ctx = extenderBundle.getBundleContext();
-    
-    setupPersistenceBundle("unittest/resources/file3/");
-    
-    mgr.start(ctx);
-    
-    testUnsuccessfulInstalledEvent(mgr, ctx);
-  }
-
-  
-  @Test
-  public void testBundleChangedStarting() throws Exception
-  {
-    //Check we correctly don't do anything on the started event
-
-    PersistenceProvider pp = Skeleton.newMock(PersistenceProvider.class);
-    
-    Hashtable<String,String> hash1 = new Hashtable<String, String>();
-    persistenceBundle.getBundleContext().registerService(new String[] {PersistenceProvider.class.getName(), "no.such.Provider"} ,
-        pp, hash1 );
-    
-    PersistenceBundleManager mgr = new PersistenceBundleManager();
-    
-    BundleContext ctx = extenderBundle.getBundleContext();
-    
-    setupPersistenceBundle("unittest/resources/file4/");
-
-    mgr.start(ctx);
-    
-    testSuccessfulInstalledEvent(mgr, ctx, 1);
-    
-    mgr.bundleChanged(new BundleEvent(BundleEvent.STARTING, persistenceBundle));
-
-    BundleContextMock.assertServiceExists(PersistenceUnitInfoService.class.getName());
-    
-    ServiceReference[] refs = persistenceBundle.getBundleContext().getServiceReferences(PersistenceUnitInfoService.class.getName(), null);
-    
-    assertEquals("The wrong number of persistence units were registered", 1, refs.length);
- 
-  }
-
-  @Test
-  public void testBundleChangedLazyActivation() throws Exception
-  {
-  //Check we correctly don't do anything on the LAZY event
-
-    PersistenceProvider pp = Skeleton.newMock(PersistenceProvider.class);
-    
-    Hashtable<String,String> hash1 = new Hashtable<String, String>();
-    persistenceBundle.getBundleContext().registerService(new String[] {PersistenceProvider.class.getName(), "no.such.Provider"} ,
-        pp, hash1 );
-    
-    PersistenceBundleManager mgr = new PersistenceBundleManager();
-    
-    BundleContext ctx = extenderBundle.getBundleContext();
-    
-    setupPersistenceBundle("unittest/resources/file4/");
-
-    mgr.start(ctx);
-    
-    testSuccessfulInstalledEvent(mgr, ctx, 1);
-    
-    mgr.bundleChanged(new BundleEvent(BundleEvent.LAZY_ACTIVATION, persistenceBundle));
-
-    BundleContextMock.assertServiceExists(PersistenceUnitInfoService.class.getName());
-    
-    ServiceReference[] refs = persistenceBundle.getBundleContext().getServiceReferences(PersistenceUnitInfoService.class.getName(), null);
-    
-    assertEquals("The wrong number of persistence units were registered", 1, refs.length);
-   }
-    
-  @Test
-  public void testNoProviderInstalled() throws Exception
-  {
-    //Check we do not register a service when there is no Provider
-    
-    PersistenceBundleManager mgr = new PersistenceBundleManager();
-    
-    BundleContext ctx = extenderBundle.getBundleContext();
-    
-    setupPersistenceBundle("unittest/resources/file5/");
-    
-    mgr.start(ctx);
-    
-    testUnsuccessfulInstalledEvent(mgr, ctx);
-  }
-
-  @Test
-  public void testdefaultProvider() throws Exception
-  {
-    //Check we correctly parse and register EMFactories
-
-    PersistenceProvider pp = Skeleton.newMock(PersistenceProvider.class);
-    
-    Hashtable<String,String> hash1 = new Hashtable<String, String>();
-    persistenceBundle.getBundleContext().registerService(new String[] {PersistenceBundleManager.DEFAULT_JPA_PROVIDER} ,
-        pp, hash1 );
-    
-    PersistenceBundleManager mgr = new PersistenceBundleManager();
-    
-    BundleContext ctx = extenderBundle.getBundleContext();
-    
-    setupPersistenceBundle("unittest/resources/file5/");
-    
-    mgr.start(ctx);
-    
-    testSuccessfulInstalledEvent(mgr, ctx, 1);
-
-  }
-  
-  @Test
-  public void testdefaultProviderWithWAR() throws Exception
-  {
-    //Check we correctly parse and register EMFactories
-
-    PersistenceProvider pp = Skeleton.newMock(PersistenceProvider.class);
-    
-    Hashtable<String,String> hash1 = new Hashtable<String, String>();
-    persistenceBundle.getBundleContext().registerService(new String[] {PersistenceBundleManager.DEFAULT_JPA_PROVIDER} ,
-        pp, hash1 );
-    
-    PersistenceBundleManager mgr = new PersistenceBundleManager();
-    
-    BundleContext ctx = extenderBundle.getBundleContext();
-    
-    Skeleton skel = Skeleton.getSkeleton(persistenceBundle);
-    
-    skel.setReturnValue(new MethodCall(Bundle.class, "getState"), Bundle.ACTIVE);
-    
-    URL root = new File("unittest/resources/file5/").toURI().toURL();
-    URL xml = new File("unittest/resources/file5/META-INF/persistence.xml").toURI().toURL();
-    
-    skel.setReturnValue(new MethodCall(Bundle.class, "getEntry", "WEB-INF/classes/"), root);
-    skel.setReturnValue(new MethodCall(Bundle.class, "getEntry", "WEB-INF/classes/META-INF/persistence.xml"), xml);
-    skel.setReturnValue(new MethodCall(Bundle.class, "getVersion"), new Version("0.0.0"));
-
-    mgr.start(ctx);
-    
-    testSuccessfulInstalledEvent(mgr, ctx, 1);
-  }
-
-  @Test
-  public void testdefaultProviderWithWARLib() throws Exception
-  {
-    //Check we correctly parse and register EMFactories
-
-    PersistenceProvider pp = Skeleton.newMock(PersistenceProvider.class);
-    
-    Hashtable<String,String> hash1 = new Hashtable<String, String>();
-    persistenceBundle.getBundleContext().registerService(new String[] {PersistenceBundleManager.DEFAULT_JPA_PROVIDER} ,
-        pp, hash1 );
-    
-    PersistenceBundleManager mgr = new PersistenceBundleManager();
-    
-    BundleContext ctx = extenderBundle.getBundleContext();
-    
-    Skeleton skel = Skeleton.getSkeleton(persistenceBundle);
-    
-    skel.setReturnValue(new MethodCall(Bundle.class, "getState"), Bundle.ACTIVE);
-    
-    Vector<String> v = new Vector<String>();
-      v.add("WEB-INF/lib/jarfile.jar");
-    
-    skel.setReturnValue(new MethodCall(Bundle.class, "getEntryPaths", "WEB-INF/lib"), v.elements());
-    skel.setReturnValue(new MethodCall(Bundle.class, "getVersion"), new Version("0.0.0"));
-    skel.setReturnValue(new MethodCall(Bundle.class, "getEntry", "WEB-INF/lib/jarfile.jar"), new File("unittest/resources/jarfile.jar").toURI().toURL());
-
-    mgr.start(ctx);
-    
-    testSuccessfulInstalledEvent(mgr, ctx, 1);
-  }
-  
-  @Test
-  public void testdefaultProviderWithBundledJar() throws Exception
-  {
-    //Check we correctly parse and register EMFactories
-
-    PersistenceProvider pp = Skeleton.newMock(PersistenceProvider.class);
-    
-    Hashtable<String,String> hash1 = new Hashtable<String, String>();
-    persistenceBundle.getBundleContext().registerService(new String[] {PersistenceBundleManager.DEFAULT_JPA_PROVIDER} ,
-        pp, hash1 );
-    
-    PersistenceBundleManager mgr = new PersistenceBundleManager();
-    
-    BundleContext ctx = extenderBundle.getBundleContext();
-    
-    Skeleton skel = Skeleton.getSkeleton(persistenceBundle);
-    
-    skel.setReturnValue(new MethodCall(Bundle.class, "getState"), Bundle.ACTIVE);
-    
-    URL u = new File("unittest/resources/jarfile.jar").toURI().toURL();
-    
-    skel.setReturnValue(new MethodCall(Bundle.class, "getEntry", "unittest/resources/jarfile.jar"), u);
-    skel.setReturnValue(new MethodCall(Bundle.class, "getVersion"), new Version("0.0.0"));
-    persistenceBundle.getHeaders().put(Constants.BUNDLE_CLASSPATH, "., unittest/resources/jarfile.jar");
-
-    mgr.start(ctx);
-    
-    testSuccessfulInstalledEvent(mgr, ctx, 1);
-
-  }
-  
-  @Test
-  public void testSameProviders() throws Exception
-  {
-    //Check we behave correctly when two persistence units define the same
-    //provder name
-
-    PersistenceProvider pp = Skeleton.newMock(PersistenceProvider.class);
-    
-    Hashtable<String,String> hash1 = new Hashtable<String, String>();
-    persistenceBundle.getBundleContext().registerService(new String[] {PersistenceProvider.class.getName(), "no.such.Provider"} ,
-        pp, hash1 );
-    
-    PersistenceBundleManager mgr = new PersistenceBundleManager();
-    
-    BundleContext ctx = extenderBundle.getBundleContext();
-    
-    setupPersistenceBundle("unittest/resources/file6/");
-    
-    mgr.start(ctx);
-    
-    testSuccessfulInstalledEvent(mgr, ctx, 2);
-  }
-
-  @Test
-  public void testOneWithProviderOneWithout() throws Exception
-  {
-    //Check we behave correctly when two persistence units define different
-    //provder names
-
-    PersistenceProvider pp = Skeleton.newMock(PersistenceProvider.class);
-    
-    Hashtable<String,String> hash1 = new Hashtable<String, String>();
-    persistenceBundle.getBundleContext().registerService(new String[] {PersistenceProvider.class.getName(), "no.such.Provider"} ,
-        pp, hash1 );
-    
-    PersistenceBundleManager mgr = new PersistenceBundleManager();
-    
-    BundleContext ctx = extenderBundle.getBundleContext();
-    
-    setupPersistenceBundle("unittest/resources/file7/");
-    
-    mgr.start(ctx);
-    
-    BundleContextMock.assertNoServiceExists(PersistenceUnitInfoService.class.getName());
-    
-    mgr.bundleChanged(new BundleEvent(BundleEvent.INSTALLED, persistenceBundle));
-    
-    BundleContextMock.assertServiceExists(PersistenceUnitInfoService.class.getName());
-    
-    ServiceReference[] refs = persistenceBundle.getBundleContext().getServiceReferences(
-        PersistenceUnitInfoService.class.getName(), null);
-       
-    assertEquals("The wrong number of EMFs were registered", 2, refs.length);
-    
-    Skeleton.getSkeleton(ctx).assertCalled(new MethodCall(BundleContext.class, "installBundle",
-        FRAGMENT_SYM_NAME, InputStream.class));
-  }
-
-  @Test
-  public void testTwoProviders() throws Exception
-  {
-    //Check we correctly parse and register EMFactories
-
-    PersistenceProvider pp = Skeleton.newMock(PersistenceProvider.class);
-    
-    Hashtable<String,String> hash1 = new Hashtable<String, String>();
-    persistenceBundle.getBundleContext().registerService(new String[] {PersistenceProvider.class.getName(), "no.such.Provider"} ,
-        pp, hash1 );
-    
-    PersistenceBundleManager mgr = new PersistenceBundleManager();
-    
-    BundleContext ctx = extenderBundle.getBundleContext();
-    
-    Skeleton skel = Skeleton.getSkeleton(persistenceBundle);
-    
-    skel.setReturnValue(new MethodCall(Bundle.class, "getState"), Bundle.ACTIVE);
-    
-    Vector<URL> v = new Vector<URL>();
-    v.add(new File("unittest/resources/file8/META-INF/persistence.xml").toURI().toURL());
-    
-    skel.setReturnValue(new MethodCall(Bundle.class, "findEntries", "/", "persistence.xml", true), v.elements());
-    skel.setReturnValue(new MethodCall(Bundle.class, "getVersion"), new Version("0.0.0"));
-    
-    mgr.start(ctx);
-    
-    BundleContextMock.assertNoServiceExists(PersistenceUnitInfoService.class.getName());
-    
-    mgr.bundleChanged(new BundleEvent(BundleEvent.INSTALLED, persistenceBundle));
-    
-    BundleContextMock.assertNoServiceExists(PersistenceUnitInfoService.class.getName());
-    
-    Skeleton.getSkeleton(ctx).assertNotCalled(new MethodCall(BundleContext.class, "installBundle",
-        FRAGMENT_SYM_NAME, InputStream.class));
-  }
-  
-  @Test
-  public void testpp100() throws Exception
-  {
-    PersistenceBundleManager mgr = new PersistenceBundleManager();
-     
-    PersistenceProvider pp100 = Skeleton.newMock(PersistenceProvider.class);
-    PersistenceProvider pp101 = Skeleton.newMock(PersistenceProvider.class);
-    PersistenceProvider pp110 = Skeleton.newMock(PersistenceProvider.class);
-    PersistenceProvider pp111 = Skeleton.newMock(PersistenceProvider.class);
-    
-    registerVersionedPersistenceProviders(pp100, pp101, pp110, pp111);
-    
-    BundleContext ctx = extenderBundle.getBundleContext();
-    
-    setupPersistenceBundle("unittest/resources/file9/");
-
-    assertCorrectPersistenceProviderUsed(mgr, ctx, pp100);
-  }
-
-  @Test
-  public void testpp101() throws Exception
-  {
-    PersistenceBundleManager mgr = new PersistenceBundleManager();
-    
-    PersistenceProvider pp100 = Skeleton.newMock(PersistenceProvider.class);
-    PersistenceProvider pp101 = Skeleton.newMock(PersistenceProvider.class);
-    PersistenceProvider pp110 = Skeleton.newMock(PersistenceProvider.class);
-    PersistenceProvider pp111 = Skeleton.newMock(PersistenceProvider.class);
-    
-    registerVersionedPersistenceProviders(pp100, pp101, pp110, pp111);
-    
-    BundleContext ctx = extenderBundle.getBundleContext();
-    
-    setupPersistenceBundle("unittest/resources/file10/");
-    
-    mgr.start(ctx);
-    
-    assertCorrectPersistenceProviderUsed(mgr, ctx, pp101);
-  }
-  
-  @Test
-  public void testpp101b() throws Exception
-  {
-    PersistenceBundleManager mgr = new PersistenceBundleManager();
-    
-    PersistenceProvider pp100 = Skeleton.newMock(PersistenceProvider.class);
-    PersistenceProvider pp101 = Skeleton.newMock(PersistenceProvider.class);
-    PersistenceProvider pp110 = Skeleton.newMock(PersistenceProvider.class);
-    PersistenceProvider pp111 = Skeleton.newMock(PersistenceProvider.class);
-    
-    registerVersionedPersistenceProviders(pp100, pp101, pp110, pp111);
-    
-    BundleContext ctx = extenderBundle.getBundleContext();
-    
-    setupPersistenceBundle("unittest/resources/file11/");
-
-    assertCorrectPersistenceProviderUsed(mgr, ctx, pp101);
-
-  }
-
-  @Test
-  public void testpp111() throws Exception
-  {
-    PersistenceBundleManager mgr = new PersistenceBundleManager();
-    
-    PersistenceProvider pp100 = Skeleton.newMock(PersistenceProvider.class);
-    PersistenceProvider pp101 = Skeleton.newMock(PersistenceProvider.class);
-    PersistenceProvider pp110 = Skeleton.newMock(PersistenceProvider.class);
-    PersistenceProvider pp111 = Skeleton.newMock(PersistenceProvider.class);
-    
-    registerVersionedPersistenceProviders(pp100, pp101, pp110, pp111);
-    
-    BundleContext ctx = extenderBundle.getBundleContext();
-    
-    setupPersistenceBundle("unittest/resources/file12/");
-
-    assertCorrectPersistenceProviderUsed(mgr, ctx, pp111);
-  }
-
-  @Test
-  public void testppNoMatch() throws Exception
-  {
-    PersistenceBundleManager mgr = new PersistenceBundleManager();
-    
-    PersistenceProvider pp100 = Skeleton.newMock(PersistenceProvider.class);
-    PersistenceProvider pp101 = Skeleton.newMock(PersistenceProvider.class);
-    PersistenceProvider pp110 = Skeleton.newMock(PersistenceProvider.class);
-    PersistenceProvider pp111 = Skeleton.newMock(PersistenceProvider.class);
-    
-    registerVersionedPersistenceProviders(pp100, pp101, pp110, pp111);
-    
-    BundleContext ctx = extenderBundle.getBundleContext();
-    
-    setupPersistenceBundle("unittest/resources/file13/");
-    
-    mgr.start(ctx);
-    
-    testUnsuccessfulInstalledEvent(mgr,ctx);
-    
-  }
-
-  @Test
-  public void testTwoProvidersMatch() throws Exception
-  {
-    PersistenceBundleManager mgr = new PersistenceBundleManager();
-    
-    PersistenceProvider pp100 = Skeleton.newMock(PersistenceProvider.class);
-    PersistenceProvider pp101 = Skeleton.newMock(PersistenceProvider.class);
-    PersistenceProvider pp110 = Skeleton.newMock(PersistenceProvider.class);
-    PersistenceProvider pp111 = Skeleton.newMock(PersistenceProvider.class);
-    
-    registerVersionedPersistenceProviders(pp100, pp101, pp110, pp111);
-    
-    BundleContext ctx = extenderBundle.getBundleContext();
-    
-    setupPersistenceBundle("unittest/resources/file14/");
-    
-    mgr.start(ctx);
-    assertCorrectPersistenceProviderUsed(mgr, ctx, pp101);
-  }
-
-  @Test
-  public void testTwoProvidersNoVersionMatch() throws Exception
-  {
-    PersistenceBundleManager mgr = new PersistenceBundleManager();
-    
-    PersistenceProvider pp100 = Skeleton.newMock(PersistenceProvider.class);
-    PersistenceProvider pp101 = Skeleton.newMock(PersistenceProvider.class);
-    PersistenceProvider pp110 = Skeleton.newMock(PersistenceProvider.class);
-    PersistenceProvider pp111 = Skeleton.newMock(PersistenceProvider.class);
-    
-    registerVersionedPersistenceProviders(pp100, pp101, pp110, pp111);
-    
-    BundleContext ctx = extenderBundle.getBundleContext();
-    
-    setupPersistenceBundle("unittest/resources/file15/");
-    
-    mgr.start(ctx);
-    
-    testUnsuccessfulInstalledEvent(mgr,ctx);
-    
-  }
-
-  @Test
-  public void testTwoProvidersExistNoCommonVersion() throws Exception
-  {
-    PersistenceBundleManager mgr = new PersistenceBundleManager();
-    
-    PersistenceProvider pp100 = Skeleton.newMock(PersistenceProvider.class);
-    PersistenceProvider pp101 = Skeleton.newMock(PersistenceProvider.class);
-    PersistenceProvider pp110 = Skeleton.newMock(PersistenceProvider.class);
-    PersistenceProvider pp111 = Skeleton.newMock(PersistenceProvider.class);
-    
-    registerVersionedPersistenceProviders(pp100, pp101, pp110, pp111);
-    
-    BundleContext ctx = extenderBundle.getBundleContext();
-    
-    setupPersistenceBundle("unittest/resources/file17/");
-    
-    mgr.start(ctx);
-    
-    testUnsuccessfulInstalledEvent(mgr,ctx);
-    
-  }
-  
-  @Test
-  public void testThreeProvidersNoVersionMatch() throws Exception
-  {
-    PersistenceBundleManager mgr = new PersistenceBundleManager();
-    
-    PersistenceProvider pp100 = Skeleton.newMock(PersistenceProvider.class);
-    PersistenceProvider pp101 = Skeleton.newMock(PersistenceProvider.class);
-    PersistenceProvider pp110 = Skeleton.newMock(PersistenceProvider.class);
-    PersistenceProvider pp111 = Skeleton.newMock(PersistenceProvider.class);
-    
-    registerVersionedPersistenceProviders(pp100, pp101, pp110, pp111);
-    
-    BundleContext ctx = extenderBundle.getBundleContext();
-    
-    setupPersistenceBundle("unittest/resources/file16/");
-   
-    mgr.start(ctx);
-    
-    testUnsuccessfulInstalledEvent(mgr,ctx);
-    
-  }
-
-  @Test
-  public void testTwoProvidersNoVersionMatchOneExists() throws Exception
-  {
-    PersistenceBundleManager mgr = new PersistenceBundleManager();
-    
-    PersistenceProvider pp100 = Skeleton.newMock(PersistenceProvider.class);
-    PersistenceProvider pp101 = Skeleton.newMock(PersistenceProvider.class);
-    PersistenceProvider pp110 = Skeleton.newMock(PersistenceProvider.class);
-    PersistenceProvider pp111 = Skeleton.newMock(PersistenceProvider.class);
-    
-    registerVersionedPersistenceProviders(pp100, pp101, pp110, pp111);
-    
-    BundleContext ctx = extenderBundle.getBundleContext();
-    
-    setupPersistenceBundle("unittest/resources/file18/");
-
-    mgr.start(ctx);
-    
-    testUnsuccessfulInstalledEvent(mgr,ctx);
-  }
-
-  @Test
-  public void testThreeProvidersNoVersionMatchOneExists() throws Exception
-  {
-    PersistenceBundleManager mgr = new PersistenceBundleManager();
-    
-    PersistenceProvider pp100 = Skeleton.newMock(PersistenceProvider.class);
-    PersistenceProvider pp101 = Skeleton.newMock(PersistenceProvider.class);
-    PersistenceProvider pp110 = Skeleton.newMock(PersistenceProvider.class);
-    PersistenceProvider pp111 = Skeleton.newMock(PersistenceProvider.class);
-    
-    registerVersionedPersistenceProviders(pp100, pp101, pp110, pp111);
-    
-    BundleContext ctx = extenderBundle.getBundleContext();
-    
-    Skeleton skel = Skeleton.getSkeleton(persistenceBundle);
-    
-    skel.setReturnValue(new MethodCall(Bundle.class, "getState"), Bundle.ACTIVE);
-    
-    setupPersistenceBundle("unittest/resources/file19/");
-
-    mgr.start(ctx);
-    
-    testUnsuccessfulInstalledEvent(mgr,ctx);
-    
-  }
-
-  @Test
-  public void testThreeProvidersNoVersionMatchTwoExist() throws Exception
-  {
-    PersistenceBundleManager mgr = new PersistenceBundleManager();
-    
-    PersistenceProvider pp100 = Skeleton.newMock(PersistenceProvider.class);
-    PersistenceProvider pp101 = Skeleton.newMock(PersistenceProvider.class);
-    PersistenceProvider pp110 = Skeleton.newMock(PersistenceProvider.class);
-    PersistenceProvider pp111 = Skeleton.newMock(PersistenceProvider.class);
-    
-    registerVersionedPersistenceProviders(pp100, pp101, pp110, pp111);
-    
-    BundleContext ctx = extenderBundle.getBundleContext();
-    
-    Skeleton skel = Skeleton.getSkeleton(persistenceBundle);
-    
-    skel.setReturnValue(new MethodCall(Bundle.class, "getState"), Bundle.ACTIVE);
-    
-    setupPersistenceBundle("unittest/resources/file20/");
-
-    mgr.start(ctx);
-
-    testUnsuccessfulInstalledEvent(mgr, ctx);
-  }
- 
-  private void setupPersistenceBundle(String s) throws MalformedURLException
-  {
-    Skeleton skel = Skeleton.getSkeleton(persistenceBundle);
-    
-    skel.setReturnValue(new MethodCall(Bundle.class, "getState"), Bundle.ACTIVE);
-    
-    URL root = new File(s).toURI().toURL();
-    
-    URL xml = new File(s + "META-INF/persistence.xml").toURI().toURL();
-    
-    skel.setReturnValue(new MethodCall(Bundle.class, "getEntry", "/"), root);
-    skel.setReturnValue(new MethodCall(Bundle.class, "getEntry", "/META-INF/persistence.xml"), xml);
-    skel.setReturnValue(new MethodCall(Bundle.class, "getVersion"), new Version("0.0.0"));
-
-  }
-  
-  private void registerVersionedPersistenceProviders(PersistenceProvider pp100,
-      PersistenceProvider pp101, PersistenceProvider pp110,
-      PersistenceProvider pp111) {
-    Hashtable<String,String> hash1 = new Hashtable<String, String>();
-    hash1.put("osgi.jpa.provider.version", "1.0.0");
-    providerBundleP100.getBundleContext().registerService(new String[] {PersistenceProvider.class.getName(), "no.such.Provider"} ,
-        pp100, hash1 );
-    
-    hash1 = new Hashtable<String, String>();
-    hash1.put("osgi.jpa.provider.version", "1.0.1");
-    providerBundleP101.getBundleContext().registerService(new String[] {PersistenceProvider.class.getName(), "no.such.Provider"} ,
-        pp101, hash1 );
-    
-    hash1 = new Hashtable<String, String>();
-    hash1.put("osgi.jpa.provider.version", "1.1.0");
-    providerBundleP110.getBundleContext().registerService(new String[] {PersistenceProvider.class.getName(), "no.such.Provider"} ,
-        pp110, hash1 );
-    
-    hash1 = new Hashtable<String, String>();
-    hash1.put("osgi.jpa.provider.version", "1.1.1");
-    providerBundleP111.getBundleContext().registerService(new String[] {PersistenceProvider.class.getName(), "no.such.Provider"} ,
-        pp111, hash1 );
-  }
-  
-
-  private void testSuccessfulInstalledEvent(PersistenceBundleManager mgr, BundleContext ctx, int numberOfPersistenceUnits) throws InvalidSyntaxException
-  {
-    BundleContextMock.assertNoServiceExists(PersistenceUnitInfoService.class.getName());
-    
-    mgr.bundleChanged(new BundleEvent(BundleEvent.INSTALLED, persistenceBundle));
-    
-    BundleContextMock.assertServiceExists(PersistenceUnitInfoService.class.getName());
-    
-    ServiceReference[] refs = persistenceBundle.getBundleContext().getServiceReferences(PersistenceUnitInfoService.class.getName(), null);
-    
-    assertEquals("The wrong number of persistence units were registered", numberOfPersistenceUnits, refs.length);
-    
-    for(ServiceReference ref : refs) {
-      assertEquals("Incorrect properties registerered", "scooby.doo", ref.getProperty(PersistenceUnitInfoService.PERSISTENCE_BUNDLE_SYMBOLIC_NAME));
-      assertEquals("Incorrect properties registerered", Version.emptyVersion, ref.getProperty(PersistenceUnitInfoService.PERSISTENCE_BUNDLE_VERSION));
-      assertNotNull("Incorrect properties registerered", ref.getProperty(PersistenceUnitInfoService.PERSISTENCE_UNIT_NAME));
-    }
-    
-    Skeleton.getSkeleton(ctx).assertCalled(new MethodCall(BundleContext.class, "installBundle",
-        FRAGMENT_SYM_NAME, InputStream.class));
-  }
-  
-  private void testUnsuccessfulInstalledEvent(PersistenceBundleManager mgr, BundleContext ctx)
-  {
-    BundleContextMock.assertNoServiceExists(PersistenceUnitInfoService.class.getName());
-    
-    mgr.bundleChanged(new BundleEvent(BundleEvent.INSTALLED, persistenceBundle));
-    
-    BundleContextMock.assertNoServiceExists(PersistenceUnitInfoService.class.getName());
-    
-    Skeleton.getSkeleton(ctx).assertNotCalled(new MethodCall(BundleContext.class, "installBundle",
-        String.class, InputStream.class));
-  }
-  
-  private void assertCorrectPersistenceProviderUsed (PersistenceBundleManager mgr, BundleContext ctx, PersistenceProvider provider)
-  {
-    try {
-      mgr.start(ctx);
-      
-      BundleContextMock.assertNoServiceExists(PersistenceUnitInfoService.class.getName());
-      
-      mgr.bundleChanged(new BundleEvent(BundleEvent.INSTALLED, persistenceBundle));
-      
-      BundleContextMock.assertServiceExists(PersistenceUnitInfoService.class.getName());
-      ServiceReference[] refs = persistenceBundle.getBundleContext().getServiceReferences(PersistenceUnitInfoService.class.getName(), null);
-    
-      for(ServiceReference ref : refs) {
-        PersistenceUnitInfoService pu = (PersistenceUnitInfoService) persistenceBundle.getBundleContext().getService(ref);
-    
-        assertNotNull("No PersistenceUnit was registered", pu);
-    
-        Object pp = persistenceBundle.getBundleContext().getService(pu.getProviderReference());
-    
-        assertSame("The perstistnce unit was associated with the wrong persistence provider",
-        pp, provider);
-      }
-      
-      Skeleton.getSkeleton(ctx).assertCalled(new MethodCall(BundleContext.class, "installBundle",
-          FRAGMENT_SYM_NAME, InputStream.class));
-      
-    } catch (Exception e) {
-      throw new RuntimeException(e);
-    }
-  }
+//  @Test
+//  public void testManagerStartOneExistingPersistenceBundleNoExistingProvider() throws Exception
+//  {
+//    //Check we don't register anything (the bundle was installed before we started)
+//
+//    PersistenceBundleManager mgr = new PersistenceBundleManager();
+//    
+//    BundleContext ctx = extenderBundle.getBundleContext();
+//    
+//    Skeleton.getSkeleton(ctx).setReturnValue(
+//        new MethodCall(BundleContext.class, "getBundles"),
+//        new Bundle[] {persistenceBundle});
+//    
+//    setupPersistenceBundle("unittest/resources/file4/");
+//    
+//    mgr.start(ctx);
+//    
+//    BundleContextMock.assertNoServiceExists(PersistenceUnitInfoService.class.getName());
+//    
+//  }
+//
+//  @Test
+//  public void testManagerStartOneExistingPersistenceBundleOneExistingProvider() throws Exception
+//  {
+//    //Check we don't register anything (the bundle was installed before we started)
+//
+//    PersistenceProvider pp = Skeleton.newMock(PersistenceProvider.class);
+//    
+//    Hashtable<String,String> hash1 = new Hashtable<String, String>();
+//    persistenceBundle.getBundleContext().registerService(new String[] {PersistenceProvider.class.getName(), "no.such.Provider"} ,
+//        pp, hash1 );
+//    
+//    PersistenceBundleManager mgr = new PersistenceBundleManager();
+//    
+//    BundleContext ctx = extenderBundle.getBundleContext();
+//    
+//    Skeleton.getSkeleton(ctx).setReturnValue(
+//        new MethodCall(BundleContext.class, "getBundles"),
+//        new Bundle[] {persistenceBundle});
+//    
+//    setupPersistenceBundle("unittest/resources/file4/");
+//    
+//    mgr.start(ctx);
+//    
+//    BundleContextMock.assertNoServiceExists(PersistenceUnitInfoService.class.getName());
+//  }
+//  
+//  @Test
+//  public void testManagerStopUnregistersUnits() throws Exception
+//  {
+//    PersistenceProvider pp = Skeleton.newMock(PersistenceProvider.class);
+//    
+//    Hashtable<String,String> hash1 = new Hashtable<String, String>();
+//    persistenceBundle.getBundleContext().registerService(new String[] {PersistenceProvider.class.getName(), "no.such.Provider"} ,
+//        pp, hash1 );
+//    
+//    PersistenceBundleManager mgr = new PersistenceBundleManager();
+//    
+//    BundleContext ctx = extenderBundle.getBundleContext();
+//    
+//    setupPersistenceBundle("unittest/resources/file4/");
+//    mgr.start(ctx);
+//
+//    testSuccessfulInstalledEvent(mgr, ctx, 1);
+//    
+//    mgr.stop(ctx);
+//    
+//    BundleContextMock.assertNoServiceExists(PersistenceUnitInfoService.class.getName());
+//  }
+//
+//  @Test
+//  public void testBundleChangedInstalledOnePreexistingProvider() throws Exception
+//  {
+//    //Check we correctly parse and register Persistence Units
+//
+//    PersistenceProvider pp = Skeleton.newMock(PersistenceProvider.class);
+//    
+//    Hashtable<String,String> hash1 = new Hashtable<String, String>();
+//    persistenceBundle.getBundleContext().registerService(new String[] {PersistenceProvider.class.getName(), "no.such.Provider"} ,
+//        pp, hash1 );
+//    
+//    PersistenceBundleManager mgr = new PersistenceBundleManager();
+//    
+//    BundleContext ctx = extenderBundle.getBundleContext();
+//    
+//    setupPersistenceBundle("unittest/resources/file4/");
+//    mgr.start(ctx);
+//
+//    testSuccessfulInstalledEvent(mgr, ctx, 1);
+//  }
+//  
+//  @Test
+//  public void testBundleChangedUninstalled() throws Exception
+//  {
+//    PersistenceProvider pp = Skeleton.newMock(PersistenceProvider.class);
+//    
+//    Hashtable<String,String> hash1 = new Hashtable<String, String>();
+//    persistenceBundle.getBundleContext().registerService(new String[] {PersistenceProvider.class.getName(), "no.such.Provider"} ,
+//        pp, hash1 );
+//    
+//    PersistenceBundleManager mgr = new PersistenceBundleManager();
+//    
+//    BundleContext ctx = extenderBundle.getBundleContext();
+//    
+//    Bundle fragment = Skeleton.newMock(Bundle.class);
+//    
+//    Skeleton.getSkeleton(ctx).setReturnValue(new MethodCall(BundleContext.class, "installBundle",
+//        FRAGMENT_SYM_NAME, InputStream.class), fragment);
+//    
+//    setupPersistenceBundle("unittest/resources/file4/");
+//    mgr.start(ctx);
+//
+//    testSuccessfulInstalledEvent(mgr, ctx, 1);
+//    
+//    mgr.bundleChanged(new BundleEvent(BundleEvent.UNINSTALLED, persistenceBundle));
+//    
+//    BundleContextMock.assertNoServiceExists(PersistenceUnitInfoService.class.getName());
+//    
+//    Skeleton.getSkeleton(fragment).assertCalled(new MethodCall(Bundle.class, "uninstall"));
+//  }
+//  
+//  @Test
+//  public void testBundleChangedUpdated() throws Exception
+//  {
+//    PersistenceProvider pp = Skeleton.newMock(PersistenceProvider.class);
+//    
+//    Hashtable<String,String> hash1 = new Hashtable<String, String>();
+//    persistenceBundle.getBundleContext().registerService(new String[] {PersistenceProvider.class.getName(), "no.such.Provider"} ,
+//        pp, hash1 );
+//    
+//    PersistenceBundleManager mgr = new PersistenceBundleManager();
+//    
+//    BundleContext ctx = extenderBundle.getBundleContext();
+//    
+//    Bundle fragment = Skeleton.newMock(Bundle.class);
+//    
+//    Skeleton.getSkeleton(ctx).setReturnValue(new MethodCall(BundleContext.class, "installBundle",
+//        FRAGMENT_SYM_NAME, InputStream.class), fragment);
+//    
+//    setupPersistenceBundle("unittest/resources/file4/");
+//    mgr.start(ctx);
+//
+//    testSuccessfulInstalledEvent(mgr, ctx, 1);
+//    
+//    Skeleton.getSkeleton(ctx).clearMethodCalls();
+//    
+//    mgr.bundleChanged(new BundleEvent(BundleEvent.UPDATED, persistenceBundle));
+//    
+//    BundleContextMock.assertServiceExists(PersistenceUnitInfoService.class.getName());
+//    
+//    ServiceReference[] refs = ctx.getServiceReferences(PersistenceUnitInfoService.class.getName(), null);
+//    
+//    assertEquals("Too many persistence units registered", 1, refs.length);
+//    
+//    Skeleton.getSkeleton(fragment).assertCalled(new MethodCall(Bundle.class, "uninstall"));
+//    Skeleton.getSkeleton(ctx).assertCalled(new MethodCall(BundleContext.class, "installBundle",
+//        FRAGMENT_SYM_NAME, InputStream.class));
+//  }
+//  
+//  @Test
+//  public void testBundleChangedUnresolved() throws Exception
+//  {
+//    PersistenceProvider pp = Skeleton.newMock(PersistenceProvider.class);
+//    
+//    Hashtable<String,String> hash1 = new Hashtable<String, String>();
+//    persistenceBundle.getBundleContext().registerService(new String[] {PersistenceProvider.class.getName(), "no.such.Provider"} ,
+//        pp, hash1 );
+//    
+//    PersistenceBundleManager mgr = new PersistenceBundleManager();
+//    
+//    BundleContext ctx = extenderBundle.getBundleContext();
+//    
+//    Bundle fragment = Skeleton.newMock(Bundle.class);
+//    
+//    Skeleton.getSkeleton(ctx).setReturnValue(new MethodCall(BundleContext.class, "installBundle",
+//        FRAGMENT_SYM_NAME, InputStream.class), fragment);
+//    
+//    setupPersistenceBundle("unittest/resources/file4/");
+//    mgr.start(ctx);
+//
+//    testSuccessfulInstalledEvent(mgr, ctx, 1);
+//    
+//    Skeleton.getSkeleton(ctx).clearMethodCalls();
+//    
+//    mgr.bundleChanged(new BundleEvent(BundleEvent.UNRESOLVED, persistenceBundle));
+//    
+//    BundleContextMock.assertServiceExists(PersistenceUnitInfoService.class.getName());
+//    
+//    ServiceReference[] refs = ctx.getServiceReferences(PersistenceUnitInfoService.class.getName(), null);
+//    
+//    assertEquals("Too many persistence units registered", 1, refs.length);
+//    
+//    Skeleton.getSkeleton(fragment).assertCalled(new MethodCall(Bundle.class, "uninstall"));
+//    Skeleton.getSkeleton(ctx).assertCalled(new MethodCall(BundleContext.class, "installBundle",
+//        FRAGMENT_SYM_NAME, InputStream.class));
+//  }
+//  
+//  @Test
+//  public void testBundleChangedInstalledOnePostRegisteredProvider() throws Exception
+//  {
+//    //Check we correctly parse and register Persistence Units
+//    
+//    PersistenceBundleManager mgr = new PersistenceBundleManager();
+//    
+//    BundleContext ctx = extenderBundle.getBundleContext();
+//    
+//    setupPersistenceBundle("unittest/resources/file4/");
+//    mgr.start(ctx);
+//
+//    BundleContextMock.assertNoServiceExists(PersistenceUnitInfoService.class.getName());
+//
+//    PersistenceProvider pp = Skeleton.newMock(PersistenceProvider.class);
+//    
+//    Hashtable<String,String> hash1 = new Hashtable<String, String>();
+//    persistenceBundle.getBundleContext().registerService(new String[] {PersistenceProvider.class.getName(), "no.such.Provider"} ,
+//        pp, hash1 );
+//    
+//    testSuccessfulInstalledEvent(mgr, ctx, 1);
+//  }
+//  
+//  @Test
+//  public void testBundleChangedInstalledNoProvider() throws Exception
+//  {
+//    //Check we correctly parse and register Persistence Units
+//    
+//    PersistenceBundleManager mgr = new PersistenceBundleManager();
+//    
+//    BundleContext ctx = extenderBundle.getBundleContext();
+//    
+//    setupPersistenceBundle("unittest/resources/file4/");
+//    mgr.start(ctx);
+//
+//    testUnsuccessfulInstalledEvent(mgr, ctx);
+//  }
+//  
+//  @Test
+//  public void testInstalledWithBadXML() throws Exception
+//  {
+//    //Check we correctly parse and register EMFactories
+//
+//    PersistenceBundleManager mgr = new PersistenceBundleManager();
+//    
+//    BundleContext ctx = extenderBundle.getBundleContext();
+//    
+//    setupPersistenceBundle("unittest/resources/file3/");
+//    
+//    mgr.start(ctx);
+//    
+//    testUnsuccessfulInstalledEvent(mgr, ctx);
+//  }
+//
+//  
+//  @Test
+//  public void testBundleChangedStarting() throws Exception
+//  {
+//    //Check we correctly don't do anything on the started event
+//
+//    PersistenceProvider pp = Skeleton.newMock(PersistenceProvider.class);
+//    
+//    Hashtable<String,String> hash1 = new Hashtable<String, String>();
+//    persistenceBundle.getBundleContext().registerService(new String[] {PersistenceProvider.class.getName(), "no.such.Provider"} ,
+//        pp, hash1 );
+//    
+//    PersistenceBundleManager mgr = new PersistenceBundleManager();
+//    
+//    BundleContext ctx = extenderBundle.getBundleContext();
+//    
+//    setupPersistenceBundle("unittest/resources/file4/");
+//
+//    mgr.start(ctx);
+//    
+//    testSuccessfulInstalledEvent(mgr, ctx, 1);
+//    
+//    mgr.bundleChanged(new BundleEvent(BundleEvent.STARTING, persistenceBundle));
+//
+//    BundleContextMock.assertServiceExists(PersistenceUnitInfoService.class.getName());
+//    
+//    ServiceReference[] refs = persistenceBundle.getBundleContext().getServiceReferences(PersistenceUnitInfoService.class.getName(), null);
+//    
+//    assertEquals("The wrong number of persistence units were registered", 1, refs.length);
+// 
+//  }
+//
+//  @Test
+//  public void testBundleChangedLazyActivation() throws Exception
+//  {
+//  //Check we correctly don't do anything on the LAZY event
+//
+//    PersistenceProvider pp = Skeleton.newMock(PersistenceProvider.class);
+//    
+//    Hashtable<String,String> hash1 = new Hashtable<String, String>();
+//    persistenceBundle.getBundleContext().registerService(new String[] {PersistenceProvider.class.getName(), "no.such.Provider"} ,
+//        pp, hash1 );
+//    
+//    PersistenceBundleManager mgr = new PersistenceBundleManager();
+//    
+//    BundleContext ctx = extenderBundle.getBundleContext();
+//    
+//    setupPersistenceBundle("unittest/resources/file4/");
+//
+//    mgr.start(ctx);
+//    
+//    testSuccessfulInstalledEvent(mgr, ctx, 1);
+//    
+//    mgr.bundleChanged(new BundleEvent(BundleEvent.LAZY_ACTIVATION, persistenceBundle));
+//
+//    BundleContextMock.assertServiceExists(PersistenceUnitInfoService.class.getName());
+//    
+//    ServiceReference[] refs = persistenceBundle.getBundleContext().getServiceReferences(PersistenceUnitInfoService.class.getName(), null);
+//    
+//    assertEquals("The wrong number of persistence units were registered", 1, refs.length);
+//   }
+//    
+//  @Test
+//  public void testNoProviderInstalled() throws Exception
+//  {
+//    //Check we do not register a service when there is no Provider
+//    
+//    PersistenceBundleManager mgr = new PersistenceBundleManager();
+//    
+//    BundleContext ctx = extenderBundle.getBundleContext();
+//    
+//    setupPersistenceBundle("unittest/resources/file5/");
+//    
+//    mgr.start(ctx);
+//    
+//    testUnsuccessfulInstalledEvent(mgr, ctx);
+//  }
+//
+//  @Test
+//  public void testdefaultProvider() throws Exception
+//  {
+//    //Check we correctly parse and register EMFactories
+//
+//    PersistenceProvider pp = Skeleton.newMock(PersistenceProvider.class);
+//    
+//    Hashtable<String,String> hash1 = new Hashtable<String, String>();
+//    persistenceBundle.getBundleContext().registerService(new String[] {PersistenceBundleManager.DEFAULT_JPA_PROVIDER} ,
+//        pp, hash1 );
+//    
+//    PersistenceBundleManager mgr = new PersistenceBundleManager();
+//    
+//    BundleContext ctx = extenderBundle.getBundleContext();
+//    
+//    setupPersistenceBundle("unittest/resources/file5/");
+//    
+//    mgr.start(ctx);
+//    
+//    testSuccessfulInstalledEvent(mgr, ctx, 1);
+//
+//  }
+//  
+//  @Test
+//  public void testdefaultProviderWithWAR() throws Exception
+//  {
+//    //Check we correctly parse and register EMFactories
+//
+//    PersistenceProvider pp = Skeleton.newMock(PersistenceProvider.class);
+//    
+//    Hashtable<String,String> hash1 = new Hashtable<String, String>();
+//    persistenceBundle.getBundleContext().registerService(new String[] {PersistenceBundleManager.DEFAULT_JPA_PROVIDER} ,
+//        pp, hash1 );
+//    
+//    PersistenceBundleManager mgr = new PersistenceBundleManager();
+//    
+//    BundleContext ctx = extenderBundle.getBundleContext();
+//    
+//    Skeleton skel = Skeleton.getSkeleton(persistenceBundle);
+//    
+//    skel.setReturnValue(new MethodCall(Bundle.class, "getState"), Bundle.ACTIVE);
+//    
+//    URL root = new File("unittest/resources/file5/").toURI().toURL();
+//    URL xml = new File("unittest/resources/file5/META-INF/persistence.xml").toURI().toURL();
+//    
+//    skel.setReturnValue(new MethodCall(Bundle.class, "getEntry", "WEB-INF/classes/"), root);
+//    skel.setReturnValue(new MethodCall(Bundle.class, "getEntry", "WEB-INF/classes/META-INF/persistence.xml"), xml);
+//    skel.setReturnValue(new MethodCall(Bundle.class, "getVersion"), new Version("0.0.0"));
+//
+//    mgr.start(ctx);
+//    
+//    testSuccessfulInstalledEvent(mgr, ctx, 1);
+//  }
+//
+//  @Test
+//  public void testdefaultProviderWithWARLib() throws Exception
+//  {
+//    //Check we correctly parse and register EMFactories
+//
+//    PersistenceProvider pp = Skeleton.newMock(PersistenceProvider.class);
+//    
+//    Hashtable<String,String> hash1 = new Hashtable<String, String>();
+//    persistenceBundle.getBundleContext().registerService(new String[] {PersistenceBundleManager.DEFAULT_JPA_PROVIDER} ,
+//        pp, hash1 );
+//    
+//    PersistenceBundleManager mgr = new PersistenceBundleManager();
+//    
+//    BundleContext ctx = extenderBundle.getBundleContext();
+//    
+//    Skeleton skel = Skeleton.getSkeleton(persistenceBundle);
+//    
+//    skel.setReturnValue(new MethodCall(Bundle.class, "getState"), Bundle.ACTIVE);
+//    
+//    Vector<String> v = new Vector<String>();
+//      v.add("WEB-INF/lib/jarfile.jar");
+//    
+//    skel.setReturnValue(new MethodCall(Bundle.class, "getEntryPaths", "WEB-INF/lib"), v.elements());
+//    skel.setReturnValue(new MethodCall(Bundle.class, "getVersion"), new Version("0.0.0"));
+//    skel.setReturnValue(new MethodCall(Bundle.class, "getEntry", "WEB-INF/lib/jarfile.jar"), new File("unittest/resources/jarfile.jar").toURI().toURL());
+//
+//    mgr.start(ctx);
+//    
+//    testSuccessfulInstalledEvent(mgr, ctx, 1);
+//  }
+//  
+//  @Test
+//  public void testdefaultProviderWithBundledJar() throws Exception
+//  {
+//    //Check we correctly parse and register EMFactories
+//
+//    PersistenceProvider pp = Skeleton.newMock(PersistenceProvider.class);
+//    
+//    Hashtable<String,String> hash1 = new Hashtable<String, String>();
+//    persistenceBundle.getBundleContext().registerService(new String[] {PersistenceBundleManager.DEFAULT_JPA_PROVIDER} ,
+//        pp, hash1 );
+//    
+//    PersistenceBundleManager mgr = new PersistenceBundleManager();
+//    
+//    BundleContext ctx = extenderBundle.getBundleContext();
+//    
+//    Skeleton skel = Skeleton.getSkeleton(persistenceBundle);
+//    
+//    skel.setReturnValue(new MethodCall(Bundle.class, "getState"), Bundle.ACTIVE);
+//    
+//    URL u = new File("unittest/resources/jarfile.jar").toURI().toURL();
+//    
+//    skel.setReturnValue(new MethodCall(Bundle.class, "getEntry", "unittest/resources/jarfile.jar"), u);
+//    skel.setReturnValue(new MethodCall(Bundle.class, "getVersion"), new Version("0.0.0"));
+//    persistenceBundle.getHeaders().put(Constants.BUNDLE_CLASSPATH, "., unittest/resources/jarfile.jar");
+//
+//    mgr.start(ctx);
+//    
+//    testSuccessfulInstalledEvent(mgr, ctx, 1);
+//
+//  }
+//  
+//  @Test
+//  public void testSameProviders() throws Exception
+//  {
+//    //Check we behave correctly when two persistence units define the same
+//    //provder name
+//
+//    PersistenceProvider pp = Skeleton.newMock(PersistenceProvider.class);
+//    
+//    Hashtable<String,String> hash1 = new Hashtable<String, String>();
+//    persistenceBundle.getBundleContext().registerService(new String[] {PersistenceProvider.class.getName(), "no.such.Provider"} ,
+//        pp, hash1 );
+//    
+//    PersistenceBundleManager mgr = new PersistenceBundleManager();
+//    
+//    BundleContext ctx = extenderBundle.getBundleContext();
+//    
+//    setupPersistenceBundle("unittest/resources/file6/");
+//    
+//    mgr.start(ctx);
+//    
+//    testSuccessfulInstalledEvent(mgr, ctx, 2);
+//  }
+//
+//  @Test
+//  public void testOneWithProviderOneWithout() throws Exception
+//  {
+//    //Check we behave correctly when two persistence units define different
+//    //provder names
+//
+//    PersistenceProvider pp = Skeleton.newMock(PersistenceProvider.class);
+//    
+//    Hashtable<String,String> hash1 = new Hashtable<String, String>();
+//    persistenceBundle.getBundleContext().registerService(new String[] {PersistenceProvider.class.getName(), "no.such.Provider"} ,
+//        pp, hash1 );
+//    
+//    PersistenceBundleManager mgr = new PersistenceBundleManager();
+//    
+//    BundleContext ctx = extenderBundle.getBundleContext();
+//    
+//    setupPersistenceBundle("unittest/resources/file7/");
+//    
+//    mgr.start(ctx);
+//    
+//    BundleContextMock.assertNoServiceExists(PersistenceUnitInfoService.class.getName());
+//    
+//    mgr.bundleChanged(new BundleEvent(BundleEvent.INSTALLED, persistenceBundle));
+//    
+//    BundleContextMock.assertServiceExists(PersistenceUnitInfoService.class.getName());
+//    
+//    ServiceReference[] refs = persistenceBundle.getBundleContext().getServiceReferences(
+//        PersistenceUnitInfoService.class.getName(), null);
+//       
+//    assertEquals("The wrong number of EMFs were registered", 2, refs.length);
+//    
+//    Skeleton.getSkeleton(ctx).assertCalled(new MethodCall(BundleContext.class, "installBundle",
+//        FRAGMENT_SYM_NAME, InputStream.class));
+//  }
+//
+//  @Test
+//  public void testTwoProviders() throws Exception
+//  {
+//    //Check we correctly parse and register EMFactories
+//
+//    PersistenceProvider pp = Skeleton.newMock(PersistenceProvider.class);
+//    
+//    Hashtable<String,String> hash1 = new Hashtable<String, String>();
+//    persistenceBundle.getBundleContext().registerService(new String[] {PersistenceProvider.class.getName(), "no.such.Provider"} ,
+//        pp, hash1 );
+//    
+//    PersistenceBundleManager mgr = new PersistenceBundleManager();
+//    
+//    BundleContext ctx = extenderBundle.getBundleContext();
+//    
+//    Skeleton skel = Skeleton.getSkeleton(persistenceBundle);
+//    
+//    skel.setReturnValue(new MethodCall(Bundle.class, "getState"), Bundle.ACTIVE);
+//    
+//    Vector<URL> v = new Vector<URL>();
+//    v.add(new File("unittest/resources/file8/META-INF/persistence.xml").toURI().toURL());
+//    
+//    skel.setReturnValue(new MethodCall(Bundle.class, "findEntries", "/", "persistence.xml", true), v.elements());
+//    skel.setReturnValue(new MethodCall(Bundle.class, "getVersion"), new Version("0.0.0"));
+//    
+//    mgr.start(ctx);
+//    
+//    BundleContextMock.assertNoServiceExists(PersistenceUnitInfoService.class.getName());
+//    
+//    mgr.bundleChanged(new BundleEvent(BundleEvent.INSTALLED, persistenceBundle));
+//    
+//    BundleContextMock.assertNoServiceExists(PersistenceUnitInfoService.class.getName());
+//    
+//    Skeleton.getSkeleton(ctx).assertNotCalled(new MethodCall(BundleContext.class, "installBundle",
+//        FRAGMENT_SYM_NAME, InputStream.class));
+//  }
+//  
+//  @Test
+//  public void testpp100() throws Exception
+//  {
+//    PersistenceBundleManager mgr = new PersistenceBundleManager();
+//     
+//    PersistenceProvider pp100 = Skeleton.newMock(PersistenceProvider.class);
+//    PersistenceProvider pp101 = Skeleton.newMock(PersistenceProvider.class);
+//    PersistenceProvider pp110 = Skeleton.newMock(PersistenceProvider.class);
+//    PersistenceProvider pp111 = Skeleton.newMock(PersistenceProvider.class);
+//    
+//    registerVersionedPersistenceProviders(pp100, pp101, pp110, pp111);
+//    
+//    BundleContext ctx = extenderBundle.getBundleContext();
+//    
+//    setupPersistenceBundle("unittest/resources/file9/");
+//
+//    assertCorrectPersistenceProviderUsed(mgr, ctx, pp100);
+//  }
+//
+//  @Test
+//  public void testpp101() throws Exception
+//  {
+//    PersistenceBundleManager mgr = new PersistenceBundleManager();
+//    
+//    PersistenceProvider pp100 = Skeleton.newMock(PersistenceProvider.class);
+//    PersistenceProvider pp101 = Skeleton.newMock(PersistenceProvider.class);
+//    PersistenceProvider pp110 = Skeleton.newMock(PersistenceProvider.class);
+//    PersistenceProvider pp111 = Skeleton.newMock(PersistenceProvider.class);
+//    
+//    registerVersionedPersistenceProviders(pp100, pp101, pp110, pp111);
+//    
+//    BundleContext ctx = extenderBundle.getBundleContext();
+//    
+//    setupPersistenceBundle("unittest/resources/file10/");
+//    
+//    mgr.start(ctx);
+//    
+//    assertCorrectPersistenceProviderUsed(mgr, ctx, pp101);
+//  }
+//  
+//  @Test
+//  public void testpp101b() throws Exception
+//  {
+//    PersistenceBundleManager mgr = new PersistenceBundleManager();
+//    
+//    PersistenceProvider pp100 = Skeleton.newMock(PersistenceProvider.class);
+//    PersistenceProvider pp101 = Skeleton.newMock(PersistenceProvider.class);
+//    PersistenceProvider pp110 = Skeleton.newMock(PersistenceProvider.class);
+//    PersistenceProvider pp111 = Skeleton.newMock(PersistenceProvider.class);
+//    
+//    registerVersionedPersistenceProviders(pp100, pp101, pp110, pp111);
+//    
+//    BundleContext ctx = extenderBundle.getBundleContext();
+//    
+//    setupPersistenceBundle("unittest/resources/file11/");
+//
+//    assertCorrectPersistenceProviderUsed(mgr, ctx, pp101);
+//
+//  }
+//
+//  @Test
+//  public void testpp111() throws Exception
+//  {
+//    PersistenceBundleManager mgr = new PersistenceBundleManager();
+//    
+//    PersistenceProvider pp100 = Skeleton.newMock(PersistenceProvider.class);
+//    PersistenceProvider pp101 = Skeleton.newMock(PersistenceProvider.class);
+//    PersistenceProvider pp110 = Skeleton.newMock(PersistenceProvider.class);
+//    PersistenceProvider pp111 = Skeleton.newMock(PersistenceProvider.class);
+//    
+//    registerVersionedPersistenceProviders(pp100, pp101, pp110, pp111);
+//    
+//    BundleContext ctx = extenderBundle.getBundleContext();
+//    
+//    setupPersistenceBundle("unittest/resources/file12/");
+//
+//    assertCorrectPersistenceProviderUsed(mgr, ctx, pp111);
+//  }
+//
+//  @Test
+//  public void testppNoMatch() throws Exception
+//  {
+//    PersistenceBundleManager mgr = new PersistenceBundleManager();
+//    
+//    PersistenceProvider pp100 = Skeleton.newMock(PersistenceProvider.class);
+//    PersistenceProvider pp101 = Skeleton.newMock(PersistenceProvider.class);
+//    PersistenceProvider pp110 = Skeleton.newMock(PersistenceProvider.class);
+//    PersistenceProvider pp111 = Skeleton.newMock(PersistenceProvider.class);
+//    
+//    registerVersionedPersistenceProviders(pp100, pp101, pp110, pp111);
+//    
+//    BundleContext ctx = extenderBundle.getBundleContext();
+//    
+//    setupPersistenceBundle("unittest/resources/file13/");
+//    
+//    mgr.start(ctx);
+//    
+//    testUnsuccessfulInstalledEvent(mgr,ctx);
+//    
+//  }
+//
+//  @Test
+//  public void testTwoProvidersMatch() throws Exception
+//  {
+//    PersistenceBundleManager mgr = new PersistenceBundleManager();
+//    
+//    PersistenceProvider pp100 = Skeleton.newMock(PersistenceProvider.class);
+//    PersistenceProvider pp101 = Skeleton.newMock(PersistenceProvider.class);
+//    PersistenceProvider pp110 = Skeleton.newMock(PersistenceProvider.class);
+//    PersistenceProvider pp111 = Skeleton.newMock(PersistenceProvider.class);
+//    
+//    registerVersionedPersistenceProviders(pp100, pp101, pp110, pp111);
+//    
+//    BundleContext ctx = extenderBundle.getBundleContext();
+//    
+//    setupPersistenceBundle("unittest/resources/file14/");
+//    
+//    mgr.start(ctx);
+//    assertCorrectPersistenceProviderUsed(mgr, ctx, pp101);
+//  }
+//
+//  @Test
+//  public void testTwoProvidersNoVersionMatch() throws Exception
+//  {
+//    PersistenceBundleManager mgr = new PersistenceBundleManager();
+//    
+//    PersistenceProvider pp100 = Skeleton.newMock(PersistenceProvider.class);
+//    PersistenceProvider pp101 = Skeleton.newMock(PersistenceProvider.class);
+//    PersistenceProvider pp110 = Skeleton.newMock(PersistenceProvider.class);
+//    PersistenceProvider pp111 = Skeleton.newMock(PersistenceProvider.class);
+//    
+//    registerVersionedPersistenceProviders(pp100, pp101, pp110, pp111);
+//    
+//    BundleContext ctx = extenderBundle.getBundleContext();
+//    
+//    setupPersistenceBundle("unittest/resources/file15/");
+//    
+//    mgr.start(ctx);
+//    
+//    testUnsuccessfulInstalledEvent(mgr,ctx);
+//    
+//  }
+//
+//  @Test
+//  public void testTwoProvidersExistNoCommonVersion() throws Exception
+//  {
+//    PersistenceBundleManager mgr = new PersistenceBundleManager();
+//    
+//    PersistenceProvider pp100 = Skeleton.newMock(PersistenceProvider.class);
+//    PersistenceProvider pp101 = Skeleton.newMock(PersistenceProvider.class);
+//    PersistenceProvider pp110 = Skeleton.newMock(PersistenceProvider.class);
+//    PersistenceProvider pp111 = Skeleton.newMock(PersistenceProvider.class);
+//    
+//    registerVersionedPersistenceProviders(pp100, pp101, pp110, pp111);
+//    
+//    BundleContext ctx = extenderBundle.getBundleContext();
+//    
+//    setupPersistenceBundle("unittest/resources/file17/");
+//    
+//    mgr.start(ctx);
+//    
+//    testUnsuccessfulInstalledEvent(mgr,ctx);
+//    
+//  }
+//  
+//  @Test
+//  public void testThreeProvidersNoVersionMatch() throws Exception
+//  {
+//    PersistenceBundleManager mgr = new PersistenceBundleManager();
+//    
+//    PersistenceProvider pp100 = Skeleton.newMock(PersistenceProvider.class);
+//    PersistenceProvider pp101 = Skeleton.newMock(PersistenceProvider.class);
+//    PersistenceProvider pp110 = Skeleton.newMock(PersistenceProvider.class);
+//    PersistenceProvider pp111 = Skeleton.newMock(PersistenceProvider.class);
+//    
+//    registerVersionedPersistenceProviders(pp100, pp101, pp110, pp111);
+//    
+//    BundleContext ctx = extenderBundle.getBundleContext();
+//    
+//    setupPersistenceBundle("unittest/resources/file16/");
+//   
+//    mgr.start(ctx);
+//    
+//    testUnsuccessfulInstalledEvent(mgr,ctx);
+//    
+//  }
+//
+//  @Test
+//  public void testTwoProvidersNoVersionMatchOneExists() throws Exception
+//  {
+//    PersistenceBundleManager mgr = new PersistenceBundleManager();
+//    
+//    PersistenceProvider pp100 = Skeleton.newMock(PersistenceProvider.class);
+//    PersistenceProvider pp101 = Skeleton.newMock(PersistenceProvider.class);
+//    PersistenceProvider pp110 = Skeleton.newMock(PersistenceProvider.class);
+//    PersistenceProvider pp111 = Skeleton.newMock(PersistenceProvider.class);
+//    
+//    registerVersionedPersistenceProviders(pp100, pp101, pp110, pp111);
+//    
+//    BundleContext ctx = extenderBundle.getBundleContext();
+//    
+//    setupPersistenceBundle("unittest/resources/file18/");
+//
+//    mgr.start(ctx);
+//    
+//    testUnsuccessfulInstalledEvent(mgr,ctx);
+//  }
+//
+//  @Test
+//  public void testThreeProvidersNoVersionMatchOneExists() throws Exception
+//  {
+//    PersistenceBundleManager mgr = new PersistenceBundleManager();
+//    
+//    PersistenceProvider pp100 = Skeleton.newMock(PersistenceProvider.class);
+//    PersistenceProvider pp101 = Skeleton.newMock(PersistenceProvider.class);
+//    PersistenceProvider pp110 = Skeleton.newMock(PersistenceProvider.class);
+//    PersistenceProvider pp111 = Skeleton.newMock(PersistenceProvider.class);
+//    
+//    registerVersionedPersistenceProviders(pp100, pp101, pp110, pp111);
+//    
+//    BundleContext ctx = extenderBundle.getBundleContext();
+//    
+//    Skeleton skel = Skeleton.getSkeleton(persistenceBundle);
+//    
+//    skel.setReturnValue(new MethodCall(Bundle.class, "getState"), Bundle.ACTIVE);
+//    
+//    setupPersistenceBundle("unittest/resources/file19/");
+//
+//    mgr.start(ctx);
+//    
+//    testUnsuccessfulInstalledEvent(mgr,ctx);
+//    
+//  }
+//
+//  @Test
+//  public void testThreeProvidersNoVersionMatchTwoExist() throws Exception
+//  {
+//    PersistenceBundleManager mgr = new PersistenceBundleManager();
+//    
+//    PersistenceProvider pp100 = Skeleton.newMock(PersistenceProvider.class);
+//    PersistenceProvider pp101 = Skeleton.newMock(PersistenceProvider.class);
+//    PersistenceProvider pp110 = Skeleton.newMock(PersistenceProvider.class);
+//    PersistenceProvider pp111 = Skeleton.newMock(PersistenceProvider.class);
+//    
+//    registerVersionedPersistenceProviders(pp100, pp101, pp110, pp111);
+//    
+//    BundleContext ctx = extenderBundle.getBundleContext();
+//    
+//    Skeleton skel = Skeleton.getSkeleton(persistenceBundle);
+//    
+//    skel.setReturnValue(new MethodCall(Bundle.class, "getState"), Bundle.ACTIVE);
+//    
+//    setupPersistenceBundle("unittest/resources/file20/");
+//
+//    mgr.start(ctx);
+//
+//    testUnsuccessfulInstalledEvent(mgr, ctx);
+//  }
+// 
+//  private void setupPersistenceBundle(String s) throws MalformedURLException
+//  {
+//    Skeleton skel = Skeleton.getSkeleton(persistenceBundle);
+//    
+//    skel.setReturnValue(new MethodCall(Bundle.class, "getState"), Bundle.ACTIVE);
+//    
+//    URL root = new File(s).toURI().toURL();
+//    
+//    URL xml = new File(s + "META-INF/persistence.xml").toURI().toURL();
+//    
+//    skel.setReturnValue(new MethodCall(Bundle.class, "getEntry", "/"), root);
+//    skel.setReturnValue(new MethodCall(Bundle.class, "getEntry", "/META-INF/persistence.xml"), xml);
+//    skel.setReturnValue(new MethodCall(Bundle.class, "getVersion"), new Version("0.0.0"));
+//
+//  }
+//  
+//  private void registerVersionedPersistenceProviders(PersistenceProvider pp100,
+//      PersistenceProvider pp101, PersistenceProvider pp110,
+//      PersistenceProvider pp111) {
+//    Hashtable<String,String> hash1 = new Hashtable<String, String>();
+//    hash1.put("osgi.jpa.provider.version", "1.0.0");
+//    providerBundleP100.getBundleContext().registerService(new String[] {PersistenceProvider.class.getName(), "no.such.Provider"} ,
+//        pp100, hash1 );
+//    
+//    hash1 = new Hashtable<String, String>();
+//    hash1.put("osgi.jpa.provider.version", "1.0.1");
+//    providerBundleP101.getBundleContext().registerService(new String[] {PersistenceProvider.class.getName(), "no.such.Provider"} ,
+//        pp101, hash1 );
+//    
+//    hash1 = new Hashtable<String, String>();
+//    hash1.put("osgi.jpa.provider.version", "1.1.0");
+//    providerBundleP110.getBundleContext().registerService(new String[] {PersistenceProvider.class.getName(), "no.such.Provider"} ,
+//        pp110, hash1 );
+//    
+//    hash1 = new Hashtable<String, String>();
+//    hash1.put("osgi.jpa.provider.version", "1.1.1");
+//    providerBundleP111.getBundleContext().registerService(new String[] {PersistenceProvider.class.getName(), "no.such.Provider"} ,
+//        pp111, hash1 );
+//  }
+//  
+//
+//  private void testSuccessfulInstalledEvent(PersistenceBundleManager mgr, BundleContext ctx, int numberOfPersistenceUnits) throws InvalidSyntaxException
+//  {
+//    BundleContextMock.assertNoServiceExists(PersistenceUnitInfoService.class.getName());
+//    
+//    mgr.bundleChanged(new BundleEvent(BundleEvent.INSTALLED, persistenceBundle));
+//    
+//    BundleContextMock.assertServiceExists(PersistenceUnitInfoService.class.getName());
+//    
+//    ServiceReference[] refs = persistenceBundle.getBundleContext().getServiceReferences(PersistenceUnitInfoService.class.getName(), null);
+//    
+//    assertEquals("The wrong number of persistence units were registered", numberOfPersistenceUnits, refs.length);
+//    
+//    for(ServiceReference ref : refs) {
+//      assertEquals("Incorrect properties registerered", "scooby.doo", ref.getProperty(PersistenceUnitInfoService.PERSISTENCE_BUNDLE_SYMBOLIC_NAME));
+//      assertEquals("Incorrect properties registerered", Version.emptyVersion, ref.getProperty(PersistenceUnitInfoService.PERSISTENCE_BUNDLE_VERSION));
+//      assertNotNull("Incorrect properties registerered", ref.getProperty(PersistenceUnitInfoService.PERSISTENCE_UNIT_NAME));
+//    }
+//    
+//    Skeleton.getSkeleton(ctx).assertCalled(new MethodCall(BundleContext.class, "installBundle",
+//        FRAGMENT_SYM_NAME, InputStream.class));
+//  }
+//  
+//  private void testUnsuccessfulInstalledEvent(PersistenceBundleManager mgr, BundleContext ctx)
+//  {
+//    BundleContextMock.assertNoServiceExists(PersistenceUnitInfoService.class.getName());
+//    
+//    mgr.bundleChanged(new BundleEvent(BundleEvent.INSTALLED, persistenceBundle));
+//    
+//    BundleContextMock.assertNoServiceExists(PersistenceUnitInfoService.class.getName());
+//    
+//    Skeleton.getSkeleton(ctx).assertNotCalled(new MethodCall(BundleContext.class, "installBundle",
+//        String.class, InputStream.class));
+//  }
+//  
+//  private void assertCorrectPersistenceProviderUsed (PersistenceBundleManager mgr, BundleContext ctx, PersistenceProvider provider)
+//  {
+//    try {
+//      mgr.start(ctx);
+//      
+//      BundleContextMock.assertNoServiceExists(PersistenceUnitInfoService.class.getName());
+//      
+//      mgr.bundleChanged(new BundleEvent(BundleEvent.INSTALLED, persistenceBundle));
+//      
+//      BundleContextMock.assertServiceExists(PersistenceUnitInfoService.class.getName());
+//      ServiceReference[] refs = persistenceBundle.getBundleContext().getServiceReferences(PersistenceUnitInfoService.class.getName(), null);
+//    
+//      for(ServiceReference ref : refs) {
+//        PersistenceUnitInfoService pu = (PersistenceUnitInfoService) persistenceBundle.getBundleContext().getService(ref);
+//    
+//        assertNotNull("No PersistenceUnit was registered", pu);
+//    
+//        Object pp = persistenceBundle.getBundleContext().getService(pu.getProviderReference());
+//    
+//        assertSame("The perstistnce unit was associated with the wrong persistence provider",
+//        pp, provider);
+//      }
+//      
+//      Skeleton.getSkeleton(ctx).assertCalled(new MethodCall(BundleContext.class, "installBundle",
+//          FRAGMENT_SYM_NAME, InputStream.class));
+//      
+//    } catch (Exception e) {
+//      throw new RuntimeException(e);
+//    }
+//  }
 
 }