Modified: 
aries/branches/subsystemsR6/jndi/jndi-core/src/main/java/org/apache/aries/jndi/Utils.java
URL: 
http://svn.apache.org/viewvc/aries/branches/subsystemsR6/jndi/jndi-core/src/main/java/org/apache/aries/jndi/Utils.java?rev=1650143&r1=1650142&r2=1650143&view=diff
==============================================================================
--- 
aries/branches/subsystemsR6/jndi/jndi-core/src/main/java/org/apache/aries/jndi/Utils.java
 (original)
+++ 
aries/branches/subsystemsR6/jndi/jndi-core/src/main/java/org/apache/aries/jndi/Utils.java
 Wed Jan  7 19:37:42 2015
@@ -28,8 +28,6 @@ import java.util.Map;
 
 import javax.naming.NamingException;
 
-import org.apache.aries.jndi.spi.EnvironmentAugmentation;
-import org.apache.aries.jndi.startup.Activator;
 import org.apache.aries.util.nls.MessageUtil;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
@@ -199,16 +197,4 @@ public final class Utils {
                });
     }
 
-    public static void augmentEnvironment(Hashtable<?, ?> environment) 
-    {
-      Object[] objects = Activator.getEnvironmentAugmentors();
-      
-      if (objects != null) {
-        for (Object obj : objects) {
-          if (obj instanceof EnvironmentAugmentation) {
-            ((EnvironmentAugmentation)obj).augmentEnvironment(environment);
-          }
-        }
-      }
-    }
-}
\ No newline at end of file
+}

Modified: 
aries/branches/subsystemsR6/jndi/jndi-core/src/main/java/org/apache/aries/jndi/startup/Activator.java
URL: 
http://svn.apache.org/viewvc/aries/branches/subsystemsR6/jndi/jndi-core/src/main/java/org/apache/aries/jndi/startup/Activator.java?rev=1650143&r1=1650142&r2=1650143&view=diff
==============================================================================
--- 
aries/branches/subsystemsR6/jndi/jndi-core/src/main/java/org/apache/aries/jndi/startup/Activator.java
 (original)
+++ 
aries/branches/subsystemsR6/jndi/jndi-core/src/main/java/org/apache/aries/jndi/startup/Activator.java
 Wed Jan  7 19:37:42 2015
@@ -34,7 +34,10 @@ import org.apache.aries.jndi.OSGiInitial
 import org.apache.aries.jndi.OSGiObjectFactoryBuilder;
 import org.apache.aries.jndi.ProviderAdminServiceFactory;
 import org.apache.aries.jndi.Utils;
+import org.apache.aries.jndi.AugmenterInvokerImpl;
 import org.apache.aries.jndi.spi.EnvironmentAugmentation;
+import org.apache.aries.jndi.spi.EnvironmentUnaugmentation;
+import org.apache.aries.jndi.spi.AugmenterInvoker;
 import org.apache.aries.jndi.tracker.ServiceTrackerCustomizers;
 import org.apache.aries.jndi.urls.URLObjectFactoryFinder;
 import org.osgi.framework.BundleActivator;
@@ -62,6 +65,7 @@ public class Activator implements Bundle
     private static ServiceTracker initialContextFactories;
     private static ServiceTracker objectFactories;
     private static ServiceTracker environmentAugmentors;
+    private static ServiceTracker environmentUnaugmentors;
 
     public void start(BundleContext context) {
 
@@ -70,6 +74,7 @@ public class Activator implements Bundle
         icfBuilders = initServiceTracker(context, 
InitialContextFactoryBuilder.class, ServiceTrackerCustomizers.LAZY);
         urlObjectFactoryFinders = initServiceTracker(context, 
URLObjectFactoryFinder.class, ServiceTrackerCustomizers.LAZY);
         environmentAugmentors = initServiceTracker(context, 
EnvironmentAugmentation.class, null);
+        environmentUnaugmentors = initServiceTracker(context, 
EnvironmentUnaugmentation.class, null);
 
         try {
             OSGiInitialContextFactoryBuilder builder = new 
OSGiInitialContextFactoryBuilder();
@@ -108,6 +113,10 @@ public class Activator implements Bundle
         context.registerService(JNDIContextManager.class.getName(),
                                 new ContextManagerServiceFactory(),
                                 null);
+               context.registerService(AugmenterInvoker.class.getName(),
+                                               
AugmenterInvokerImpl.getInstance(),
+                                               null);
+
     }
 
     private String getClassName(Class<?> expectedType)
@@ -151,6 +160,7 @@ public class Activator implements Bundle
         objectFactories.close();
         initialContextFactories.close();
         environmentAugmentors.close();
+        environmentUnaugmentors.close();
     }
 
     /*
@@ -202,4 +212,10 @@ public class Activator implements Bundle
     {
       return environmentAugmentors.getServices();
     }
+
+    public static Object[] getEnvironmentUnaugmentors()
+    {
+      return environmentUnaugmentors.getServices();
+    }
+
 }

Modified: aries/branches/subsystemsR6/jndi/jndi-url-itest/pom.xml
URL: 
http://svn.apache.org/viewvc/aries/branches/subsystemsR6/jndi/jndi-url-itest/pom.xml?rev=1650143&r1=1650142&r2=1650143&view=diff
==============================================================================
--- aries/branches/subsystemsR6/jndi/jndi-url-itest/pom.xml (original)
+++ aries/branches/subsystemsR6/jndi/jndi-url-itest/pom.xml Wed Jan  7 19:37:42 
2015
@@ -241,7 +241,7 @@
             <groupId>org.apache.aries.jndi</groupId>
             <artifactId>org.apache.aries.jndi.url</artifactId>
             <scope>test</scope>
-            <version>1.1.0-SNAPSHOT</version>
+            <version>1.1.1-SNAPSHOT</version>
         </dependency>
 
         <dependency>

Modified: aries/branches/subsystemsR6/jndi/jndi-url/pom.xml
URL: 
http://svn.apache.org/viewvc/aries/branches/subsystemsR6/jndi/jndi-url/pom.xml?rev=1650143&r1=1650142&r2=1650143&view=diff
==============================================================================
--- aries/branches/subsystemsR6/jndi/jndi-url/pom.xml (original)
+++ aries/branches/subsystemsR6/jndi/jndi-url/pom.xml Wed Jan  7 19:37:42 2015
@@ -32,7 +32,7 @@
     <artifactId>org.apache.aries.jndi.url</artifactId>
     <packaging>bundle</packaging>
     <name>Apache Aries JNDI URL Handler</name>
-    <version>1.1.0-SNAPSHOT</version>
+    <version>1.1.1-SNAPSHOT</version>
     <description>
       This bundle contains the JNDI URL handler for OSGi
     </description>
@@ -70,7 +70,7 @@
             <groupId>org.apache.aries.jndi</groupId>
             <artifactId>org.apache.aries.jndi.api</artifactId>
             <scope>provided</scope>
-            <version>1.0.0</version>
+            <version>1.1.0</version>
         </dependency>
         <dependency>
             <groupId>org.apache.aries</groupId>

Modified: 
aries/branches/subsystemsR6/jndi/jndi-url/src/main/java/org/apache/aries/jndi/url/AbstractServiceRegistryContext.java
URL: 
http://svn.apache.org/viewvc/aries/branches/subsystemsR6/jndi/jndi-url/src/main/java/org/apache/aries/jndi/url/AbstractServiceRegistryContext.java?rev=1650143&r1=1650142&r2=1650143&view=diff
==============================================================================
--- 
aries/branches/subsystemsR6/jndi/jndi-url/src/main/java/org/apache/aries/jndi/url/AbstractServiceRegistryContext.java
 (original)
+++ 
aries/branches/subsystemsR6/jndi/jndi-url/src/main/java/org/apache/aries/jndi/url/AbstractServiceRegistryContext.java
 Wed Jan  7 19:37:42 2015
@@ -29,8 +29,11 @@ import javax.naming.NamingException;
 import javax.naming.OperationNotSupportedException;
 
 import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
 import org.osgi.service.jndi.JNDIConstants;
 
+import org.apache.aries.jndi.spi.AugmenterInvoker;
+
 public abstract class AbstractServiceRegistryContext implements Context
 {
 
@@ -41,6 +44,8 @@ public abstract class AbstractServiceReg
   protected NameParser parser = new OsgiNameParser();
   private static final String ARIES_SERVICES = "aries:services/";
 
+  private static AugmenterInvoker augmenterInvoker = null;
+
   @SuppressWarnings("unchecked")
   public AbstractServiceRegistryContext(BundleContext callerContext, 
Hashtable<?, ?> environment)
   {
@@ -48,7 +53,13 @@ public abstract class AbstractServiceReg
     env.putAll((Map<? extends String, ? extends Object>) environment);
     // ARIES-397:, If the caller has provided a BundleContext
     // in the hashtable, use this in preference to callerContext
+    if (augmenterInvoker == null && callerContext != null) {
+      ServiceReference augmenterSR = 
callerContext.getServiceReference(AugmenterInvoker.class.getName());
+      if (augmenterSR != null) augmenterInvoker = (AugmenterInvoker) 
callerContext.getService(augmenterSR);
+    }
+    if (augmenterInvoker != null) 
augmenterInvoker.augmentEnvironment(environment);
     BundleContext bc = (BundleContext) env.get(JNDIConstants.BUNDLE_CONTEXT);
+    if (augmenterInvoker != null) 
augmenterInvoker.unaugmentEnvironment(environment);
     if (bc != null) { 
       this.callerContext = bc;
     } else { 
@@ -61,9 +72,17 @@ public abstract class AbstractServiceReg
   {
     env = new HashMap<String, Object>();
     env.putAll((Map<? extends String, ? extends Object>) environment);
+    Hashtable<String, Object> environmentHT = new Hashtable<String,Object>();
+    environmentHT.putAll(env);
     // ARIES-397: If the caller has provided a BundleContext
     // in the hashtable, use this in preference to callerContext
+    if (augmenterInvoker == null && callerContext != null) {
+      ServiceReference augmenterSR = 
callerContext.getServiceReference(AugmenterInvoker.class.getName());
+      if (augmenterSR != null) augmenterInvoker = (AugmenterInvoker) 
callerContext.getService(augmenterSR);
+    }
+    if (augmenterInvoker != null) 
augmenterInvoker.augmentEnvironment(environmentHT); 
     BundleContext bc = (BundleContext) env.get(JNDIConstants.BUNDLE_CONTEXT);
+    if (augmenterInvoker != null) 
augmenterInvoker.unaugmentEnvironment(environmentHT);
     if (bc != null) { 
       this.callerContext = bc;
     } else { 

Modified: 
aries/branches/subsystemsR6/jndi/jndi-url/src/main/java/org/apache/aries/jndi/url/BlueprintURLContextFactory.java
URL: 
http://svn.apache.org/viewvc/aries/branches/subsystemsR6/jndi/jndi-url/src/main/java/org/apache/aries/jndi/url/BlueprintURLContextFactory.java?rev=1650143&r1=1650142&r2=1650143&view=diff
==============================================================================
--- 
aries/branches/subsystemsR6/jndi/jndi-url/src/main/java/org/apache/aries/jndi/url/BlueprintURLContextFactory.java
 (original)
+++ 
aries/branches/subsystemsR6/jndi/jndi-url/src/main/java/org/apache/aries/jndi/url/BlueprintURLContextFactory.java
 Wed Jan  7 19:37:42 2015
@@ -26,20 +26,35 @@ import javax.naming.Name;
 import javax.naming.spi.ObjectFactory;
 
 import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleContext;
-import org.osgi.service.jndi.JNDIConstants;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
+import org.osgi.service.jndi.JNDIConstants;
+
+import org.apache.aries.jndi.spi.AugmenterInvoker;
 
 public class BlueprintURLContextFactory implements ObjectFactory {
 
-  final private Bundle _callersBundle;
+  final private Bundle _callersBundle;
+
+  private static AugmenterInvoker augmenterInvoker = null;
 
   public BlueprintURLContextFactory(Bundle callersBundle) {
     _callersBundle = callersBundle;
   }
 
   @Override
-  public Object getObjectInstance(Object obj, Name name, Context callersCtx, 
Hashtable<?, ?> envmt) throws Exception {
-    BundleContext bc = (BundleContext) envmt.get(JNDIConstants.BUNDLE_CONTEXT);
+  public Object getObjectInstance(Object obj, Name name, Context callersCtx, 
Hashtable<?, ?> envmt) throws Exception {
+
+    if (augmenterInvoker == null && _callersBundle != null) {
+      BundleContext callerBundleContext = _callersBundle.getBundleContext();
+      ServiceReference augmenterSR = 
callerBundleContext.getServiceReference(AugmenterInvoker.class.getName());
+      if (augmenterSR != null) augmenterInvoker = (AugmenterInvoker) 
callerBundleContext.getService(augmenterSR);
+    }
+    if (augmenterInvoker != null) augmenterInvoker.augmentEnvironment(envmt);
+
+    BundleContext bc = (BundleContext) envmt.get(JNDIConstants.BUNDLE_CONTEXT);
+    if (augmenterInvoker != null) augmenterInvoker.unaugmentEnvironment(envmt);
+   
     Bundle b = (bc != null)? bc.getBundle() : null;
     Object result = null;
     if (obj == null) {

Modified: aries/branches/subsystemsR6/jpa/jpa-api/pom.xml
URL: 
http://svn.apache.org/viewvc/aries/branches/subsystemsR6/jpa/jpa-api/pom.xml?rev=1650143&r1=1650142&r2=1650143&view=diff
==============================================================================
--- aries/branches/subsystemsR6/jpa/jpa-api/pom.xml (original)
+++ aries/branches/subsystemsR6/jpa/jpa-api/pom.xml Wed Jan  7 19:37:42 2015
@@ -32,7 +32,7 @@
     <artifactId>org.apache.aries.jpa.api</artifactId>
     <packaging>bundle</packaging>
     <name>Aries JPA Container API</name>
-    <version>1.0.2-SNAPSHOT</version>
+    <version>1.0.3-SNAPSHOT</version>
 
     <scm>
         
<connection>scm:svn:http://svn.apache.org/repos/asf/aries/trunk/jpa/jpa-api</connection>
@@ -44,6 +44,7 @@
         <!-- Export package versions are maintained in packageinfo files -->
         <aries.osgi.export.pkg>
             org.apache.aries.jpa.container.parsing,
+            org.apache.aries.jpa.container.sync,
             org.apache.aries.jpa.container,
             org.apache.aries.jpa.container.context
         </aries.osgi.export.pkg>
@@ -63,9 +64,9 @@
             <scope>provided</scope>
         </dependency>
         <dependency>
-            <groupId>org.hibernate.javax.persistence</groupId>
-            <artifactId>hibernate-jpa-2.1-api</artifactId>
-            <version>1.0.0.Final</version>
+            <groupId>org.apache.geronimo.specs</groupId>
+            <artifactId>geronimo-jpa_2.0_spec</artifactId>
+            <version>1.1</version>
             <scope>provided</scope>
         </dependency>
     </dependencies>

Modified: aries/branches/subsystemsR6/jpa/jpa-blueprint-aries/pom.xml
URL: 
http://svn.apache.org/viewvc/aries/branches/subsystemsR6/jpa/jpa-blueprint-aries/pom.xml?rev=1650143&r1=1650142&r2=1650143&view=diff
==============================================================================
--- aries/branches/subsystemsR6/jpa/jpa-blueprint-aries/pom.xml (original)
+++ aries/branches/subsystemsR6/jpa/jpa-blueprint-aries/pom.xml Wed Jan  7 
19:37:42 2015
@@ -30,7 +30,7 @@
 
     <groupId>org.apache.aries.jpa</groupId>
     <artifactId>org.apache.aries.jpa.blueprint.aries</artifactId>
-    <version>1.0.3-SNAPSHOT</version>
+    <version>1.0.5-SNAPSHOT</version>
     <name>Aries JPA Container blueprint integration for Aries blueprint</name>
     <packaging>bundle</packaging>
 
@@ -62,9 +62,9 @@
             <scope>provided</scope>
         </dependency>
         <dependency>
-            <groupId>org.hibernate.javax.persistence</groupId>
-            <artifactId>hibernate-jpa-2.1-api</artifactId>
-            <version>1.0.0.Final</version>
+            <groupId>org.apache.geronimo.specs</groupId>
+            <artifactId>geronimo-jpa_2.0_spec</artifactId>
+            <version>1.1</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
@@ -76,7 +76,7 @@
         <dependency>
             <groupId>org.apache.aries.jpa</groupId>
             <artifactId>org.apache.aries.jpa.api</artifactId>
-            <version>1.0.1</version>
+            <version>1.0.2</version>
         </dependency>
         <dependency>
             <groupId>org.slf4j</groupId>

Modified: 
aries/branches/subsystemsR6/jpa/jpa-blueprint-aries/src/main/java/org/apache/aries/jpa/blueprint/aries/impl/NSHandler.java
URL: 
http://svn.apache.org/viewvc/aries/branches/subsystemsR6/jpa/jpa-blueprint-aries/src/main/java/org/apache/aries/jpa/blueprint/aries/impl/NSHandler.java?rev=1650143&r1=1650142&r2=1650143&view=diff
==============================================================================
--- 
aries/branches/subsystemsR6/jpa/jpa-blueprint-aries/src/main/java/org/apache/aries/jpa/blueprint/aries/impl/NSHandler.java
 (original)
+++ 
aries/branches/subsystemsR6/jpa/jpa-blueprint-aries/src/main/java/org/apache/aries/jpa/blueprint/aries/impl/NSHandler.java
 Wed Jan  7 19:37:42 2015
@@ -18,6 +18,7 @@
  */
 package org.apache.aries.jpa.blueprint.aries.impl;
 
