You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by ma...@apache.org on 2010/01/19 18:50:09 UTC

svn commit: r900865 - in /incubator/aries/trunk: blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/mutable/ jpa/jpa-container-context/ jpa/jpa-container-context/src/main/java/org/apache/aries/jpa/container/context/ jpa/jpa-container-con...

Author: mahrwald
Date: Tue Jan 19 17:49:50 2010
New Revision: 900865

URL: http://svn.apache.org/viewvc?rev=900865&view=rev
Log:
ARIES-118 Some fixes to make the stuff actually work :)

Modified:
    incubator/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/mutable/MutableServiceReferenceMetadata.java
    incubator/aries/trunk/jpa/jpa-container-context/pom.xml
    incubator/aries/trunk/jpa/jpa-container-context/src/main/java/org/apache/aries/jpa/container/context/GlobalPersistenceManager.java
    incubator/aries/trunk/jpa/jpa-container-context/src/main/java/org/apache/aries/jpa/container/context/impl/PersistenceContextManager.java
    incubator/aries/trunk/jpa/jpa-container-context/src/main/java/org/apache/aries/jpa/container/context/namespace/NSHandler.java
    incubator/aries/trunk/jpa/jpa-container-context/src/main/resources/OSGI-INF/blueprint/jpa.xml
    incubator/aries/trunk/jpa/jpa-container-context/src/main/resources/org/apache/aries/jpa/container/context/namespace/jpa.xsd
    incubator/aries/trunk/jpa/jpa-container-context/src/test/java/org/apache/aries/jpa/container/context/impl/PersistenceContextManagerTest.java
    incubator/aries/trunk/jpa/jpa-container-context/src/test/java/org/apache/aries/jpa/container/context/namespace/NSHandlerTest.java
    incubator/aries/trunk/jpa/jpa-container/pom.xml
    incubator/aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/PersistenceUnitConstants.java
    incubator/aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/impl/EntityManagerFactoryManager.java
    incubator/aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/unit/impl/ManagedPersistenceUnitInfoFactoryImpl.java
    incubator/aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/unit/impl/ManagedPersistenceUnitInfoImpl.java
    incubator/aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/unit/impl/PersistenceUnitInfoImpl.java
    incubator/aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/unit/impl/TempBundleDelegatingClassLoader.java

Modified: incubator/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/mutable/MutableServiceReferenceMetadata.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/mutable/MutableServiceReferenceMetadata.java?rev=900865&r1=900864&r2=900865&view=diff
==============================================================================
--- incubator/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/mutable/MutableServiceReferenceMetadata.java (original)
+++ incubator/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/mutable/MutableServiceReferenceMetadata.java Tue Jan 19 17:49:50 2010
@@ -45,4 +45,5 @@
 
     void setProxyMethod(int proxyMethod);
 
+    void setFilter(String filter);
 }

Modified: incubator/aries/trunk/jpa/jpa-container-context/pom.xml
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/jpa/jpa-container-context/pom.xml?rev=900865&r1=900864&r2=900865&view=diff
==============================================================================
--- incubator/aries/trunk/jpa/jpa-container-context/pom.xml (original)
+++ incubator/aries/trunk/jpa/jpa-container-context/pom.xml Tue Jan 19 17:49:50 2010
@@ -95,6 +95,14 @@
                     <include>*.xml</include>
                 </includes>
             </resource>
+            <resource>
+              <targetPath>org/apache/aries/jpa/container/context/namespace</targetPath>
+              <filtering>false</filtering>
+              <directory>${basedir}/src/main/resources/org/apache/aries/jpa/container/context/namespace</directory>
+              <includes>
+                <include>*.xsd</include>
+              </includes>
+            </resource>
         </resources>
         <plugins>
             <plugin>
@@ -103,11 +111,13 @@
                 <extensions>true</extensions>
                 <configuration>
                     <instructions>
