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() ); } }