+import java.lang.reflect.Method;
 import java.net.URL;
 import java.util.Arrays;
 import java.util.Collection;
@@ -34,6 +35,7 @@ import javax.persistence.PersistenceCont
 import javax.persistence.PersistenceContextType;
 import javax.persistence.PersistenceUnit;
 
+import org.apache.aries.blueprint.Interceptor;
 import org.apache.aries.blueprint.NamespaceHandler;
 import org.apache.aries.blueprint.ParserContext;
 import org.apache.aries.blueprint.PassThroughMetadata;
@@ -42,8 +44,10 @@ import org.apache.aries.blueprint.mutabl
 import org.apache.aries.blueprint.mutable.MutableReferenceMetadata;
 import org.apache.aries.jpa.container.PersistenceUnitConstants;
 import org.apache.aries.jpa.container.context.PersistenceContextProvider;
+import org.apache.aries.jpa.container.sync.Synchronization;
 import org.apache.aries.util.nls.MessageUtil;
 import org.osgi.framework.Bundle;
+import org.osgi.framework.InvalidSyntaxException;
 import org.osgi.framework.ServiceReference;
 import org.osgi.service.blueprint.reflect.BeanMetadata;
 import org.osgi.service.blueprint.reflect.ComponentMetadata;
@@ -54,6 +58,7 @@ import org.osgi.service.blueprint.reflec
 import org.osgi.service.blueprint.reflect.ValueMetadata;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
@@ -64,6 +69,7 @@ import org.w3c.dom.NodeList;
  * namespace handler also registers clients of managed persistence contexts 
with
  * the {@link GlobalPersistenceManager}.
  */
+@SuppressWarnings("rawtypes")
 public class NSHandler implements NamespaceHandler {
     private static final String ATTR_INDEX = "index";
 
@@ -126,39 +132,8 @@ public class NSHandler implements Namesp
      */
     public ComponentMetadata decorate(Node node, ComponentMetadata component,
             ParserContext context) {
-        // The node should always be an element
-        if (node.getNodeType() != Node.ELEMENT_NODE) {
-            _logger.error(MESSAGES.getMessage("unexpected.node", node));
-            throw new IllegalArgumentException(node.toString());
-        }
-
-        Element element = (Element) node;
-        // The surrounding component should always be a bean
-        if (!(component instanceof BeanMetadata)) {
-            _logger.error(MESSAGES.getMessage("incorrect.component.type", 
component));
-            throw new IllegalArgumentException(component.toString());
-        }
-        
-        if (!(component instanceof MutableBeanMetadata)) {
-            _logger.error(MESSAGES.getMessage("non.mutable.bean", component));
-            throw new IllegalArgumentException(component.toString());
-        }
-
-        MutableBeanMetadata bean = (MutableBeanMetadata) component;
-
-        if (!NS_URI_100.equals(element.getNamespaceURI())
-            && !NS_URI_110.equals(element.getNamespaceURI())) {
-            String message = MESSAGES.getMessage("unexpected.namespace", 
element.getNamespaceURI());
-            _logger.error(message);
-            throw new IllegalArgumentException(message);
-        }
-
-        if (!TAG_UNIT.equals(element.getLocalName())
-                && !TAG_CONTEXT.equals(element.getLocalName())) {
-            String message = MESSAGES.getMessage("unexpected.element", 
element.getLocalName());
-            _logger.error(message);
-            throw new IllegalArgumentException(message);
-        }
+        Element element = getValidNode(node, component);
+        MutableBeanMetadata bean = getValidBean(component, element);
 
         String property = element.getAttribute(ATTR_PROPERTY);
         property = property.isEmpty() ? null : property;
@@ -236,6 +211,20 @@ public class NSHandler implements Namesp
                 } else {
                     
_logger.warn(MESSAGES.getMessage("no.persistence.context.provider", 
client.getSymbolicName() + '/' + client.getVersion(), unitName, properties));
                 }
+                boolean foundSync = false;
+                try {
+                    Collection<ServiceReference<Synchronization>> refs = 
client.getBundleContext().getServiceReferences(Synchronization.class, "(" + 
PersistenceUnitConstants.OSGI_UNIT_NAME + "=" + unitName + ")");
+                    if (refs.size() > 0) {
+                        final Synchronization sync = 
client.getBundleContext().getService(refs.iterator().next());
+                        
context.getComponentDefinitionRegistry().registerInterceptorWithComponent(component,
 createSyncInterceptor(sync));
+                        foundSync = true;
+                    }
+                } catch (InvalidSyntaxException e) {
+                    // Ignore
+                }
+                if (!foundSync) {
+                    
_logger.error(MESSAGES.getMessage("no.synchronization.registered", 
client.getSymbolicName() + '/' + client.getVersion(), unitName, properties));
+                }
             } else {
                 _logger.debug("No bundle: this must be a dry, parse only 
run.");
             }
@@ -244,7 +233,68 @@ public class NSHandler implements Namesp
         return bean;
     }
 