-                        <Bundle-SymbolicName>${pom.groupId}.container</Bundle-SymbolicName>
-                        <Export-Package>
-                            org.apache.aries.jpa.container.parsing;version="${pom.version}",
-                            org.apache.aries.jpa.container;version="${pom.version}"
-                        </Export-Package>
+                        <Bundle-SymbolicName>${pom.groupId}.container.context</Bundle-SymbolicName>
+                        <Import-Package>
+                           javax.persistence;version="[1.0.0,1.2.0)",
+                           javax.persistence.criteria;version="[1.1.0,1.2.0)";resolution:=optional,
+                           javax.persistence.metamodel;version="[1.1.0,1.2.0)";resolution:=optional,
+                           *
+                        </Import-Package>
                         <_versionpolicy>[$(version;==;$(@)),$(version;+;$(@)))</_versionpolicy>
                         <_removeheaders>Ignore-Package,Include-Resource,Private-Package,Bundle-DocURL</_removeheaders>
                     </instructions>

Modified: incubator/aries/trunk/jpa/jpa-container-context/src/main/java/org/apache/aries/jpa/container/context/GlobalPersistenceManager.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/jpa/jpa-container-context/src/main/java/org/apache/aries/jpa/container/context/GlobalPersistenceManager.java?rev=900865&r1=900864&r2=900865&view=diff
==============================================================================
--- incubator/aries/trunk/jpa/jpa-container-context/src/main/java/org/apache/aries/jpa/container/context/GlobalPersistenceManager.java (original)
+++ incubator/aries/trunk/jpa/jpa-container-context/src/main/java/org/apache/aries/jpa/container/context/GlobalPersistenceManager.java Tue Jan 19 17:49:50 2010
@@ -55,6 +55,7 @@
         manager = managers.get(frameworkBundle);
       } else {
         manager = new PersistenceContextManager(frameworkBundle.getBundleContext(), registry);
+        manager.open();
         managers.put(frameworkBundle, manager);
         frameworkBundle.getBundleContext().addBundleListener(this);
       }

Modified: incubator/aries/trunk/jpa/jpa-container-context/src/main/java/org/apache/aries/jpa/container/context/impl/PersistenceContextManager.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/jpa/jpa-container-context/src/main/java/org/apache/aries/jpa/container/context/impl/PersistenceContextManager.java?rev=900865&r1=900864&r2=900865&view=diff
==============================================================================
--- incubator/aries/trunk/jpa/jpa-container-context/src/main/java/org/apache/aries/jpa/container/context/impl/PersistenceContextManager.java (original)
+++ incubator/aries/trunk/jpa/jpa-container-context/src/main/java/org/apache/aries/jpa/container/context/impl/PersistenceContextManager.java Tue Jan 19 17:49:50 2010
@@ -233,6 +233,7 @@
       Hashtable<String, Object> props = new Hashtable<String, Object>();
       
       props.put(PersistenceUnitConstants.OSGI_UNIT_NAME, name);
+      props.put(PersistenceUnitConstants.OSGI_UNIT_VERSION, unit.getProperty(PersistenceUnitConstants.OSGI_UNIT_VERSION));
       props.put(PersistenceUnitConstants.CONTAINER_MANAGED_PERSISTENCE_UNIT, Boolean.TRUE);
       props.put(PersistenceUnitConstants.OSGI_UNIT_PROVIDER, unit.getProperty(PersistenceUnitConstants.OSGI_UNIT_PROVIDER));
       props.put(PersistenceUnitConstants.EMPTY_PERSISTENCE_UNIT_NAME, "".equals(name));

Modified: incubator/aries/trunk/jpa/jpa-container-context/src/main/java/org/apache/aries/jpa/container/context/namespace/NSHandler.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/jpa/jpa-container-context/src/main/java/org/apache/aries/jpa/container/context/namespace/NSHandler.java?rev=900865&r1=900864&r2=900865&view=diff
==============================================================================
--- incubator/aries/trunk/jpa/jpa-container-context/src/main/java/org/apache/aries/jpa/container/context/namespace/NSHandler.java (original)
+++ incubator/aries/trunk/jpa/jpa-container-context/src/main/java/org/apache/aries/jpa/container/context/namespace/NSHandler.java Tue Jan 19 17:49:50 2010
@@ -20,6 +20,7 @@
 
 import java.net.URL;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -32,9 +33,7 @@
 import org.apache.aries.blueprint.NamespaceHandler;
 import org.apache.aries.blueprint.ParserContext;
 import org.apache.aries.blueprint.PassThroughMetadata;
