Return-Path: X-Original-To: apmail-aries-commits-archive@www.apache.org Delivered-To: apmail-aries-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 5A86217FF4 for ; Sat, 11 Oct 2014 19:52:15 +0000 (UTC) Received: (qmail 77458 invoked by uid 500); 11 Oct 2014 19:52:15 -0000 Delivered-To: apmail-aries-commits-archive@aries.apache.org Received: (qmail 77402 invoked by uid 500); 11 Oct 2014 19:52:15 -0000 Mailing-List: contact commits-help@aries.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@aries.apache.org Delivered-To: mailing list commits@aries.apache.org Received: (qmail 77391 invoked by uid 99); 11 Oct 2014 19:52:14 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 11 Oct 2014 19:52:14 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 11 Oct 2014 19:51:43 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id BF950238899C; Sat, 11 Oct 2014 19:51:39 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1631104 [1/2] - in /aries/trunk/jpa: ./ jpa-api/ jpa-blueprint-aries/ jpa-blueprint-testbundle/ jpa-container-advancedtestbundle/ jpa-container-advancedtestbundle/src/main/resources/META-INF/ jpa-container-context/ jpa-container-context/sr... Date: Sat, 11 Oct 2014 19:51:38 -0000 To: commits@aries.apache.org From: cschneider@apache.org X-Mailer: svnmailer-1.0.9 Message-Id: <20141011195139.BF950238899C@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: cschneider Date: Sat Oct 11 19:51:37 2014 New Revision: 1631104 URL: http://svn.apache.org/r1631104 Log: [ARIES-1251] Improvements in jpa21 support and added eclipse test for jpa 2.1 with thanks to Guiseppe Gerla Added: aries/trunk/jpa/jpa-container-testbundle-eclipselink/src/main/resources/META-INF/sql/ aries/trunk/jpa/jpa-container-testbundle-eclipselink/src/main/resources/META-INF/sql/create.sql aries/trunk/jpa/jpa-container-testbundle-eclipselink/src/main/resources/META-INF/sql/data.sql aries/trunk/jpa/jpa-container-testbundle-eclipselink/src/main/resources/META-INF/sql/drop.sql aries/trunk/jpa/jpa-container/src/main/resources/org/apache/aries/jpa/container/parsing/impl/persistence_2_1.xsd.rsrc Modified: aries/trunk/jpa/jpa-api/pom.xml aries/trunk/jpa/jpa-blueprint-aries/pom.xml aries/trunk/jpa/jpa-blueprint-testbundle/pom.xml aries/trunk/jpa/jpa-container-advancedtestbundle/pom.xml aries/trunk/jpa/jpa-container-advancedtestbundle/src/main/resources/META-INF/persistence.xml aries/trunk/jpa/jpa-container-context/pom.xml aries/trunk/jpa/jpa-container-context/src/main/java/org/apache/aries/jpa/container/context/transaction/impl/JTAEntityManagerHandler.java aries/trunk/jpa/jpa-container-context/src/main/resources/org/apache/aries/jpa/container/context/nls/jpaContainerContextMessages.properties aries/trunk/jpa/jpa-container-eclipselink-adapter/pom.xml aries/trunk/jpa/jpa-container-eclipselink-adapter/src/main/java/org/apache/aries/jpa/eclipselink/adapter/Activator.java aries/trunk/jpa/jpa-container-eclipselink-adapter/src/main/java/org/apache/aries/jpa/eclipselink/adapter/EclipseLinkProviderService.java aries/trunk/jpa/jpa-container-eclipselink-adapter/src/main/java/org/apache/aries/jpa/eclipselink/adapter/platform/OSGiTSServer.java aries/trunk/jpa/jpa-container-eclipselink-adapter/src/main/java/org/apache/aries/jpa/eclipselink/adapter/platform/OSGiTSWrapper.java aries/trunk/jpa/jpa-container-itest/pom.xml aries/trunk/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/advanced/features/itest/EclipseLinkWeavingAndAnnotationScanningTest.java aries/trunk/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/advanced/features/itest/OpenjpaWeavingAndAnnotationScanningTest.java aries/trunk/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/blueprint/aries/itest/JPAInjectionTest.java aries/trunk/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/container/itest/JPAContainerDataSourceFactoryTest.java aries/trunk/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/container/itest/JPAContainerTest.java aries/trunk/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/context/itest/EclipseLinkContextTest.java aries/trunk/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/context/itest/EclipseLinkStartupTest.java aries/trunk/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/context/itest/JPAContextTest.java aries/trunk/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/context/itest/OpenjpaContextTest.java aries/trunk/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/itest/AbstractJPAItest.java aries/trunk/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/quiesce/itest/AbstractQuiesceJPATest.java aries/trunk/jpa/jpa-container-testbundle-eclipselink/pom.xml aries/trunk/jpa/jpa-container-testbundle-eclipselink/src/main/resources/META-INF/persistence.xml aries/trunk/jpa/jpa-container-testbundle/pom.xml aries/trunk/jpa/jpa-container/pom.xml aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/impl/EntityManagerProxyFactory.java aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/impl/QuiesceEMFHandler.java aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/parsing/impl/JPAHandler.java aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/parsing/impl/SchemaLocatingHandler.java aries/trunk/jpa/jpa-container/src/main/resources/org/apache/aries/jpa/container/nls/jpaContainerMessages.properties aries/trunk/jpa/pom.xml Modified: aries/trunk/jpa/jpa-api/pom.xml URL: http://svn.apache.org/viewvc/aries/trunk/jpa/jpa-api/pom.xml?rev=1631104&r1=1631103&r2=1631104&view=diff ============================================================================== --- aries/trunk/jpa/jpa-api/pom.xml (original) +++ aries/trunk/jpa/jpa-api/pom.xml Sat Oct 11 19:51:37 2014 @@ -64,9 +64,9 @@ provided - org.hibernate.javax.persistence - hibernate-jpa-2.1-api - 1.0.0.Final + org.apache.geronimo.specs + geronimo-jpa_2.0_spec + 1.1 provided Modified: aries/trunk/jpa/jpa-blueprint-aries/pom.xml URL: http://svn.apache.org/viewvc/aries/trunk/jpa/jpa-blueprint-aries/pom.xml?rev=1631104&r1=1631103&r2=1631104&view=diff ============================================================================== --- aries/trunk/jpa/jpa-blueprint-aries/pom.xml (original) +++ aries/trunk/jpa/jpa-blueprint-aries/pom.xml Sat Oct 11 19:51:37 2014 @@ -62,9 +62,9 @@ provided - org.hibernate.javax.persistence - hibernate-jpa-2.1-api - 1.0.0.Final + org.apache.geronimo.specs + geronimo-jpa_2.0_spec + 1.1 provided @@ -76,7 +76,7 @@ org.apache.aries.jpa org.apache.aries.jpa.api - 1.0.2 + 1.0.3-SNAPSHOT org.slf4j Modified: aries/trunk/jpa/jpa-blueprint-testbundle/pom.xml URL: http://svn.apache.org/viewvc/aries/trunk/jpa/jpa-blueprint-testbundle/pom.xml?rev=1631104&r1=1631103&r2=1631104&view=diff ============================================================================== --- aries/trunk/jpa/jpa-blueprint-testbundle/pom.xml (original) +++ aries/trunk/jpa/jpa-blueprint-testbundle/pom.xml Sat Oct 11 19:51:37 2014 @@ -53,9 +53,9 @@ - org.hibernate.javax.persistence - hibernate-jpa-2.1-api - 1.0.0.Final + org.apache.geronimo.specs + geronimo-jpa_2.0_spec + 1.1 provided Modified: aries/trunk/jpa/jpa-container-advancedtestbundle/pom.xml URL: http://svn.apache.org/viewvc/aries/trunk/jpa/jpa-container-advancedtestbundle/pom.xml?rev=1631104&r1=1631103&r2=1631104&view=diff ============================================================================== --- aries/trunk/jpa/jpa-container-advancedtestbundle/pom.xml (original) +++ aries/trunk/jpa/jpa-container-advancedtestbundle/pom.xml Sat Oct 11 19:51:37 2014 @@ -56,9 +56,9 @@ - org.hibernate.javax.persistence - hibernate-jpa-2.1-api - 1.0.0.Final + org.apache.geronimo.specs + geronimo-jpa_2.0_spec + 1.1 provided Modified: aries/trunk/jpa/jpa-container-advancedtestbundle/src/main/resources/META-INF/persistence.xml URL: http://svn.apache.org/viewvc/aries/trunk/jpa/jpa-container-advancedtestbundle/src/main/resources/META-INF/persistence.xml?rev=1631104&r1=1631103&r2=1631104&view=diff ============================================================================== --- aries/trunk/jpa/jpa-container-advancedtestbundle/src/main/resources/META-INF/persistence.xml (original) +++ aries/trunk/jpa/jpa-container-advancedtestbundle/src/main/resources/META-INF/persistence.xml Sat Oct 11 19:51:37 2014 @@ -24,10 +24,11 @@ Test persistence unit for the JPA Container advanced iTests - + + Modified: aries/trunk/jpa/jpa-container-context/pom.xml URL: http://svn.apache.org/viewvc/aries/trunk/jpa/jpa-container-context/pom.xml?rev=1631104&r1=1631103&r2=1631104&view=diff ============================================================================== --- aries/trunk/jpa/jpa-container-context/pom.xml (original) +++ aries/trunk/jpa/jpa-container-context/pom.xml Sat Oct 11 19:51:37 2014 @@ -70,9 +70,9 @@ provided - org.hibernate.javax.persistence - hibernate-jpa-2.0-api - 1.0.0.Final + org.apache.geronimo.specs + geronimo-jpa_2.0_spec + 1.1 provided @@ -90,7 +90,7 @@ org.apache.aries.jpa org.apache.aries.jpa.api - 1.0.2 + 1.0.3-SNAPSHOT provided Modified: aries/trunk/jpa/jpa-container-context/src/main/java/org/apache/aries/jpa/container/context/transaction/impl/JTAEntityManagerHandler.java URL: http://svn.apache.org/viewvc/aries/trunk/jpa/jpa-container-context/src/main/java/org/apache/aries/jpa/container/context/transaction/impl/JTAEntityManagerHandler.java?rev=1631104&r1=1631103&r2=1631104&view=diff ============================================================================== --- aries/trunk/jpa/jpa-container-context/src/main/java/org/apache/aries/jpa/container/context/transaction/impl/JTAEntityManagerHandler.java (original) +++ aries/trunk/jpa/jpa-container-context/src/main/java/org/apache/aries/jpa/container/context/transaction/impl/JTAEntityManagerHandler.java Sat Oct 11 19:51:37 2014 @@ -13,6 +13,7 @@ import java.util.concurrent.atomic.Atomi import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.LockModeType; +import javax.persistence.PersistenceException; import javax.persistence.TransactionRequiredException; import org.apache.aries.jpa.container.context.impl.NLS; @@ -170,16 +171,23 @@ public class JTAEntityManagerHandler imp boolean forceTransaction = transactedMethods.contains(methodName); // TODO Check if this can be reached - if ("joinTransaction".equals(methodName)) { + if ("joinTransaction".equals(methodName) && args != null && args.length > 2 && args[2].getClass() == LockModeType.class) { forceTransaction = args[2] != LockModeType.NONE; } - if ("find".equals(methodName) && args.length >= 3 && args[2].getClass() == LockModeType.class) { + if ("find".equals(methodName) && args != null && args.length >= 3 && args[2].getClass() == LockModeType.class) { forceTransaction = args[2] != LockModeType.NONE; } EntityManager delegate = getPersistenceContext(forceTransaction); - Object res = method.invoke(delegate, args); + Object res = null; + try { + res = method.invoke(delegate, args); + } catch (IllegalArgumentException e) { + new PersistenceException(NLS.MESSAGES.getMessage("wrong.JPA.version", new Object[]{ + method.getName(), delegate + }), e); + } return res; } Modified: aries/trunk/jpa/jpa-container-context/src/main/resources/org/apache/aries/jpa/container/context/nls/jpaContainerContextMessages.properties URL: http://svn.apache.org/viewvc/aries/trunk/jpa/jpa-container-context/src/main/resources/org/apache/aries/jpa/container/context/nls/jpaContainerContextMessages.properties?rev=1631104&r1=1631103&r2=1631104&view=diff ============================================================================== --- aries/trunk/jpa/jpa-container-context/src/main/resources/org/apache/aries/jpa/container/context/nls/jpaContainerContextMessages.properties (original) +++ aries/trunk/jpa/jpa-container-context/src/main/resources/org/apache/aries/jpa/container/context/nls/jpaContainerContextMessages.properties Sat Oct 11 19:51:37 2014 @@ -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/trunk/jpa/jpa-container-eclipselink-adapter/pom.xml URL: http://svn.apache.org/viewvc/aries/trunk/jpa/jpa-container-eclipselink-adapter/pom.xml?rev=1631104&r1=1631103&r2=1631104&view=diff ============================================================================== --- aries/trunk/jpa/jpa-container-eclipselink-adapter/pom.xml (original) +++ aries/trunk/jpa/jpa-container-eclipselink-adapter/pom.xml Sat Oct 11 19:51:37 2014 @@ -31,7 +31,7 @@ org.apache.aries.jpa org.apache.aries.jpa.eclipselink.adapter bundle - 1.0.1-SNAPSHOT + 1.0.0-SNAPSHOT Aries JPA Container adapter for use with EclipseLink @@ -41,16 +41,30 @@ - org.apache.aries.jpa.eclipselink.adapter.* - + + org.apache.aries.jpa.eclipselink.adapter, + org.apache.aries.jpa.eclipselink.adapter.platform + - 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, * true org.apache.aries.jpa.eclipselink.adapter.Activator - 1.0.0 + + true @@ -70,10 +84,9 @@ provided - org.apache.geronimo.specs - geronimo-jpa_2.0_spec - 1.1 - provided + org.eclipse.persistence + javax.persistence + 2.1.0 org.apache.geronimo.specs @@ -82,18 +95,17 @@ provided - org.eclipse.persistence - org.eclipse.persistence.jpa - 2.1.0 - - org.apache.aries org.apache.aries.util - 0.4 - provided + 1.0.0 + + + org.eclipse.persistence + org.eclipse.persistence.jpa + 2.5.2 - + Modified: aries/trunk/jpa/jpa-container-eclipselink-adapter/src/main/java/org/apache/aries/jpa/eclipselink/adapter/Activator.java URL: http://svn.apache.org/viewvc/aries/trunk/jpa/jpa-container-eclipselink-adapter/src/main/java/org/apache/aries/jpa/eclipselink/adapter/Activator.java?rev=1631104&r1=1631103&r2=1631104&view=diff ============================================================================== --- aries/trunk/jpa/jpa-container-eclipselink-adapter/src/main/java/org/apache/aries/jpa/eclipselink/adapter/Activator.java (original) +++ aries/trunk/jpa/jpa-container-eclipselink-adapter/src/main/java/org/apache/aries/jpa/eclipselink/adapter/Activator.java Sat Oct 11 19:51:37 2014 @@ -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 registeredProviders = new ConcurrentHashMap(); + private final ConcurrentMap> registeredProviders = new ConcurrentHashMap>(); 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,15 @@ 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(); - } } - + 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 +104,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 props = new Hashtable(); props.put("org.apache.aries.jpa.container.weaving.packages", getJPAPackages(b)); @@ -148,25 +134,24 @@ public class Activator implements Bundle private String[] getJPAPackages(Bundle jpaBundle) { Set result = new HashSet(); - 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 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 +163,4 @@ public class Activator implements Bundle return result.toArray(new String[0]); } - - private List nullSafe(T[] array) { - if (array == null) return Collections.emptyList(); - else return Arrays.asList(array); - } } Modified: aries/trunk/jpa/jpa-container-eclipselink-adapter/src/main/java/org/apache/aries/jpa/eclipselink/adapter/EclipseLinkProviderService.java URL: http://svn.apache.org/viewvc/aries/trunk/jpa/jpa-container-eclipselink-adapter/src/main/java/org/apache/aries/jpa/eclipselink/adapter/EclipseLinkProviderService.java?rev=1631104&r1=1631103&r2=1631104&view=diff ============================================================================== --- aries/trunk/jpa/jpa-container-eclipselink-adapter/src/main/java/org/apache/aries/jpa/eclipselink/adapter/EclipseLinkProviderService.java (original) +++ aries/trunk/jpa/jpa-container-eclipselink-adapter/src/main/java/org/apache/aries/jpa/eclipselink/adapter/EclipseLinkProviderService.java Sat Oct 11 19:51:37 2014 @@ -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 providerClass = eclipseLinkJpaBundle.loadClass(Activator.ECLIPSELINK_JPA_PROVIDER_CLASS_NAME); + Class providerClass = (Class) eclipseLinkJpaBundle.loadClass(Activator.ECLIPSELINK_JPA_PROVIDER_CLASS_NAME); Constructor 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/trunk/jpa/jpa-container-eclipselink-adapter/src/main/java/org/apache/aries/jpa/eclipselink/adapter/platform/OSGiTSServer.java URL: http://svn.apache.org/viewvc/aries/trunk/jpa/jpa-container-eclipselink-adapter/src/main/java/org/apache/aries/jpa/eclipselink/adapter/platform/OSGiTSServer.java?rev=1631104&r1=1631103&r2=1631104&view=diff ============================================================================== --- aries/trunk/jpa/jpa-container-eclipselink-adapter/src/main/java/org/apache/aries/jpa/eclipselink/adapter/platform/OSGiTSServer.java (original) +++ aries/trunk/jpa/jpa-container-eclipselink-adapter/src/main/java/org/apache/aries/jpa/eclipselink/adapter/platform/OSGiTSServer.java Sat Oct 11 19:51:37 2014 @@ -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/trunk/jpa/jpa-container-eclipselink-adapter/src/main/java/org/apache/aries/jpa/eclipselink/adapter/platform/OSGiTSWrapper.java URL: http://svn.apache.org/viewvc/aries/trunk/jpa/jpa-container-eclipselink-adapter/src/main/java/org/apache/aries/jpa/eclipselink/adapter/platform/OSGiTSWrapper.java?rev=1631104&r1=1631103&r2=1631104&view=diff ============================================================================== --- aries/trunk/jpa/jpa-container-eclipselink-adapter/src/main/java/org/apache/aries/jpa/eclipselink/adapter/platform/OSGiTSWrapper.java (original) +++ aries/trunk/jpa/jpa-container-eclipselink-adapter/src/main/java/org/apache/aries/jpa/eclipselink/adapter/platform/OSGiTSWrapper.java Sat Oct 11 19:51:37 2014 @@ -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/trunk/jpa/jpa-container-itest/pom.xml URL: http://svn.apache.org/viewvc/aries/trunk/jpa/jpa-container-itest/pom.xml?rev=1631104&r1=1631103&r2=1631104&view=diff ============================================================================== --- aries/trunk/jpa/jpa-container-itest/pom.xml (original) +++ aries/trunk/jpa/jpa-container-itest/pom.xml Sat Oct 11 19:51:37 2014 @@ -38,14 +38,14 @@ scm:svn:https://svn.apache.org/repos/asf/aries/trunk/jpa/jpa-container-itest http://svn.apache.org/viewvc/aries/trunk/jpa/jpa-container-itest - + 3.4.0 1.6.0 - + org.eclipse org.eclipse.osgi 3.8.0.v20120529-1548 @@ -96,10 +96,10 @@ 1.1.0 test - - org.hibernate.javax.persistence - hibernate-jpa-2.1-api - 1.0.0.Final + + org.apache.geronimo.specs + geronimo-jpa_2.0_spec + 1.1 test @@ -126,23 +126,23 @@ org.apache.aries.jpa org.apache.aries.jpa.blueprint.aries 1.0.4-SNAPSHOT - + - org.apache.geronimo.specs - geronimo-servlet_2.5_spec - 1.2 + org.apache.geronimo.specs + geronimo-servlet_2.5_spec + 1.2 - org.apache.servicemix.bundles - org.apache.servicemix.bundles.commons-dbcp - 1.4_3 + org.apache.servicemix.bundles + org.apache.servicemix.bundles.commons-dbcp + 1.4_3 - org.apache.xbean - xbean-asm4-shaded - 3.16 + org.apache.xbean + xbean-asm4-shaded + 3.16 org.apache.openjpa @@ -150,6 +150,44 @@ 2.3.0 test + + + org.eclipse.persistence + javax.persistence + 2.1.0 + test + + + org.eclipse.persistence + org.eclipse.persistence.antlr + 2.5.2 + test + + + org.eclipse.persistence + org.eclipse.persistence.core + 2.5.2 + test + + + org.eclipse.persistence + org.eclipse.persistence.jpa.jpql + 2.5.2 + test + + + org.eclipse.persistence + org.eclipse.persistence.asm + 2.5.2 + test + + + org.eclipse.persistence + org.eclipse.persistence.jpa + 2.5.2 + test + + org.apache.geronimo.specs geronimo-jta_1.1_spec @@ -178,7 +216,7 @@ org.apache.servicemix.bundles.serp 1.13.1_2 - + org.apache.aries.jpa @@ -236,17 +274,29 @@ test + org.apache.aries.jpa + org.apache.aries.jpa.eclipselink.adapter + 1.0.0-SNAPSHOT + test + + + org.apache.aries.jpa + org.apache.aries.jpa.container.itest.bundle.eclipselink + 1.0.3-SNAPSHOT + test + + org.apache.aries.jndi org.apache.aries.jndi.url 1.0.0 test - org.apache.aries.testsupport - org.apache.aries.testsupport.unit - 2.0.0-SNAPSHOT - test - + org.apache.aries.testsupport + org.apache.aries.testsupport.unit + 2.0.0-SNAPSHOT + test + org.apache.derby derby @@ -264,12 +314,11 @@ 2.1_3_4 test - + org.slf4j slf4j-api - 1.7.7 org.ops4j.pax.exam Modified: aries/trunk/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/advanced/features/itest/EclipseLinkWeavingAndAnnotationScanningTest.java URL: http://svn.apache.org/viewvc/aries/trunk/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/advanced/features/itest/EclipseLinkWeavingAndAnnotationScanningTest.java?rev=1631104&r1=1631103&r2=1631104&view=diff ============================================================================== --- aries/trunk/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/advanced/features/itest/EclipseLinkWeavingAndAnnotationScanningTest.java (original) +++ aries/trunk/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/advanced/features/itest/EclipseLinkWeavingAndAnnotationScanningTest.java Sat Oct 11 19:51:37 2014 @@ -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/trunk/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/advanced/features/itest/OpenjpaWeavingAndAnnotationScanningTest.java URL: http://svn.apache.org/viewvc/aries/trunk/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/advanced/features/itest/OpenjpaWeavingAndAnnotationScanningTest.java?rev=1631104&r1=1631103&r2=1631104&view=diff ============================================================================== --- aries/trunk/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/advanced/features/itest/OpenjpaWeavingAndAnnotationScanningTest.java (original) +++ aries/trunk/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/advanced/features/itest/OpenjpaWeavingAndAnnotationScanningTest.java Sat Oct 11 19:51:37 2014 @@ -35,7 +35,7 @@ public class OpenjpaWeavingAndAnnotation baseOptions(), openJpa(), derbyDataSourceFactory(), - ariesJpa(), + ariesJpa20(), transactionWrapper(), testBundleAdvanced() Modified: aries/trunk/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/blueprint/aries/itest/JPAInjectionTest.java URL: http://svn.apache.org/viewvc/aries/trunk/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/blueprint/aries/itest/JPAInjectionTest.java?rev=1631104&r1=1631103&r2=1631104&view=diff ============================================================================== --- aries/trunk/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/blueprint/aries/itest/JPAInjectionTest.java (original) +++ aries/trunk/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/blueprint/aries/itest/JPAInjectionTest.java Sat Oct 11 19:51:37 2014 @@ -28,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)"); @@ -37,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)"); @@ -49,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()); @@ -62,7 +59,7 @@ public class JPAInjectionTest extends Ab public Option[] configuration() { return options( baseOptions(), - ariesJpa(), + ariesJpa20(), openJpa(), testDs(), testBundleBlueprint(), Modified: aries/trunk/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/container/itest/JPAContainerDataSourceFactoryTest.java URL: http://svn.apache.org/viewvc/aries/trunk/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/container/itest/JPAContainerDataSourceFactoryTest.java?rev=1631104&r1=1631103&r2=1631104&view=diff ============================================================================== --- aries/trunk/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/container/itest/JPAContainerDataSourceFactoryTest.java (original) +++ aries/trunk/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/container/itest/JPAContainerDataSourceFactoryTest.java Sat Oct 11 19:51:37 2014 @@ -171,7 +171,7 @@ public class JPAContainerDataSourceFacto public Option[] configuration() { return options( baseOptions(), - ariesJpa(), + ariesJpa20(), transactionWrapper(), openJpa(), testBundle() Modified: aries/trunk/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/container/itest/JPAContainerTest.java URL: http://svn.apache.org/viewvc/aries/trunk/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/container/itest/JPAContainerTest.java?rev=1631104&r1=1631103&r2=1631104&view=diff ============================================================================== --- aries/trunk/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/container/itest/JPAContainerTest.java (original) +++ aries/trunk/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/container/itest/JPAContainerTest.java Sat Oct 11 19:51:37 2014 @@ -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/trunk/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/context/itest/EclipseLinkContextTest.java URL: http://svn.apache.org/viewvc/aries/trunk/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/context/itest/EclipseLinkContextTest.java?rev=1631104&r1=1631103&r2=1631104&view=diff ============================================================================== --- aries/trunk/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/context/itest/EclipseLinkContextTest.java (original) +++ aries/trunk/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/context/itest/EclipseLinkContextTest.java Sat Oct 11 19:51:37 2014 @@ -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 l = new ArrayList(); + 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/trunk/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/context/itest/EclipseLinkStartupTest.java URL: http://svn.apache.org/viewvc/aries/trunk/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/context/itest/EclipseLinkStartupTest.java?rev=1631104&r1=1631103&r2=1631104&view=diff ============================================================================== --- aries/trunk/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/context/itest/EclipseLinkStartupTest.java (original) +++ aries/trunk/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/context/itest/EclipseLinkStartupTest.java Sat Oct 11 19:51:37 2014 @@ -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() ); } } Modified: aries/trunk/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/context/itest/JPAContextTest.java URL: http://svn.apache.org/viewvc/aries/trunk/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/context/itest/JPAContextTest.java?rev=1631104&r1=1631103&r2=1631104&view=diff ============================================================================== --- aries/trunk/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/context/itest/JPAContextTest.java (original) +++ aries/trunk/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/context/itest/JPAContextTest.java Sat Oct 11 19:51:37 2014 @@ -133,7 +133,11 @@ public abstract class JPAContextTest ext ensureTREBehaviour(false, managedEm, "createNativeQuery", "hi", "hi"); ensureTREBehaviour(false, managedEm, "createQuery", "hi"); ensureTREBehaviour(false, managedEm, "find", Object.class, new Object()); + ut.rollback(); + ut.begin(); ensureTREBehaviour(false, managedEm, "flush"); + ut.rollback(); + ut.begin(); ensureTREBehaviour(false, managedEm, "getDelegate"); ensureTREBehaviour(false, managedEm, "getFlushMode"); ensureTREBehaviour(false, managedEm, "getReference", Object.class, new Object()); @@ -353,12 +357,19 @@ public abstract class JPAContextTest ext fail("Should have failed with TransactionRequiredException"); } } catch (InvocationTargetException ite) { + Throwable e = ite; + while(e != null && !(e instanceof TransactionRequiredException)) { + e = e.getCause(); + } + if(e==null) { + e = ite.getCause(); + } if (expectedToFail && !(ite.getCause() instanceof TransactionRequiredException)) { - fail("We got the wrong failure. Expected a TransactionRequiredException" + ", got a " - + ite.toString()); + fail("We got the wrong failure. Expected a TransactionRequiredException" + ", got a " + + ite.toString()); } else if (!expectedToFail && ite.getCause() instanceof TransactionRequiredException) { - fail("We got the wrong failure. Expected not to get a TransactionRequiredException" - + ", but we got one anyway!"); + fail("We got the wrong failure. Expected not to get a TransactionRequiredException" + + ", but we got one anyway!"); } } } Modified: aries/trunk/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/context/itest/OpenjpaContextTest.java URL: http://svn.apache.org/viewvc/aries/trunk/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/context/itest/OpenjpaContextTest.java?rev=1631104&r1=1631103&r2=1631104&view=diff ============================================================================== --- aries/trunk/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/context/itest/OpenjpaContextTest.java (original) +++ aries/trunk/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/context/itest/OpenjpaContextTest.java Sat Oct 11 19:51:37 2014 @@ -26,7 +26,7 @@ public class OpenjpaContextTest extends public Option[] configuration() { return options( baseOptions(), - ariesJpa(), + ariesJpa20(), transactionWrapper(), openJpa(), testBundle() Modified: aries/trunk/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/itest/AbstractJPAItest.java URL: http://svn.apache.org/viewvc/aries/trunk/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/itest/AbstractJPAItest.java?rev=1631104&r1=1631103&r2=1631104&view=diff ============================================================================== --- aries/trunk/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/itest/AbstractJPAItest.java (original) +++ aries/trunk/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/itest/AbstractJPAItest.java Sat Oct 11 19:51:37 2014 @@ -83,7 +83,7 @@ public abstract class AbstractJPAItest e ); } - protected Option ariesJpa() { + protected Option ariesJpa20() { return composite( frameworkProperty("org.osgi.framework.system.packages") .value("javax.accessibility,javax.activation,javax.activity,javax.annotation,javax.annotation.processing,javax.crypto,javax.crypto.interfaces,javax.crypto.spec,javax.imageio,javax.imageio.event,javax.imageio.metadata,javax.imageio.plugins.bmp,javax.imageio.plugins.jpeg,javax.imageio.spi,javax.imageio.stream,javax.jws,javax.jws.soap,javax.lang.model,javax.lang.model.element,javax.lang.model.type,javax.lang.model.util,javax.management,javax.management.loading,javax.management.modelmbean,javax.management.monitor,javax.management.openmbean,javax.management.relation,javax.management.remote,javax.management.remote.rmi,javax.management.timer,javax.naming,javax.naming.directory,javax.naming.event,javax.naming.ldap,javax.naming.spi,javax.net,javax.net.ssl,javax.print,javax.print.attribute,javax.print.attribute.standard,javax.print.event,javax.rmi,javax.rmi.CORBA,javax.rmi.ssl,javax.script,javax.security.auth,javax.security.auth.callback,javax.security.auth.kerberos,javax.securit y.auth.login,javax.security.auth.spi,javax.security.auth.x500,javax.security.cert,javax.security.sasl,javax.sound.midi,javax.sound.midi.spi,javax.sound.sampled,javax.sound.sampled.spi,javax.sql,javax.sql.rowset,javax.sql.rowset.serial,javax.sql.rowset.spi,javax.swing,javax.swing.border,javax.swing.colorchooser,javax.swing.event,javax.swing.filechooser,javax.swing.plaf,javax.swing.plaf.basic,javax.swing.plaf.metal,javax.swing.plaf.multi,javax.swing.plaf.synth,javax.swing.table,javax.swing.text,javax.swing.text.html,javax.swing.text.html.parser,javax.swing.text.rtf,javax.swing.tree,javax.swing.undo,javax.tools,javax.xml,javax.xml.bind,javax.xml.bind.annotation,javax.xml.bind.annotation.adapters,javax.xml.bind.attachment,javax.xml.bind.helpers,javax.xml.bind.util,javax.xml.crypto,javax.xml.crypto.dom,javax.xml.crypto.dsig,javax.xml.crypto.dsig.dom,javax.xml.crypto.dsig.keyinfo,javax.xml.crypto.dsig.spec,javax.xml.datatype,javax.xml.namespace,javax.xml.parsers,javax.xml.soap,javax.xml.s tream,javax.xml.stream.events,javax.xml.stream.util,javax.xml.transform,javax.xml.transform.dom,javax.xml.transform.sax,javax.xml.transform.stax,javax.xml.transform.stream,javax.xml.validation,javax.xml.ws,javax.xml.ws.handler,javax.xml.ws.handler.soap,javax.xml.ws.http,javax.xml.ws.soap,javax.xml.ws.spi,javax.xml.xpath,org.ietf.jgss,org.omg.CORBA,org.omg.CORBA.DynAnyPackage,org.omg.CORBA.ORBPackage,org.omg.CORBA.TypeCodePackage,org.omg.CORBA.portable,org.omg.CORBA_2_3,org.omg.CORBA_2_3.portable,org.omg.CosNaming,org.omg.CosNaming.NamingContextExtPackage,org.omg.CosNaming.NamingContextPackage,org.omg.Dynamic,org.omg.DynamicAny,org.omg.DynamicAny.DynAnyFactoryPackage,org.omg.DynamicAny.DynAnyPackage,org.omg.IOP,org.omg.IOP.CodecFactoryPackage,org.omg.IOP.CodecPackage,org.omg.Messaging,org.omg.PortableInterceptor,org.omg.PortableInterceptor.ORBInitInfoPackage,org.omg.PortableServer,org.omg.PortableServer.CurrentPackage,org.omg.PortableServer.POAManagerPackage,org.omg.PortableServer.PO APackage,org.omg.PortableServer.ServantLocatorPackage,org.omg.PortableServer.portable,org.omg.SendingContext,org.omg.stub.java.rmi,org.w3c.dom,org.w3c.dom.bootstrap,org.w3c.dom.css,org.w3c.dom.events,org.w3c.dom.html,org.w3c.dom.ls,org.w3c.dom.ranges,org.w3c.dom.stylesheets,org.w3c.dom.traversal,org.w3c.dom.views,org.xml.sax,org.xml.sax.ext,org.xml.sax.helpers"), @@ -106,7 +106,46 @@ public abstract class AbstractJPAItest e mavenBundle("org.apache.aries.blueprint", "org.apache.aries.blueprint.core").versionAsInProject(), mavenBundle("org.apache.geronimo.specs", "geronimo-jpa_2.0_spec", "1.1"), - // mavenBundle("org.hibernate.javax.persistence", "hibernate-jpa-2.1-api").versionAsInProject(), + mavenBundle("org.apache.aries.jpa", "org.apache.aries.jpa.api").versionAsInProject(), + mavenBundle("org.apache.aries.jpa", "org.apache.aries.jpa.container").versionAsInProject(), + mavenBundle("org.apache.aries.jpa", "org.apache.aries.jpa.container.context").versionAsInProject(), + mavenBundle("org.apache.aries.jpa", "org.apache.aries.jpa.blueprint.aries").versionAsInProject(), + + mavenBundle("org.apache.geronimo.specs", "geronimo-jta_1.1_spec").versionAsInProject(), + mavenBundle("org.apache.aries.transaction", "org.apache.aries.transaction.manager").versionAsInProject(), + + mavenBundle("commons-lang", "commons-lang").versionAsInProject(), + mavenBundle("commons-collections", "commons-collections").versionAsInProject(), + mavenBundle("commons-pool", "commons-pool").versionAsInProject(), + + mavenBundle("org.apache.derby", "derby").versionAsInProject() + + ); + } + + protected Option ariesJpa21() { + return composite( + frameworkProperty("org.osgi.framework.system.packages") + .value("javax.accessibility,javax.activation,javax.activity,javax.annotation,javax.annotation.processing,javax.crypto,javax.crypto.interfaces,javax.crypto.spec,javax.imageio,javax.imageio.event,javax.imageio.metadata,javax.imageio.plugins.bmp,javax.imageio.plugins.jpeg,javax.imageio.spi,javax.imageio.stream,javax.jws,javax.jws.soap,javax.lang.model,javax.lang.model.element,javax.lang.model.type,javax.lang.model.util,javax.management,javax.management.loading,javax.management.modelmbean,javax.management.monitor,javax.management.openmbean,javax.management.relation,javax.management.remote,javax.management.remote.rmi,javax.management.timer,javax.naming,javax.naming.directory,javax.naming.event,javax.naming.ldap,javax.naming.spi,javax.net,javax.net.ssl,javax.print,javax.print.attribute,javax.print.attribute.standard,javax.print.event,javax.rmi,javax.rmi.CORBA,javax.rmi.ssl,javax.script,javax.security.auth,javax.security.auth.callback,javax.security.auth.kerberos,javax.securi ty.auth.login,javax.security.auth.spi,javax.security.auth.x500,javax.security.cert,javax.security.sasl,javax.sound.midi,javax.sound.midi.spi,javax.sound.sampled,javax.sound.sampled.spi,javax.sql,javax.sql.rowset,javax.sql.rowset.serial,javax.sql.rowset.spi,javax.swing,javax.swing.border,javax.swing.colorchooser,javax.swing.event,javax.swing.filechooser,javax.swing.plaf,javax.swing.plaf.basic,javax.swing.plaf.metal,javax.swing.plaf.multi,javax.swing.plaf.synth,javax.swing.table,javax.swing.text,javax.swing.text.html,javax.swing.text.html.parser,javax.swing.text.rtf,javax.swing.tree,javax.swing.undo,javax.tools,javax.xml,javax.xml.bind,javax.xml.bind.annotation,javax.xml.bind.annotation.adapters,javax.xml.bind.attachment,javax.xml.bind.helpers,javax.xml.bind.util,javax.xml.crypto,javax.xml.crypto.dom,javax.xml.crypto.dsig,javax.xml.crypto.dsig.dom,javax.xml.crypto.dsig.keyinfo,javax.xml.crypto.dsig.spec,javax.xml.datatype,javax.xml.namespace,javax.xml.parsers,javax.xml.soap,javax.xml. stream,javax.xml.stream.events,javax.xml.stream.util,javax.xml.transform,javax.xml.transform.dom,javax.xml.transform.sax,javax.xml.transform.stax,javax.xml.transform.stream,javax.xml.validation,javax.xml.ws,javax.xml.ws.handler,javax.xml.ws.handler.soap,javax.xml.ws.http,javax.xml.ws.soap,javax.xml.ws.spi,javax.xml.xpath,org.ietf.jgss,org.omg.CORBA,org.omg.CORBA.DynAnyPackage,org.omg.CORBA.ORBPackage,org.omg.CORBA.TypeCodePackage,org.omg.CORBA.portable,org.omg.CORBA_2_3,org.omg.CORBA_2_3.portable,org.omg.CosNaming,org.omg.CosNaming.NamingContextExtPackage,org.omg.CosNaming.NamingContextPackage,org.omg.Dynamic,org.omg.DynamicAny,org.omg.DynamicAny.DynAnyFactoryPackage,org.omg.DynamicAny.DynAnyPackage,org.omg.IOP,org.omg.IOP.CodecFactoryPackage,org.omg.IOP.CodecPackage,org.omg.Messaging,org.omg.PortableInterceptor,org.omg.PortableInterceptor.ORBInitInfoPackage,org.omg.PortableServer,org.omg.PortableServer.CurrentPackage,org.omg.PortableServer.POAManagerPackage,org.omg.PortableServer.P OAPackage,org.omg.PortableServer.ServantLocatorPackage,org.omg.PortableServer.portable,org.omg.SendingContext,org.omg.stub.java.rmi,org.w3c.dom,org.w3c.dom.bootstrap,org.w3c.dom.css,org.w3c.dom.events,org.w3c.dom.html,org.w3c.dom.ls,org.w3c.dom.ranges,org.w3c.dom.stylesheets,org.w3c.dom.traversal,org.w3c.dom.views,org.xml.sax,org.xml.sax.ext,org.xml.sax.helpers"), + //mavenBundle("org.osgi", "org.osgi.compendium").versionAsInProject(), + //mavenBundle("org.apache.servicemix.bundles", "org.apache.servicemix.bundles.cglib").versionAsInProject(), +// mavenBundle("org.osgi", "org.osgi.enterprise").versionAsInProject(), + mavenBundle("org.ow2.asm", "asm-all").versionAsInProject(), + + mavenBundle("org.apache.aries.proxy", "org.apache.aries.proxy.api").versionAsInProject(), + mavenBundle("org.apache.aries.proxy", "org.apache.aries.proxy.impl").versionAsInProject(), + + mavenBundle("org.apache.aries.jndi", "org.apache.aries.jndi.api").versionAsInProject(), + mavenBundle("org.apache.aries.jndi", "org.apache.aries.jndi.core").versionAsInProject(), + mavenBundle("org.apache.aries.jndi", "org.apache.aries.jndi.url").versionAsInProject(), + + mavenBundle("org.apache.aries.quiesce", "org.apache.aries.quiesce.api").versionAsInProject(), + mavenBundle("org.apache.aries", "org.apache.aries.util").versionAsInProject(), + + mavenBundle("org.apache.aries.blueprint", "org.apache.aries.blueprint.api").versionAsInProject(), + mavenBundle("org.apache.aries.blueprint", "org.apache.aries.blueprint.core").versionAsInProject(), + + mavenBundle("org.eclipse.persistence", "javax.persistence").versionAsInProject(), mavenBundle("org.apache.aries.jpa", "org.apache.aries.jpa.api").versionAsInProject(), mavenBundle("org.apache.aries.jpa", "org.apache.aries.jpa.container").versionAsInProject(), mavenBundle("org.apache.aries.jpa", "org.apache.aries.jpa.container.context").versionAsInProject(), @@ -130,12 +169,14 @@ public abstract class AbstractJPAItest e protected Option eclipseLink() { return composite( + mavenBundle("org.apache.servicemix.bundles", "org.apache.servicemix.bundles.commons-dbcp").versionAsInProject(), mavenBundle("org.eclipse.persistence", "org.eclipse.persistence.jpa").versionAsInProject(), - mavenBundle("org.eclipse.persistence", "org.eclipse.persistence.core").versionAsInProject(), - mavenBundle("org.eclipse.persistence", "org.eclipse.persistence.asm").versionAsInProject(), - mavenBundle("org.eclipse.persistence", "org.eclipse.persistence.antlr").versionAsInProject(), - mavenBundle("org.apache.aries.jpa", "org.apache.aries.jpa.eclipselink.adapter").versionAsInProject() - ); + mavenBundle("org.eclipse.persistence", "org.eclipse.persistence.core").versionAsInProject(), + mavenBundle("org.eclipse.persistence", "org.eclipse.persistence.asm").versionAsInProject(), + mavenBundle("org.eclipse.persistence", "org.eclipse.persistence.antlr").versionAsInProject(), + mavenBundle("org.eclipse.persistence", "org.eclipse.persistence.jpa.jpql").versionAsInProject(), + mavenBundle("org.apache.aries.jpa", "org.apache.aries.jpa.eclipselink.adapter").versionAsInProject() + ); } protected Option openJpa() { @@ -145,7 +186,7 @@ public abstract class AbstractJPAItest e mavenBundle("org.apache.servicemix.bundles", "org.apache.servicemix.bundles.commons-dbcp").versionAsInProject(), mavenBundle("org.apache.xbean","xbean-asm4-shaded").versionAsInProject(), mavenBundle("org.apache.openjpa", "openjpa").versionAsInProject() - ); + ); } protected Option testDs() { @@ -165,7 +206,7 @@ public abstract class AbstractJPAItest e } protected MavenArtifactProvisionOption testBundleEclipseLink() { - return mavenBundle("org.apache.aries.jpa", "org.apache.aries.jpa.container.itest.bundle.eclipselink"); + return mavenBundle("org.apache.aries.jpa", "org.apache.aries.jpa.container.itest.bundle.eclipselink").versionAsInProject(); } protected MavenArtifactProvisionOption testBundleAdvanced() { Modified: aries/trunk/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/quiesce/itest/AbstractQuiesceJPATest.java URL: http://svn.apache.org/viewvc/aries/trunk/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/quiesce/itest/AbstractQuiesceJPATest.java?rev=1631104&r1=1631103&r2=1631104&view=diff ============================================================================== --- aries/trunk/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/quiesce/itest/AbstractQuiesceJPATest.java (original) +++ aries/trunk/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/quiesce/itest/AbstractQuiesceJPATest.java Sat Oct 11 19:51:37 2014 @@ -63,7 +63,7 @@ public abstract class AbstractQuiesceJPA public Option[] configuration() { return options( baseOptions(), - ariesJpa(), + ariesJpa20(), openJpa(), testDs(), testBundle() Modified: aries/trunk/jpa/jpa-container-testbundle-eclipselink/pom.xml URL: http://svn.apache.org/viewvc/aries/trunk/jpa/jpa-container-testbundle-eclipselink/pom.xml?rev=1631104&r1=1631103&r2=1631104&view=diff ============================================================================== --- aries/trunk/jpa/jpa-container-testbundle-eclipselink/pom.xml (original) +++ aries/trunk/jpa/jpa-container-testbundle-eclipselink/pom.xml Sat Oct 11 19:51:37 2014 @@ -30,9 +30,9 @@ org.apache.aries.jpa org.apache.aries.jpa.container.itest.bundle.eclipselink - 0.3.1-SNAPSHOT + 1.0.3-SNAPSHOT bundle - Test Bundle for Aries JPA Container iTests + Test Bundle for Aries JPA Container iTests Eclipselink scm:svn:http://svn.apache.org/repos/asf/aries/trunk/jpa/jpa-container-testbundle-eclipselink @@ -46,11 +46,13 @@ org.apache.aries.jpa.container.itest* - javax.persistence;version="[1.0.0,3.0.0)", + javax.persistence*;version="[1.1,3.0)", * ${project.artifactId} + + true @@ -60,24 +62,8 @@ provided - org.apache.geronimo.specs - geronimo-jpa_2.0_spec - 1.1 - - - org.eclipse.persistence - org.eclipse.persistence.jpa - 2.1.0 - - - org.eclipse.persistence - org.eclipse.persistence.core - 2.1.0 - - - org.eclipse.persistence - org.eclipse.persistence.asm + javax.persistence 2.1.0 Modified: aries/trunk/jpa/jpa-container-testbundle-eclipselink/src/main/resources/META-INF/persistence.xml URL: http://svn.apache.org/viewvc/aries/trunk/jpa/jpa-container-testbundle-eclipselink/src/main/resources/META-INF/persistence.xml?rev=1631104&r1=1631103&r2=1631104&view=diff ============================================================================== --- aries/trunk/jpa/jpa-container-testbundle-eclipselink/src/main/resources/META-INF/persistence.xml (original) +++ aries/trunk/jpa/jpa-container-testbundle-eclipselink/src/main/resources/META-INF/persistence.xml Sat Oct 11 19:51:37 2014 @@ -17,11 +17,12 @@ specific language governing permissions and limitations under the License. --> - - + + Test persistence unit for the JPA Container and Context iTests osgi:service/javax.sql.DataSource @@ -32,34 +33,54 @@ - - - Test persistence unit for the JPA Container and Context iTests - blueprint:comp/jta - blueprint:comp/nonjta - org.apache.aries.jpa.container.itest.entities.Car - true - - - - - - - - - - Test persistence unit for the JPA Container and Context iTests - blueprint:comp/xa - blueprint:comp/nonjta - org.apache.aries.jpa.container.itest.entities.Car - true - - - - - - - + + + Test persistence unit for the JPA Container and Context iTests + blueprint:comp/jta + blueprint:comp/nonjta + org.apache.aries.jpa.container.itest.entities.Car + true + + + + + + + + + + Test persistence unit for the JPA Container and Context iTests + blueprint:comp/xa + blueprint:comp/nonjta + org.apache.aries.jpa.container.itest.entities.Car + true + + + + + + + + + + + + + + + + + + + + + Added: aries/trunk/jpa/jpa-container-testbundle-eclipselink/src/main/resources/META-INF/sql/create.sql URL: http://svn.apache.org/viewvc/aries/trunk/jpa/jpa-container-testbundle-eclipselink/src/main/resources/META-INF/sql/create.sql?rev=1631104&view=auto ============================================================================== --- aries/trunk/jpa/jpa-container-testbundle-eclipselink/src/main/resources/META-INF/sql/create.sql (added) +++ aries/trunk/jpa/jpa-container-testbundle-eclipselink/src/main/resources/META-INF/sql/create.sql Sat Oct 11 19:51:37 2014 @@ -0,0 +1,2 @@ +CREATE SCHEMA test_script +CREATE TABLE CAR (NUMBERPLATE VARCHAR(50) PRIMARY KEY, COLOUR VARCHAR(50), ENGINESIZE INT, NUMBEROFSEATS INT) \ No newline at end of file Added: aries/trunk/jpa/jpa-container-testbundle-eclipselink/src/main/resources/META-INF/sql/data.sql URL: http://svn.apache.org/viewvc/aries/trunk/jpa/jpa-container-testbundle-eclipselink/src/main/resources/META-INF/sql/data.sql?rev=1631104&view=auto ============================================================================== --- aries/trunk/jpa/jpa-container-testbundle-eclipselink/src/main/resources/META-INF/sql/data.sql (added) +++ aries/trunk/jpa/jpa-container-testbundle-eclipselink/src/main/resources/META-INF/sql/data.sql Sat Oct 11 19:51:37 2014 @@ -0,0 +1 @@ +INSERT INTO CAR (NUMBERPLATE, COLOUR, ENGINESIZE, NUMBEROFSEATS) VALUES ('AB11CDE', 'Blue', 1300, 5) \ No newline at end of file Added: aries/trunk/jpa/jpa-container-testbundle-eclipselink/src/main/resources/META-INF/sql/drop.sql URL: http://svn.apache.org/viewvc/aries/trunk/jpa/jpa-container-testbundle-eclipselink/src/main/resources/META-INF/sql/drop.sql?rev=1631104&view=auto ============================================================================== (empty) Modified: aries/trunk/jpa/jpa-container-testbundle/pom.xml URL: http://svn.apache.org/viewvc/aries/trunk/jpa/jpa-container-testbundle/pom.xml?rev=1631104&r1=1631103&r2=1631104&view=diff ============================================================================== --- aries/trunk/jpa/jpa-container-testbundle/pom.xml (original) +++ aries/trunk/jpa/jpa-container-testbundle/pom.xml Sat Oct 11 19:51:37 2014 @@ -55,9 +55,9 @@ - org.hibernate.javax.persistence - hibernate-jpa-2.1-api - 1.0.0.Final + org.apache.geronimo.specs + geronimo-jpa_2.0_spec + 1.1 provided Modified: aries/trunk/jpa/jpa-container/pom.xml URL: http://svn.apache.org/viewvc/aries/trunk/jpa/jpa-container/pom.xml?rev=1631104&r1=1631103&r2=1631104&view=diff ============================================================================== --- aries/trunk/jpa/jpa-container/pom.xml (original) +++ aries/trunk/jpa/jpa-container/pom.xml Sat Oct 11 19:51:37 2014 @@ -96,9 +96,9 @@ provided - org.hibernate.javax.persistence - hibernate-jpa-2.0-api - 1.0.0.Final + org.apache.geronimo.specs + geronimo-jpa_2.0_spec + 1.1 provided Modified: aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/impl/EntityManagerProxyFactory.java URL: http://svn.apache.org/viewvc/aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/impl/EntityManagerProxyFactory.java?rev=1631104&r1=1631103&r2=1631104&view=diff ============================================================================== --- aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/impl/EntityManagerProxyFactory.java (original) +++ aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/impl/EntityManagerProxyFactory.java Sat Oct 11 19:51:37 2014 @@ -5,6 +5,7 @@ import java.lang.reflect.Method; import java.lang.reflect.Proxy; import javax.persistence.EntityManager; +import javax.persistence.PersistenceException; public class EntityManagerProxyFactory { static EntityManager create(EntityManager delegate, DestroyCallback destroyCallback) { @@ -25,7 +26,14 @@ public class EntityManagerProxyFactory { @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { - Object res = method.invoke(delegate, args); + Object res = null; + try { + res = method.invoke(delegate, args); + } catch (IllegalArgumentException e) { + new PersistenceException(NLS.MESSAGES.getMessage("wrong.JPA.version", new Object[]{ + method.getName(), delegate + }), e); + } // This will only ever be called once, the second time there // will be an IllegalStateException from the line above Modified: aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/impl/QuiesceEMFHandler.java URL: http://svn.apache.org/viewvc/aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/impl/QuiesceEMFHandler.java?rev=1631104&r1=1631103&r2=1631104&view=diff ============================================================================== --- aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/impl/QuiesceEMFHandler.java (original) +++ aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/impl/QuiesceEMFHandler.java Sat Oct 11 19:51:37 2014 @@ -7,6 +7,7 @@ import java.util.concurrent.atomic.Atomi import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; +import javax.persistence.PersistenceException; import org.apache.aries.jpa.container.impl.EntityManagerFactoryManager.NamedCallback; import org.apache.aries.util.AriesFrameworkUtil; @@ -51,7 +52,14 @@ class QuiesceEMFHandler implements Invoc clearQuiesce(); return null; } - Object res = method.invoke(delegate, args); + Object res = null; + try { + res = method.invoke(delegate, args); + } catch (IllegalArgumentException e) { + new PersistenceException(NLS.MESSAGES.getMessage("wrong.JPA.version", new Object[]{ + method.getName(), delegate + }), e); + } // This will only ever be called once, the second time there // will be an IllegalStateException from the line above Modified: aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/parsing/impl/JPAHandler.java URL: http://svn.apache.org/viewvc/aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/parsing/impl/JPAHandler.java?rev=1631104&r1=1631103&r2=1631104&view=diff ============================================================================== --- aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/parsing/impl/JPAHandler.java (original) +++ aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/parsing/impl/JPAHandler.java Sat Oct 11 19:51:37 2014 @@ -106,9 +106,9 @@ public class JPAHandler extends DefaultH pu.addClassName(s); else if("exclude-unlisted-classes".equals(elementName)) pu.setExcludeUnlisted(Boolean.parseBoolean(s)); - else if ("2.0".equals(jpaVersion) && "shared-cache-mode".equals(elementName)) + else if (checkJpa2Version() && "shared-cache-mode".equals(elementName)) pu.setSharedCacheMode(s); - else if ("2.0".equals(jpaVersion) && "validation-mode".equals(elementName)) + else if (checkJpa2Version() && "validation-mode".equals(elementName)) pu.setValidationMode(s); } @@ -128,4 +128,7 @@ public class JPAHandler extends DefaultH return persistenceUnits; } + private boolean checkJpa2Version() { + return ("2.0".equals(jpaVersion) || "2.1".equals(jpaVersion)); + } } Modified: aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/parsing/impl/SchemaLocatingHandler.java URL: http://svn.apache.org/viewvc/aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/parsing/impl/SchemaLocatingHandler.java?rev=1631104&r1=1631103&r2=1631104&view=diff ============================================================================== --- aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/parsing/impl/SchemaLocatingHandler.java (original) +++ aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/parsing/impl/SchemaLocatingHandler.java Sat Oct 11 19:51:37 2014 @@ -40,6 +40,7 @@ public class SchemaLocatingHandler exten * URI for the JPA persistence namespace */ private static final String PERSISTENCE_NS_URI = "http://java.sun.com/xml/ns/persistence"; + private static final String PERSISTENCE_21_NS_URI = "http://xmlns.jcp.org/xml/ns/persistence"; /** * A static cache of schemas in use in the runtime @@ -53,7 +54,7 @@ public class SchemaLocatingHandler exten Schema s = null; String version = null; - if(PERSISTENCE_NS_URI.equals(uri) && "persistence".equals(localName) ) { + if((PERSISTENCE_NS_URI.equals(uri) || PERSISTENCE_21_NS_URI.equals(uri)) && "persistence".equals(localName) ) { version = attributes.getValue("version"); s = validate(version); } @@ -93,6 +94,8 @@ public class SchemaLocatingHandler exten schemaURL = this.getClass().getResource("persistence.xsd.rsrc"); } else if ("2.0".equals(type)) { schemaURL = this.getClass().getResource("persistence_2_0.xsd.rsrc"); + } else if ("2.1".equals(type)) { + schemaURL = this.getClass().getResource("persistence_2_1.xsd.rsrc"); } Schema schema = null; Modified: aries/trunk/jpa/jpa-container/src/main/resources/org/apache/aries/jpa/container/nls/jpaContainerMessages.properties URL: http://svn.apache.org/viewvc/aries/trunk/jpa/jpa-container/src/main/resources/org/apache/aries/jpa/container/nls/jpaContainerMessages.properties?rev=1631104&r1=1631103&r2=1631104&view=diff ============================================================================== --- aries/trunk/jpa/jpa-container/src/main/resources/org/apache/aries/jpa/container/nls/jpaContainerMessages.properties (original) +++ aries/trunk/jpa/jpa-container/src/main/resources/org/apache/aries/jpa/container/nls/jpaContainerMessages.properties Sat Oct 11 19:51:37 2014 @@ -201,4 +201,8 @@ xa.datasource.non.tx=The persistence uni # {1} The symbolic name of the persistence bundle. # {2} The version of the persistence bundle. # {3} The jndi name of the datasource -not.a.datasource=The persistence unit {0} in persistence bundle {1}/{2} uses a JNDI name {3} that looks up an Objet that is not a DataSource or XADataSource. \ No newline at end of file +not.a.datasource=The persistence unit {0} in persistence bundle {1}/{2} uses a JNDI name {3} that looks up an Objet that is not a DataSource or XADataSource. +# {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." + \ No newline at end of file