-    @SuppressWarnings("unchecked")
+    private MutableBeanMetadata getValidBean(ComponentMetadata component, 
Element element) {
+        MutableBeanMetadata bean = (MutableBeanMetadata) component;
+
+        if (!NS_URI_100.equals(element.getNamespaceURI())
+            && !NS_URI_110.equals(element.getNamespaceURI())) {
+            String message = MESSAGES.getMessage("unexpected.namespace", 
element.getNamespaceURI());
+            _logger.error(message);
+            throw new IllegalArgumentException(message);
+        }
+
+        if (!TAG_UNIT.equals(element.getLocalName())
+                && !TAG_CONTEXT.equals(element.getLocalName())) {
+            String message = MESSAGES.getMessage("unexpected.element", 
element.getLocalName());
+            _logger.error(message);
+            throw new IllegalArgumentException(message);
+        }
+        return bean;
+    }
+
+    private Element getValidNode(Node node, ComponentMetadata component) {
+        // The node should always be an element
+        if (node.getNodeType() != Node.ELEMENT_NODE) {
+            _logger.error(MESSAGES.getMessage("unexpected.node", node));
+            throw new IllegalArgumentException(node.toString());
+        }
+
+        Element element = (Element) node;
+        // The surrounding component should always be a bean
+        if (!(component instanceof BeanMetadata)) {
+            _logger.error(MESSAGES.getMessage("incorrect.component.type", 
component));
+            throw new IllegalArgumentException(component.toString());
+        }
+        
+        if (!(component instanceof MutableBeanMetadata)) {
+            _logger.error(MESSAGES.getMessage("non.mutable.bean", component));
+            throw new IllegalArgumentException(component.toString());
+        }
+        return element;
+    }
+
+    private Interceptor createSyncInterceptor(final Synchronization sync) {
+        return new Interceptor() {
+            @Override
+            public Object preCall(ComponentMetadata componentMetadata, Method 
method, Object... objects) throws Throwable {
+                sync.preCall();
+                return null;
+            }
+            @Override
+            public void postCallWithReturn(ComponentMetadata 
componentMetadata, Method method, Object o, Object o2) throws Throwable {
+                sync.postCall();
+            }
+            @Override
+            public void postCallWithException(ComponentMetadata 
componentMetadata, Method method, Throwable throwable, Object o) throws 
Throwable {
+                sync.postCall();
+            }
+            @Override
+            public int getRank() {
+                return 0;
+            }
+        };
+    }
+
     public Set<Class> getManagedClasses() {
         // This is a no-op
         return null;
@@ -288,6 +338,7 @@ public class NSHandler implements Namesp
         _logger.warn(MESSAGES.getMessage("jpa.support.gone"));
     }
     