-import org.apache.aries.blueprint.mutable.MutableBeanProperty;
-import org.apache.aries.blueprint.reflect.BeanPropertyImpl;
-import org.apache.aries.blueprint.reflect.ReferenceMetadataImpl;
+import org.apache.aries.blueprint.mutable.MutableReferenceMetadata;
 import org.apache.aries.jpa.container.PersistenceUnitConstants;
 import org.apache.aries.jpa.container.context.PersistenceManager;
 import org.osgi.framework.Bundle;
@@ -45,6 +44,7 @@
 import org.osgi.service.blueprint.reflect.MapEntry;
 import org.osgi.service.blueprint.reflect.MapMetadata;
 import org.osgi.service.blueprint.reflect.Metadata;
+import org.osgi.service.blueprint.reflect.ReferenceMetadata;
 import org.osgi.service.blueprint.reflect.Target;
 import org.osgi.service.blueprint.reflect.ValueMetadata;
 import org.w3c.dom.Element;
@@ -69,6 +69,8 @@
   
   public static final String EMPTY_UNIT_NAME_FILTER = 
     "(" + PersistenceUnitConstants.EMPTY_PERSISTENCE_UNIT_NAME + "=true)";
+
+  private static final String ACTIVATION_EAGER = "EAGER";
   
   private PersistenceManager manager;
   
@@ -94,7 +96,8 @@
       throw new IllegalArgumentException();
     
     final BeanProperty beanProperty = createInjectMetadata(element, 
-        TAG_UNIT.equals(element.getLocalName()) ? EntityManagerFactory.class : EntityManager.class);
+        TAG_UNIT.equals(element.getLocalName()) ? EntityManagerFactory.class : EntityManager.class,
+        context);
       
     if (TAG_CONTEXT.equals(element.getLocalName())) {
       Bundle client = getBlueprintBundle(context);
@@ -173,22 +176,34 @@
     throw new UnsupportedOperationException();
   }
   
