You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by tj...@apache.org on 2015/06/09 17:33:26 UTC

svn commit: r1684451 [3/4] - in /aries/branches/subsystemsR6: ./ application/application-itests/ application/application-itests/src/test/java/org/apache/aries/application/runtime/itests/ async/ blueprint/blueprint-authz/ blueprint/blueprint-authz/src/m...

Modified: aries/branches/subsystemsR6/jmx/jmx-core/src/main/java/org/apache/aries/jmx/agent/JMXAgentImpl.java
URL: http://svn.apache.org/viewvc/aries/branches/subsystemsR6/jmx/jmx-core/src/main/java/org/apache/aries/jmx/agent/JMXAgentImpl.java?rev=1684451&r1=1684450&r2=1684451&view=diff
==============================================================================
--- aries/branches/subsystemsR6/jmx/jmx-core/src/main/java/org/apache/aries/jmx/agent/JMXAgentImpl.java (original)
+++ aries/branches/subsystemsR6/jmx/jmx-core/src/main/java/org/apache/aries/jmx/agent/JMXAgentImpl.java Tue Jun  9 15:33:24 2015
@@ -18,8 +18,10 @@ package org.apache.aries.jmx.agent;
 
 import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.IdentityHashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 import javax.management.InstanceAlreadyExistsException;
 import javax.management.InstanceNotFoundException;
@@ -62,7 +64,7 @@ public class JMXAgentImpl implements JMX
     /**
      * {@link MBeanHandler} store.
      */
-    private List<MBeanServer> mbeanServers;
+    private Map<MBeanServer, Boolean> mbeanServers;
     private Map<MBeanHandler, Boolean> mbeansHandlers;
     private BundleContext context;
     private Logger logger;