+    @SuppressWarnings("unchecked")
     private ComponentMetadata createTargetMetadata(boolean isPersistenceUnit,
         ParserContext ctx, String unitName) {
       // Create a service reference for the EMF (it is an EMF for persistence

Modified: 
aries/branches/subsystemsR6/jpa/jpa-blueprint-aries/src/main/resources/org/apache/aries/jpa/blueprint/aries/nls/ariesBlueprintJpaMessages.properties
URL: 
http://svn.apache.org/viewvc/aries/branches/subsystemsR6/jpa/jpa-blueprint-aries/src/main/resources/org/apache/aries/jpa/blueprint/aries/nls/ariesBlueprintJpaMessages.properties?rev=1650143&r1=1650142&r2=1650143&view=diff
==============================================================================
--- 
aries/branches/subsystemsR6/jpa/jpa-blueprint-aries/src/main/resources/org/apache/aries/jpa/blueprint/aries/nls/ariesBlueprintJpaMessages.properties
 (original)
+++ 
aries/branches/subsystemsR6/jpa/jpa-blueprint-aries/src/main/resources/org/apache/aries/jpa/blueprint/aries/nls/ariesBlueprintJpaMessages.properties
 Wed Jan  7 19:37:42 2015
@@ -41,4 +41,5 @@ jpa.support.gone=Managed persistence con
 # {0} The index
 index.not.a.number=Unable to parse {0}. An index must be a number.
 # {0} The map of properties
-map.not.well.formed=An unexpected condition was encountered. The map of JPA 
properties did not contain the expected data.
\ No newline at end of file
+map.not.well.formed=An unexpected condition was encountered. The map of JPA 
properties did not contain the expected data.
+no.synchronization.registered=No 
org.apache.aries.jpa.container.sync.Synchronization service registered.
\ No newline at end of file

Modified: 
aries/branches/subsystemsR6/jpa/jpa-blueprint-aries/src/test/java/org/apache/aries/jpa/blueprint/aries/test/NSHandlerTest.java
URL: 
http://svn.apache.org/viewvc/aries/branches/subsystemsR6/jpa/jpa-blueprint-aries/src/test/java/org/apache/aries/jpa/blueprint/aries/test/NSHandlerTest.java?rev=1650143&r1=1650142&r2=1650143&view=diff
==============================================================================
--- 
aries/branches/subsystemsR6/jpa/jpa-blueprint-aries/src/test/java/org/apache/aries/jpa/blueprint/aries/test/NSHandlerTest.java
 (original)
+++ 
aries/branches/subsystemsR6/jpa/jpa-blueprint-aries/src/test/java/org/apache/aries/jpa/blueprint/aries/test/NSHandlerTest.java
 Wed Jan  7 19:37:42 2015
@@ -261,10 +261,7 @@ public class NSHandlerTest {
     Element e = getTestElement("context", root);
     BeanMetadata bean = 
       (BeanMetadata) sut.decorate(e, new BeanMetadataImpl(), parserCtx);
-    BeanMetadata innerBean = (BeanMetadata) ((BeanProperty) 
bean.getProperties().get(0)).getValue();
-
-    assertEquals("createEntityManager", innerBean.getFactoryMethod());
-    assertEquals("internalClose", innerBean.getDestroyMethod());
+    assertInnerBeanCorrect(bean);
 
     assertEquals(1, registeredComponents.size());
     ReferenceMetadata reference = (ReferenceMetadata) 
registeredComponents.get(0);
@@ -277,16 +274,20 @@ public class NSHandlerTest {
     Skeleton.getSkeleton(manager).assertCalled(
         new MethodCall(PersistenceContextProvider.class, "registerContext", 
"myUnit", clientBundle, props));
   }
+
+private void assertInnerBeanCorrect(BeanMetadata bean) {
+    BeanMetadata innerBean = (BeanMetadata) ((BeanProperty) 
bean.getProperties().get(0)).getValue();
+
+    assertEquals("createEntityManager", innerBean.getFactoryMethod());
+    assertEquals("internalClose", innerBean.getDestroyMethod());
+}
   
   @Test
   public void testDefaultContext_110() {
     Element e = getTestElement("context", root_110);
     BeanMetadata bean = 
       (BeanMetadata) sut.decorate(e, new BeanMetadataImpl(), parserCtx);
-    BeanMetadata innerBean = (BeanMetadata) ((BeanProperty) 
bean.getProperties().get(0)).getValue();
-
-    assertEquals("createEntityManager", innerBean.getFactoryMethod());
-    assertEquals("internalClose", innerBean.getDestroyMethod());
+    assertInnerBeanCorrect(bean);
 
     assertEquals(1, registeredComponents.size());
     ReferenceMetadata reference = (ReferenceMetadata) 
registeredComponents.get(0);
@@ -307,10 +308,7 @@ public class NSHandlerTest {
     Element e = getTestElement("context", root);
     BeanMetadata bean = 
       (BeanMetadata) sut.decorate(e, new BeanMetadataImpl(), parserCtx);
-    BeanMetadata innerBean = (BeanMetadata) ((BeanProperty) 
bean.getProperties().get(0)).getValue();
-
-    assertEquals("createEntityManager", innerBean.getFactoryMethod());
-    assertEquals("internalClose", innerBean.getDestroyMethod());
+    assertInnerBeanCorrect(bean);
 
     assertEquals(1, registeredComponents.size());
     ReferenceMetadata reference = (ReferenceMetadata) 
registeredComponents.get(0);
@@ -331,10 +329,7 @@ public class NSHandlerTest {
     Element e = getTestElement("context", root_110);
     BeanMetadata bean = 
       (BeanMetadata) sut.decorate(e, new BeanMetadataImpl(), parserCtx);
-    BeanMetadata innerBean = (BeanMetadata) ((BeanProperty) 
bean.getProperties().get(0)).getValue();
-
-    assertEquals("createEntityManager", innerBean.getFactoryMethod());
-    assertEquals("internalClose", innerBean.getDestroyMethod());
+    assertInnerBeanCorrect(bean);
 
     assertEquals(1, registeredComponents.size());
     ReferenceMetadata reference = (ReferenceMetadata) 
registeredComponents.get(0);
@@ -442,10 +437,7 @@ public class NSHandlerTest {
       assertEquals("Wrong index", -1,
           ((BeanArgument)input.getArguments().get(0)).getIndex());
       
-      BeanMetadata innerBean = (BeanMetadata) 
((BeanArgument)input.getArguments().get(0)).getValue();
-
-      assertEquals("createEntityManager", innerBean.getFactoryMethod());
-      assertEquals("internalClose", innerBean.getDestroyMethod());
+      assertConstructorInnerBean(input);
 
       assertEquals(1, registeredComponents.size());
       reference = (ReferenceMetadata) registeredComponents.get(0);
@@ -458,6 +450,13 @@ public class NSHandlerTest {
       Skeleton.getSkeleton(manager).assertCalled(
           new MethodCall(PersistenceContextProvider.class, "registerContext", 
"myUnit", clientBundle, Map.class));
   }
+
+private void assertConstructorInnerBean(BeanMetadata input) {
+    BeanMetadata innerBean = (BeanMetadata) 
((BeanArgument)input.getArguments().get(0)).getValue();
+
+      assertEquals("createEntityManager", innerBean.getFactoryMethod());
+      assertEquals("internalClose", innerBean.getDestroyMethod());
+}
   
   @Test
   public void testIndexedArgs_110() {
@@ -489,10 +488,7 @@ public class NSHandlerTest {
       assertEquals("Wrong index", 1,
           ((BeanArgument)input.getArguments().get(0)).getIndex());
       
-      BeanMetadata innerBean = (BeanMetadata) 
((BeanArgument)input.getArguments().get(0)).getValue();
-
-      assertEquals("createEntityManager", innerBean.getFactoryMethod());
-      assertEquals("internalClose", innerBean.getDestroyMethod());
+      assertConstructorInnerBean(input);
 
       assertEquals(1, registeredComponents.size());
       reference = (ReferenceMetadata) registeredComponents.get(0);

Modified: aries/branches/subsystemsR6/jpa/jpa-blueprint-testbundle/pom.xml
URL: 
http://svn.apache.org/viewvc/aries/branches/subsystemsR6/jpa/jpa-blueprint-testbundle/pom.xml?rev=1650143&r1=1650142&r2=1650143&view=diff
==============================================================================
--- aries/branches/subsystemsR6/jpa/jpa-blueprint-testbundle/pom.xml (original)
+++ aries/branches/subsystemsR6/jpa/jpa-blueprint-testbundle/pom.xml Wed Jan  7 
19:37:42 2015
@@ -53,9 +53,9 @@
 
     <dependencies>
         <dependency>
-            <groupId>org.hibernate.javax.persistence</groupId>
-            <artifactId>hibernate-jpa-2.1-api</artifactId>
-            <version>1.0.0.Final</version>
+            <groupId>org.apache.geronimo.specs</groupId>
+            <artifactId>geronimo-jpa_2.0_spec</artifactId>
+            <version>1.1</version>
             <scope>provided</scope>
         </dependency>
     </dependencies>

Modified: 
aries/branches/subsystemsR6/jpa/jpa-container-advancedtestbundle/pom.xml
URL: 
http://svn.apache.org/viewvc/aries/branches/subsystemsR6/jpa/jpa-container-advancedtestbundle/pom.xml?rev=1650143&r1=1650142&r2=1650143&view=diff
==============================================================================
--- aries/branches/subsystemsR6/jpa/jpa-container-advancedtestbundle/pom.xml 
(original)
+++ aries/branches/subsystemsR6/jpa/jpa-container-advancedtestbundle/pom.xml 
Wed Jan  7 19:37:42 2015
@@ -56,9 +56,9 @@
 
     <dependencies>
         <dependency>
-            <groupId>org.hibernate.javax.persistence</groupId>
-            <artifactId>hibernate-jpa-2.1-api</artifactId>
-            <version>1.0.0.Final</version>
+            <groupId>org.apache.geronimo.specs</groupId>
+            <artifactId>geronimo-jpa_2.0_spec</artifactId>
+            <version>1.1</version>
             <scope>provided</scope>
         </dependency>
     </dependencies>

Modified: 
aries/branches/subsystemsR6/jpa/jpa-container-advancedtestbundle/src/main/resources/META-INF/persistence.xml
URL: 
http://svn.apache.org/viewvc/aries/branches/subsystemsR6/jpa/jpa-container-advancedtestbundle/src/main/resources/META-INF/persistence.xml?rev=1650143&r1=1650142&r2=1650143&view=diff
==============================================================================
--- 
aries/branches/subsystemsR6/jpa/jpa-container-advancedtestbundle/src/main/resources/META-INF/persistence.xml
 (original)
+++ 
aries/branches/subsystemsR6/jpa/jpa-container-advancedtestbundle/src/main/resources/META-INF/persistence.xml
 Wed Jan  7 19:37:42 2015
@@ -24,10 +24,11 @@
   
   <persistence-unit name="test-unit" transaction-type="RESOURCE_LOCAL">
     <description>Test persistence unit for the JPA Container advanced 
iTests</description>
-    <properties>
+       <properties>
       <property name="openjpa.jdbc.SynchronizeMappings" 
value="buildSchema(ForeignKeys=true)"/>
       <property name="javax.persistence.jdbc.driver" 
value="org.apache.derby.jdbc.EmbeddedDriver"/>
       <property name="javax.persistence.jdbc.databaseName" 
value="memory:TEST;create=true"/>
+      <property name="eclipselink.jdbc.url" 
value="jdbc:derby:memory:TEST;create=true"/>
       <property name="eclipselink.target-database" value="Derby"/>     
       <property name="eclipselink.ddl-generation" 
value="drop-and-create-tables"/>
       <property name="eclipselink.ddl-generation.output-mode" value="database" 
/>

Modified: aries/branches/subsystemsR6/jpa/jpa-container-context/pom.xml
URL: 
http://svn.apache.org/viewvc/aries/branches/subsystemsR6/jpa/jpa-container-context/pom.xml?rev=1650143&r1=1650142&r2=1650143&view=diff
==============================================================================
--- aries/branches/subsystemsR6/jpa/jpa-container-context/pom.xml (original)
+++ aries/branches/subsystemsR6/jpa/jpa-container-context/pom.xml Wed Jan  7 
19:37:42 2015
@@ -30,7 +30,7 @@
 
     <groupId>org.apache.aries.jpa</groupId>
     <artifactId>org.apache.aries.jpa.container.context</artifactId>
-    <version>1.0.3-SNAPSHOT</version>
+    <version>1.0.5-SNAPSHOT</version>
     <name>Aries JPA Container Managed Contexts</name>
     <packaging>bundle</packaging>
 
@@ -70,9 +70,9 @@
             <scope>provided</scope>
         </dependency>
         <dependency>
-            <groupId>org.hibernate.javax.persistence</groupId>
-            <artifactId>hibernate-jpa-2.1-api</artifactId>
-            <version>1.0.0.Final</version>
+            <groupId>org.apache.geronimo.specs</groupId>
+            <artifactId>geronimo-jpa_2.0_spec</artifactId>
+            <version>1.1</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
@@ -90,7 +90,7 @@
         <dependency>
             <groupId>org.apache.aries.jpa</groupId>
             <artifactId>org.apache.aries.jpa.api</artifactId>
-            <version>1.0.1</version>
+            <version>1.0.2</version>
             <scope>provided</scope>
         </dependency>
         <dependency>

Modified: 
aries/branches/subsystemsR6/jpa/jpa-container-context/src/main/java/org/apache/aries/jpa/container/context/impl/ManagedPersistenceContextFactory.java
URL: 
http://svn.apache.org/viewvc/aries/branches/subsystemsR6/jpa/jpa-container-context/src/main/java/org/apache/aries/jpa/container/context/impl/ManagedPersistenceContextFactory.java?rev=1650143&r1=1650142&r2=1650143&view=diff
==============================================================================
--- 
aries/branches/subsystemsR6/jpa/jpa-container-context/src/main/java/org/apache/aries/jpa/container/context/impl/ManagedPersistenceContextFactory.java
 (original)
+++ 
aries/branches/subsystemsR6/jpa/jpa-container-context/src/main/java/org/apache/aries/jpa/container/context/impl/ManagedPersistenceContextFactory.java
 Wed Jan  7 19:37:42 2015
@@ -18,23 +18,30 @@
  */
 package org.apache.aries.jpa.container.context.impl;
 
+import java.lang.reflect.Proxy;
 import java.security.AccessController;
 import java.security.PrivilegedAction;
 import java.util.HashMap;
 import java.util.Map;
-import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.atomic.AtomicLong;
 import java.util.concurrent.atomic.AtomicReference;
 
-import javax.persistence.*;
+import javax.persistence.Cache;
+import javax.persistence.EntityManager;
+import javax.persistence.EntityManagerFactory;
+import javax.persistence.PersistenceContextType;
+import javax.persistence.PersistenceUnitUtil;
+import javax.persistence.Query;
 import javax.persistence.criteria.CriteriaBuilder;
 import javax.persistence.metamodel.Metamodel;
 
 import org.apache.aries.jpa.container.context.PersistenceContextProvider;
 import 
org.apache.aries.jpa.container.context.impl.PersistenceContextManager.QuiesceTidyUp;
 import org.apache.aries.jpa.container.context.transaction.impl.DestroyCallback;
-import 
org.apache.aries.jpa.container.context.transaction.impl.JTAEntityManager;
+import 
org.apache.aries.jpa.container.context.transaction.impl.JTAEntityManagerClose;
+import 
org.apache.aries.jpa.container.context.transaction.impl.JTAEntityManagerHandler;
 import 
org.apache.aries.jpa.container.context.transaction.impl.JTAPersistenceContextRegistry;
+import org.apache.aries.jpa.container.sync.Synchronization;
 import org.osgi.framework.ServiceReference;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -47,7 +54,8 @@ import org.slf4j.LoggerFactory;
  * <p/>
  * Also this class receives a callback on cleanup
  */
-public class ManagedPersistenceContextFactory implements EntityManagerFactory, 
DestroyCallback {
+@SuppressWarnings({"rawtypes", "unchecked"})
+public class ManagedPersistenceContextFactory implements Synchronization, 
EntityManagerFactory, DestroyCallback {
     /**
      * Logger
      */
@@ -59,6 +67,7 @@ public class ManagedPersistenceContextFa
     private final PersistenceContextType type;
     private final AtomicLong activeCount = new AtomicLong(0);
     private final String unitName;
+    private final EntityManager em;
 
     private final AtomicReference<QuiesceTidyUp> tidyUp = new 
AtomicReference<QuiesceTidyUp>();
 
@@ -71,13 +80,6 @@ public class ManagedPersistenceContextFa
         registry = contextRegistry;
         //Remove our internal property so that it doesn't get passed on the 
createEntityManager call
         type = (PersistenceContextType) 
properties.remove(PersistenceContextProvider.PERSISTENCE_CONTEXT_TYPE);
-    }
-
-    public EntityManager createEntityManager() {
-        if (_logger.isDebugEnabled()) {
-            _logger.debug("Creating a container managed entity manager for the 
perstence unit {} with the following properties {}",
-                    new Object[]{emf, properties});
-        }
         //Getting the BundleContext is a privileged operation that the
         //client might not be able to do.
         EntityManagerFactory factory = AccessController.doPrivileged(
@@ -86,16 +88,37 @@ public class ManagedPersistenceContextFa
                         return (EntityManagerFactory) 
emf.getBundle().getBundleContext().getService(emf);
                     }
                 });
+        JTAEntityManagerHandler invocationHandler = new 
JTAEntityManagerHandler(factory, properties, registry, activeCount, this);
+        ClassLoader cl = this.getClass().getClassLoader();
+        Class<?>[] ifAr = new Class[] { Synchronization.class, 
EntityManager.class, JTAEntityManagerClose.class }; 
+        em = (EntityManager)Proxy.newProxyInstance(cl, ifAr, 
invocationHandler);
+    }
+    
+    public EntityManager createEntityManager() {
+        if (_logger.isDebugEnabled()) {
+            _logger.debug("Creating a container managed entity manager for the 
perstence unit {} with the following properties {}",
+                    new Object[]{emf, properties});
+        }
 
-        if (type == PersistenceContextType.TRANSACTION || type == null)
-            return new JTAEntityManager(factory, properties, registry, 
activeCount, this);
-        else {
+        if (type == PersistenceContextType.TRANSACTION || type == null) {
+            return em;
+        } else {
             
_logger.error(NLS.MESSAGES.getMessage("extended.em.not.supported"));
             return null;
         }
 
     }
 
+    @Override
+    public void preCall() {
+        ((Synchronization)em).preCall();
+    }
+
+    @Override
+    public void postCall() {
+        ((Synchronization)em).postCall();
+    }
+
     public void close() {
         throw new UnsupportedOperationException();
     }
@@ -149,22 +172,10 @@ public class ManagedPersistenceContextFa
         }
     }
 
-    public <T> void addNamedEntityGraph(String arg0, EntityGraph<T> arg1) {
-        throw new UnsupportedOperationException();
-    }
-
     public void addNamedQuery(String arg0, Query arg1) {
         throw new UnsupportedOperationException();
     }
 
-    public EntityManager createEntityManager(SynchronizationType arg0) {
-        throw new UnsupportedOperationException();
-    }
-
-    public EntityManager createEntityManager(SynchronizationType arg0, Map 
arg1) {
-        throw new UnsupportedOperationException();
-    }
-
     public <T> T unwrap(Class<T> arg0) {
         throw new UnsupportedOperationException();
     }

Modified: 
aries/branches/subsystemsR6/jpa/jpa-container-context/src/main/java/org/apache/aries/jpa/container/context/impl/PersistenceContextManager.java
URL: 
http://svn.apache.org/viewvc/aries/branches/subsystemsR6/jpa/jpa-container-context/src/main/java/org/apache/aries/jpa/container/context/impl/PersistenceContextManager.java?rev=1650143&r1=1650142&r2=1650143&view=diff
==============================================================================
--- 
aries/branches/subsystemsR6/jpa/jpa-container-context/src/main/java/org/apache/aries/jpa/container/context/impl/PersistenceContextManager.java
 (original)
+++ 
aries/branches/subsystemsR6/jpa/jpa-container-context/src/main/java/org/apache/aries/jpa/container/context/impl/PersistenceContextManager.java
 Wed Jan  7 19:37:42 2015
@@ -34,6 +34,7 @@ import javax.persistence.PersistenceCont
 
 import org.apache.aries.jpa.container.PersistenceUnitConstants;
 import org.apache.aries.jpa.container.context.PersistenceContextProvider;
+import org.apache.aries.jpa.container.sync.Synchronization;
 import org.apache.aries.jpa.container.context.transaction.impl.DestroyCallback;
 import 
org.apache.aries.jpa.container.context.transaction.impl.JTAPersistenceContextRegistry;
 import org.apache.aries.util.AriesFrameworkUtil;
@@ -284,7 +285,8 @@ public class PersistenceContextManager e
       
       BundleContext persistenceBundleContext = 
unit.getBundle().getBundleContext();
       reg = persistenceBundleContext.registerService(
-          EntityManagerFactory.class.getName(), entityManagerServiceFactory, 
props);
+          new String[]{EntityManagerFactory.class.getName(),
+                  Synchronization.class.getName()}, 
entityManagerServiceFactory, props);
     } finally {
       //As we have to register from outside a synchronized then someone may be 
trying to
       //unregister us. They will try to wait for us to finish, but in order to 
prevent 

Modified: 
aries/branches/subsystemsR6/jpa/jpa-container-context/src/main/resources/org/apache/aries/jpa/container/context/nls/jpaContainerContextMessages.properties
URL: 
http://svn.apache.org/viewvc/aries/branches/subsystemsR6/jpa/jpa-container-context/src/main/resources/org/apache/aries/jpa/container/context/nls/jpaContainerContextMessages.properties?rev=1650143&r1=1650142&r2=1650143&view=diff
==============================================================================
--- 
aries/branches/subsystemsR6/jpa/jpa-container-context/src/main/resources/org/apache/aries/jpa/container/context/nls/jpaContainerContextMessages.properties
 (original)
+++ 
aries/branches/subsystemsR6/jpa/jpa-container-context/src/main/resources/org/apache/aries/jpa/container/context/nls/jpaContainerContextMessages.properties
 Wed Jan  7 19:37:42 2015
@@ -78,5 +78,7 @@ interruption.waiting.for.pu.unregister=T
 # {0} The persistence unit name
 possible.livelock.detected=The JPA container detected a possible live lock 
whilst unregistering the managed persistence context {0}. \
  The service cannot be unregistered immediately so the context may become 
unusable before being unregistered.
-
+# {0} Method name not found
+# {1} The persistence unit name
+wrong.JPA.version="Method {0} is not implemented by delegate {1}. Probably you 
want use JPA 2.1 but you are installed JPA 2.0."
 

Modified: 
aries/branches/subsystemsR6/jpa/jpa-container-eclipselink-adapter/pom.xml
URL: 
http://svn.apache.org/viewvc/aries/branches/subsystemsR6/jpa/jpa-container-eclipselink-adapter/pom.xml?rev=1650143&r1=1650142&r2=1650143&view=diff
==============================================================================
--- aries/branches/subsystemsR6/jpa/jpa-container-eclipselink-adapter/pom.xml 
(original)
+++ aries/branches/subsystemsR6/jpa/jpa-container-eclipselink-adapter/pom.xml 
Wed Jan  7 19:37:42 2015
@@ -31,7 +31,7 @@
     <groupId>org.apache.aries.jpa</groupId>
     <artifactId>org.apache.aries.jpa.eclipselink.adapter</artifactId>
     <packaging>bundle</packaging>
-    <version>1.0.1-SNAPSHOT</version>
+    <version>1.0.0-SNAPSHOT</version>
     <name>Aries JPA Container adapter for use with EclipseLink</name>
 
     <scm>
@@ -41,16 +41,30 @@
     </scm>
 
     <properties>
-        
<aries.osgi.private.pkg>org.apache.aries.jpa.eclipselink.adapter.*</aries.osgi.private.pkg>
-        <aries.osgi.export.pkg></aries.osgi.export.pkg>
+        <aries.osgi.export.pkg>
+               org.apache.aries.jpa.eclipselink.adapter,
+               org.apache.aries.jpa.eclipselink.adapter.platform
+        </aries.osgi.export.pkg>
         <aries.osgi.import.pkg>
-            javax.persistence*;version="[1.1,2.1)",
-            !org.eclipse.persistence.*,
+                       javax.persistence*;version="[2.1,3.0)",
+                       org.eclipse.persistence.jpa;resolution:=optional,
+                       
org.eclipse.persistence.internal.weaving;resolution:=optional,
+                       
org.eclipse.persistence.internal.descriptors;resolution:=optional,
+                       org.eclipse.persistence.queries;resolution:=optional,
+                       
org.eclipse.persistence.descriptors.changetracking;resolution:=optional,
+                       
org.eclipse.persistence.internal.identitymaps;resolution:=optional,
+                       org.eclipse.persistence.sessions;resolution:=optional,
+                       
org.eclipse.persistence.internal.jpa.rs.metadata.model;resolution:=optional,
+                       
org.eclipse.persistence.indirection;resolution:=optional,
+                       org.eclipse.persistence.jpa.jpql;resolution:=optional,
+                       
org.eclipse.persistence.jpa.jpql.parser;resolution:=optional,
+                       
org.eclipse.persistence.platform.server;resolution:=optional,
             *
         </aries.osgi.import.pkg>
         <aries.osgi.failok>true</aries.osgi.failok>
         
<aries.osgi.activator>org.apache.aries.jpa.eclipselink.adapter.Activator</aries.osgi.activator>
-        <lastReleaseVersion>1.0.0</lastReleaseVersion>
+        <!-- First version -->
+        <aries.skip.version.check>true</aries.skip.version.check>
     </properties>
 
     <dependencies>
@@ -70,10 +84,9 @@
             <scope>provided</scope>
         </dependency>
         <dependency>
-            <groupId>org.apache.geronimo.specs</groupId>
-            <artifactId>geronimo-jpa_2.0_spec</artifactId>
-            <version>1.1</version>
-            <scope>provided</scope>
+            <groupId>org.eclipse.persistence</groupId>
+            <artifactId>javax.persistence</artifactId>
+            <version>2.1.0</version>
         </dependency>
         <dependency>
             <groupId>org.apache.geronimo.specs</groupId>
@@ -82,18 +95,17 @@
             <scope>provided</scope>
         </dependency>
         <dependency>
-            <groupId>org.eclipse.persistence</groupId>
-            <artifactId>org.eclipse.persistence.jpa</artifactId>
-            <version>2.1.0</version>
-        </dependency>
-        <dependency>
             <groupId>org.apache.aries</groupId>
             <artifactId>org.apache.aries.util</artifactId>
-            <version>0.4</version>
-            <scope>provided</scope>
+            <version>1.0.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.eclipse.persistence</groupId>
+            <artifactId>org.eclipse.persistence.jpa</artifactId>
+            <version>2.5.2</version>
         </dependency>
     </dependencies>
-
+  
     <build>
         <plugins>
             <plugin>

Modified: 
aries/branches/subsystemsR6/jpa/jpa-container-eclipselink-adapter/src/main/java/org/apache/aries/jpa/eclipselink/adapter/Activator.java
URL: 
http://svn.apache.org/viewvc/aries/branches/subsystemsR6/jpa/jpa-container-eclipselink-adapter/src/main/java/org/apache/aries/jpa/eclipselink/adapter/Activator.java?rev=1650143&r1=1650142&r2=1650143&view=diff
==============================================================================
--- 
aries/branches/subsystemsR6/jpa/jpa-container-eclipselink-adapter/src/main/java/org/apache/aries/jpa/eclipselink/adapter/Activator.java
 (original)
+++ 
aries/branches/subsystemsR6/jpa/jpa-container-eclipselink-adapter/src/main/java/org/apache/aries/jpa/eclipselink/adapter/Activator.java
 Wed Jan  7 19:37:42 2015
@@ -18,19 +18,6 @@
  */
 package org.apache.aries.jpa.eclipselink.adapter;
 
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Hashtable;
-import java.util.List;
-import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-
-import javax.persistence.EntityManagerFactory;
-import javax.persistence.spi.PersistenceProvider;
-
-import org.apache.aries.jpa.eclipselink.adapter.EclipseLinkProviderService;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleActivator;
 import org.osgi.framework.BundleContext;
@@ -39,12 +26,22 @@ import org.osgi.framework.BundleListener
 import org.osgi.framework.Constants;
 import org.osgi.framework.ServiceFactory;
 import org.osgi.framework.ServiceRegistration;
-import org.osgi.service.packageadmin.ExportedPackage;
-import org.osgi.service.packageadmin.PackageAdmin;
-import org.osgi.util.tracker.ServiceTracker;
+import org.osgi.framework.wiring.BundleRevision;
+import org.osgi.framework.wiring.BundleWire;
+import org.osgi.framework.wiring.BundleWiring;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.util.HashSet;
+import java.util.Hashtable;
+import java.util.List;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
+
+import javax.persistence.EntityManagerFactory;
+import javax.persistence.spi.PersistenceProvider;
+
 /**
  * Eclipselink adapter main class.
  * 
@@ -58,11 +55,10 @@ import org.slf4j.LoggerFactory;
 public class Activator implements BundleActivator, BundleListener {
     public static final String ECLIPSELINK_JPA_PROVIDER_BUNDLE_SYMBOLIC_NAME = 
"org.eclipse.persistence.jpa";
     public static final String ECLIPSELINK_JPA_PROVIDER_CLASS_NAME = 
"org.eclipse.persistence.jpa.PersistenceProvider";
-    private final ConcurrentMap<Bundle, ServiceRegistration> 
registeredProviders = new ConcurrentHashMap<Bundle, ServiceRegistration>();
+    private final ConcurrentMap<Bundle, ServiceRegistration<?>> 
registeredProviders = new ConcurrentHashMap<Bundle, ServiceRegistration<?>>();
     
     private static final Logger logger = 
LoggerFactory.getLogger(Activator.class);
     
-    private ServiceTracker tracker;
     private BundleContext context;
     
     public void start(BundleContext ctx) {
@@ -70,9 +66,6 @@ public class Activator implements Bundle
         
         context = ctx;
         
-        tracker = new ServiceTracker(ctx, PackageAdmin.class.getName(), null);
-        tracker.open();
-        
         ctx.addBundleListener(this);
         
         for (Bundle b : ctx.getBundles()) {
@@ -80,22 +73,20 @@ public class Activator implements Bundle
                 handlePotentialEclipseLink(b);
         }
     }
-  
+    
     public void stop(BundleContext ctx) {
         logger.debug("Stopping EclipseLink adapter");
-        
-        tracker.close();
-        
-        for (ServiceRegistration reg : registeredProviders.values()) {
-            reg.unregister();
-        }
-    }
 
+        for (ServiceRegistration<?> reg : registeredProviders.values()) {
+          reg.unregister();
+        }
+      }
+    
     public void bundleChanged(BundleEvent event) {
         if ((event.getType() & (BundleEvent.RESOLVED)) != 0) {
             handlePotentialEclipseLink(event.getBundle());
         } else if (event.getType() == BundleEvent.UNRESOLVED | event.getType() 
== BundleEvent.UNINSTALLED) {
-            ServiceRegistration reg = 
registeredProviders.remove(event.getBundle());
+            ServiceRegistration<?> reg = 
registeredProviders.remove(event.getBundle());
             if (reg != null) {
                 reg.unregister();
             }
@@ -118,7 +109,7 @@ public class Activator implements Bundle
             if (!!!registeredProviders.containsKey(b)) {
                 logger.debug("Adding new EclipseLink provider for bundle {}", 
b);
                 
-                ServiceFactory factory = new EclipseLinkProviderService(b);
+                ServiceFactory<?> factory = new EclipseLinkProviderService(b);
                 
                 Hashtable<String, Object> props = new Hashtable<String, 
Object>();
                 props.put("org.apache.aries.jpa.container.weaving.packages", 
getJPAPackages(b));
@@ -148,25 +139,24 @@ public class Activator implements Bundle
     private String[] getJPAPackages(Bundle jpaBundle) {
         Set<String> result = new HashSet<String>();
         
-        PackageAdmin admin = (PackageAdmin) tracker.getService();
         for (Bundle b : context.getBundles()) {
-            for (ExportedPackage ep : nullSafe(admin.getExportedPackages(b))) {
-                boolean add = true;
+            BundleWiring bw = b.adapt(BundleWiring.class);
+            List<BundleWire> wires = 
bw.getProvidedWires(BundleRevision.PACKAGE_NAMESPACE);
+
+            for (BundleWire w : wires) {
+                String pkgName = (String) 
w.getCapability().getAttributes().get(BundleRevision.PACKAGE_NAMESPACE);
+
+                boolean add = false;
                 if (b.equals(jpaBundle)) {
                     add = true;
-                } else if (ep.getName().startsWith("org.eclipse.persistence")) 
{
-                    inner: for (Bundle b2 : 
nullSafe(ep.getImportingBundles())) {
-                        if (b2.equals(jpaBundle)) {
-                            add = true;
-                            break inner;
-                        }
-                    }
+                } else if (pkgName.startsWith("org.eclipse.persistence")) {
+                    add = true;
                 }
                 
                 if (add) {
                     String suffix = ";" + 
Constants.BUNDLE_SYMBOLICNAME_ATTRIBUTE + "=" + b.getSymbolicName() + ";" + 
Constants.BUNDLE_VERSION_ATTRIBUTE  + "=" + b.getVersion();                    
-                    result.add(ep.getName()+suffix);
-                }                
+                    result.add(pkgName + suffix);
+                }
             }
         }
         
@@ -178,9 +168,4 @@ public class Activator implements Bundle
         
         return result.toArray(new String[0]);
     }
-    
-    private<T> List<T> nullSafe(T[] array) {
-        if (array == null) return Collections.emptyList();
-        else return Arrays.asList(array);
-    }
 }

Modified: 
aries/branches/subsystemsR6/jpa/jpa-container-eclipselink-adapter/src/main/java/org/apache/aries/jpa/eclipselink/adapter/EclipseLinkProviderService.java
URL: 
http://svn.apache.org/viewvc/aries/branches/subsystemsR6/jpa/jpa-container-eclipselink-adapter/src/main/java/org/apache/aries/jpa/eclipselink/adapter/EclipseLinkProviderService.java?rev=1650143&r1=1650142&r2=1650143&view=diff
==============================================================================
--- 
aries/branches/subsystemsR6/jpa/jpa-container-eclipselink-adapter/src/main/java/org/apache/aries/jpa/eclipselink/adapter/EclipseLinkProviderService.java
 (original)
+++ 
aries/branches/subsystemsR6/jpa/jpa-container-eclipselink-adapter/src/main/java/org/apache/aries/jpa/eclipselink/adapter/EclipseLinkProviderService.java
 Wed Jan  7 19:37:42 2015
@@ -18,14 +18,6 @@
  */
 package org.apache.aries.jpa.eclipselink.adapter;
 
-import java.lang.reflect.Constructor;
-import java.util.Map;
-
-import javax.persistence.EntityManagerFactory;
-import javax.persistence.spi.PersistenceProvider;
-import javax.persistence.spi.PersistenceUnitInfo;
-import javax.persistence.spi.ProviderUtil;
-
 import org.apache.aries.jpa.eclipselink.adapter.platform.OSGiTSServer;
 import org.apache.aries.util.nls.MessageUtil;
 import org.osgi.framework.Bundle;
@@ -34,11 +26,19 @@ import org.osgi.framework.ServiceRegistr
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.lang.reflect.Constructor;
+import java.util.Map;
+
+import javax.persistence.EntityManagerFactory;
+import javax.persistence.spi.PersistenceProvider;
+import javax.persistence.spi.PersistenceUnitInfo;
+import javax.persistence.spi.ProviderUtil;
 
 /**
  * Service factory for generating the Eclipselink OSGi compatible provider. It 
proxies the provider so that
  * we can go in at entity manager creation time and set the eclipselink 
target-server to be {@link OSGiTSServer}.
  */
+@SuppressWarnings({"rawtypes", "unchecked"})
 public class EclipseLinkProviderService implements ServiceFactory {
   private static final Logger logger = 
LoggerFactory.getLogger(Activator.class);
   private static final MessageUtil MESSAGES = 
MessageUtil.createMessageUtil(EclipseLinkProviderService.class, 
"org.apache.aries.jpa.eclipselink.adapter.jpaEclipseLinkAdapter");
@@ -49,11 +49,12 @@ public class EclipseLinkProviderService
       eclipseLinkJpaBundle = b;
   }
   
+  @Override
   public Object getService(Bundle bundle, ServiceRegistration registration) {
     logger.debug("Requested EclipseLink Provider service");
     
     try {
-      Class<? extends PersistenceProvider> providerClass = 
eclipseLinkJpaBundle.loadClass(Activator.ECLIPSELINK_JPA_PROVIDER_CLASS_NAME);
+      Class<? extends PersistenceProvider> providerClass = (Class<? extends 
PersistenceProvider>) 
eclipseLinkJpaBundle.loadClass(Activator.ECLIPSELINK_JPA_PROVIDER_CLASS_NAME);
       Constructor<? extends PersistenceProvider> con = 
providerClass.getConstructor();
       final PersistenceProvider provider = con.newInstance();
       
@@ -68,10 +69,21 @@ public class EclipseLinkProviderService
         
         public EntityManagerFactory 
createContainerEntityManagerFactory(PersistenceUnitInfo punit, Map props) {
           return provider.createContainerEntityManagerFactory(new 
PersistenceUnitProxyWithTargetServer(punit, 
-                eclipseLinkJpaBundle), props);
+                  eclipseLinkJpaBundle), props);
         }
-      };
         
+        @Override
+        public void generateSchema(PersistenceUnitInfo punit, Map arg1) {
+          provider.generateSchema(new 
PersistenceUnitProxyWithTargetServer(punit, 
+              eclipseLinkJpaBundle), arg1);
+        }
+
+        @Override
+        public boolean generateSchema(String arg0, Map arg1) {
+          return provider.generateSchema(arg0, arg1);
+        }
+      };
+      
     } catch (Exception e) {
         
logger.error(MESSAGES.getMessage("error.creating.eclipselink.provider"), e);
         return null;                

Modified: 
aries/branches/subsystemsR6/jpa/jpa-container-eclipselink-adapter/src/main/java/org/apache/aries/jpa/eclipselink/adapter/platform/OSGiTSServer.java
URL: 
http://svn.apache.org/viewvc/aries/branches/subsystemsR6/jpa/jpa-container-eclipselink-adapter/src/main/java/org/apache/aries/jpa/eclipselink/adapter/platform/OSGiTSServer.java?rev=1650143&r1=1650142&r2=1650143&view=diff
==============================================================================
--- 
aries/branches/subsystemsR6/jpa/jpa-container-eclipselink-adapter/src/main/java/org/apache/aries/jpa/eclipselink/adapter/platform/OSGiTSServer.java
 (original)
+++ 
aries/branches/subsystemsR6/jpa/jpa-container-eclipselink-adapter/src/main/java/org/apache/aries/jpa/eclipselink/adapter/platform/OSGiTSServer.java
 Wed Jan  7 19:37:42 2015
@@ -21,6 +21,7 @@ package org.apache.aries.jpa.eclipselink
 import org.eclipse.persistence.platform.server.ServerPlatformBase;
 import org.eclipse.persistence.sessions.DatabaseSession;
 
+@SuppressWarnings("rawtypes")
 public class OSGiTSServer extends ServerPlatformBase {
 
     public OSGiTSServer(DatabaseSession newDatabaseSession) {

Modified: 
aries/branches/subsystemsR6/jpa/jpa-container-eclipselink-adapter/src/main/java/org/apache/aries/jpa/eclipselink/adapter/platform/OSGiTSWrapper.java
URL: 
http://svn.apache.org/viewvc/aries/branches/subsystemsR6/jpa/jpa-container-eclipselink-adapter/src/main/java/org/apache/aries/jpa/eclipselink/adapter/platform/OSGiTSWrapper.java?rev=1650143&r1=1650142&r2=1650143&view=diff
==============================================================================
--- 
aries/branches/subsystemsR6/jpa/jpa-container-eclipselink-adapter/src/main/java/org/apache/aries/jpa/eclipselink/adapter/platform/OSGiTSWrapper.java
 (original)
+++ 
aries/branches/subsystemsR6/jpa/jpa-container-eclipselink-adapter/src/main/java/org/apache/aries/jpa/eclipselink/adapter/platform/OSGiTSWrapper.java
 Wed Jan  7 19:37:42 2015
@@ -25,6 +25,7 @@ import org.osgi.framework.BundleContext;
 import org.osgi.framework.FrameworkUtil;
 import org.osgi.framework.ServiceReference;
 
+@SuppressWarnings({"rawtypes", "unchecked"})
 public class OSGiTSWrapper extends JTATransactionController {
 
     @Override

Modified: aries/branches/subsystemsR6/jpa/jpa-container-itest/pom.xml
URL: 
http://svn.apache.org/viewvc/aries/branches/subsystemsR6/jpa/jpa-container-itest/pom.xml?rev=1650143&r1=1650142&r2=1650143&view=diff
==============================================================================
--- aries/branches/subsystemsR6/jpa/jpa-container-itest/pom.xml (original)
+++ aries/branches/subsystemsR6/jpa/jpa-container-itest/pom.xml Wed Jan  7 
19:37:42 2015
@@ -38,14 +38,19 @@
         
<developerConnection>scm:svn:https://svn.apache.org/repos/asf/aries/trunk/jpa/jpa-container-itest</developerConnection>
         
<url>http://svn.apache.org/viewvc/aries/trunk/jpa/jpa-container-itest</url>
     </scm>
-    
+
     <properties>
         <exam.version>3.4.0</exam.version>
         <url.version>1.6.0</url.version>
+        <hibernate42.version>4.2.15.Final</hibernate42.version>
+        <ant.bundle.version>1.8.2_2</ant.bundle.version>
+        <antlr.bundle.version>2.7.7_5</antlr.bundle.version>
+        <dom4j.bundle.version>1.6.1_5</dom4j.bundle.version>
+        <serp.bundle.version>1.14.1_1</serp.bundle.version>
     </properties>
 
     <dependencies>
-               <dependency>
+        <dependency>
             <groupId>org.eclipse</groupId>
             <artifactId>org.eclipse.osgi</artifactId>
             <version>3.8.0.v20120529-1548</version>
@@ -97,49 +102,52 @@
             <scope>test</scope>
         </dependency>
         <dependency>
-            <groupId>org.hibernate.javax.persistence</groupId>
-            <artifactId>hibernate-jpa-2.1-api</artifactId>
-            <version>1.0.0.Final</version>
+            <groupId>org.apache.geronimo.specs</groupId>
+            <artifactId>geronimo-jpa_2.0_spec</artifactId>
+            <version>1.1</version>
             <scope>test</scope>
         </dependency>
+        
+        <!-- Dependencies to aries jpa modules -->
         <dependency>
             <artifactId>org.apache.aries.jpa.api</artifactId>
             <groupId>org.apache.aries.jpa</groupId>
-            <version>1.0.0</version>
+            <version>1.0.3-SNAPSHOT</version>
             <scope>test</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.aries.jpa</groupId>
             <artifactId>org.apache.aries.jpa.container</artifactId>
-            <version>1.0.2-SNAPSHOT</version>
+            <version>1.0.3-SNAPSHOT</version>
             <scope>test</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.aries.jpa</groupId>
             <artifactId>org.apache.aries.jpa.container.context</artifactId>
-            <version>1.0.3-SNAPSHOT</version>
+            <version>1.0.5-SNAPSHOT</version>
             <scope>test</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.aries.jpa</groupId>
             <artifactId>org.apache.aries.jpa.blueprint.aries</artifactId>
-            <version>1.0.3-SNAPSHOT</version>
-            <!--<scope>test</scope>-->
+            <version>1.0.5-SNAPSHOT</version>
+            <!--<scope>test</scope> -->
         </dependency>
+
         <dependency>
-               <groupId>org.apache.geronimo.specs</groupId>
-               <artifactId>geronimo-servlet_2.5_spec</artifactId>
-               <version>1.2</version>
+            <groupId>org.apache.geronimo.specs</groupId>
+            <artifactId>geronimo-servlet_2.5_spec</artifactId>
+            <version>1.2</version>
         </dependency>
         <dependency>
-               <groupId>org.apache.servicemix.bundles</groupId>
-               
<artifactId>org.apache.servicemix.bundles.commons-dbcp</artifactId>
-               <version>1.4_3</version>
+            <groupId>org.apache.servicemix.bundles</groupId>
+            <artifactId>org.apache.servicemix.bundles.commons-dbcp</artifactId>
+            <version>1.4_3</version>
         </dependency>
         <dependency>
-               <groupId>org.apache.xbean</groupId>
-               <artifactId>xbean-asm4-shaded</artifactId>
-               <version>3.16</version>
+            <groupId>org.apache.xbean</groupId>
+            <artifactId>xbean-asm4-shaded</artifactId>
+            <version>3.16</version>
         </dependency>
         <dependency>
             <groupId>org.apache.openjpa</groupId>
@@ -147,6 +155,45 @@
             <version>2.3.0</version>
             <scope>test</scope>
         </dependency>
+
+        <!-- eclipselink -->
+        <dependency>
+            <groupId>org.eclipse.persistence</groupId>
+            <artifactId>javax.persistence</artifactId>
+            <version>2.1.0</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.eclipse.persistence</groupId>
+            <artifactId>org.eclipse.persistence.antlr</artifactId>
+            <version>2.5.2</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.eclipse.persistence</groupId>
+            <artifactId>org.eclipse.persistence.core</artifactId>
+            <version>2.5.2</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.eclipse.persistence</groupId>
+            <artifactId>org.eclipse.persistence.jpa.jpql</artifactId>
+            <version>2.5.2</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.eclipse.persistence</groupId>
+            <artifactId>org.eclipse.persistence.asm</artifactId>
+            <version>2.5.2</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.eclipse.persistence</groupId>
+            <artifactId>org.eclipse.persistence.jpa</artifactId>
+            <version>2.5.2</version>
+            <scope>test</scope>
+        </dependency>
+
         <dependency>
             <groupId>org.apache.geronimo.specs</groupId>
             <artifactId>geronimo-jta_1.1_spec</artifactId>
@@ -176,6 +223,73 @@
             <version>1.13.1_2</version>
         </dependency>
         
+        <!-- hibernate -->
+        <dependency>
+            <groupId>org.apache.servicemix.bundles</groupId>
+            <artifactId>org.apache.servicemix.bundles.antlr</artifactId>
+            <version>${antlr.bundle.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix.bundles</groupId>
+            <artifactId>org.apache.servicemix.bundles.ant</artifactId>
+            <version>${ant.bundle.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix.bundles</groupId>
+            <artifactId>org.apache.servicemix.bundles.dom4j</artifactId>
+            <version>${dom4j.bundle.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix.bundles</groupId>
+            <artifactId>org.apache.servicemix.bundles.serp</artifactId>
+            <version>${serp.bundle.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>com.fasterxml</groupId>
+            <artifactId>classmate</artifactId>
+            <version>0.9.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.javassist</groupId>
+            <artifactId>javassist</artifactId>
+            <version>3.18.1-GA</version>
+        </dependency>
+        <dependency>
+            <groupId>org.jboss.spec.javax.security.jacc</groupId>
+            <artifactId>jboss-jacc-api_1.4_spec</artifactId>
+            <version>1.0.2.Final</version>
+        </dependency>
+        <dependency>
+            <groupId>org.jboss.logging</groupId>
+            <artifactId>jboss-logging</artifactId>
+            <version>3.1.4.GA</version>
+        </dependency>
+        <dependency>
+            <groupId>org.hibernate.common</groupId>
+            <artifactId>hibernate-commons-annotations</artifactId>
+            <version>4.0.4.Final</version>
+        </dependency>
+        <dependency>
+            <groupId>org.jboss</groupId>
+            <artifactId>jandex</artifactId>
+            <version>1.2.2.Final</version>
+        </dependency>
+        <dependency>
+            <groupId>org.hibernate</groupId>
+            <artifactId>hibernate-core</artifactId>
+            <version>${hibernate42.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.hibernate</groupId>
+            <artifactId>hibernate-entitymanager</artifactId>
+            <version>${hibernate42.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.hibernate</groupId>
+            <artifactId>hibernate-osgi</artifactId>
+            <version>${hibernate42.version}</version>
+        </dependency>
+        
         <!-- Test bundles -->
         <dependency>
             <groupId>org.apache.aries.jpa</groupId>
@@ -215,11 +329,11 @@
             <scope>test</scope>
         </dependency>
         <dependency>
-                       <groupId>org.apache.aries.transaction</groupId>
-                       
<artifactId>org.apache.aries.transaction.wrappers</artifactId>
+            <groupId>org.apache.aries.transaction</groupId>
+            <artifactId>org.apache.aries.transaction.wrappers</artifactId>
             <version>1.0.0</version>
             <scope>test</scope>
-               </dependency>
+        </dependency>
         <dependency>
             <groupId>org.apache.aries.jndi</groupId>
             <artifactId>org.apache.aries.jndi.api</artifactId>
@@ -233,17 +347,29 @@
             <scope>test</scope>
         </dependency>
         <dependency>
+            <groupId>org.apache.aries.jpa</groupId>
+            <artifactId>org.apache.aries.jpa.eclipselink.adapter</artifactId>
+            <version>1.0.0-SNAPSHOT</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.aries.jpa</groupId>
+            
<artifactId>org.apache.aries.jpa.container.itest.bundle.eclipselink</artifactId>
+            <version>1.0.3-SNAPSHOT</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
             <groupId>org.apache.aries.jndi</groupId>
             <artifactId>org.apache.aries.jndi.url</artifactId>
             <version>1.0.0</version>
             <scope>test</scope>
         </dependency>
         <dependency>
-          <groupId>org.apache.aries.testsupport</groupId>
-          <artifactId>org.apache.aries.testsupport.unit</artifactId>
-          <version>2.0.0-SNAPSHOT</version>
-          <scope>test</scope>
-        </dependency>        
+            <groupId>org.apache.aries.testsupport</groupId>
+            <artifactId>org.apache.aries.testsupport.unit</artifactId>
+            <version>2.0.0-SNAPSHOT</version>
+            <scope>test</scope>
+        </dependency>
         <dependency>
             <groupId>org.apache.derby</groupId>
             <artifactId>derby</artifactId>
@@ -251,22 +377,21 @@
             <scope>test</scope>
         </dependency>
         <dependency>
-               <groupId>org.ops4j.pax.jdbc</groupId>
-               <artifactId>pax-jdbc-derby</artifactId>
-                   <version>0.3.0</version>
-               </dependency>
+            <groupId>org.ops4j.pax.jdbc</groupId>
+            <artifactId>pax-jdbc-derby</artifactId>
+            <version>0.3.0</version>
+        </dependency>
         <dependency>
             <groupId>org.apache.servicemix.bundles</groupId>
             <artifactId>org.apache.servicemix.bundles.cglib</artifactId>
             <version>2.1_3_4</version>
             <scope>test</scope>
         </dependency>
-        
+
         <!-- pax exam -->
         <dependency>
             <groupId>org.slf4j</groupId>
             <artifactId>slf4j-api</artifactId>
-            <version>1.7.7</version>
         </dependency>
         <dependency>
             <groupId>org.ops4j.pax.exam</groupId>
@@ -276,7 +401,7 @@
         </dependency>
         <dependency>
             <groupId>org.ops4j.pax.exam</groupId>
-            <artifactId>pax-exam-container-native</artifactId>
+            <artifactId>pax-exam-container-forked</artifactId>
             <version>${exam.version}</version>
             <scope>test</scope>
         </dependency>
@@ -330,7 +455,7 @@
 
     <build>
         <plugins>
-                       <plugin>
+            <plugin>
                 <groupId>org.apache.servicemix.tooling</groupId>
                 <artifactId>depends-maven-plugin</artifactId>
                 <version>1.2</version>

Modified: 
aries/branches/subsystemsR6/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/advanced/features/itest/EclipseLinkWeavingAndAnnotationScanningTest.java
URL: 
http://svn.apache.org/viewvc/aries/branches/subsystemsR6/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/advanced/features/itest/EclipseLinkWeavingAndAnnotationScanningTest.java?rev=1650143&r1=1650142&r2=1650143&view=diff
==============================================================================
--- 
aries/branches/subsystemsR6/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/advanced/features/itest/EclipseLinkWeavingAndAnnotationScanningTest.java
 (original)
+++ 
aries/branches/subsystemsR6/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/advanced/features/itest/EclipseLinkWeavingAndAnnotationScanningTest.java
 Wed Jan  7 19:37:42 2015
@@ -15,32 +15,38 @@
  */
 package org.apache.aries.jpa.advanced.features.itest;
 
-import static org.ops4j.pax.exam.CoreOptions.options;
-
-import org.junit.Ignore;
+import org.apache.aries.jpa.container.PersistenceUnitConstants;
+import org.apache.aries.jpa.container.advanced.itest.bundle.entities.Car;
+import org.eclipse.persistence.internal.weaving.PersistenceWeaved;
+import org.junit.Test;
 import org.ops4j.pax.exam.Configuration;
 import org.ops4j.pax.exam.Option;
 
-@Ignore
+import static org.junit.Assert.assertTrue;
+import static org.ops4j.pax.exam.CoreOptions.*;
+
+import java.util.Arrays;
+
+import javax.persistence.EntityManagerFactory;
+
 public class EclipseLinkWeavingAndAnnotationScanningTest extends 
JPAWeavingAndAnnotationScanningTest {
     @Configuration
     public Option[] eclipseLinkConfig() {
         return options(        
-                       baseOptions(), 
-                       eclipseLink(),
-                       openJpa(),
-                       testBundleAdvanced()
-
+            baseOptions(),
+            ariesJpa21(),
+            eclipseLink(),
+            testBundleAdvanced()          
         );
     }
     
-    /* Aries-811: EclipseLink removed from build to debug other build breaks
     @Test
     public void testClassIsWoven() throws Exception {
       context().getService(EntityManagerFactory.class, 
"(&(osgi.unit.name=test-unit)(" + 
PersistenceUnitConstants.CONTAINER_MANAGED_PERSISTENCE_UNIT + "=true))");
       
+      Thread.sleep(200);
       assertTrue("Not PersistenceCapable", 
Arrays.asList(Car.class.getInterfaces())
           .contains(PersistenceWeaved.class));
     }
-       */
+       
 }

Modified: 
aries/branches/subsystemsR6/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/advanced/features/itest/OpenjpaWeavingAndAnnotationScanningTest.java
URL: 
http://svn.apache.org/viewvc/aries/branches/subsystemsR6/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/advanced/features/itest/OpenjpaWeavingAndAnnotationScanningTest.java?rev=1650143&r1=1650142&r2=1650143&view=diff
==============================================================================
--- 
aries/branches/subsystemsR6/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/advanced/features/itest/OpenjpaWeavingAndAnnotationScanningTest.java
 (original)
+++ 
aries/branches/subsystemsR6/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/advanced/features/itest/OpenjpaWeavingAndAnnotationScanningTest.java
 Wed Jan  7 19:37:42 2015
@@ -35,7 +35,7 @@ public class OpenjpaWeavingAndAnnotation
                                baseOptions(),
                                openJpa(),
                                derbyDataSourceFactory(),
-                               ariesJpa(),
+                               ariesJpa20(),
                                transactionWrapper(),
 
                                testBundleAdvanced()

Modified: 
aries/branches/subsystemsR6/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/blueprint/aries/itest/JPAInjectionTest.java
URL: 
http://svn.apache.org/viewvc/aries/branches/subsystemsR6/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/blueprint/aries/itest/JPAInjectionTest.java?rev=1650143&r1=1650142&r2=1650143&view=diff
==============================================================================
--- 
aries/branches/subsystemsR6/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/blueprint/aries/itest/JPAInjectionTest.java
 (original)
+++ 
aries/branches/subsystemsR6/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/blueprint/aries/itest/JPAInjectionTest.java
 Wed Jan  7 19:37:42 2015
@@ -16,7 +16,6 @@
 package org.apache.aries.jpa.blueprint.aries.itest;
 
 import static org.junit.Assert.assertTrue;
-import static org.ops4j.pax.exam.CoreOptions.mavenBundle;
 import static org.ops4j.pax.exam.CoreOptions.options;
 
 import org.apache.aries.jpa.blueprint.itest.JPATestBean;
@@ -29,7 +28,6 @@ import org.ops4j.pax.exam.Option;
 public class JPAInjectionTest extends AbstractJPAItest {
 
   @Test
-  @Ignore
   public void findResources() throws Exception {
     JPATestBean bean = context().getService(JPATestBean.class, 
"(version=1.0.0)");
     
@@ -38,7 +36,6 @@ public class JPAInjectionTest extends Ab
   }
   
   @Test
-  @Ignore
   public void findResources_110() throws Exception {
     JPATestBean bean = context().getService(JPATestBean.class, 
"(version=1.1.0)");
     
@@ -50,7 +47,6 @@ public class JPAInjectionTest extends Ab
   }
   
   @Test
-  @Ignore
   public void testLifecycle() throws Exception {
     JPATestBean bean = context().getService(JPATestBean.class, 
"(lifecycle=true)");
     assertTrue("No persistence context injection", bean.pContextAvailable());
@@ -63,7 +59,7 @@ public class JPAInjectionTest extends Ab
   public Option[] configuration() {
     return options(
                baseOptions(),
-               ariesJpa(),
+               ariesJpa20(),
                openJpa(),
                testDs(),
                testBundleBlueprint(),

Modified: 
aries/branches/subsystemsR6/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/container/itest/JPAContainerDataSourceFactoryTest.java
URL: 
http://svn.apache.org/viewvc/aries/branches/subsystemsR6/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/container/itest/JPAContainerDataSourceFactoryTest.java?rev=1650143&r1=1650142&r2=1650143&view=diff
==============================================================================
--- 
aries/branches/subsystemsR6/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/container/itest/JPAContainerDataSourceFactoryTest.java
 (original)
+++ 
aries/branches/subsystemsR6/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/container/itest/JPAContainerDataSourceFactoryTest.java
 Wed Jan  7 19:37:42 2015
@@ -171,7 +171,7 @@ public class JPAContainerDataSourceFacto
        public Option[] configuration() {
                return options(
                                baseOptions(),
-                               ariesJpa(),
+                               ariesJpa20(),
                                transactionWrapper(),
                                openJpa(),
                                testBundle()

Modified: 
aries/branches/subsystemsR6/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/container/itest/JPAContainerTest.java
URL: 
http://svn.apache.org/viewvc/aries/branches/subsystemsR6/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/container/itest/JPAContainerTest.java?rev=1650143&r1=1650142&r2=1650143&view=diff
==============================================================================
--- 
aries/branches/subsystemsR6/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/container/itest/JPAContainerTest.java
 (original)
+++ 
aries/branches/subsystemsR6/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/container/itest/JPAContainerTest.java
 Wed Jan  7 19:37:42 2015
@@ -48,7 +48,7 @@ public class JPAContainerTest extends Ab
        public Option[] configuration() {
                return options(
                                baseOptions(),
-                               ariesJpa(),
+                               ariesJpa20(),
                                // Needed for the BP_TEST_UNIT
                                transactionWrapper(),
                                openJpa(),

Modified: 
aries/branches/subsystemsR6/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/context/itest/EclipseLinkContextTest.java
URL: 
http://svn.apache.org/viewvc/aries/branches/subsystemsR6/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/context/itest/EclipseLinkContextTest.java?rev=1650143&r1=1650142&r2=1650143&view=diff
==============================================================================
--- 
aries/branches/subsystemsR6/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/context/itest/EclipseLinkContextTest.java
 (original)
+++ 
aries/branches/subsystemsR6/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/context/itest/EclipseLinkContextTest.java
 Wed Jan  7 19:37:42 2015
@@ -15,22 +15,92 @@
  */
 package org.apache.aries.jpa.context.itest;
 
-import static org.ops4j.pax.exam.CoreOptions.options;
-
-import org.junit.Ignore;
+import org.apache.aries.jpa.container.itest.entities.Car;
+import org.junit.Test;
 import org.ops4j.pax.exam.Configuration;
 import org.ops4j.pax.exam.Option;
 
-@Ignore
+import static org.junit.Assert.assertEquals;
+import static org.ops4j.pax.exam.CoreOptions.options;
+
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.persistence.EntityManager;
+import javax.persistence.EntityManagerFactory;
+import javax.persistence.Query;
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaDelete;
+
 public class EclipseLinkContextTest extends JPAContextTest {
-    @Configuration
-    public Option[] eclipseLinkConfig() {
-        return options(
-                       baseOptions(),
-                       ariesJpa(),
-                       eclipseLink(),
-                testBundleEclipseLink()
-        );
+  protected static final String SCRIPT_TEST_UNIT = "script-test-unit";
+  
+  @Test
+  public void testDeleteQuery() throws Exception {
+    registerClient(BP_TEST_UNIT);
+    EntityManagerFactory emf = getProxyEMF(BP_TEST_UNIT);
+    EntityManager em = emf.createEntityManager();
+
+    try {
+      ut.begin();
+
+      Car c = new Car();
+      c.setColour("Blue");
+      c.setNumberPlate("AB11CDE");
+      c.setNumberOfSeats(7);
+      c.setEngineSize(1900);
+      em.persist(c);
+
+      ut.commit();
+
+    } catch(Exception e) {
+      ut.rollback();
     }
-       
+
+    assertEquals(7, em.find(Car.class, "AB11CDE").getNumberOfSeats());
+
+    CriteriaBuilder cb = em.getCriteriaBuilder();
+    Method createCriteriaDelete = 
cb.getClass().getMethod("createCriteriaDelete", Class.class);
+    final List<Object> l = new ArrayList<Object>();
+    l.add(Car.class);
+    Object criteriaDelete = createCriteriaDelete.invoke(cb, Car.class);
+    Method from = CriteriaDelete.class.getMethod("from", Class.class);
+    from.invoke(criteriaDelete, Car.class);
+
+    try {
+      ut.begin();
+      Method createQuery = em.getClass().getMethod("createQuery", 
CriteriaDelete.class);
+      Query q = (Query) createQuery.invoke(em, criteriaDelete);
+      q.executeUpdate();
+      ut.commit();
+    } catch(Exception e) {
+      ut.rollback();
+    }
+    
+    Car c = em.find(Car.class, "AB11CDE");
+    assertEquals(c, null);
+  }
+  
+  @Test
+  public void testPersistenceFileParsing() throws Exception {
+    registerClient(SCRIPT_TEST_UNIT);
+    EntityManagerFactory emf = getProxyEMF(SCRIPT_TEST_UNIT);
+    EntityManager em = emf.createEntityManager();
+        
+    Car c = em.find(Car.class, "AB11CDE");
+    assertEquals(1300, em.find(Car.class, "AB11CDE").getEngineSize());
+  }
+
+  @Configuration
+  public Option[] eclipseLinkConfig() {
+    return options(
+        baseOptions(), 
+        ariesJpa21(), 
+        transactionWrapper(), 
+        eclipseLink(),
+        testBundleEclipseLink()
+        );
+  }
+
 }

Modified: 
aries/branches/subsystemsR6/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/context/itest/EclipseLinkStartupTest.java
URL: 
http://svn.apache.org/viewvc/aries/branches/subsystemsR6/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/context/itest/EclipseLinkStartupTest.java?rev=1650143&r1=1650142&r2=1650143&view=diff
==============================================================================
--- 
aries/branches/subsystemsR6/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/context/itest/EclipseLinkStartupTest.java
 (original)
+++ 
aries/branches/subsystemsR6/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/context/itest/EclipseLinkStartupTest.java
 Wed Jan  7 19:37:42 2015
@@ -15,20 +15,16 @@
  */
 package org.apache.aries.jpa.context.itest;
 
-import static org.ops4j.pax.exam.CoreOptions.mavenBundle;
-
-import javax.persistence.EntityManagerFactory;
-import javax.persistence.spi.PersistenceProvider;
-
 import org.apache.aries.jpa.itest.AbstractJPAItest;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.ops4j.pax.exam.Configuration;
 import org.ops4j.pax.exam.CoreOptions;
 import org.ops4j.pax.exam.Option;
 import org.osgi.framework.Bundle;
 
-@Ignore
+import javax.persistence.EntityManagerFactory;
+import javax.persistence.spi.PersistenceProvider;
+
 public class EclipseLinkStartupTest extends AbstractJPAItest {
     
     @Test
@@ -49,9 +45,9 @@ public class EclipseLinkStartupTest exte
     public Option[] configuration() {
         return CoreOptions.options(
                        baseOptions(),
-                       ariesJpa(),
+                       ariesJpa21(),
                        eclipseLink(),
-                mavenBundle("org.apache.aries.jpa", 
"org.apache.aries.jpa.container.itest.bundle.eclipselink").noStart()
+                       testBundleEclipseLink().noStart()
             );
     }
 }


Reply via email to