-  private BeanProperty createInjectMetadata(Element element, Class<?> clazz) {
+  private BeanProperty createInjectMetadata(Element element, Class<?> clazz, ParserContext ctx) {
     String unitName = parseUnitName(element);
-    String property = parseProperty(element);
+    final String property = parseProperty(element);
 
-    ReferenceMetadataImpl refMetadata = new ReferenceMetadataImpl();
-    refMetadata.setInterface(clazz.getName());
+    final MutableReferenceMetadata refMetadata = (MutableReferenceMetadata) ctx.createMetadata(ReferenceMetadata.class);
+    refMetadata.setActivation(ACTIVATION_EAGER.equalsIgnoreCase(ctx.getDefaultActivation()) ?
+        ReferenceMetadata.ACTIVATION_EAGER : ReferenceMetadata.ACTIVATION_LAZY);
+    refMetadata.setAvailability(ReferenceMetadata.AVAILABILITY_MANDATORY);
+    refMetadata.setInterface(clazz.getName());    
+    
     if (!"".equals(unitName))
       refMetadata.setFilter("(" + PersistenceUnitConstants.OSGI_UNIT_NAME + "=" + unitName + ")");
     else
       refMetadata.setFilter(EMPTY_UNIT_NAME_FILTER);
     
-    MutableBeanProperty propertyMetadata = new BeanPropertyImpl();
-    propertyMetadata.setName(property);
-    propertyMetadata.setValue(refMetadata);
-    
-    return propertyMetadata;
+    refMetadata.setTimeout(Integer.parseInt(ctx.getDefaultTimeout()));
+    refMetadata.setDependsOn((List<String>) Collections.EMPTY_LIST);
+    refMetadata.setId(ctx.generateId());
+        
+    return new BeanProperty() {      
+      public Metadata getValue() {
+        return refMetadata;
+      }
+      
+      public String getName() {
+        return property;
+      }
+    };
   }
   
   private Bundle getBlueprintBundle(ParserContext context) {

Modified: incubator/aries/trunk/jpa/jpa-container-context/src/main/resources/OSGI-INF/blueprint/jpa.xml
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/jpa/jpa-container-context/src/main/resources/OSGI-INF/blueprint/jpa.xml?rev=900865&r1=900864&r2=900865&view=diff
==============================================================================
--- incubator/aries/trunk/jpa/jpa-container-context/src/main/resources/OSGI-INF/blueprint/jpa.xml (original)
+++ incubator/aries/trunk/jpa/jpa-container-context/src/main/resources/OSGI-INF/blueprint/jpa.xml Tue Jan 19 17:49:50 2010
@@ -30,7 +30,7 @@
     </bean>
   </service>
   
-  <bean id="persistenceManager" class="org.apache.aries.jpa.container.context">
+  <bean id="persistenceManager" class="org.apache.aries.jpa.container.context.GlobalPersistenceManager">
     <property name="registry" ref="JtaPersistenceContextRegistry" />
   </bean>
   

Modified: incubator/aries/trunk/jpa/jpa-container-context/src/main/resources/org/apache/aries/jpa/container/context/namespace/jpa.xsd
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/jpa/jpa-container-context/src/main/resources/org/apache/aries/jpa/container/context/namespace/jpa.xsd?rev=900865&r1=900864&r2=900865&view=diff
==============================================================================
--- incubator/aries/trunk/jpa/jpa-container-context/src/main/resources/org/apache/aries/jpa/container/context/namespace/jpa.xsd (original)
+++ incubator/aries/trunk/jpa/jpa-container-context/src/main/resources/org/apache/aries/jpa/container/context/namespace/jpa.xsd Tue Jan 19 17:49:50 2010
@@ -32,11 +32,11 @@
   
   <xsd:complexType name="TcontextType">
     <xsd:sequence>
-      <xsd:element ref="osgi:map" minOccurs="0" maxOccurs="1" />
+      <xsd:element name="map" type="osgi:Tmap" minOccurs="0" maxOccurs="1" />
     </xsd:sequence>
     <xsd:attribute name="property" type="xsd:string" use="required" />
     <xsd:attribute name="unitname" type="xsd:string" use="optional" />
-    <xsd:attribute name="type" type="contextScopeType" use="optional" />
+    <xsd:attribute name="type" type="TcontextScopeType" use="optional" />
   </xsd:complexType>
 
   <xsd:complexType name="TunitType">

Modified: incubator/aries/trunk/jpa/jpa-container-context/src/test/java/org/apache/aries/jpa/container/context/impl/PersistenceContextManagerTest.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/jpa/jpa-container-context/src/test/java/org/apache/aries/jpa/container/context/impl/PersistenceContextManagerTest.java?rev=900865&r1=900864&r2=900865&view=diff
==============================================================================
--- incubator/aries/trunk/jpa/jpa-container-context/src/test/java/org/apache/aries/jpa/container/context/impl/PersistenceContextManagerTest.java (original)
+++ incubator/aries/trunk/jpa/jpa-container-context/src/test/java/org/apache/aries/jpa/container/context/impl/PersistenceContextManagerTest.java Tue Jan 19 17:49:50 2010
@@ -28,7 +28,6 @@
 import javax.persistence.EntityManagerFactory;
 
 import org.apache.aries.jpa.container.PersistenceUnitConstants;
-import org.apache.aries.jpa.container.context.impl.PersistenceContextManager;
 import org.apache.aries.mocks.BundleContextMock;
 import org.apache.aries.mocks.BundleMock;
 import org.apache.aries.unittest.mocks.Skeleton;
@@ -40,6 +39,7 @@
 import org.osgi.framework.InvalidSyntaxException;
 import org.osgi.framework.ServiceReference;
 import org.osgi.framework.ServiceRegistration;
+import org.osgi.framework.Version;
 
 
 public class PersistenceContextManagerTest {
@@ -257,6 +257,7 @@
       props.put(PersistenceUnitConstants.CONTAINER_MANAGED_PERSISTENCE_UNIT, managed);
     
     props.put(PersistenceUnitConstants.OSGI_UNIT_PROVIDER, "some.provider.Name");
+    props.put(PersistenceUnitConstants.OSGI_UNIT_VERSION, new Version("1.0.0"));
     
     return context.registerService(
         EntityManagerFactory.class.getName(), emf, props);
@@ -273,6 +274,8 @@
     
     assertEquals("Wrong provider name", "some.provider.Name", refs[0].getProperty(PersistenceUnitConstants.OSGI_UNIT_PROVIDER));
     
+    assertEquals("Wrong unit version", new Version("1.0.0"), refs[0].getProperty(PersistenceUnitConstants.OSGI_UNIT_VERSION));
+    
     assertEquals("Unit should be managed", Boolean.TRUE, refs[0].getProperty(PersistenceUnitConstants.CONTAINER_MANAGED_PERSISTENCE_UNIT));
   }
 }

Modified: incubator/aries/trunk/jpa/jpa-container-context/src/test/java/org/apache/aries/jpa/container/context/namespace/NSHandlerTest.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/jpa/jpa-container-context/src/test/java/org/apache/aries/jpa/container/context/namespace/NSHandlerTest.java?rev=900865&r1=900864&r2=900865&view=diff
==============================================================================
--- incubator/aries/trunk/jpa/jpa-container-context/src/test/java/org/apache/aries/jpa/container/context/namespace/NSHandlerTest.java (original)
+++ incubator/aries/trunk/jpa/jpa-container-context/src/test/java/org/apache/aries/jpa/container/context/namespace/NSHandlerTest.java Tue Jan 19 17:49:50 2010
@@ -35,6 +35,7 @@
 import org.apache.aries.blueprint.PassThroughMetadata;
 import org.apache.aries.blueprint.container.Parser;
 import org.apache.aries.blueprint.reflect.BeanMetadataImpl;
+import org.apache.aries.blueprint.reflect.ReferenceMetadataImpl;
 import org.apache.aries.jpa.container.context.PersistenceManager;
 import org.apache.aries.unittest.mocks.MethodCall;
 import org.apache.aries.unittest.mocks.Skeleton;
@@ -44,6 +45,7 @@
 import org.osgi.service.blueprint.reflect.BeanMetadata;
 import org.osgi.service.blueprint.reflect.BeanProperty;
 import org.osgi.service.blueprint.reflect.ComponentMetadata;
+import org.osgi.service.blueprint.reflect.Metadata;
 import org.osgi.service.blueprint.reflect.ReferenceMetadata;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
@@ -83,19 +85,27 @@
     parserCtx = Skeleton.newMock(new ParserContextMock(), ParserContext.class);
     Skeleton.getSkeleton(parserCtx).setReturnValue(
         new MethodCall(ParserContext.class,"getComponentDefinitionRegistry"), registry);
+    Skeleton.getSkeleton(parserCtx).setReturnValue(
+        new MethodCall(ParserContext.class, "getDefaultActivation"), "eager");
+    Skeleton.getSkeleton(parserCtx).setReturnValue(
+        new MethodCall(ParserContext.class, "getDefaultTimeout"), "5000");
   }
   
   private static class ParserContextMock {
     public<T> T parseElement(Class<T> type, ComponentMetadata enclosingComponent, Element element) {
       return new Parser().parseElement(type, enclosingComponent, element);
     }
+    
+    public<T extends Metadata> T createMetadata(Class<T> clazz) {
+      return clazz.cast(new ReferenceMetadataImpl());
+    }
   }
   
   @Test
   public void testUnit() {
     Element e = getTestElement("unit");
     BeanMetadata bean = 
-      (BeanMetadata) sut.decorate(e, Skeleton.newMock(BeanMetadata.class), null);
+      (BeanMetadata) sut.decorate(e, Skeleton.newMock(BeanMetadata.class), parserCtx);
     BeanProperty property = (BeanProperty) bean.getProperties().get(0);
     ReferenceMetadata reference = (ReferenceMetadata) property.getValue();
     
@@ -110,7 +120,7 @@
   public void testUnitNoName() {
     Element e = getTestElement("unitNoName");
     BeanMetadata bean = 
-      (BeanMetadata) sut.decorate(e, Skeleton.newMock(BeanMetadata.class), null);
+      (BeanMetadata) sut.decorate(e, Skeleton.newMock(BeanMetadata.class), parserCtx);
     BeanProperty property = (BeanProperty) bean.getProperties().get(0);
     ReferenceMetadata reference = (ReferenceMetadata) property.getValue();
     
@@ -122,7 +132,7 @@
   public void testEmptyUnitName() {
     Element e = getTestElement("emptyUnitName");
     BeanMetadata bean = 
-      (BeanMetadata) sut.decorate(e, Skeleton.newMock(BeanMetadata.class), null);
+      (BeanMetadata) sut.decorate(e, Skeleton.newMock(BeanMetadata.class), parserCtx);
     BeanProperty property = (BeanProperty) bean.getProperties().get(0);
     ReferenceMetadata reference = (ReferenceMetadata) property.getValue();
     
@@ -137,7 +147,7 @@
     oldBean.setId("myid");
     oldBean.setProperties(Arrays.asList(Skeleton.newMock(BeanProperty.class)));
     
-    BeanMetadata bean = (BeanMetadata) sut.decorate(e, oldBean, null);
+    BeanMetadata bean = (BeanMetadata) sut.decorate(e, oldBean, parserCtx);
 
     assertEquals("myid", bean.getId());
     assertEquals(2, bean.getProperties().size());

Modified: incubator/aries/trunk/jpa/jpa-container/pom.xml
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/jpa/jpa-container/pom.xml?rev=900865&r1=900864&r2=900865&view=diff
==============================================================================
--- incubator/aries/trunk/jpa/jpa-container/pom.xml (original)
+++ incubator/aries/trunk/jpa/jpa-container/pom.xml Tue Jan 19 17:49:50 2010
@@ -87,6 +87,11 @@
                 <configuration>
                     <instructions>
                         <Bundle-SymbolicName>${pom.groupId}.container</Bundle-SymbolicName>
+                        <Import-Package>
+                            javax.persistence;version="[1.0.0,1.2.0)",
+                            javax.persistence.spi;version="[1.0.0,1.2.0)",
+                            *
+                        </Import-Package>
                         <Export-Package>
                             org.apache.aries.jpa.container.parsing;version="${pom.version}",
                             org.apache.aries.jpa.container;version="${pom.version}"

Modified: incubator/aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/PersistenceUnitConstants.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/PersistenceUnitConstants.java?rev=900865&r1=900864&r2=900865&view=diff
==============================================================================
--- incubator/aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/PersistenceUnitConstants.java (original)
+++ incubator/aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/PersistenceUnitConstants.java Tue Jan 19 17:49:50 2010
@@ -26,6 +26,8 @@
 public interface PersistenceUnitConstants {
   /** The service property key mapped to the persistence unit name */
   public static final String OSGI_UNIT_NAME = "osgi.unit.name";
+  /** The version of the persistence bundle as a {@link Version} object*/
+  public static final String OSGI_UNIT_VERSION = "osgi.unit.version";
   /** The service property key mapped to the {@link PersistenceProvider} implementation class name */
   public static final String OSGI_UNIT_PROVIDER = "osgi.unit.provider";
   /** The service property key mapped to a Boolean indicating whether this persistence unit is container managed */ 

Modified: incubator/aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/impl/EntityManagerFactoryManager.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/impl/EntityManagerFactoryManager.java?rev=900865&r1=900864&r2=900865&view=diff
==============================================================================
--- incubator/aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/impl/EntityManagerFactoryManager.java (original)
+++ incubator/aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/impl/EntityManagerFactoryManager.java Tue Jan 19 17:49:50 2010
@@ -180,6 +180,7 @@
           
         props.put(PersistenceUnitConstants.OSGI_UNIT_NAME, unitName);
         props.put(PersistenceUnitConstants.OSGI_UNIT_PROVIDER, providerName);
+        props.put(PersistenceUnitConstants.OSGI_UNIT_VERSION, provider.getBundle().getVersion());
         props.put(PersistenceUnitConstants.CONTAINER_MANAGED_PERSISTENCE_UNIT, Boolean.TRUE);
         props.put(PersistenceUnitConstants.EMPTY_PERSISTENCE_UNIT_NAME, "".equals(unitName));
         try {

Modified: incubator/aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/unit/impl/ManagedPersistenceUnitInfoFactoryImpl.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/unit/impl/ManagedPersistenceUnitInfoFactoryImpl.java?rev=900865&r1=900864&r2=900865&view=diff
==============================================================================
--- incubator/aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/unit/impl/ManagedPersistenceUnitInfoFactoryImpl.java (original)
+++ incubator/aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/unit/impl/ManagedPersistenceUnitInfoFactoryImpl.java Tue Jan 19 17:49:50 2010
@@ -39,7 +39,7 @@
     Collection<ManagedPersistenceUnitInfo> managedUnits = new ArrayList<ManagedPersistenceUnitInfo>();
     
     for(ParsedPersistenceUnit unit : persistenceMetadata)
-      managedUnits.add(new ManagedPersistenceUnitInfoImpl(persistenceBundle, unit));
+      managedUnits.add(new ManagedPersistenceUnitInfoImpl(persistenceBundle, unit, providerReference));
     
     return managedUnits;
   }

Modified: incubator/aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/unit/impl/ManagedPersistenceUnitInfoImpl.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/unit/impl/ManagedPersistenceUnitInfoImpl.java?rev=900865&r1=900864&r2=900865&view=diff
==============================================================================
--- incubator/aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/unit/impl/ManagedPersistenceUnitInfoImpl.java (original)
+++ incubator/aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/unit/impl/ManagedPersistenceUnitInfoImpl.java Tue Jan 19 17:49:50 2010
@@ -25,14 +25,17 @@
 import org.apache.aries.jpa.container.ManagedPersistenceUnitInfo;
 import org.apache.aries.jpa.container.parsing.ParsedPersistenceUnit;
 import org.osgi.framework.Bundle;
+import org.osgi.framework.ServiceReference;
 
 public class ManagedPersistenceUnitInfoImpl implements
     ManagedPersistenceUnitInfo {
 
   private final PersistenceUnitInfo info;
+  
   public ManagedPersistenceUnitInfoImpl(Bundle persistenceBundle,
-      ParsedPersistenceUnit unit) {
-    info = new PersistenceUnitInfoImpl(persistenceBundle, unit);
+      ParsedPersistenceUnit unit,
+      ServiceReference providerRef) {
+    info = new PersistenceUnitInfoImpl(persistenceBundle, unit, providerRef);
   }
 
   public Map<String, Object> getContainerProperties() {

Modified: incubator/aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/unit/impl/PersistenceUnitInfoImpl.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/unit/impl/PersistenceUnitInfoImpl.java?rev=900865&r1=900864&r2=900865&view=diff
==============================================================================
--- incubator/aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/unit/impl/PersistenceUnitInfoImpl.java (original)
+++ incubator/aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/unit/impl/PersistenceUnitInfoImpl.java Tue Jan 19 17:49:50 2010
@@ -34,6 +34,7 @@
 
 import org.apache.aries.jpa.container.parsing.ParsedPersistenceUnit;
 import org.osgi.framework.Bundle;
+import org.osgi.framework.ServiceReference;
 
 public class PersistenceUnitInfoImpl implements PersistenceUnitInfo {
   
@@ -43,10 +44,13 @@
   
   private final BundleDelegatingClassLoader cl;
   
-  public PersistenceUnitInfoImpl (Bundle b, ParsedPersistenceUnit parsedData)
+  private final ServiceReference providerRef;
+  
+  public PersistenceUnitInfoImpl (Bundle b, ParsedPersistenceUnit parsedData, ServiceReference providerRef)
   {
     bundle = b;
     unit = parsedData;
+    this.providerRef = providerRef;
     cl = new BundleDelegatingClassLoader(b);
   }
   
@@ -98,7 +102,7 @@
   }
 
   public ClassLoader getNewTempClassLoader() {
-    return new TempBundleDelegatingClassLoader(bundle);
+    return new TempBundleDelegatingClassLoader(bundle, new BundleDelegatingClassLoader(providerRef.getBundle()));
   }
 
   public DataSource getNonJtaDataSource() {

Modified: incubator/aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/unit/impl/TempBundleDelegatingClassLoader.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/unit/impl/TempBundleDelegatingClassLoader.java?rev=900865&r1=900864&r2=900865&view=diff
==============================================================================
--- incubator/aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/unit/impl/TempBundleDelegatingClassLoader.java (original)
+++ incubator/aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/unit/impl/TempBundleDelegatingClassLoader.java Tue Jan 19 17:49:50 2010
@@ -34,7 +34,8 @@
 
   private final Bundle bundle;
   
-  public TempBundleDelegatingClassLoader(Bundle b) {
+  public TempBundleDelegatingClassLoader(Bundle b, ClassLoader parent) {
+    super(parent);
     bundle = b;
   }