@@ -75,8 +77,8 @@ public class JMXAgentImpl implements JMX
     public JMXAgentImpl(BundleContext context, Logger logger) {
         this.context = context;
         this.logger = logger;
-        this.mbeanServers = new ArrayList<MBeanServer>();
-        this.mbeansHandlers = new HashMap<MBeanHandler, Boolean>();
+        this.mbeanServers = new IdentityHashMap<MBeanServer, Boolean>();
+        this.mbeansHandlers = new IdentityHashMap<MBeanHandler, Boolean>();
     }
 
     /**
@@ -146,7 +148,7 @@ public class JMXAgentImpl implements JMX
                 }
             }
         }
-        mbeanServers.add(server);
+        mbeanServers.put(server, Boolean.TRUE);
     }
 
     /**
@@ -155,25 +157,24 @@ public class JMXAgentImpl implements JMX
     public synchronized void unregisterMBeans(final MBeanServer server) {
         for (MBeanHandler mBeanHandler : mbeansHandlers.keySet()) {
             if (mbeansHandlers.get(mBeanHandler) == Boolean.TRUE) {
-                try
-                {
-                   String name = mBeanHandler.getName();
-                   StandardMBean mbean = mBeanHandler.getMbean();
-                   if (mbean != null) {
-                       logger.log(LogService.LOG_INFO, "Unregistering " + mbean.getMBeanInterface().getName()
-                             + " to MBeanServer " + server + " with name " + name);
-                       server.unregisterMBean(new ObjectName(name));
-                   }
+                try {
+                    String name = mBeanHandler.getName();
+                    StandardMBean mbean = mBeanHandler.getMbean();
+                    if (mbean != null) {
+                        logger.log(LogService.LOG_INFO, "Unregistering " + mbean.getMBeanInterface().getName()
+                                + " to MBeanServer " + server + " with name " + name);
+                        server.unregisterMBean(new ObjectName(name));
+                    }
                 } catch (MBeanRegistrationException e) {
-                   logger.log(LogService.LOG_ERROR, "Can't unregister MBean", e);
+                    logger.log(LogService.LOG_ERROR, "Can't unregister MBean", e);
                 } catch (InstanceNotFoundException e) {
-                   logger.log(LogService.LOG_ERROR, "MBean doesn't exist in the repository", e);
+                    logger.log(LogService.LOG_ERROR, "MBean doesn't exist in the repository", e);
                 } catch (MalformedObjectNameException e) {
-                   logger.log(LogService.LOG_ERROR, "Try to unregister with no valid objectname", e);
+                    logger.log(LogService.LOG_ERROR, "Try to unregister with no valid objectname", e);
                 } catch (NullPointerException e) {
-                   logger.log(LogService.LOG_ERROR, "Name of objectname can't be null ", e);
+                    logger.log(LogService.LOG_ERROR, "Name of objectname can't be null ", e);
                 } catch (Exception e) {
-                   logger.log(LogService.LOG_ERROR, "Cannot unregister MBean: " + mBeanHandler, e);
+                    logger.log(LogService.LOG_ERROR, "Cannot unregister MBean: " + mBeanHandler, e);
                 }
             }
         }
@@ -184,7 +185,7 @@ public class JMXAgentImpl implements JMX
      * @see org.apache.aries.jmx.agent.JMXAgent#registerMBean(org.apache.aries.jmx.MBeanHandler)
      */
     public synchronized void registerMBean(final MBeanHandler mBeanHandler) {
-        for (MBeanServer server : mbeanServers) {
+        for (MBeanServer server : mbeanServers.keySet()) {
             String name = mBeanHandler.getName();
             StandardMBean mbean = mBeanHandler.getMbean();
             try {
@@ -214,7 +215,7 @@ public class JMXAgentImpl implements JMX
      * @see org.apache.aries.jmx.agent.JMXAgent#unregisterMBean(org.apache.aries.jmx.MBeanHandler)
      */
     public synchronized void unregisterMBean(final MBeanHandler mBeanHandler) {
-        for (MBeanServer server : mbeanServers) {
+        for (MBeanServer server : mbeanServers.keySet()) {
             String name = mBeanHandler.getName();
             try {
                 logger.log(LogService.LOG_INFO, "Unregistering mbean " + " to MBeanServer " + server + " with name "

Modified: aries/branches/subsystemsR6/jpa/jpa-api/pom.xml
URL: http://svn.apache.org/viewvc/aries/branches/subsystemsR6/jpa/jpa-api/pom.xml?rev=1684451&r1=1684450&r2=1684451&view=diff
==============================================================================
--- aries/branches/subsystemsR6/jpa/jpa-api/pom.xml (original)
+++ aries/branches/subsystemsR6/jpa/jpa-api/pom.xml Tue Jun  9 15:33:24 2015
@@ -22,36 +22,23 @@
     <modelVersion>4.0.0</modelVersion>
 
     <parent>
-        <groupId>org.apache.aries</groupId>
-        <artifactId>parent</artifactId>
-        <version>2.0.0</version>
-        <relativePath>../../parent/pom.xml</relativePath>
+        <groupId>org.apache.aries.jpa</groupId>
+        <artifactId>org.apache.aries.jpa.parent</artifactId>
+        <version>2.0.0-SNAPSHOT</version>
+        <relativePath>../jpa-parent</relativePath>
     </parent>
 
-    <groupId>org.apache.aries.jpa</groupId>
     <artifactId>org.apache.aries.jpa.api</artifactId>
     <packaging>bundle</packaging>
-    <name>Aries JPA Container API</name>
-    <version>1.0.3-SNAPSHOT</version>
-
-    <scm>
-        <connection>scm:svn:http://svn.apache.org/repos/asf/aries/trunk/jpa/jpa-api</connection>
-        <developerConnection>scm:svn:https://svn.apache.org/repos/asf/aries/trunk/jpa/jpa-api</developerConnection>
-        <url>http://svn.apache.org/viewvc/aries/trunk/jpa/jpa-api</url>
-    </scm>
+    <name>Apache Aries JPA Container API</name>
 
     <properties>
         <!-- 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
+            org.apache.aries.jpa.supplier,
+            org.apache.aries.jpa.template
         </aries.osgi.export.pkg>
         <aries.osgi.import>
-             javax.persistence;version="[1.0.0,3.0.0)",
-             javax.persistence.spi;version="[1.0.0,3.0.0)",
-             org.osgi.framework;version="[1.5.0,2.0.0)"
         </aries.osgi.import>
         <aries.osgi.private.pkg />
         <lastReleaseVersion>1.0.0</lastReleaseVersion>
@@ -71,7 +58,7 @@
         </dependency>
     </dependencies>
 
-     <build>
+    <build>
         <plugins>
             <plugin>
                 <groupId>org.apache.aries.versioning</groupId>

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=1684451&r1=1684450&r2=1684451&view=diff
==============================================================================
--- aries/branches/subsystemsR6/jpa/jpa-container-eclipselink-adapter/pom.xml (original)
+++ aries/branches/subsystemsR6/jpa/jpa-container-eclipselink-adapter/pom.xml Tue Jun  9 15:33:24 2015
@@ -22,23 +22,16 @@
     <modelVersion>4.0.0</modelVersion>
 
     <parent>
-        <groupId>org.apache.aries</groupId>
-        <artifactId>parent</artifactId>
-        <version>2.0.0</version>
-        <relativePath>../../parent/pom.xml</relativePath>
+        <groupId>org.apache.aries.jpa</groupId>
+        <artifactId>org.apache.aries.jpa.parent</artifactId>
+        <version>2.0.0-SNAPSHOT</version>
+        <relativePath>../jpa-parent</relativePath>
     </parent>
 
     <groupId>org.apache.aries.jpa</groupId>
     <artifactId>org.apache.aries.jpa.eclipselink.adapter</artifactId>
     <packaging>bundle</packaging>
-    <version>1.0.0-SNAPSHOT</version>
-    <name>Aries JPA Container adapter for use with EclipseLink</name>
-
-    <scm>
-        <connection>scm:svn:http://svn.apache.org/repos/asf/aries/trunk/jpa/jpa-container-eclipselink-adapter</connection>
-        <developerConnection>scm:svn:https://svn.apache.org/repos/asf/aries/trunk/jpa/jpa-container-eclipselink-adapter</developerConnection>
-        <url>http://svn.apache.org/viewvc/aries/trunk/jpa/jpa-container-eclipselink-adapter</url>
-    </scm>
+    <name>Apache Aries JPA Container adapter for EclipseLink</name>
 
     <properties>
         <aries.osgi.export.pkg>

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=1684451&r1=1684450&r2=1684451&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 Tue Jun  9 15:33:24 2015
@@ -141,22 +141,24 @@ public class Activator implements Bundle
         
         for (Bundle b : context.getBundles()) {
             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 (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(pkgName + suffix);
-                }
+            if(bw != null) {
+	            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 (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(pkgName + suffix);
+	                }
+	            }
             }
         }
         

Modified: aries/branches/subsystemsR6/jpa/jpa-container/pom.xml
URL: http://svn.apache.org/viewvc/aries/branches/subsystemsR6/jpa/jpa-container/pom.xml?rev=1684451&r1=1684450&r2=1684451&view=diff
==============================================================================
--- aries/branches/subsystemsR6/jpa/jpa-container/pom.xml (original)
+++ aries/branches/subsystemsR6/jpa/jpa-container/pom.xml Tue Jun  9 15:33:24 2015
@@ -17,142 +17,45 @@
  specific language governing permissions and limitations
  under the License.
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
-
     <parent>
-        <groupId>org.apache.aries</groupId>
-        <artifactId>parent</artifactId>
-        <version>2.0.0</version>
-        <relativePath>../../parent/pom.xml</relativePath>
+        <groupId>org.apache.aries.jpa</groupId>
+        <artifactId>org.apache.aries.jpa.parent</artifactId>
+        <version>2.0.0-SNAPSHOT</version>
+        <relativePath>../jpa-parent</relativePath>
     </parent>
-
-    <groupId>org.apache.aries.jpa</groupId>
     <artifactId>org.apache.aries.jpa.container</artifactId>
+    <name>Apache Aries JPA container</name>
+    <description>Implements the OSGi JPA Container from the enterprise spec. Provider a EntityManagerFactory and EntityManagerFactoryBuilder service</description>
     <packaging>bundle</packaging>
-    <version>1.0.3-SNAPSHOT</version>
-    <name>Aries JPA Container</name>
     
-    <scm>
-        <connection>scm:svn:http://svn.apache.org/repos/asf/aries/trunk/jpa/jpa-container</connection>
-        <developerConnection>scm:svn:https://svn.apache.org/repos/asf/aries/trunk/jpa/jpa-container</developerConnection>
-        <url>http://svn.apache.org/viewvc/aries/trunk/jpa/jpa-container</url>
-    </scm>
-
     <properties>
-        <!-- Export package versions are maintained in packageinfo files -->
-        <aries.osgi.export.pkg />
-        <aries.osgi.import>
-            javax.persistence;version="[1.0.0,3.0.0)",
-            javax.persistence.spi;version="[1.0.0,3.0.0)",
-            javax.persistence.criteria;version="[1.1.0,3.0.0)";resolution:=optional,
-            javax.persistence.metamodel;version="[1.1.0,3.0.0)";resolution:=optional,
-            !javax.transaction,
-            org.apache.aries.jpa.container*;provide:=true,
-            org.apache.aries.quiesce.manager;provide:=true;resolution:=optional,
-            org.apache.aries.quiesce.participant;provide:=true;resolution:=optional,
-            org.osgi.framework;version="[1.5,2)",
-            org.osgi.framework.hooks.weaving;resolution:=optional,
-            org.osgi.framework.wiring;resolution:=optional,
-            org.osgi.service.jdbc;resolution:=optional,
-            *
-        </aries.osgi.import>
-        <aries.osgi.dynamic>
-            javax.transaction;version="[1.1,2)"
-        </aries.osgi.dynamic>
-      <aries.osgi.activator>
-          org.apache.aries.jpa.container.impl.PersistenceBundleManager
-      </aries.osgi.activator>
-      <lastReleaseVersion>1.0.0</lastReleaseVersion>
+        <aries.skip.version.check>true</aries.skip.version.check>
+        <aries.osgi.export>
+            org.osgi.service.jdbc,
+            org.osgi.service.jpa
+        </aries.osgi.export>
+        <aries.osgi.activator>
+            org.apache.aries.jpa.container.impl.Activator
+        </aries.osgi.activator>
     </properties>
     
     <dependencies>
         <dependency>
             <groupId>org.osgi</groupId>
             <artifactId>org.osgi.core</artifactId>
-            <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.osgi</groupId>
             <artifactId>org.osgi.compendium</artifactId>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <artifactId>org.apache.aries.jpa.api</artifactId>
-            <groupId>org.apache.aries.jpa</groupId>
-            <version>1.0.1</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.aries.quiesce</groupId>
-            <artifactId>org.apache.aries.quiesce.api</artifactId>
-            <version>1.0.0</version>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <artifactId>org.apache.aries.util</artifactId>
-            <groupId>org.apache.aries</groupId>
-            <version>1.0.0</version>
-            <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>
         </dependency>
         <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-api</artifactId>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-simple</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.aries.testsupport</groupId>
-            <artifactId>org.apache.aries.testsupport.unit</artifactId>
-            <version>1.0.0</version>
-            <scope>test</scope>
-         </dependency>
-
-        <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-        	<groupId>org.osgi</groupId>
-        	<artifactId>org.osgi.enterprise</artifactId>
-        	<version>4.2.0</version>
-        	<scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.geronimo.specs</groupId>
-            <artifactId>geronimo-jta_1.1_spec</artifactId>
-            <version>1.1.1</version>
-            <scope>provided</scope>
+            <groupId>org.hibernate.javax.persistence</groupId>
+            <artifactId>hibernate-jpa-2.0-api</artifactId>
+            <version>1.0.1.Final</version>
         </dependency>
     </dependencies>
 
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.aries.versioning</groupId>
-                <artifactId>org.apache.aries.versioning.plugin</artifactId>
-                <executions>
-                    <execution>
-                        <id>default-verify</id>
-                        <phase>verify</phase>
-                        <goals>
-                            <goal>version-check</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
-
-</project>
+</project>
\ No newline at end of file

Modified: aries/branches/subsystemsR6/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/weaving/impl/JPAWeavingHook.java
URL: http://svn.apache.org/viewvc/aries/branches/subsystemsR6/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/weaving/impl/JPAWeavingHook.java?rev=1684451&r1=1684450&r2=1684451&view=diff
==============================================================================
--- aries/branches/subsystemsR6/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/weaving/impl/JPAWeavingHook.java (original)
+++ aries/branches/subsystemsR6/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/weaving/impl/JPAWeavingHook.java Tue Jun  9 15:33:24 2015
@@ -20,112 +20,115 @@ package org.apache.aries.jpa.container.w
 
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
 import java.util.LinkedHashSet;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
+import java.util.Map;
 
 import javax.persistence.spi.ClassTransformer;
 
-import org.apache.aries.jpa.container.impl.NLS;
 import org.osgi.framework.Bundle;
-import org.osgi.framework.ServiceReference;
 import org.osgi.framework.hooks.weaving.WeavingException;
 import org.osgi.framework.hooks.weaving.WeavingHook;
 import org.osgi.framework.hooks.weaving.WovenClass;
 import org.osgi.framework.wiring.BundleWiring;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
- * This weaving hook delegates to any registered {@link ClassTransformer} instances
- * for a given bundle
+ * This weaving hook delegates to any registered {@link ClassTransformer} instances for a given bundle
  */
 public class JPAWeavingHook implements WeavingHook, TransformerRegistry {
+    private static final Logger LOGGER = LoggerFactory.getLogger(JPAWeavingHook.class);
 
-  /**
-   * This constructor should not be called directly, the {@link JPAWeavingHookFactory} 
-   * should be used to ensure that Weaving support is available.
-   */
-  JPAWeavingHook() { }
-  
-  /** 
-   * With luck we will only have one persistence unit per bundle, but
-   * if we don't we'll need to call them until one of them does a transform
-   * or we run out.
-   */
-  private final ConcurrentMap<Bundle, LinkedHashSet<WrappingTransformer>> registeredTransformers
-      = new ConcurrentHashMap<Bundle, LinkedHashSet<WrappingTransformer>>();
-  
-  public void weave(WovenClass wovenClass) {
-    
-    BundleWiring wiring = wovenClass.getBundleWiring();
-    
-    Collection<WrappingTransformer> transformers = registeredTransformers.get(
-        wiring.getBundle());
-    
-    if(transformers != null) {
-      Collection<WrappingTransformer> transformersToTry;
-      synchronized (transformers) {
-        transformersToTry = new ArrayList<WrappingTransformer>(transformers);
-      }
-      for(WrappingTransformer transformer : transformersToTry) {
+    /**
+     * This constructor should not be called directly, the {@link JPAWeavingHookFactory} should be used to
+     * ensure that Weaving support is available.
+     */
+    JPAWeavingHook() {
+    }
+
+    /**
+     * With luck we will only have one persistence unit per bundle, but if we don't we'll need to call them
+     * until one of them does a transform or we run out.
+     */
+    private final Map<Bundle, LinkedHashSet<ClassTransformer>> registeredTransformers = new HashMap<Bundle, LinkedHashSet<ClassTransformer>>();
+
+    public void weave(WovenClass wovenClass) {
+        BundleWiring wiring = wovenClass.getBundleWiring();
+        Bundle bundle = wiring.getBundle();
+        ClassLoader cl = wiring.getClassLoader();
+        Collection<ClassTransformer> transformersToTry = getTransformers(bundle);
+        if (transformersToTry.size() == 0 && wovenClass.getClassName().endsWith("Car")) {
+            LOGGER.error("Loading " + wovenClass.getClassName() + " before transformer is present");
+            //for (StackTraceElement el : Thread.currentThread().getStackTrace()) {
+//                LOGGER.info(el.toString());
+//            }
+        }
+        for (ClassTransformer transformer : transformersToTry) {
+
+            if (transformClass(wovenClass, cl, transformer)) {
+                LOGGER.info("Weaving " + wovenClass.getClassName() + " using " + transformer.getClass().getName());
+                break;
+            };
+        }
+    }
+
+    @SuppressWarnings("unchecked")
+    private synchronized Collection<ClassTransformer> getTransformers(Bundle bundle) {
+        LinkedHashSet<ClassTransformer> transformers = registeredTransformers.get(bundle);
+        return transformers != null ? new ArrayList<ClassTransformer>(transformers) : Collections.EMPTY_LIST;
+    }
+
+    private boolean transformClass(WovenClass wovenClass, ClassLoader cl, ClassTransformer transformer)
+        throws ThreadDeath, OutOfMemoryError {
         try {
-          byte[] result = transformer.transform(wiring.getClassLoader(), 
-              wovenClass.getClassName(), wovenClass.getDefinedClass(), 
-              wovenClass.getProtectionDomain(), wovenClass.getBytes());
-          if(result != null) {
-            wovenClass.setBytes(result);
-            wovenClass.getDynamicImports().addAll(transformer.getPackagesToAdd());
-            break;
-          }
+            byte[] result = transformer
+                .transform(cl, 
+                           wovenClass.getClassName(),
+                           wovenClass.getDefinedClass(), 
+                           wovenClass.getProtectionDomain(),
+                           wovenClass.getBytes());
+            if (result != null) {
+                wovenClass.setBytes(result);
+                wovenClass.getDynamicImports().add("org.eclipse.persistence.*");
+                wovenClass.getDynamicImports().add("org.apache.openjpa.*");
+                
+                return true;
+            }
         } catch (Throwable t) {
-          if(t instanceof ThreadDeath)
-            throw (ThreadDeath)t;
-          else if (t instanceof OutOfMemoryError)
-            throw (OutOfMemoryError) t;
-          else {
-            Bundle b = wovenClass.getBundleWiring().getBundle();
-            throw new WeavingException(NLS.MESSAGES.getMessage("jpa.weaving.failure", wovenClass.getClassName(), b.getSymbolicName(), b.getVersion(), transformer), t);
-          }
-        }
-      }
-    }
-  }
-  
-  public void addTransformer(Bundle pBundle, ClassTransformer transformer, ServiceReference<?> provider) {
-    
-    //Optimised for single adds
-    
-    LinkedHashSet<WrappingTransformer> set = new LinkedHashSet<WrappingTransformer>();
-    WrappingTransformer wt = new WrappingTransformer(transformer, provider);
-    set.add(wt);
-    
-    LinkedHashSet<WrappingTransformer> existingSet = registeredTransformers.putIfAbsent(pBundle, set);
-    
-    if(existingSet != null) {
-      synchronized (existingSet) {
-        existingSet.add(wt);
-      }
-    }
-  }
-   
-  public void removeTransformer(Bundle pBundle, ClassTransformer transformer) {
-    LinkedHashSet<WrappingTransformer> set = registeredTransformers.get(pBundle);
-    
-    if(set == null || !!!safeRemove(set, transformer))
-      throw new IllegalStateException(NLS.MESSAGES.getMessage("jpa.weaving.transformer.not.registered", transformer));
-    
-    if(set.isEmpty())
-      registeredTransformers.remove(pBundle);
-  }
-
-  /**
-   * Perform a remove on the collection while synchronized on it
-   * @param set
-   * @param t
-   * @return
-   */
-  private boolean safeRemove(Collection<WrappingTransformer> set, ClassTransformer t) {
-    synchronized(set) {
-        return set.remove(new WrappingTransformer(t));
-      }
-  }
+            if (t instanceof ThreadDeath)
+                throw (ThreadDeath)t;
+            else if (t instanceof OutOfMemoryError)
+                throw (OutOfMemoryError)t;
+            else {
+                Bundle b = wovenClass.getBundleWiring().getBundle();
+                String msg = String.format("Weaving failure", wovenClass.getClassName(),
+                                           b.getSymbolicName(), b.getVersion(), transformer);
+                throw new WeavingException(msg, t);
+            }
+        }
+        return false;
+    }
+
+    public synchronized void addTransformer(Bundle pBundle, ClassTransformer transformer) {
+        LOGGER.info("Adding transformer " + transformer.getClass().getName());
+        LinkedHashSet<ClassTransformer> transformers = registeredTransformers.get(pBundle);
+        if (transformers == null) {
+            transformers = new LinkedHashSet<ClassTransformer>();
+            registeredTransformers.put(pBundle, transformers);
+        }
+        transformers.add(transformer);
+    }
+
+    public synchronized void removeTransformer(Bundle pBundle, ClassTransformer transformer) {
+        LinkedHashSet<ClassTransformer> set = registeredTransformers.get(pBundle);
+        if (set == null || !set.remove(transformer)) {
+            throw new IllegalStateException("Transformer " + transformer + " not registered");
+        }
+        if (set.isEmpty()) {
+            registeredTransformers.remove(pBundle);
+        }
+    }
+
 }

Modified: aries/branches/subsystemsR6/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/weaving/impl/TransformerRegistry.java
URL: http://svn.apache.org/viewvc/aries/branches/subsystemsR6/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/weaving/impl/TransformerRegistry.java?rev=1684451&r1=1684450&r2=1684451&view=diff
==============================================================================
--- aries/branches/subsystemsR6/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/weaving/impl/TransformerRegistry.java (original)
+++ aries/branches/subsystemsR6/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/weaving/impl/TransformerRegistry.java Tue Jun  9 15:33:24 2015
@@ -21,11 +21,10 @@ package org.apache.aries.jpa.container.w
 import javax.persistence.spi.ClassTransformer;
 
 import org.osgi.framework.Bundle;
-import org.osgi.framework.ServiceReference;
 
 /**
  * {@link ClassTransformer} instances should be registered with the
- * instance of this interface returned by {@link TransformerRegistryFactory#getTransformerRegistry()}
+ * instance of this interface returned by {@link TransformerRegistrySingleton#getTransformerRegistry()}
  */
 public interface TransformerRegistry {
 
@@ -36,7 +35,7 @@ public interface TransformerRegistry {
    * @param transformer  The transformer to weave with
    * @param provider The provider to provide packages from
    */
-  public void addTransformer(Bundle pBundle, ClassTransformer transformer, ServiceReference<?> provider);
+  public void addTransformer(Bundle pBundle, ClassTransformer transformer);
   
   
   /**

Modified: aries/branches/subsystemsR6/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/weaving/impl/WrappingTransformer.java
URL: http://svn.apache.org/viewvc/aries/branches/subsystemsR6/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/weaving/impl/WrappingTransformer.java?rev=1684451&r1=1684450&r2=1684451&view=diff
==============================================================================
--- aries/branches/subsystemsR6/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/weaving/impl/WrappingTransformer.java (original)
+++ aries/branches/subsystemsR6/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/weaving/impl/WrappingTransformer.java Tue Jun  9 15:33:24 2015
@@ -25,7 +25,6 @@ import java.util.HashSet;
 
 import javax.persistence.spi.ClassTransformer;
 
-import org.apache.aries.jpa.container.impl.NLS;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.Constants;
 import org.osgi.framework.ServiceReference;
@@ -34,65 +33,63 @@ import org.osgi.framework.wiring.BundleR
 import org.osgi.framework.wiring.BundleWiring;
 
 class WrappingTransformer implements ClassTransformer {
-  private final ClassTransformer delegate;
-  private final Collection<String> packageImportsToAdd = new HashSet<String>();
-  
-  public WrappingTransformer(ClassTransformer delegate,
-      ServiceReference<?> persistenceProvider) {
-
-    if(delegate == null) 
-      throw new NullPointerException(NLS.MESSAGES.getMessage("jpa.weaving.null.transformer"));
-    
-    if(persistenceProvider == null) {
-      throw new NullPointerException(NLS.MESSAGES.getMessage("jpa.weaving.null.provider"));
-    }
-    
-    this.delegate = delegate;
-    
-    Object packages = persistenceProvider.getProperty("org.apache.aries.jpa.container.weaving.packages");
-    
-    if(packages instanceof String[]) {
-      for(String s : (String[]) packages) {
-        packageImportsToAdd.add(s);
-      }
-    } else {
-      Bundle provider = persistenceProvider.getBundle();
-      String suffix = ";" + Constants.BUNDLE_SYMBOLICNAME_ATTRIBUTE + "=" +
-      provider.getSymbolicName() + ";" + Constants.BUNDLE_VERSION_ATTRIBUTE 
-      + "=" + provider.getVersion();
-
-      BundleRevision br = provider.adapt(BundleWiring.class).getRevision();
-      for(BundleCapability bc : br.getDeclaredCapabilities(BundleRevision.PACKAGE_NAMESPACE)) {
-        packageImportsToAdd.add(bc.getAttributes().get(BundleRevision.PACKAGE_NAMESPACE) + suffix);
-      }
-    }
-  }
-
-  public WrappingTransformer(ClassTransformer transformer) {
-    delegate = transformer;
-  }
-
-  public byte[] transform(ClassLoader arg0, String arg1, Class<?> arg2,
-      ProtectionDomain arg3, byte[] arg4) throws IllegalClassFormatException {
-    return delegate.transform(arg0, arg1, arg2, arg3, arg4);
-  }
-  
-  public Collection<String> getPackagesToAdd() {
-    return packageImportsToAdd;
-  }
-  
-  public int hashCode() {
-    return delegate.hashCode();
-  }
-  
-  public boolean equals(Object o) {
-    if(o instanceof WrappingTransformer)
-      return delegate == ((WrappingTransformer) o).delegate;
-
-    return false;
-  }
-  
-  public String toString() {
-    return "Transformer: " + delegate.toString() + " Packages to add: " + packageImportsToAdd;
-  }
-}
\ No newline at end of file
+    private final ClassTransformer delegate;
+    private final Collection<String> packageImportsToAdd = new HashSet<String>();
+
+    public WrappingTransformer(ClassTransformer delegate, ServiceReference<?> persistenceProvider) {
+
+        if (delegate == null)
+            throw new NullPointerException("Transformer delegate may not be null");
+
+        if (persistenceProvider == null) {
+            throw new NullPointerException("PersistenceProvider may not be null");
+        }
+
+        this.delegate = delegate;
+
+        Object packages = persistenceProvider.getProperty("org.apache.aries.jpa.container.weaving.packages");
+
+        if (packages instanceof String[]) {
+            for (String s : (String[])packages) {
+                packageImportsToAdd.add(s);
+            }
+        } else {
+            Bundle provider = persistenceProvider.getBundle();
+            String suffix = ";" + Constants.BUNDLE_SYMBOLICNAME_ATTRIBUTE + "=" + provider.getSymbolicName()
+                            + ";" + Constants.BUNDLE_VERSION_ATTRIBUTE + "=" + provider.getVersion();
+
+            BundleRevision br = provider.adapt(BundleWiring.class).getRevision();
+            for (BundleCapability bc : br.getDeclaredCapabilities(BundleRevision.PACKAGE_NAMESPACE)) {
+                packageImportsToAdd.add(bc.getAttributes().get(BundleRevision.PACKAGE_NAMESPACE) + suffix);
+            }
+        }
+    }
+
+    public WrappingTransformer(ClassTransformer transformer) {
+        delegate = transformer;
+    }
+
+    public byte[] transform(ClassLoader arg0, String arg1, Class<?> arg2, ProtectionDomain arg3, byte[] arg4)
+        throws IllegalClassFormatException {
+        return delegate.transform(arg0, arg1, arg2, arg3, arg4);
+    }
+
+    public Collection<String> getPackagesToAdd() {
+        return packageImportsToAdd;
+    }
+
+    public int hashCode() {
+        return delegate.hashCode();
+    }
+
+    public boolean equals(Object o) {
+        if (o instanceof WrappingTransformer)
+            return delegate == ((WrappingTransformer)o).delegate;
+
+        return false;
+    }
+
+    public String toString() {
+        return "Transformer: " + delegate.toString() + " Packages to add: " + packageImportsToAdd;
+    }
+}

Modified: aries/branches/subsystemsR6/jpa/pom.xml
URL: http://svn.apache.org/viewvc/aries/branches/subsystemsR6/jpa/pom.xml?rev=1684451&r1=1684450&r2=1684451&view=diff
==============================================================================
--- aries/branches/subsystemsR6/jpa/pom.xml (original)
+++ aries/branches/subsystemsR6/jpa/pom.xml Tue Jun  9 15:33:24 2015
@@ -1,50 +1,43 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements.  See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership.  The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License.  You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied.  See the License for the
- specific language governing permissions and limitations
- under the License.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 
     <modelVersion>4.0.0</modelVersion>
 
+    <groupId>org.apache.aries.jpa</groupId>
+    <artifactId>org.apache.aries.jpa.main</artifactId>
+    <name>Apache Aries JPA parent</name>
+    <version>2.0.0-SNAPSHOT</version>
+    <packaging>pom</packaging>
+    
     <parent>
         <groupId>org.apache.aries</groupId>
         <artifactId>parent</artifactId>
-        <version>2.0.0</version>
+        <version>2.0.1</version>
         <relativePath>../parent/pom.xml</relativePath>
     </parent>
 
-    <groupId>org.apache.aries.jpa</groupId>
-    <artifactId>jpa</artifactId>
-    <packaging>pom</packaging>
-    <name>Aries JPA Component</name>
-    <version>1.0.0-SNAPSHOT</version>
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+    
+    <scm>
+	<connection>scm:svn:http://svn.apache.org/repos/asf/aries/trunk/jpa</connection>
+        <developerConnection>scm:svn:https://svn.apache.org/repos/asf/aries/trunk/jpa</developerConnection>
+        <url>http://svn.apache.org/viewvc/aries/trunk/jpa</url>
+    </scm>
 
     <modules>
-        <module>jpa-api</module>
-        <module>jpa-container</module>
-        <module>jpa-container-context</module>
-        <module>jpa-blueprint-aries</module>
-        <module>jpa-container-eclipselink-adapter</module> 
-        <module>jpa-container-testbundle</module>
-        <module>jpa-container-testbundle-eclipselink</module>
-        <module>jpa-container-advancedtestbundle</module>
-        <module>jpa-container-itest</module>
-        <module>jpa-blueprint-testbundle</module>
+    	<module>jpa-api</module>
+    	<module>jpa-container</module>
+        <module>jpa-support</module>
+        <module>jpa-blueprint</module>
+        <module>jpa-container-eclipselink-adapter</module>
+        <module>examples</module>
+        <module>itests</module>
+        <module>jpa-parent</module>
     </modules>
 
+
 </project>
+

Modified: aries/branches/subsystemsR6/parent/pom.xml
URL: http://svn.apache.org/viewvc/aries/branches/subsystemsR6/parent/pom.xml?rev=1684451&r1=1684450&r2=1684451&view=diff
==============================================================================
--- aries/branches/subsystemsR6/parent/pom.xml (original)
+++ aries/branches/subsystemsR6/parent/pom.xml Tue Jun  9 15:33:24 2015
@@ -32,7 +32,7 @@
     <groupId>org.apache.aries</groupId>
     <artifactId>parent</artifactId>
     <name>Aries :: Parent POM</name>
-    <version>2.0.1-SNAPSHOT</version>
+    <version>2.0.2-SNAPSHOT</version>
     <packaging>pom</packaging>
 
     <description>
@@ -87,10 +87,12 @@
 
     <repositories>
         <repository>
-            <id>codehaus.snapshots</id>
-            <name>Codehaus Snapshots Repository</name>
-            <url>http://snapshots.repository.codehaus.org</url>
-            <layout>default</layout>
+            <id>EclipseLink Repo</id>
+            <url>http://download.eclipse.org/rt/eclipselink/maven.repo/</url>
+        </repository>
+        <repository>
+            <id>ops4j.sonatype.snapshots.deploy</id>
+            <url>https://oss.sonatype.org/content/repositories/ops4j-snapshots</url>
             <snapshots>
                 <enabled>true</enabled>
                 <updatePolicy>daily</updatePolicy>
@@ -100,11 +102,6 @@
                 <enabled>false</enabled>
             </releases>
         </repository>
-
-        <repository>
-            <id>EclipseLink Repo</id>
-            <url>http://download.eclipse.org/rt/eclipselink/maven.repo/</url>
-        </repository>
     </repositories>
 
     <pluginRepositories>
@@ -122,21 +119,6 @@
                 <enabled>false</enabled>
             </releases>
         </pluginRepository>
-
-        <pluginRepository>
-            <id>codehaus.snapshots</id>
-            <name>Codehaus Snapshots Repository</name>
-            <url>http://snapshots.repository.codehaus.org</url>
-            <layout>default</layout>
-            <snapshots>
-                <enabled>true</enabled>
-                <updatePolicy>daily</updatePolicy>
-                <checksumPolicy>ignore</checksumPolicy>
-            </snapshots>
-            <releases>
-                <enabled>false</enabled>
-            </releases>
-        </pluginRepository>
     </pluginRepositories>
 
     <dependencyManagement>
@@ -279,7 +261,7 @@
                 <plugin>
                     <groupId>org.apache.maven.plugins</groupId>
                     <artifactId>maven-release-plugin</artifactId>
-                    <version>2.2</version>
+                    <version>2.5.2</version>
                     <configuration>
                         <autoVersionSubmodules>true</autoVersionSubmodules>
                     </configuration>

Modified: aries/branches/subsystemsR6/pom.xml
URL: http://svn.apache.org/viewvc/aries/branches/subsystemsR6/pom.xml?rev=1684451&r1=1684450&r2=1684451&view=diff
==============================================================================
--- aries/branches/subsystemsR6/pom.xml (original)
+++ aries/branches/subsystemsR6/pom.xml Tue Jun  9 15:33:24 2015
@@ -41,7 +41,7 @@
         <module>eba-maven-plugin</module>
         <module>testsupport</module>
         <module>util</module>
-        <!--module>versioning</module-->
+        <module>versioning</module>
         <module>proxy</module>
         <module>quiesce</module>
         <module>blueprint</module>
@@ -55,7 +55,9 @@
         <module>jpa</module>
         <module>spi-fly</module>
         <module>samples</module>
+        <module>esa-ant-task</module>
         <module>esa-maven-plugin</module>
+        <module>async</module>
     </modules>
 
     <build>

Modified: aries/branches/subsystemsR6/spi-fly/pom.xml
URL: http://svn.apache.org/viewvc/aries/branches/subsystemsR6/spi-fly/pom.xml?rev=1684451&r1=1684450&r2=1684451&view=diff
==============================================================================
--- aries/branches/subsystemsR6/spi-fly/pom.xml (original)
+++ aries/branches/subsystemsR6/spi-fly/pom.xml Tue Jun  9 15:33:24 2015
@@ -31,7 +31,7 @@
     <groupId>org.apache.aries.spifly</groupId>
     <artifactId>spifly</artifactId>
     <name>Apache Aries SPI Fly</name>
-    <version>1.0.0-SNAPSHOT</version>
+    <version>1.0.2-SNAPSHOT</version>
     <packaging>pom</packaging>
     <description>
         SPI support for OSGi

Modified: aries/branches/subsystemsR6/spi-fly/spi-fly-core/pom.xml
URL: http://svn.apache.org/viewvc/aries/branches/subsystemsR6/spi-fly/spi-fly-core/pom.xml?rev=1684451&r1=1684450&r2=1684451&view=diff
==============================================================================
--- aries/branches/subsystemsR6/spi-fly/spi-fly-core/pom.xml (original)
+++ aries/branches/subsystemsR6/spi-fly/spi-fly-core/pom.xml Tue Jun  9 15:33:24 2015
@@ -30,7 +30,7 @@
 
     <groupId>org.apache.aries.spifly</groupId>
     <artifactId>org.apache.aries.spifly.core-internal</artifactId>
-    <version>1.0.2-SNAPSHOT</version>
+    <version>1.0.3-SNAPSHOT</version>
     <packaging>jar</packaging>
     <name>Apache Aries SPI Fly Core (internal module)</name>
     <description>

Modified: aries/branches/subsystemsR6/spi-fly/spi-fly-core/src/main/java/org/apache/aries/spifly/ProviderBundleTrackerCustomizer.java
URL: http://svn.apache.org/viewvc/aries/branches/subsystemsR6/spi-fly/spi-fly-core/src/main/java/org/apache/aries/spifly/ProviderBundleTrackerCustomizer.java?rev=1684451&r1=1684450&r2=1684451&view=diff
==============================================================================
--- aries/branches/subsystemsR6/spi-fly/spi-fly-core/src/main/java/org/apache/aries/spifly/ProviderBundleTrackerCustomizer.java (original)
+++ aries/branches/subsystemsR6/spi-fly/spi-fly-core/src/main/java/org/apache/aries/spifly/ProviderBundleTrackerCustomizer.java Tue Jun  9 15:33:24 2015
@@ -106,10 +106,6 @@ public class ProviderBundleTrackerCustom
             activator.registerProviderBundle(svc, bundle, customAttributes);
         }
 
-        URL servicesDir = bundle.getResource("/" + METAINF_SERVICES);
-        if (servicesDir == null)
-            return null;
-
         List<URL> serviceFileURLs = new ArrayList<URL>();
 
         @SuppressWarnings("unchecked")

Modified: aries/branches/subsystemsR6/spi-fly/spi-fly-dynamic-bundle/pom.xml
URL: http://svn.apache.org/viewvc/aries/branches/subsystemsR6/spi-fly/spi-fly-dynamic-bundle/pom.xml?rev=1684451&r1=1684450&r2=1684451&view=diff
==============================================================================
--- aries/branches/subsystemsR6/spi-fly/spi-fly-dynamic-bundle/pom.xml (original)
+++ aries/branches/subsystemsR6/spi-fly/spi-fly-dynamic-bundle/pom.xml Tue Jun  9 15:33:24 2015
@@ -30,7 +30,7 @@
 
     <groupId>org.apache.aries.spifly</groupId>
     <artifactId>org.apache.aries.spifly.dynamic.bundle</artifactId>
-    <version>1.0.2-SNAPSHOT</version>
+    <version>1.0.3-SNAPSHOT</version>
     <packaging>bundle</packaging>
     <name>Apache Aries SPI Fly Dynamic Weaving Bundle</name>
     <description>
@@ -58,7 +58,7 @@
         <dependency>
             <groupId>org.apache.aries.spifly</groupId>
             <artifactId>org.apache.aries.spifly.core-internal</artifactId>
-            <version>1.0.1</version>
+            <version>1.0.3-SNAPSHOT</version>
             <exclusions>
                 <exclusion>
                     <groupId>org.osgi</groupId>

Modified: aries/branches/subsystemsR6/spi-fly/spi-fly-static-bundle/pom.xml
URL: http://svn.apache.org/viewvc/aries/branches/subsystemsR6/spi-fly/spi-fly-static-bundle/pom.xml?rev=1684451&r1=1684450&r2=1684451&view=diff
==============================================================================
--- aries/branches/subsystemsR6/spi-fly/spi-fly-static-bundle/pom.xml (original)
+++ aries/branches/subsystemsR6/spi-fly/spi-fly-static-bundle/pom.xml Tue Jun  9 15:33:24 2015
@@ -30,7 +30,7 @@
 
     <groupId>org.apache.aries.spifly</groupId>
     <artifactId>org.apache.aries.spifly.static.bundle</artifactId>
-    <version>1.0.2-SNAPSHOT</version>
+    <version>1.0.3-SNAPSHOT</version>
     <packaging>bundle</packaging>
     <name>Apache Aries SPI Fly Static Weaving Bundle</name>
     <description>
@@ -52,7 +52,7 @@
         <dependency>
             <groupId>org.apache.aries.spifly</groupId>
             <artifactId>org.apache.aries.spifly.core-internal</artifactId>
-            <version>1.0.1</version>
+            <version>1.0.3-SNAPSHOT</version>
         </dependency>
 
         <dependency>

Modified: aries/branches/subsystemsR6/spi-fly/spi-fly-static-tool/pom.xml
URL: http://svn.apache.org/viewvc/aries/branches/subsystemsR6/spi-fly/spi-fly-static-tool/pom.xml?rev=1684451&r1=1684450&r2=1684451&view=diff
==============================================================================
--- aries/branches/subsystemsR6/spi-fly/spi-fly-static-tool/pom.xml (original)
+++ aries/branches/subsystemsR6/spi-fly/spi-fly-static-tool/pom.xml Tue Jun  9 15:33:24 2015
@@ -30,7 +30,7 @@
 
     <groupId>org.apache.aries.spifly</groupId>
     <artifactId>org.apache.aries.spifly.static.tool</artifactId>
-    <version>1.0.2-SNAPSHOT</version>
+    <version>1.0.3-SNAPSHOT</version>
     <packaging>jar</packaging>
     <name>Apache Aries SPI Fly Static Weaving Tool</name>
     <description>
@@ -53,7 +53,7 @@
         <dependency>
             <groupId>org.apache.aries.spifly</groupId>
             <artifactId>org.apache.aries.spifly.core-internal</artifactId>
-            <version>1.0.1</version>
+            <version>1.0.3-SNAPSHOT</version>
         </dependency>
 
         <dependency>

Modified: aries/branches/subsystemsR6/subsystem/pom.xml
URL: http://svn.apache.org/viewvc/aries/branches/subsystemsR6/subsystem/pom.xml?rev=1684451&r1=1684450&r2=1684451&view=diff
==============================================================================
--- aries/branches/subsystemsR6/subsystem/pom.xml (original)
+++ aries/branches/subsystemsR6/subsystem/pom.xml Tue Jun  9 15:33:24 2015
@@ -48,6 +48,7 @@
         <module>subsystem-itests</module>
         <module>subsystem-itests-api-bundle</module>
         <module>subsystem-bundle</module>
+        <module>subsystem-gogo-command</module>
     </modules>
 
 </project>

Modified: aries/branches/subsystemsR6/subsystem/subsystem-api/pom.xml
URL: http://svn.apache.org/viewvc/aries/branches/subsystemsR6/subsystem/subsystem-api/pom.xml?rev=1684451&r1=1684450&r2=1684451&view=diff
==============================================================================
--- aries/branches/subsystemsR6/subsystem/subsystem-api/pom.xml (original)
+++ aries/branches/subsystemsR6/subsystem/subsystem-api/pom.xml Tue Jun  9 15:33:24 2015
@@ -32,7 +32,7 @@
     <artifactId>org.apache.aries.subsystem.api</artifactId>
     <packaging>bundle</packaging>
     <name>Apache Aries Subsystem API</name>
-    <version>1.1.0-SNAPSHOT</version>
+    <version>1.2.0-SNAPSHOT</version>
     <description>Subsystems API.</description>
 
     <scm>

Modified: aries/branches/subsystemsR6/subsystem/subsystem-api/src/main/java/org/apache/aries/subsystem/packageinfo
URL: http://svn.apache.org/viewvc/aries/branches/subsystemsR6/subsystem/subsystem-api/src/main/java/org/apache/aries/subsystem/packageinfo?rev=1684451&r1=1684450&r2=1684451&view=diff
==============================================================================
--- aries/branches/subsystemsR6/subsystem/subsystem-api/src/main/java/org/apache/aries/subsystem/packageinfo (original)
+++ aries/branches/subsystemsR6/subsystem/subsystem-api/src/main/java/org/apache/aries/subsystem/packageinfo Tue Jun  9 15:33:24 2015
@@ -16,4 +16,4 @@
 # specific language governing permissions and limitations
 # under the License.
 #
-version 1.1.0
+version 1.2.0

Modified: aries/branches/subsystemsR6/subsystem/subsystem-bundle/pom.xml
URL: http://svn.apache.org/viewvc/aries/branches/subsystemsR6/subsystem/subsystem-bundle/pom.xml?rev=1684451&r1=1684450&r2=1684451&view=diff
==============================================================================
--- aries/branches/subsystemsR6/subsystem/subsystem-bundle/pom.xml (original)
+++ aries/branches/subsystemsR6/subsystem/subsystem-bundle/pom.xml Tue Jun  9 15:33:24 2015
@@ -32,7 +32,7 @@
     <artifactId>org.apache.aries.subsystem</artifactId>
     <packaging>bundle</packaging>
     <name>Apache Aries Subsystems Bundle</name>
-    <version>1.1.0-SNAPSHOT</version>
+    <version>1.2.1-SNAPSHOT</version>
     <description>This is a standalone bundle to support Aries Subsystems.</description>
 
     <scm>
@@ -66,12 +66,12 @@
         <dependency>
             <groupId>org.apache.aries.subsystem</groupId>
             <artifactId>org.apache.aries.subsystem.api</artifactId>
-            <version>1.1.0-SNAPSHOT</version>
+            <version>1.2.0-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.aries.subsystem</groupId>
             <artifactId>org.apache.aries.subsystem.core</artifactId>
-            <version>1.2.0-SNAPSHOT</version>
+            <version>1.3.0-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.aries</groupId>
@@ -101,7 +101,7 @@
         <dependency>
             <groupId>org.apache.aries.proxy</groupId>
             <artifactId>org.apache.aries.proxy</artifactId>
-            <version>1.0.2-SNAPSHOT</version>
+            <version>1.0.1</version>
         </dependency>
         <dependency>
             <groupId>org.apache.felix</groupId>
@@ -119,7 +119,7 @@
             <version>1.1.0.v20120522-1841</version>
         </dependency>
         <dependency>
-            <groupId>org.eclipse</groupId>
+            <groupId>org.eclipse.tycho</groupId>
             <artifactId>org.eclipse.osgi</artifactId>
             <version>3.10.0.v20140606-1445</version>
         </dependency>

Modified: aries/branches/subsystemsR6/subsystem/subsystem-core/pom.xml
URL: http://svn.apache.org/viewvc/aries/branches/subsystemsR6/subsystem/subsystem-core/pom.xml?rev=1684451&r1=1684450&r2=1684451&view=diff
==============================================================================
--- aries/branches/subsystemsR6/subsystem/subsystem-core/pom.xml (original)
+++ aries/branches/subsystemsR6/subsystem/subsystem-core/pom.xml Tue Jun  9 15:33:24 2015
@@ -32,7 +32,7 @@
     <artifactId>org.apache.aries.subsystem.core</artifactId>
     <packaging>bundle</packaging>
     <name>Apache Aries Subsystem Core</name>
-    <version>1.2.0-SNAPSHOT</version>
+    <version>1.3.0-SNAPSHOT</version>
     <description>Subsystems Core.</description>
 
     <scm>
@@ -47,7 +47,7 @@
         </aries.osgi.activator>
     	<aries.osgi.import>
             org.osgi.service.subsystem;version="[1.1,1.2)",
-            org.apache.aries.subsystem;version="[1.1,1.2)",
+            org.apache.aries.subsystem;version="[1.2,1.3)",
             org.apache.aries.application.*;resolution:=optional,
             *
         </aries.osgi.import>
@@ -62,7 +62,7 @@
         <dependency>
             <groupId>org.apache.aries.subsystem</groupId>
             <artifactId>org.apache.aries.subsystem.api</artifactId>
-            <version>1.1.0-SNAPSHOT</version>
+            <version>1.2.0-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.aries</groupId>

Modified: aries/branches/subsystemsR6/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/internal/StartAction.java
URL: http://svn.apache.org/viewvc/aries/branches/subsystemsR6/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/internal/StartAction.java?rev=1684451&r1=1684450&r2=1684451&view=diff
==============================================================================
--- aries/branches/subsystemsR6/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/internal/StartAction.java (original)
+++ aries/branches/subsystemsR6/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/internal/StartAction.java Tue Jun  9 15:33:24 2015
@@ -182,15 +182,45 @@ public class StartAction extends Abstrac
 				if (!frameworkWiring.resolveBundles(bundles)) {
 					//work out which bundles could not be resolved
 					Collection<Bundle> unresolved = new ArrayList<Bundle>();
+					StringBuilder diagnostics = new StringBuilder();
+					diagnostics.append(String.format("Unable to resolve bundles for subsystem/version/id %s/%s/%s:\n", 
+							subsystem.getSymbolicName(), subsystem.getVersion(), subsystem.getSubsystemId()));
+					String fmt = "%d : STATE %s : %s : %s : %s";
 					for(Bundle bundle:bundles){
-						if((bundle.getState() & Bundle.RESOLVED) != Bundle.RESOLVED){
+						if((bundle.getState() & Bundle.RESOLVED) != Bundle.RESOLVED) {
 							unresolved.add(bundle);
 						}
+						String state = null;
+						switch(bundle.getState()) {
+							case Bundle.ACTIVE :
+								state = "ACTIVE";
+								break;
+							case Bundle.INSTALLED :
+								state = "INSTALLED";
+								break;
+							case Bundle.RESOLVED :
+								state = "RESOLVED";
+								break;
+							case Bundle.STARTING :
+								state = "STARTING";
+								break;
+							case Bundle.STOPPING :
+								state = "STOPPING";
+								break;
+							case Bundle.UNINSTALLED :
+								state = "UNINSTALLED";
+								break;
+							default :
+								//convert common states to text otherwise default to just showing the ID
+								state = "[" + Integer.toString(bundle.getState()) + "]";
+								break;
+						}
+						diagnostics.append(String.format(fmt, bundle.getBundleId(), state, 
+								bundle.getSymbolicName(), bundle.getVersion().toString(), 
+								bundle.getLocation()));
+						diagnostics.append("\n");
 					}
-					logger.error(
-							"Unable to resolve bundles for subsystem/version/id {}/{}/{}: {}",
-							new Object[] { subsystem.getSymbolicName(), subsystem.getVersion(),
-									subsystem.getSubsystemId(), unresolved });
+					logger.error(diagnostics.toString());
 					throw new SubsystemException("Framework could not resolve the bundles: " + unresolved);
 				}
 				setExportIsolationPolicy(subsystem);

Modified: aries/branches/subsystemsR6/subsystem/subsystem-install/pom.xml
URL: http://svn.apache.org/viewvc/aries/branches/subsystemsR6/subsystem/subsystem-install/pom.xml?rev=1684451&r1=1684450&r2=1684451&view=diff
==============================================================================
--- aries/branches/subsystemsR6/subsystem/subsystem-install/pom.xml (original)
+++ aries/branches/subsystemsR6/subsystem/subsystem-install/pom.xml Tue Jun  9 15:33:24 2015
@@ -49,7 +49,7 @@
         <dependency>
             <groupId>org.apache.aries.subsystem</groupId>
             <artifactId>org.apache.aries.subsystem.api</artifactId>
-            <version>0.1-SNAPSHOT</version>
+            <version>1.2.0-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.osgi</groupId>

Modified: aries/branches/subsystemsR6/subsystem/subsystem-itests/pom.xml
URL: http://svn.apache.org/viewvc/aries/branches/subsystemsR6/subsystem/subsystem-itests/pom.xml?rev=1684451&r1=1684450&r2=1684451&view=diff
==============================================================================
--- aries/branches/subsystemsR6/subsystem/subsystem-itests/pom.xml (original)
+++ aries/branches/subsystemsR6/subsystem/subsystem-itests/pom.xml Tue Jun  9 15:33:24 2015
@@ -129,7 +129,7 @@
             <groupId>org.apache.aries.subsystem</groupId>
             <artifactId>org.apache.aries.subsystem.api</artifactId>
             <scope>test</scope>
-            <version>1.1.0-SNAPSHOT</version>
+            <version>1.2.0-SNAPSHOT</version>
             <exclusions>
                 <exclusion>
                     <groupId>org.osgi</groupId>
@@ -141,7 +141,7 @@
             <groupId>org.apache.aries.subsystem</groupId>
             <artifactId>org.apache.aries.subsystem.core</artifactId>
             <scope>test</scope>
-            <version>1.2.0-SNAPSHOT</version>
+            <version>1.3.0-SNAPSHOT</version>
             <exclusions>
                 <exclusion>
                     <groupId>org.osgi</groupId>

Modified: aries/branches/subsystemsR6/subsystem/subsystem-obr/pom.xml
URL: http://svn.apache.org/viewvc/aries/branches/subsystemsR6/subsystem/subsystem-obr/pom.xml?rev=1684451&r1=1684450&r2=1684451&view=diff
==============================================================================
--- aries/branches/subsystemsR6/subsystem/subsystem-obr/pom.xml (original)
+++ aries/branches/subsystemsR6/subsystem/subsystem-obr/pom.xml Tue Jun  9 15:33:24 2015
@@ -32,7 +32,7 @@
     <artifactId>org.apache.aries.subsystem.obr</artifactId>
     <packaging>bundle</packaging>
     <name>Apache Aries Subsystem OBR</name>
-    <version>1.0.1-SNAPSHOT</version>
+    <version>1.0.2-SNAPSHOT</version>
     <description>Subsystems OBR support.</description>
 
     <scm>

Modified: aries/branches/subsystemsR6/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/BundleWideTxData.java
URL: http://svn.apache.org/viewvc/aries/branches/subsystemsR6/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/BundleWideTxData.java?rev=1684451&r1=1684450&r2=1684451&view=diff
==============================================================================
--- aries/branches/subsystemsR6/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/BundleWideTxData.java (original)
+++ aries/branches/subsystemsR6/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/BundleWideTxData.java Tue Jun  9 15:33:24 2015
@@ -22,16 +22,18 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.regex.Pattern;
 
+import org.apache.aries.transaction.annotations.TransactionPropagationType;
+
 public final class BundleWideTxData
 {
-  private String value;
+  private TransactionPropagationType value;
   private final List<Pattern> methodList = new ArrayList<Pattern>();
   private final List<Pattern> beanList = new ArrayList<Pattern>();
   
-  public BundleWideTxData(String value,
+  public BundleWideTxData(TransactionPropagationType value,
           String method, String bean) {
-      if(value == null || value.length() == 0)
-        this.value = "Required";
+      if (value == null)
+        this.value = TransactionPropagationType.Required;
       else
         this.value = value;
       setupPatterns(method, bean);  
@@ -60,7 +62,7 @@ public final class BundleWideTxData
           this.beanList.add(p);
       }
   }
-  public String getValue() {
+  public TransactionPropagationType getValue() {
       return this.value;
   }
   

Modified: aries/branches/subsystemsR6/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/BundleWideTxDataUtil.java
URL: http://svn.apache.org/viewvc/aries/branches/subsystemsR6/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/BundleWideTxDataUtil.java?rev=1684451&r1=1684450&r2=1684451&view=diff
==============================================================================
--- aries/branches/subsystemsR6/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/BundleWideTxDataUtil.java (original)
+++ aries/branches/subsystemsR6/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/BundleWideTxDataUtil.java Tue Jun  9 15:33:24 2015
@@ -23,6 +23,8 @@ import java.util.List;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
+import org.apache.aries.transaction.annotations.TransactionPropagationType;
+
 public class BundleWideTxDataUtil {
     
     
@@ -36,14 +38,14 @@ public class BundleWideTxDataUtil {
      * @param bundleData
      * @return
      */
-    public static String getAttribute(String compId, String method, List<BundleWideTxData> bundleData) {
+    public static TransactionPropagationType getAttribute(String compId, String method, List<BundleWideTxData> bundleData) {
         BundleWideTxData txData = null;
         if (bundleData.size() == 1)  {
             txData = bundleData.get(0);
             
             List<Pattern> beans = txData.getBean();
             List<Pattern> mtds = txData.getMethod();
-            String value = txData.getValue();
+            TransactionPropagationType value = txData.getValue();
             
             if (!beans.isEmpty() && !mtds.isEmpty()) {
                 for (Pattern bean : beans) {
@@ -81,7 +83,7 @@ public class BundleWideTxDataUtil {
         return null;
     }
     
-    private static String getTransactionAttribute(List<BundleWideTxData> bundleData, String compId, String method) {
+    private static TransactionPropagationType getTransactionAttribute(List<BundleWideTxData> bundleData, String compId, String method) {
         List<BundleWideTxData> bundleDataBothMethodAndBean = new ArrayList<BundleWideTxData>();
         List<BundleWideTxData> bundleDataOnlyBean = new ArrayList<BundleWideTxData>();
         List<BundleWideTxData> bundleDataOnlyMethod = new ArrayList<BundleWideTxData>();
@@ -107,7 +109,7 @@ public class BundleWideTxDataUtil {
         for (BundleWideTxData txData : bundleDataBothMethodAndBean) {
             List<Pattern> beans = txData.getBean();
             List<Pattern> mtds = txData.getMethod();
-            String value = txData.getValue();
+            TransactionPropagationType value = txData.getValue();
             
             for (Pattern bean : beans) {
                 if (bean.matcher(compId).matches()) {
@@ -128,7 +130,7 @@ public class BundleWideTxDataUtil {
         // let's then check bundle data that has bean only next
         for (BundleWideTxData txData : bundleDataOnlyBean) {
             List<Pattern> beans = txData.getBean();
-            String value = txData.getValue();
+            TransactionPropagationType value = txData.getValue();
             
             for (Pattern bean : beans) {
                 if (bean.matcher(compId).matches()) {
@@ -144,7 +146,7 @@ public class BundleWideTxDataUtil {
         // let's then check bundle data that has method only next
         for (BundleWideTxData txData : bundleDataOnlyMethod) {
             List<Pattern> mtds = txData.getMethod();
-            String value = txData.getValue();
+            TransactionPropagationType value = txData.getValue();
             
             for (Pattern mtd : mtds) {
                 if (mtd.matcher(method).matches()) {
@@ -175,7 +177,7 @@ public class BundleWideTxDataUtil {
     }
     
     // this method assume matchedTxData isn't empty.
-    private static String findBestMatch(List<MatchedTxData> matchedTxData) {
+    private static TransactionPropagationType findBestMatch(List<MatchedTxData> matchedTxData) {
         
         if (matchedTxData.size() == 1) {
             return matchedTxData.get(0).getValue();
@@ -209,7 +211,7 @@ public class BundleWideTxDataUtil {
     }
     
     // this method assume matchedTxData isn't empty.
-    private static String findBestMatchBeanOnly(List<MatchedTxData> matchedTxData) {
+    private static TransactionPropagationType findBestMatchBeanOnly(List<MatchedTxData> matchedTxData) {
         
         if (matchedTxData.size() == 1) {
             return matchedTxData.get(0).getValue();
@@ -232,7 +234,7 @@ public class BundleWideTxDataUtil {
     }
     
     // this method assume matchedTxData isn't empty.
-    private static String findBestMatchMethodOnly(List<MatchedTxData> matchedTxData) {
+    private static TransactionPropagationType findBestMatchMethodOnly(List<MatchedTxData> matchedTxData) {
         
         if (matchedTxData.size() == 1) {
             return matchedTxData.get(0).getValue();

Modified: aries/branches/subsystemsR6/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/Constants.java
URL: http://svn.apache.org/viewvc/aries/branches/subsystemsR6/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/Constants.java?rev=1684451&r1=1684450&r2=1684451&view=diff
==============================================================================
--- aries/branches/subsystemsR6/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/Constants.java (original)
+++ aries/branches/subsystemsR6/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/Constants.java Tue Jun  9 15:33:24 2015
@@ -25,18 +25,7 @@ import org.apache.aries.util.nls.Message
 
 public class Constants {
     public static final Pattern WILDCARD = Pattern.compile("\\Q.*\\E");
-    public static final String BEAN = "bean";
-    public static final String VALUE = "value";
-    public static final String METHOD = "method";
-    public static final String TX12_SCHEMA = "transactionv12.xsd";
-    public static final String TX11_SCHEMA = "transactionv11.xsd";
-    public static final String TX10_SCHEMA = "transactionv10.xsd";
     
-    public static final String ANNOTATION_PARSER_BEAN_NAME = ".org_apache_aries_transaction_annotations";
     public static final int BANNED_MODIFIERS = Modifier.PRIVATE | Modifier.STATIC;
-    
-    public final static String TRANSACTION10URI = "http://aries.apache.org/xmlns/transactions/v1.0.0";
-    public final static String TRANSACTION11URI = "http://aries.apache.org/xmlns/transactions/v1.1.0";
-    public final static String TRANSACTION12URI = "http://aries.apache.org/xmlns/transactions/v1.2.0";
     public static final MessageUtil MESSAGES = MessageUtil.createMessageUtil(Constants.class, "org.apache.aries.transaction.nls.blueprintTx");
 }

Modified: aries/branches/subsystemsR6/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/MatchedTxData.java
URL: http://svn.apache.org/viewvc/aries/branches/subsystemsR6/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/MatchedTxData.java?rev=1684451&r1=1684450&r2=1684451&view=diff
==============================================================================
--- aries/branches/subsystemsR6/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/MatchedTxData.java (original)
+++ aries/branches/subsystemsR6/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/MatchedTxData.java Tue Jun  9 15:33:24 2015
@@ -20,20 +20,22 @@ package org.apache.aries.transaction;
 
 import java.util.regex.Pattern;
 
+import org.apache.aries.transaction.annotations.TransactionPropagationType;
+
 public final class MatchedTxData
 {
-  private String value;
+  private TransactionPropagationType value;
   private Pattern method;
   private Pattern bean;
   
-  public MatchedTxData(String value,
+  public MatchedTxData(TransactionPropagationType value,
           Pattern method, Pattern bean) {
       this.value = value;
       this.method = method;
       this.bean = bean;
   }
 
-  public String getValue() {
+  public TransactionPropagationType getValue() {
       return this.value;
   }
   

Modified: aries/branches/subsystemsR6/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/TransactionAttribute.java
URL: http://svn.apache.org/viewvc/aries/branches/subsystemsR6/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/TransactionAttribute.java?rev=1684451&r1=1684450&r2=1684451&view=diff
==============================================================================
--- aries/branches/subsystemsR6/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/TransactionAttribute.java (original)
+++ aries/branches/subsystemsR6/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/TransactionAttribute.java Tue Jun  9 15:33:24 2015
@@ -28,6 +28,8 @@ import javax.transaction.SystemException
 import javax.transaction.Transaction;
 import javax.transaction.TransactionManager;
 
+import org.apache.aries.transaction.annotations.TransactionPropagationType;
+
 public enum TransactionAttribute {
     MANDATORY
     {
@@ -101,27 +103,18 @@ public enum TransactionAttribute {
       public TransactionToken begin(TransactionManager man) throws SystemException, NotSupportedException,
           InvalidTransactionException, IllegalStateException
       {
-        TransactionToken tranToken;
-        if (man.getStatus() == Status.STATUS_ACTIVE) {
-          tranToken = new TransactionToken(null, man.suspend(), REQUIRESNEW);
-        } else {
-          tranToken = new TransactionToken(null, null, REQUIRESNEW);
-        }
+         Transaction suspendedTransaction = (man.getStatus() == Status.STATUS_ACTIVE) ? man.suspend() : null;
 
         try {
           man.begin();
         } catch (SystemException e) {
-          man.resume(tranToken.getSuspendedTransaction());
+          man.resume(suspendedTransaction);
           throw e;
         } catch (NotSupportedException e) {
-          man.resume(tranToken.getSuspendedTransaction());
+          man.resume(suspendedTransaction);
           throw e;
         }
-        
-        tranToken.setActiveTransaction(man.getTransaction());
-        tranToken.setCompletionAllowed(true);
-        
-        return tranToken;
+        return new TransactionToken(man.getTransaction(), suspendedTransaction, REQUIRESNEW, true);
       }
 
       public void finish(TransactionManager man, TransactionToken tranToken) throws SystemException,
@@ -155,9 +148,9 @@ public enum TransactionAttribute {
       }
     };
 
-    public static TransactionAttribute fromValue(String value)
+    public static TransactionAttribute fromValue(TransactionPropagationType type)
     {
-      return valueOf(value.toUpperCase());
+      return valueOf(type.name().toUpperCase());
     }
 
     public TransactionToken begin(TransactionManager man) throws SystemException, NotSupportedException,

Modified: aries/branches/subsystemsR6/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/TransactionToken.java
URL: http://svn.apache.org/viewvc/aries/branches/subsystemsR6/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/TransactionToken.java?rev=1684451&r1=1684450&r2=1684451&view=diff
==============================================================================
--- aries/branches/subsystemsR6/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/TransactionToken.java (original)
+++ aries/branches/subsystemsR6/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/TransactionToken.java Tue Jun  9 15:33:24 2015
@@ -20,7 +20,7 @@ package org.apache.aries.transaction;
 
 import javax.transaction.Transaction;
 
-class TransactionToken
+public class TransactionToken
 {
    private Transaction activeTransaction;
    private Transaction suspendedTransaction;
@@ -46,31 +46,15 @@ class TransactionToken
        return activeTransaction;
    }
 
-   public void setActiveTransaction(Transaction activeTransaction) {
-       this.activeTransaction = activeTransaction;
-   }
-
    public Transaction getSuspendedTransaction() {
        return suspendedTransaction;
    }
 
-   public void setSuspendedTransaction(Transaction suspendedTransaction) {
-       this.suspendedTransaction = suspendedTransaction;
-   }
-
    public TransactionAttribute getTransactionAttribute() {
        return transactionAttribute;
    }
 
-   public void setTransactionStrategy(TransactionAttribute transactionAttribute) {
-       this.transactionAttribute = transactionAttribute;
-   }
-
    public boolean isCompletionAllowed() {
        return isCompletionAllowed;
    }
-
-   public void setCompletionAllowed(boolean isCompletionAllowed) {
-       this.isCompletionAllowed = isCompletionAllowed;
-   }
 }
\ No newline at end of file

Modified: aries/branches/subsystemsR6/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/TxComponentMetaDataHelper.java
URL: http://svn.apache.org/viewvc/aries/branches/subsystemsR6/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/TxComponentMetaDataHelper.java?rev=1684451&r1=1684450&r2=1684451&view=diff
==============================================================================
--- aries/branches/subsystemsR6/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/TxComponentMetaDataHelper.java (original)
+++ aries/branches/subsystemsR6/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/TxComponentMetaDataHelper.java Tue Jun  9 15:33:24 2015
@@ -19,17 +19,18 @@
 package org.apache.aries.transaction;
 
 import org.apache.aries.blueprint.ComponentDefinitionRegistry;
+import org.apache.aries.transaction.annotations.TransactionPropagationType;
 import org.osgi.service.blueprint.reflect.ComponentMetadata;
 
 public interface TxComponentMetaDataHelper {
 
     public void setComponentTransactionData(ComponentDefinitionRegistry registry, 
-            ComponentMetadata component, String value, String method);
+            ComponentMetadata component, TransactionPropagationType type, String method);
 
-    public String getComponentMethodTxAttribute(
+    public TransactionPropagationType getComponentMethodTxAttribute(
             ComponentMetadata component, String methodName);
     
-    public void populateBundleWideTransactionData(ComponentDefinitionRegistry cdr, String value,
+    public void populateBundleWideTransactionData(ComponentDefinitionRegistry cdr, TransactionPropagationType value,
         String method, String bean);
 
     public void unregister(ComponentDefinitionRegistry registry);

Modified: aries/branches/subsystemsR6/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/TxComponentMetaDataHelperImpl.java
URL: http://svn.apache.org/viewvc/aries/branches/subsystemsR6/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/TxComponentMetaDataHelperImpl.java?rev=1684451&r1=1684450&r2=1684451&view=diff
==============================================================================
--- aries/branches/subsystemsR6/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/TxComponentMetaDataHelperImpl.java (original)
+++ aries/branches/subsystemsR6/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/TxComponentMetaDataHelperImpl.java Tue Jun  9 15:33:24 2015
@@ -30,6 +30,7 @@ import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
 import org.apache.aries.blueprint.ComponentDefinitionRegistry;
+import org.apache.aries.transaction.annotations.TransactionPropagationType;
 import org.osgi.service.blueprint.reflect.ComponentMetadata;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -49,54 +50,58 @@ public class TxComponentMetaDataHelperIm
           cache = new ConcurrentHashMap<String, String>();
       }
       
-      public void add(Pattern pattern, String txAttribute) {
-          map.put(pattern, txAttribute);
+      public void add(Pattern pattern, TransactionPropagationType txAttribute) {
+          map.put(pattern, txAttribute.name());
       }
       
-      public String getAttribute(String name)
-      {
+    public TransactionPropagationType getAttribute(String name) {
         String txAttribute = cache.get(name);
-        
-        if (txAttribute == null) {
-            List<Pattern> matches = findMatches(name);
-            int size = matches.size();
-
-            if (size == 0) {
-                // we should default to no transaction since we cannot find a match
-                txAttribute = null;
-            }
-            else if (size == 1) {
+
+        if (txAttribute != null) {
+            return getType(txAttribute);
+        }
+        List<Pattern> matches = findMatches(name);
+        int size = matches.size();
+
+        if (size == 0) {
+            // we should default to no transaction since we cannot find a match
+            return null;
+        }
+
+        if (size == 1) {
+            txAttribute = map.get(matches.get(0));
+        } else {
+            matches = selectPatternsWithFewestWildcards(matches);
+            size = matches.size();
+
+            if (size == 1) {
                 txAttribute = map.get(matches.get(0));
-            }
-            else {
-                matches = selectPatternsWithFewestWildcards(matches);
+            } else {
+                matches = selectLongestPatterns(matches);
                 size = matches.size();
 
                 if (size == 1) {
                     txAttribute = map.get(matches.get(0));
+                } else {
+                    throw new IllegalStateException(
+                                                    Constants.MESSAGES
+                                                        .getMessage("unable.to.apply.patterns", matches));
                 }
-                else {
-                    matches = selectLongestPatterns(matches);
-                    size = matches.size();
-
-                    if (size == 1) {
-                        txAttribute = map.get(matches.get(0));
-                    }
-                    else {
-                        throw new IllegalStateException(Constants.MESSAGES.getMessage("unable.to.apply.patterns", matches));
-                    }
-                }
-            }
-            
-            if (txAttribute != null) {
-                cache.put(name, txAttribute);
             }
         }
-        
-        return txAttribute;
-      }
-      
-      private List<Pattern> findMatches(String name)
+
+        if (txAttribute != null) {
+            cache.put(name, txAttribute);
+        }
+
+        return getType(txAttribute);
+    }
+  
+    private TransactionPropagationType getType(String typeSt) {
+        return typeSt == null || typeSt.length() == 0 ? null : TransactionPropagationType.valueOf(typeSt);
+    }
+
+    private List<Pattern> findMatches(String name)
       {
         List<Pattern> matches = new ArrayList<Pattern>();
         for (Pattern p : map.keySet()) {
@@ -173,7 +178,7 @@ public class TxComponentMetaDataHelperIm
         }
     }
     
-    public synchronized void setComponentTransactionData(ComponentDefinitionRegistry registry, ComponentMetadata component, String value, String method)
+    public synchronized void setComponentTransactionData(ComponentDefinitionRegistry registry, ComponentMetadata component, TransactionPropagationType value, String method)
     {
       TranData td = data.get(component);
           
@@ -188,8 +193,8 @@ public class TxComponentMetaDataHelperIm
       if (method == null || method.length() == 0) {
     	  method = "*";
       }
-      if(value == null || value.length() == 0) {
-        value = "Required";
+      if(value == null) {
+        value = TransactionPropagationType.Required;
       }
       
       String[] names = method.split("[, \t]");
@@ -200,13 +205,13 @@ public class TxComponentMetaDataHelperIm
       }
     }
 
-    public String getComponentMethodTxAttribute(ComponentMetadata component, String methodName)
+    public TransactionPropagationType getComponentMethodTxAttribute(ComponentMetadata component, String methodName)
     {
     	if (LOGGER.isDebugEnabled()) {
     	    LOGGER.debug("Getting the txAttribute for the component {0} and method {1}", component.getId(), methodName);
     	}
         TranData td = data.get(component);
-        String result = null;
+        TransactionPropagationType result = null;
 
         if (td != null) {
             // bean level transaction always overwrite bundle wide transaction 
@@ -242,7 +247,7 @@ public class TxComponentMetaDataHelperIm
         return result;
     }
     
-    public void populateBundleWideTransactionData(ComponentDefinitionRegistry cdr, String value,
+    public void populateBundleWideTransactionData(ComponentDefinitionRegistry cdr, TransactionPropagationType value,
             String method, String bean) {
     	if (LOGGER.isDebugEnabled()) {
     	    LOGGER.debug("Start populating bundle wide transaction data value {0} method {1} bean {2} per component definition registry", new Object[]{value, method, bean});

Modified: aries/branches/subsystemsR6/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/TxInterceptorImpl.java
URL: http://svn.apache.org/viewvc/aries/branches/subsystemsR6/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/TxInterceptorImpl.java?rev=1684451&r1=1684450&r2=1684451&view=diff
==============================================================================
--- aries/branches/subsystemsR6/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/TxInterceptorImpl.java (original)
+++ aries/branches/subsystemsR6/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/TxInterceptorImpl.java Tue Jun  9 15:33:24 2015
@@ -24,6 +24,7 @@ import javax.transaction.Transaction;
 import javax.transaction.TransactionManager;
 
 import org.apache.aries.blueprint.Interceptor;
+import org.apache.aries.transaction.annotations.TransactionPropagationType;
 import org.apache.aries.transaction.exception.TransactionRollbackException;
 import org.osgi.service.blueprint.reflect.ComponentMetadata;
 import org.slf4j.Logger;
@@ -99,13 +100,13 @@ public class TxInterceptorImpl implement
     public Object preCall(ComponentMetadata cm, Method m,
         Object... parameters) throws Throwable  {
       final String methodName = m.getName();
-      final String attribute = metaDataHelper.getComponentMethodTxAttribute(cm, methodName);
+      final TransactionPropagationType type = metaDataHelper.getComponentMethodTxAttribute(cm, methodName);
       
       // attribute could be null here which means no transaction
-      if (attribute == null) {
+      if (type == null) {
           return null;
       }
-      TransactionAttribute txAttribute = TransactionAttribute.fromValue(attribute);
+      TransactionAttribute txAttribute = TransactionAttribute.fromValue(type);
       
       if (LOGGER.isDebugEnabled())
           LOGGER.debug("Method: " + m + ", has transaction strategy: " + txAttribute);