Modified: 
aries/branches/java6support/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/GeneratorTest.java
URL: 
http://svn.apache.org/viewvc/aries/branches/java6support/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/GeneratorTest.java?rev=1738981&r1=1738980&r2=1738981&view=diff
==============================================================================
--- 
aries/branches/java6support/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/GeneratorTest.java
 (original)
+++ 
aries/branches/java6support/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/GeneratorTest.java
 Wed Apr 13 18:41:23 2016
@@ -36,15 +36,21 @@ import javax.xml.xpath.XPathConstants;
 import javax.xml.xpath.XPathFactory;
 
 import org.apache.aries.blueprint.plugin.model.Context;
+import org.apache.aries.blueprint.plugin.model.TransactionalDef;
 import org.apache.aries.blueprint.plugin.test.MyBean1;
+import org.apache.aries.blueprint.plugin.test.ServiceA;
+import org.apache.aries.blueprint.plugin.test.ServiceB;
 import org.apache.commons.io.output.ByteArrayOutputStream;
 import org.apache.xbean.finder.ClassFinder;
 import org.junit.Assert;
 import org.junit.Test;
 import org.w3c.dom.Document;
 import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
 import org.xml.sax.SAXException;
 
+import com.google.common.collect.Sets;
+
 public class GeneratorTest {
 
     private XPath xpath;
@@ -72,22 +78,60 @@ public class GeneratorTest {
         Assert.assertEquals("init", xpath.evaluate("@init-method", bean1));
         Assert.assertEquals("destroy", xpath.evaluate("@destroy-method", 
bean1));
         Assert.assertEquals("true", xpath.evaluate("@field-injection", bean1));
-        
+        Assert.assertEquals("", xpath.evaluate("@scope", bean1));
+
         // @Transactional
-        Assert.assertEquals("*", xpath.evaluate("transaction/@method", bean1));
-        Assert.assertEquals("Required", xpath.evaluate("transaction/@value", 
bean1));
+        NodeList txs = (NodeList) xpath.evaluate("transaction", bean1, 
XPathConstants.NODESET);
+        Set<TransactionalDef> defs = new HashSet<TransactionalDef>();
+        for (int i = 0; i < txs.getLength(); ++i) {
+            Node tx = txs.item(i);
+            defs.add(new TransactionalDef(xpath.evaluate("@method", tx), 
xpath.evaluate("@value", tx)));
+        }
+        Set<TransactionalDef> expectedDefs = Sets.newHashSet(new 
TransactionalDef("*", "RequiresNew"),
+                                                             new 
TransactionalDef("txNotSupported", "NotSupported"),
+                                                             new 
TransactionalDef("txMandatory", "Mandatory"),
+                                                             new 
TransactionalDef("txNever", "Never"),
+                                                             new 
TransactionalDef("txRequired", "Required"),
+                                                             new 
TransactionalDef("txOverridenWithRequiresNew", "RequiresNew"),
+                                                             new 
TransactionalDef("txSupports", "Supports"));
+        Assert.assertEquals(expectedDefs, defs);
 
         // @PersistenceContext
         Assert.assertEquals("person", xpath.evaluate("context/@unitname", 
bean1));
         Assert.assertEquals("em", xpath.evaluate("context/@property", bean1));
-        
+
         // @PersistenceUnit
         Assert.assertEquals("person", xpath.evaluate("unit/@unitname", bean1));
         Assert.assertEquals("emf", xpath.evaluate("unit/@property", bean1));
-        
+
         // @Autowired
         Assert.assertEquals("my1", 
xpath.evaluate("property[@name='bean2']/@ref", bean1));
 
+        // Service with 1 interface
+        Node serviceAImpl2 = (Node) 
xpath.evaluate("/blueprint/service[@ref='my2']", document, XPathConstants.NODE);
+        Assert.assertEquals(ServiceA.class.getName(), 
xpath.evaluate("@interface", serviceAImpl2));
+        Assert.assertEquals("", xpath.evaluate("@auto-export", serviceAImpl2));
+        Assert.assertEquals("", xpath.evaluate("interfaces", serviceAImpl2));
+
+        // Service with 0 interfaces (using auto-export=interfaces instead)
+        Node serviceAImpl3 = (Node) 
xpath.evaluate("/blueprint/service[@ref='serviceAImpl3']", document, 
XPathConstants.NODE);
+        Assert.assertEquals("", xpath.evaluate("@interface", serviceAImpl3));
+        Assert.assertEquals("interfaces", xpath.evaluate("@auto-export", 
serviceAImpl3));
+        Assert.assertEquals("", xpath.evaluate("interfaces", serviceAImpl3));
+
+        // Service with 2 interfaces (using 
<interfaces><value>ServiceA</value><value>ServiceB</value></interfaces>
+        Node serviceABImpl = (Node) 
xpath.evaluate("/blueprint/service[@ref='serviceABImpl']", document, 
XPathConstants.NODE);
+        Assert.assertEquals("", xpath.evaluate("@interface", serviceABImpl));
+        Assert.assertEquals("", xpath.evaluate("@auto-export", serviceABImpl));
+
+        NodeList interfaceValues = (NodeList) 
xpath.evaluate("interfaces/value", serviceABImpl, XPathConstants.NODESET);
+        Set<String> interfaceNames = new HashSet<String>();
+        for (int i = 0; i < interfaceValues.getLength(); ++i) {
+            Node interfaceValue = interfaceValues.item(i);
+            interfaceNames.add(interfaceValue.getTextContent());
+        }
+        Assert.assertEquals(Sets.newHashSet(ServiceA.class.getName(), 
ServiceB.class.getName()),
+                            interfaceNames);
     }
 
     private Document readToDocument(ByteArrayOutputStream os) throws 
ParserConfigurationException,

Modified: 
aries/branches/java6support/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/model/BeanTest.java
URL: 
http://svn.apache.org/viewvc/aries/branches/java6support/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/model/BeanTest.java?rev=1738981&r1=1738980&r2=1738981&view=diff
==============================================================================
--- 
aries/branches/java6support/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/model/BeanTest.java
 (original)
+++ 
aries/branches/java6support/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/model/BeanTest.java
 Wed Apr 13 18:41:23 2016
@@ -19,10 +19,21 @@
 package org.apache.aries.blueprint.plugin.model;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import java.util.Set;
 
 import javax.inject.Named;
 
+import org.apache.aries.blueprint.plugin.bad.BadBean1;
+import org.apache.aries.blueprint.plugin.bad.BadBean2;
+import org.apache.aries.blueprint.plugin.bad.BadBean3;
+import org.apache.aries.blueprint.plugin.bad.BadFieldBean1;
+import org.apache.aries.blueprint.plugin.bad.BadFieldBean2;
+import org.apache.aries.blueprint.plugin.bad.BadFieldBean3;
+import org.apache.aries.blueprint.plugin.bad.FieldBean4;
 import org.apache.aries.blueprint.plugin.test.MyBean1;
 import org.apache.aries.blueprint.plugin.test.MyBean3;
 import org.apache.aries.blueprint.plugin.test.MyBean4;
@@ -30,9 +41,10 @@ import org.apache.aries.blueprint.plugin
 import org.junit.Assert;
 import org.junit.Test;
 
+import com.google.common.collect.Sets;
 
 public class BeanTest {
-    
+
     @Test
     public void testParseMyBean1() {
         Bean bean = new Bean(MyBean1.class);
@@ -41,17 +53,25 @@ public class BeanTest {
         assertEquals("myBean1", bean.id); // Name derived from class name
         assertEquals("init", bean.initMethod);
         assertEquals("destroy", bean.destroyMethod);
-        Assert.assertEquals(2, bean.persistenceFields.length);
-        assertEquals("em", bean.persistenceFields[0].getName());
-        assertEquals("emf", bean.persistenceFields[1].getName());
-        assertEquals("*", bean.transactionDef.getMethod());
-        assertEquals("Required", bean.transactionDef.getType());
+        Assert.assertEquals(2, bean.persistenceFields.size());
+        assertEquals("em", bean.persistenceFields.get(0).getName());
+        assertEquals("emf", bean.persistenceFields.get(1).getName());
         assertEquals(1, bean.properties.size());
+        assertFalse(bean.isPrototype);
         Property prop = bean.properties.iterator().next();
         assertEquals("bean2", prop.name);
         assertEquals("serviceA", prop.ref);
+
+        Set<TransactionalDef> expectedTxs = Sets.newHashSet(new 
TransactionalDef("*", "RequiresNew"),
+                                                            new 
TransactionalDef("txNotSupported", "NotSupported"),
+                                                            new 
TransactionalDef("txMandatory", "Mandatory"),
+                                                            new 
TransactionalDef("txNever", "Never"),
+                                                            new 
TransactionalDef("txRequired", "Required"),
+                                                            new 
TransactionalDef("txOverridenWithRequiresNew", "RequiresNew"),
+                                                            new 
TransactionalDef("txSupports", "Supports"));
+        assertEquals(expectedTxs, bean.transactionDefs);
     }
-    
+
     @Test
     public void testParseMyBean3() {
         Bean bean = new Bean(MyBean3.class);
@@ -60,12 +80,20 @@ public class BeanTest {
         assertEquals("myBean3", bean.id); // Name derived from class name
         assertNull("There should be no initMethod", bean.initMethod);
         assertNull("There should be no destroyMethod", bean.destroyMethod);
-        assertEquals("There should be no persistence fields", 0, 
bean.persistenceFields.length);
-        assertEquals("*", bean.transactionDef.getMethod());
-        assertEquals("RequiresNew", bean.transactionDef.getType());
+        assertEquals("There should be no persistence fields", 0, 
bean.persistenceFields.size());
         assertEquals(5, bean.properties.size());
+        assertTrue(bean.isPrototype);
+
+        Set<TransactionalDef> expectedTxs = Sets.newHashSet(new 
TransactionalDef("*", "RequiresNew"),
+                                                            new 
TransactionalDef("txNotSupported", "NotSupported"),
+                                                            new 
TransactionalDef("txMandatory", "Mandatory"),
+                                                            new 
TransactionalDef("txNever", "Never"),
+                                                            new 
TransactionalDef("txRequired", "Required"),
+                                                            new 
TransactionalDef("txRequiresNew", "RequiresNew"),
+                                                            new 
TransactionalDef("txSupports", "Supports"));
+        assertEquals(expectedTxs, bean.transactionDefs);
     }
-    
+
     @Test
     public void testParseNamedBean() {
         Bean bean = new Bean(ServiceAImpl1.class);
@@ -75,11 +103,12 @@ public class BeanTest {
         assertEquals("Name should be defined using @Named", definedName, 
bean.id);
         assertNull("There should be no initMethod", bean.initMethod);
         assertNull("There should be no destroyMethod", bean.destroyMethod);
-        assertEquals("There should be no persistence fields", 0, 
bean.persistenceFields.length);
-        assertNull("There should be no transaction definition", 
bean.transactionDef);
+        assertEquals("There should be no persistence fields", 0, 
bean.persistenceFields.size());
+        assertTrue("There should be no transaction definition", 
bean.transactionDefs.isEmpty());
         assertEquals("There should be no properties", 0, 
bean.properties.size());
+        assertTrue(bean.isPrototype);
     }
-    
+
     @Test
     public void testBlueprintBundleContext() {
         Bean bean = new Bean(MyBean4.class);
@@ -87,6 +116,44 @@ public class BeanTest {
         Property bcProp = bean.properties.iterator().next();
         assertEquals("bundleContext", bcProp.name);
         assertEquals("blueprintBundleContext", bcProp.ref);
+        assertFalse(bean.isPrototype);
+
+        Set<TransactionalDef> expectedTxs = Sets.newHashSet(new 
TransactionalDef("txWithoutClassAnnotation", "Supports"));
+        assertEquals(expectedTxs, bean.transactionDefs);
+    }
+
+    @Test(expected = IllegalArgumentException.class)
+    public void testMultipleInitMethods() {
+        new Bean(BadBean1.class);
+    }
+
+    @Test(expected = IllegalArgumentException.class)
+    public void testMultipleDestroyMethods() {
+        new Bean(BadBean2.class);
+    }
+
+    @Test(expected = UnsupportedOperationException.class)
+    public void testSpringNestedTransactionNotSupported() {
+        new Bean(BadBean3.class);
     }
 
+    @Test(expected = UnsupportedOperationException.class)
+    public void testBadFieldBean1() {
+        new Context(BadFieldBean1.class).resolve();
+    }
+
+    @Test(expected = UnsupportedOperationException.class)
+    public void testBadFieldBean2() {
+        new Context(BadFieldBean2.class).resolve();
+    }
+
+    @Test(expected = UnsupportedOperationException.class)
+    public void testBadFieldBean3() {
+        new Context(BadFieldBean3.class).resolve();
+    }
+
+    @Test
+    public void testFieldBean4() {
+        new Context(FieldBean4.class).resolve();
+    }
 }

Modified: 
aries/branches/java6support/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/model/ContextTest.java
URL: 
http://svn.apache.org/viewvc/aries/branches/java6support/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/model/ContextTest.java?rev=1738981&r1=1738980&r2=1738981&view=diff
==============================================================================
--- 
aries/branches/java6support/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/model/ContextTest.java
 (original)
+++ 
aries/branches/java6support/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/model/ContextTest.java
 Wed Apr 13 18:41:23 2016
@@ -25,6 +25,7 @@ import org.apache.aries.blueprint.plugin
 import org.apache.aries.blueprint.plugin.test.MyProduced;
 import org.apache.aries.blueprint.plugin.test.ServiceB;
 import org.apache.aries.blueprint.plugin.test.ServiceReferences;
+import org.apache.aries.blueprint.plugin.test.ServiceReferencesParent;
 import org.junit.Assert;
 import org.junit.Test;
 import org.osgi.framework.Bundle;
@@ -40,29 +41,29 @@ public class ContextTest {
         Assert.assertEquals(1, context.getBeans().size());
         Assert.assertEquals(0, context.getServiceRefs().size());
     }
-    
+
     @Test
     public void testLists2()  {
         Context context = new Context(ServiceReferences.class);
         Assert.assertEquals(1, context.getBeans().size());
         Assert.assertEquals(3, context.getServiceRefs().size());
     }
-    
+
     @Test
     public void testMatching() throws NoSuchFieldException, SecurityException  
{
         Context context = new Context(ServiceReferences.class);
-        BeanRef matching = context.getMatching(new 
BeanRef(ServiceReferences.class.getDeclaredField("serviceB")));
+        BeanRef matching = context.getMatching(new 
BeanRef(ServiceReferencesParent.class.getDeclaredField("serviceB")));
         Assert.assertEquals(OsgiServiceRef.class, matching.getClass());
         Assert.assertEquals(ServiceB.class, matching.clazz);
         Assert.assertEquals("serviceB-typeB1", matching.id);
     }
-    
+
     private void assertSpecialRef(String expectedId, Class<?> clazz) {
         Context context = new Context();
         BeanRef ref = context.getMatching(new BeanRef(clazz));
         assertEquals(expectedId, ref.id);
     }
-    
+
     @Test
     public void testSpecialRefs() {
         assertSpecialRef("blueprintBundleContext", BundleContext.class);
@@ -70,7 +71,7 @@ public class ContextTest {
         assertSpecialRef("blueprintContainer", BlueprintContainer.class);
         assertSpecialRef("blueprintConverter", Converter.class);
     }
-    
+
     @Test
     public void testProduced() throws NoSuchFieldException, SecurityException  
{
         Context context = new Context(MyFactoryBean.class);
@@ -80,5 +81,5 @@ public class ContextTest {
         Assert.assertEquals("myFactoryBean", matching.factoryBean.id);
         Assert.assertEquals("create", matching.factoryMethod);
     }
-    
+
 }

Modified: 
aries/branches/java6support/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/MyBean1.java
URL: 
http://svn.apache.org/viewvc/aries/branches/java6support/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/MyBean1.java?rev=1738981&r1=1738980&r2=1738981&view=diff
==============================================================================
--- 
aries/branches/java6support/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/MyBean1.java
 (original)
+++ 
aries/branches/java6support/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/MyBean1.java
 Wed Apr 13 18:41:23 2016
@@ -18,35 +18,46 @@
  */
 package org.apache.aries.blueprint.plugin.test;
 
+import javax.annotation.PostConstruct;
 import javax.inject.Singleton;
-import javax.persistence.EntityManager;
-import javax.persistence.PersistenceContext;
-import javax.persistence.PersistenceUnit;
 import javax.transaction.Transactional;
 import javax.transaction.Transactional.TxType;
 
-import org.springframework.beans.factory.annotation.Autowired;
-
 @Singleton
-@Transactional(value=TxType.REQUIRED)
+@Transactional(value=TxType.REQUIRES_NEW)
 public class MyBean1 extends ParentBean {
 
-    @Autowired
-    ServiceA bean2;
-    
-    @PersistenceContext(unitName="person")
-    EntityManager em;
-    
-    @PersistenceUnit(unitName="person")
-    EntityManager emf;
-    
+    public void overridenInit() {
+        // By overriding the method and removing the annotation, this method 
has lost its
+        // @PostConstruct method because it isn't @Inherited
+    }
+
+    @PostConstruct
     public void init() {
+
     }
-    
-    public void destroy() {
+
+    @Transactional(TxType.NOT_SUPPORTED)
+    public void txNotSupported() {
+    }
+
+    @Transactional(TxType.MANDATORY)
+    public void txMandatory() {
+    }
+
+    @Transactional(TxType.NEVER)
+    public void txNever() {
+    }
+
+    @Transactional(TxType.REQUIRED)
+    public void txRequired() {
+    }
+
+    @Override
+    public void txOverridenWithoutTransactional() {
     }
 
-    public void saveData() {
-        
+    @Transactional(TxType.REQUIRES_NEW)
+    public void txOverridenWithRequiresNew() {
     }
 }

Modified: 
aries/branches/java6support/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/MyBean3.java
URL: 
http://svn.apache.org/viewvc/aries/branches/java6support/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/MyBean3.java?rev=1738981&r1=1738980&r2=1738981&view=diff
==============================================================================
--- 
aries/branches/java6support/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/MyBean3.java
 (original)
+++ 
aries/branches/java6support/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/MyBean3.java
 Wed Apr 13 18:41:23 2016
@@ -20,13 +20,12 @@ package org.apache.aries.blueprint.plugi
 
 import javax.inject.Inject;
 import javax.inject.Named;
-import javax.inject.Singleton;
 
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 
-@Singleton
+@Named
 @Transactional(propagation=Propagation.REQUIRES_NEW)
 public class MyBean3 {
 
@@ -40,11 +39,35 @@ public class MyBean3 {
 
     @Inject
     ServiceB serviceB;
-    
+
     @Inject
     @Named("serviceB2Id")
     ServiceB serviceB2;
-    
+
     @Inject
     MyProduced myProduced;
+
+    @Transactional(propagation = Propagation.NOT_SUPPORTED)
+    public void txNotSupported() {
+    }
+
+    @Transactional(propagation = Propagation.MANDATORY)
+    public void txMandatory() {
+    }
+
+    @Transactional(propagation = Propagation.NEVER)
+    public void txNever() {
+    }
+
+    @Transactional(propagation = Propagation.REQUIRED)
+    public void txRequired() {
+    }
+
+    @Transactional(propagation = Propagation.REQUIRES_NEW)
+    public void txRequiresNew() {
+    }
+
+    @Transactional(propagation = Propagation.SUPPORTS)
+    public void txSupports() {
+    }
 }

Modified: 
aries/branches/java6support/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/MyBean4.java
URL: 
http://svn.apache.org/viewvc/aries/branches/java6support/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/MyBean4.java?rev=1738981&r1=1738980&r2=1738981&view=diff
==============================================================================
--- 
aries/branches/java6support/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/MyBean4.java
 (original)
+++ 
aries/branches/java6support/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/MyBean4.java
 Wed Apr 13 18:41:23 2016
@@ -1,13 +1,20 @@
 package org.apache.aries.blueprint.plugin.test;
 
 import javax.inject.Inject;
-import javax.inject.Singleton;
 
 import org.osgi.framework.BundleContext;
+import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
 
-@Singleton
+@Component
 public class MyBean4 {
 
     @Inject
     BundleContext bundleContext;
+
+    @Transactional(propagation = Propagation.SUPPORTS)
+    public void txWithoutClassAnnotation() {
+
+    }
 }

Modified: 
aries/branches/java6support/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/ParentBean.java
URL: 
http://svn.apache.org/viewvc/aries/branches/java6support/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/ParentBean.java?rev=1738981&r1=1738980&r2=1738981&view=diff
==============================================================================
--- 
aries/branches/java6support/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/ParentBean.java
 (original)
+++ 
aries/branches/java6support/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/ParentBean.java
 Wed Apr 13 18:41:23 2016
@@ -20,14 +20,41 @@ package org.apache.aries.blueprint.plugi
 
 import javax.annotation.PostConstruct;
 import javax.annotation.PreDestroy;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.PersistenceUnit;
+import javax.transaction.Transactional;
+
+import org.springframework.beans.factory.annotation.Autowired;
 
 public class ParentBean {
 
+    @Autowired
+    ServiceA bean2;
+
+    @PersistenceContext(unitName="person")
+    EntityManager em;
+
+    @PersistenceUnit(unitName="person")
+    EntityManager emf;
+
     @PostConstruct
-    public void init() {
+    public void overridenInit() {
     }
-    
+
     @PreDestroy
     public void destroy() {
     }
+
+    @Transactional(Transactional.TxType.REQUIRES_NEW)
+    public void txOverridenWithoutTransactional() {
+    }
+
+    @Transactional(Transactional.TxType.SUPPORTS)
+    public void txSupports() {
+    }
+
+    @Transactional(Transactional.TxType.NEVER)
+    public void txOverridenWithRequiresNew() {
+    }
 }

Modified: 
aries/branches/java6support/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/ServiceAImpl1.java
URL: 
http://svn.apache.org/viewvc/aries/branches/java6support/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/ServiceAImpl1.java?rev=1738981&r1=1738980&r2=1738981&view=diff
==============================================================================
--- 
aries/branches/java6support/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/ServiceAImpl1.java
 (original)
+++ 
aries/branches/java6support/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/ServiceAImpl1.java
 Wed Apr 13 18:41:23 2016
@@ -19,9 +19,7 @@
 package org.apache.aries.blueprint.plugin.test;
 
 import javax.inject.Named;
-import javax.inject.Singleton;
 
-@Singleton
 @Named("my1")
 public class ServiceAImpl1 implements ServiceA {
     

Modified: 
aries/branches/java6support/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/ServiceReferences.java
URL: 
http://svn.apache.org/viewvc/aries/branches/java6support/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/ServiceReferences.java?rev=1738981&r1=1738980&r2=1738981&view=diff
==============================================================================
--- 
aries/branches/java6support/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/ServiceReferences.java
 (original)
+++ 
aries/branches/java6support/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/ServiceReferences.java
 Wed Apr 13 18:41:23 2016
@@ -19,17 +19,9 @@
  */
 package org.apache.aries.blueprint.plugin.test;
 
-import javax.inject.Inject;
-import javax.inject.Named;
-
-import org.ops4j.pax.cdi.api.OsgiService;
 import org.springframework.stereotype.Component;
 
 @Component
-public class ServiceReferences {
-    @Inject @OsgiService(filter="(type=B1)") ServiceB serviceB;
-    
-    @Named("serviceB2Id") @Inject @OsgiService(filter="(type=B2)") ServiceB 
serviceB2;
-    
-    @Inject @OsgiService(filter="(type=B3)") ServiceB serviceB3;
+public class ServiceReferences extends ServiceReferencesParent {
+
 }

Modified: aries/branches/java6support/blueprint/blueprint-parser/pom.xml
URL: 
http://svn.apache.org/viewvc/aries/branches/java6support/blueprint/blueprint-parser/pom.xml?rev=1738981&r1=1738980&r2=1738981&view=diff
==============================================================================
--- aries/branches/java6support/blueprint/blueprint-parser/pom.xml (original)
+++ aries/branches/java6support/blueprint/blueprint-parser/pom.xml Wed Apr 13 
18:41:23 2016
@@ -32,7 +32,7 @@
     <artifactId>blueprint-parser</artifactId>
     <packaging>jar</packaging>
     <name>Apache Aries Blueprint Parser</name>
-    <version>1.4.0-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <description>
         This bundle contains the blueprint parser in a plain jar.
     </description>

Modified: 
aries/branches/java6support/blueprint/blueprint-spring-extender/pom.xml
URL: 
http://svn.apache.org/viewvc/aries/branches/java6support/blueprint/blueprint-spring-extender/pom.xml?rev=1738981&r1=1738980&r2=1738981&view=diff
==============================================================================
--- aries/branches/java6support/blueprint/blueprint-spring-extender/pom.xml 
(original)
+++ aries/branches/java6support/blueprint/blueprint-spring-extender/pom.xml Wed 
Apr 13 18:41:23 2016
@@ -59,8 +59,8 @@
             org.apache.aries.blueprint.spring.extender.Activator
         </aries.osgi.activator>
         <blueprint.api.version>1.0.0</blueprint.api.version>
-        <blueprint.core.version>1.5.0-SNAPSHOT</blueprint.core.version>
-        <blueprint.parser.version>1.4.0-SNAPSHOT</blueprint.parser.version>
+        <blueprint.core.version>1.6.0-SNAPSHOT</blueprint.core.version>
+        <blueprint.parser.version>1.5.0-SNAPSHOT</blueprint.parser.version>
         <!--
         <lastReleaseVersion>1.0.4</lastReleaseVersion>
         -->
@@ -71,8 +71,8 @@
             <id>dev</id>
             <properties>
                 <blueprint.api.version>1.0.1</blueprint.api.version>
-                <blueprint.core.version>1.5.0-SNAPSHOT</blueprint.core.version>
-                
<blueprint.parser.version>1.4.0-SNAPSHOT</blueprint.parser.version>
+                <blueprint.core.version>1.6.0-SNAPSHOT</blueprint.core.version>
+                
<blueprint.parser.version>1.5.0-SNAPSHOT</blueprint.parser.version>
             </properties>
         </profile>
     </profiles>
@@ -182,12 +182,6 @@
             <version>4.2.2.RELEASE</version>
             <scope>test</scope>
         </dependency>
-        <dependency>
-            <groupId>org.apache.aries.blueprint</groupId>
-            <artifactId>org.apache.aries.blueprint.testbundles</artifactId>
-            <version>1.0.0-SNAPSHOT</version>
-            <scope>test</scope>
-        </dependency>
     </dependencies>
 
     <build>

Modified: 
aries/branches/java6support/blueprint/blueprint-spring-extender/src/main/java/org/apache/aries/blueprint/spring/extender/SpringOsgiCompendiumNamespaceHandler.java
URL: 
http://svn.apache.org/viewvc/aries/branches/java6support/blueprint/blueprint-spring-extender/src/main/java/org/apache/aries/blueprint/spring/extender/SpringOsgiCompendiumNamespaceHandler.java?rev=1738981&r1=1738980&r2=1738981&view=diff
==============================================================================
--- 
aries/branches/java6support/blueprint/blueprint-spring-extender/src/main/java/org/apache/aries/blueprint/spring/extender/SpringOsgiCompendiumNamespaceHandler.java
 (original)
+++ 
aries/branches/java6support/blueprint/blueprint-spring-extender/src/main/java/org/apache/aries/blueprint/spring/extender/SpringOsgiCompendiumNamespaceHandler.java
 Wed Apr 13 18:41:23 2016
@@ -16,6 +16,7 @@
  */
 package org.apache.aries.blueprint.spring.extender;
 
+import java.net.URI;
 import java.net.URL;
 import java.util.Set;
 
@@ -23,13 +24,14 @@ import org.apache.aries.blueprint.Namesp
 import org.apache.aries.blueprint.ParserContext;
 import org.osgi.service.blueprint.reflect.ComponentMetadata;
 import org.osgi.service.blueprint.reflect.Metadata;
-import org.osgi.service.blueprint.reflect.ReferenceMetadata;
-import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
 
 public class SpringOsgiCompendiumNamespaceHandler implements NamespaceHandler {
 
+    public static final String CM_NAMESPACE = 
"http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.3.0";;
+
     @Override
     public URL getSchemaLocation(String namespace) {
         if 
(namespace.startsWith("http://www.springframework.org/schema/osgi-compendium/spring-osgi-compendium";))
 {
@@ -49,20 +51,26 @@ public class SpringOsgiCompendiumNamespa
 
     @Override
     public Metadata parse(Element element, ParserContext context) {
-        if ("managed-properties".equals(element.getLocalName())) {
-
-        }
-        else if ("managed-service-factory".equals(element.getLocalName())) {
-
-        }
-        else if ("cm-properties".equals(element.getLocalName())) {
-
-        }
-        throw new UnsupportedOperationException();
+        fixDom(element, CM_NAMESPACE);
+        NamespaceHandler handler = 
context.getNamespaceHandler(URI.create(CM_NAMESPACE));
+        return handler.parse(element, context);
     }
 
     @Override
     public ComponentMetadata decorate(Node node, ComponentMetadata component, 
ParserContext context) {
         return component;
     }
+
+    private static void fixDom(Node node, String namespace) {
+        if (node.getNodeType() == Node.ELEMENT_NODE) {
+            if (!namespace.equals(node.getNamespaceURI())) {
+                node.getOwnerDocument().renameNode(node, namespace, 
node.getLocalName());
+            }
+            NodeList children = node.getChildNodes();
+            for (int i = 0; i < children.getLength(); i++) {
+                fixDom(children.item(i), namespace);
+            }
+        }
+    }
+
 }

Modified: 
aries/branches/java6support/blueprint/blueprint-spring-extender/src/main/java/org/apache/aries/blueprint/spring/extender/SpringOsgiExtender.java
URL: 
http://svn.apache.org/viewvc/aries/branches/java6support/blueprint/blueprint-spring-extender/src/main/java/org/apache/aries/blueprint/spring/extender/SpringOsgiExtender.java?rev=1738981&r1=1738980&r2=1738981&view=diff
==============================================================================
--- 
aries/branches/java6support/blueprint/blueprint-spring-extender/src/main/java/org/apache/aries/blueprint/spring/extender/SpringOsgiExtender.java
 (original)
+++ 
aries/branches/java6support/blueprint/blueprint-spring-extender/src/main/java/org/apache/aries/blueprint/spring/extender/SpringOsgiExtender.java
 Wed Apr 13 18:41:23 2016
@@ -107,6 +107,7 @@ public class SpringOsgiExtender extends
     }
 
     private boolean isCompatible(Bundle bundle) {
+        // TODO
         return true;
     }
 

Modified: 
aries/branches/java6support/blueprint/blueprint-spring-extender/src/main/java/org/apache/aries/blueprint/spring/extender/SpringOsgiExtension.java
URL: 
http://svn.apache.org/viewvc/aries/branches/java6support/blueprint/blueprint-spring-extender/src/main/java/org/apache/aries/blueprint/spring/extender/SpringOsgiExtension.java?rev=1738981&r1=1738980&r2=1738981&view=diff
==============================================================================
--- 
aries/branches/java6support/blueprint/blueprint-spring-extender/src/main/java/org/apache/aries/blueprint/spring/extender/SpringOsgiExtension.java
 (original)
+++ 
aries/branches/java6support/blueprint/blueprint-spring-extender/src/main/java/org/apache/aries/blueprint/spring/extender/SpringOsgiExtension.java
 Wed Apr 13 18:41:23 2016
@@ -23,6 +23,7 @@ import java.io.File;
 import java.io.FileOutputStream;
 import java.io.InputStream;
 import java.io.OutputStreamWriter;
+import java.net.URI;
 import java.net.URL;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -65,7 +66,7 @@ public class SpringOsgiExtension impleme
     public void start() throws Exception {
         List<Object> bpPaths = new ArrayList<Object>();
 
-        Set<String> namespaces = new LinkedHashSet<String>();
+        Set<URI> namespaces = new LinkedHashSet<URI>();
         DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
         dbf.setNamespaceAware(true);
         for (URL url : paths) {
@@ -79,7 +80,11 @@ public class SpringOsgiExtension impleme
                     List<String> locs = new 
ArrayList<String>(Arrays.asList(schemaLoc.getValue().split("\\s+")));
                     locs.remove("");
                     for (int i = 0; i < locs.size() / 2; i++) {
-                        namespaces.add(locs.get(i * 2));
+                        String ns = locs.get(i * 2);
+                        namespaces.add(URI.create(ns));
+                        if 
(ns.startsWith("http://www.springframework.org/schema/osgi-compendium";)) {
+                            
namespaces.add(URI.create(SpringOsgiCompendiumNamespaceHandler.CM_NAMESPACE));
+                        }
                     }
                 }
             } finally {
@@ -95,10 +100,6 @@ public class SpringOsgiExtension impleme
             
writer.write("\txmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n";);
             
writer.write("\txmlns:bean=\"http://www.springframework.org/schema/beans\"\n";);
             
writer.write("\txsi:schemaLocation=\"http://www.springframework.org/schema/beans
 http://www.springframework.org/schema/beans/spring-beans-4.2.xsd\";>\n");
-            // TODO: improve that, this is a big hack to force the reference 
to namespace handlers
-            for (String namespace : namespaces) {
-                writer.write("\t<bean class=\"java.lang.String\" 
scope=\"ns1:dummy\" xmlns:ns1=\"" + namespace + "\"/>\n");
-            }
             for (URL url : paths) {
                 writer.write("\t<bean:import resource=\"" + url.toString() + 
"\"/>\n");
             }
@@ -108,7 +109,7 @@ public class SpringOsgiExtension impleme
         }
         LOGGER.info("Generated blueprint for bundle {}/{} at {}", 
bundle.getSymbolicName(), bundle.getVersion(), file);
         bpPaths.add(file.toURI().toURL());
-        container = blueprintExtenderService.createContainer(bundle, bpPaths);
+        container = blueprintExtenderService.createContainer(bundle, bpPaths, 
namespaces);
     }
 
     @Override

Modified: 
aries/branches/java6support/blueprint/blueprint-spring-extender/src/main/java/org/apache/aries/blueprint/spring/extender/SpringOsgiNamespaceHandler.java
URL: 
http://svn.apache.org/viewvc/aries/branches/java6support/blueprint/blueprint-spring-extender/src/main/java/org/apache/aries/blueprint/spring/extender/SpringOsgiNamespaceHandler.java?rev=1738981&r1=1738980&r2=1738981&view=diff
==============================================================================
--- 
aries/branches/java6support/blueprint/blueprint-spring-extender/src/main/java/org/apache/aries/blueprint/spring/extender/SpringOsgiNamespaceHandler.java
 (original)
+++ 
aries/branches/java6support/blueprint/blueprint-spring-extender/src/main/java/org/apache/aries/blueprint/spring/extender/SpringOsgiNamespaceHandler.java
 Wed Apr 13 18:41:23 2016
@@ -16,6 +16,7 @@
  */
 package org.apache.aries.blueprint.spring.extender;
 
+import java.net.URI;
 import java.net.URL;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -28,17 +29,65 @@ import org.apache.aries.blueprint.mutabl
 import org.apache.aries.blueprint.mutable.MutableReferenceMetadata;
 import org.apache.aries.blueprint.mutable.MutableServiceMetadata;
 import org.apache.aries.blueprint.mutable.MutableValueMetadata;
+import org.osgi.service.blueprint.reflect.BeanMetadata;
 import org.osgi.service.blueprint.reflect.ComponentMetadata;
 import org.osgi.service.blueprint.reflect.Metadata;
 import org.osgi.service.blueprint.reflect.NonNullMetadata;
 import org.osgi.service.blueprint.reflect.ReferenceMetadata;
 import org.osgi.service.blueprint.reflect.ServiceMetadata;
+import org.osgi.service.blueprint.reflect.Target;
 import org.springframework.util.Assert;
 import org.springframework.util.StringUtils;
-import org.w3c.dom.*;
+import org.w3c.dom.CharacterData;
+import org.w3c.dom.Comment;
+import org.w3c.dom.Element;
+import org.w3c.dom.EntityReference;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
 
 public class SpringOsgiNamespaceHandler implements NamespaceHandler {
 
+    public static final String BLUEPRINT_NAMESPACE = 
"http://www.osgi.org/xmlns/blueprint/v1.0.0";;
+    public static final String SPRING_NAMESPACE = 
"http://www.springframework.org/schema/beans";;
+
+    public static final String BEAN_ELEMENT = "bean";
+    public static final String BEAN_NAME_ELEMENT = "bean-name";
+    public static final String FILTER_ATTRIBUTE = "filter";
+    public static final String INTERFACE_ATTRIBUTE = "interface";
+    public static final String TIMEOUT_ATTRIBUTE = "timeout";
+    public static final String DEPENDS_ON_ATTRIBUTE = "depends-on";
+    public static final String CARDINALITY_ATTRIBUTE = "cardinality";
+    public static final String LISTENER_ELEMENT = "listener";
+    public static final String REF_ATTRIBUTE = "ref";
+    public static final String BIND_METHOD_ATTRIBUTE = "bind-method";
+    public static final String UNBIND_METHOD_ATTRIBUTE = "unbind-method";
+    public static final String ID_ATTRIBUTE = "id";
+    public static final String CARDINALITY_0_1 = "0..1";
+    public static final String VALUE_ATTRIBUTE = "value";
+    public static final String VALUE_REF_ATTRIBUTE = "value-ref";
+    public static final String KEY_ATTRIBUTE = "key";
+    public static final String KEY_REF_ATTRIBUTE = "key-ref";
+    public static final String ENTRY_ELEMENT = "entry";
+    public static final String SERVICE_PROPERTIES_ELEMENT = 
"service-properties";
+    public static final String REGISTRATION_LISTENER_ELEMENT = 
"registration-listener";
+    public static final String INTERFACES_ELEMENT = "interfaces";
+    public static final String VALUE_ELEMENT = "value";
+    public static final String AUTO_EXPORT_ATTRIBUTE = "auto-export";
+    public static final String AUTO_EXPORT_INTERFACES = "interfaces";
+    public static final String AUTO_EXPORT_CLASS_HIERARCHY = "class-hierarchy";
+    public static final String AUTO_EXPORT_ALL_CLASSES = "all-classes";
+    public static final String RANKING_ATTRIBUTE = "ranking";
+    public static final String REFERENCE_ELEMENT = "reference";
+    public static final String SERVICE_ELEMENT = "service";
+    public static final String BUNDLE_ELEMENT = "bundle";
+    public static final String SET_ELEMENT = "set";
+    public static final String LIST_ELEMENT = "list";
+    public static final int DEFAULT_TIMEOUT = 300000;
+    public static final String REGISTRATION_METHOD_ATTRIBUTE = 
"registration-method";
+    public static final String UNREGISTRATION_METHOD_ATTRIBUTE = 
"unregistration-method";
+
+    private int idCounter;
+
     @Override
     public URL getSchemaLocation(String namespace) {
         if 
(namespace.startsWith("http://www.springframework.org/schema/osgi/spring-osgi";))
 {
@@ -58,149 +107,267 @@ public class SpringOsgiNamespaceHandler
 
     @Override
     public Metadata parse(Element element, ParserContext context) {
-        if ("reference".equals(element.getLocalName())) {
-            MutableReferenceMetadata metadata = 
context.createMetadata(MutableReferenceMetadata.class);
-            // Parse attributes
-            // TODO: auto generate id ?
-            metadata.setId(element.getAttribute("id"));
-            
metadata.setAvailability("0..1".equals(element.getAttribute("cardinality"))
-                    ? ReferenceMetadata.AVAILABILITY_OPTIONAL
-                    : ReferenceMetadata.AVAILABILITY_MANDATORY);
-            metadata.setTimeout(getLong(element.getAttribute("timeout"), 
300000));
-            metadata.setInterface(element.getAttribute("interface"));
-            metadata.setFilter(element.getAttribute("filter"));
-            String[] dependsOn = 
StringUtils.tokenizeToStringArray(element.getAttribute("depends-on"), ",; ");
-            metadata.setDependsOn(dependsOn != null ? Arrays.asList(dependsOn) 
: null);
-            metadata.setComponentName(element.getAttribute("bean-name"));
-            // TODO: @context-class-loader
-            // Parse child elements
-            for (Element child : getChildren(element)) {
-                if (element.getNamespaceURI().equals(child.getNamespaceURI())) 
{
-                    if ("interfaces".equals(child.getLocalName())) {
-                        List<String> extra = new ArrayList<String>();
-                        for (Element e : getChildren(child)) {
-                            if ("value".equals(e.getLocalName())) {
-                                extra.add(getTextValue(e));
-                            } else {
-                                // TODO: support other elements ?
-                                throw new 
UnsupportedOperationException("Unsupported child: " + element.getLocalName());
-                            }
+        if (REFERENCE_ELEMENT.equals(element.getLocalName())) {
+            return parseReference(element, context);
+        }
+        else if (SERVICE_ELEMENT.equals(element.getLocalName())) {
+            return parseService(element, context);
+        }
+        else if (BUNDLE_ELEMENT.equals(element.getLocalName())) {
+            return parseBundle(element, context);
+        }
+        else if (SET_ELEMENT.equals(element.getLocalName())) {
+            return parseSet(element, context);
+        }
+        else if (LIST_ELEMENT.equals(element.getLocalName())) {
+            return parseList(element, context);
+        }
+        else {
+            throw new UnsupportedOperationException();
+        }
+    }
+
+    private Metadata parseBundle(Element element, ParserContext context) {
+        throw new UnsupportedOperationException();
+    }
+
+    private Metadata parseList(Element element, ParserContext context) {
+        // TODO: support list
+        throw new UnsupportedOperationException();
+    }
+
+    private Metadata parseSet(Element element, ParserContext context) {
+        // TODO: support set
+        throw new UnsupportedOperationException();
+    }
+
+    private Metadata parseService(Element element, ParserContext context) {
+        MutableServiceMetadata metadata = 
context.createMetadata(MutableServiceMetadata.class);
+        // Parse attributes
+        if (element.hasAttribute(ID_ATTRIBUTE)) {
+            metadata.setId(element.getAttribute(ID_ATTRIBUTE));
+        } else {
+            metadata.setId(generateId(context));
+        }
+        if (nonEmpty(element.getAttribute(REF_ATTRIBUTE)) != null) {
+            MutableRefMetadata ref = 
context.createMetadata(MutableRefMetadata.class);
+            ref.setComponentId(element.getAttribute(REF_ATTRIBUTE));
+            metadata.setServiceComponent(ref);
+        }
+        metadata.setRanking(nonEmpty(element.getAttribute(RANKING_ATTRIBUTE)) 
!= null
+                ? Integer.parseInt(element.getAttribute(RANKING_ATTRIBUTE))
+                : 0);
+        String itf = nonEmpty(element.getAttribute(INTERFACE_ATTRIBUTE));
+        if (itf != null) {
+            metadata.addInterface(itf);
+        }
+        String[] dependsOn = 
StringUtils.tokenizeToStringArray(nonEmpty(element.getAttribute(DEPENDS_ON_ATTRIBUTE)),
 ",; ");
+        metadata.setDependsOn(dependsOn != null ? Arrays.asList(dependsOn) : 
null);
+        String autoExp = nonEmpty(element.getAttribute(AUTO_EXPORT_ATTRIBUTE));
+        if (AUTO_EXPORT_INTERFACES.equals(autoExp)) {
+            metadata.setAutoExport(ServiceMetadata.AUTO_EXPORT_INTERFACES);
+        } else if (AUTO_EXPORT_CLASS_HIERARCHY.equals(autoExp)) {
+            
metadata.setAutoExport(ServiceMetadata.AUTO_EXPORT_CLASS_HIERARCHY);
+        } else if (AUTO_EXPORT_ALL_CLASSES.equals(autoExp)) {
+            metadata.setAutoExport(ServiceMetadata.AUTO_EXPORT_ALL_CLASSES);
+        } else {
+            metadata.setAutoExport(ServiceMetadata.AUTO_EXPORT_DISABLED);
+        }
+        // TODO: @context-class-loader
+        // Parse child elements
+        for (Element child : getChildren(element)) {
+            if (element.getNamespaceURI().equals(child.getNamespaceURI())) {
+                if (INTERFACES_ELEMENT.equals(child.getLocalName())) {
+                    List<String> itfs = parseInterfaces(child);
+                    for (String intf : itfs) {
+                        metadata.addInterface(intf);
+                    }
+                }
+                else if 
(REGISTRATION_LISTENER_ELEMENT.equals(child.getLocalName())) {
+                    String regMethod = 
nonEmpty(child.getAttribute(REGISTRATION_METHOD_ATTRIBUTE));
+                    String unregMethod = 
nonEmpty(child.getAttribute(UNREGISTRATION_METHOD_ATTRIBUTE));
+                    String refStr = 
nonEmpty(child.getAttribute(REF_ATTRIBUTE));
+                    Target listenerComponent = null;
+                    if (refStr != null) {
+                        MutableRefMetadata ref = 
context.createMetadata(MutableRefMetadata.class);
+                        ref.setComponentId(refStr);
+                        listenerComponent = ref;
+                    }
+                    for (Element cchild : getChildren(child)) {
+                        if (listenerComponent != null) {
+                            throw new IllegalArgumentException("Only one of 
@ref attribute or inlined bean definition element is allowed");
                         }
-                        metadata.setExtraInterfaces(extra);
+                        listenerComponent = parseInlinedTarget(context, 
metadata, cchild);
                     }
-                    else if ("listener".equals(child.getLocalName())) {
-                        // TODO: listener
-
+                    if (listenerComponent == null) {
+                        throw new IllegalArgumentException("Missing @ref 
attribute or inlined bean definition element");
                     }
+                    metadata.addRegistrationListener(listenerComponent, 
regMethod, unregMethod);
                 }
-                else {
-                    throw new UnsupportedOperationException("Custom namespaces 
not supported");
-                }
-            }
-            return metadata;
-        }
-        else if ("service".equals(element.getLocalName())) {
-            MutableServiceMetadata metadata = 
context.createMetadata(MutableServiceMetadata.class);
-            // Parse attributes
-            // TODO: auto generate id ?
-            metadata.setId(element.getAttribute("id"));
-            if (element.getAttribute("ref") != null) {
-                MutableRefMetadata ref = 
context.createMetadata(MutableRefMetadata.class);
-                ref.setComponentId(element.getAttribute("ref"));
-                metadata.setServiceComponent(ref);
-            }
-            metadata.setRanking(element.getAttribute("ranking") != null
-                    ? Integer.parseInt(element.getAttribute("ranking"))
-                    : 0);
-            String itf = element.getAttribute("interface");
-            if (itf != null) {
-                metadata.addInterface(itf);
-            }
-            String[] dependsOn = 
StringUtils.tokenizeToStringArray(element.getAttribute("depends-on"), ",; ");
-            metadata.setDependsOn(dependsOn != null ? Arrays.asList(dependsOn) 
: null);
-            String autoExp = element.getAttribute("auto-export");
-            if ("interfaces".equals(autoExp)) {
-                metadata.setAutoExport(ServiceMetadata.AUTO_EXPORT_INTERFACES);
-            } else if ("class-hierarchy".equals(autoExp)) {
-                
metadata.setAutoExport(ServiceMetadata.AUTO_EXPORT_CLASS_HIERARCHY);
-            } else if ("all-classes".equals(autoExp)) {
-                
metadata.setAutoExport(ServiceMetadata.AUTO_EXPORT_ALL_CLASSES);
-            } else {
-                metadata.setAutoExport(ServiceMetadata.AUTO_EXPORT_DISABLED);
-            }
-            // TODO: @context-class-loader
-            // Parse child elements
-            for (Element child : getChildren(element)) {
-                if (element.getNamespaceURI().equals(child.getNamespaceURI())) 
{
-                    if ("interfaces".equals(child.getLocalName())) {
-                        for (Element e : getChildren(child)) {
-                            if ("value".equals(e.getLocalName())) {
-                                metadata.addInterface(getTextValue(e));
+                else if 
(SERVICE_PROPERTIES_ELEMENT.equals(child.getLocalName())) {
+                    // TODO: @key-type
+                    for (Element e : getChildren(child)) {
+                        if (ENTRY_ELEMENT.equals(e.getLocalName())) {
+                            NonNullMetadata key;
+                            Metadata val;
+                            boolean hasKeyAttribute = 
e.hasAttribute(KEY_ATTRIBUTE);
+                            boolean hasKeyRefAttribute = 
e.hasAttribute(KEY_REF_ATTRIBUTE);
+                            if (hasKeyRefAttribute && !hasKeyAttribute) {
+                                MutableRefMetadata r = 
context.createMetadata(MutableRefMetadata.class);
+                                
r.setComponentId(e.getAttribute(KEY_REF_ATTRIBUTE));
+                                key = r;
+                            } else if (hasKeyAttribute && !hasKeyRefAttribute) 
{
+                                MutableValueMetadata v = 
context.createMetadata(MutableValueMetadata.class);
+                                
v.setStringValue(e.getAttribute(KEY_ATTRIBUTE));
+                                key = v;
+                            } else {
+                                throw new IllegalStateException("Either key or 
key-ref must be specified");
+                            }
+                            // TODO: support key
+                            boolean hasValAttribute = 
e.hasAttribute(VALUE_ATTRIBUTE);
+                            boolean hasValRefAttribute = 
e.hasAttribute(VALUE_REF_ATTRIBUTE);
+                            if (hasValRefAttribute && !hasValAttribute) {
+                                MutableRefMetadata r = 
context.createMetadata(MutableRefMetadata.class);
+                                
r.setComponentId(e.getAttribute(VALUE_REF_ATTRIBUTE));
+                                val = r;
+                            } else if (hasValAttribute && !hasValRefAttribute) 
{
+                                MutableValueMetadata v = 
context.createMetadata(MutableValueMetadata.class);
+                                
v.setStringValue(e.getAttribute(VALUE_ATTRIBUTE));
+                                val = v;
                             } else {
-                                // TODO: support other elements ?
-                                throw new 
UnsupportedOperationException("Unsupported child: " + element.getLocalName());
+                                throw new IllegalStateException("Either val or 
val-ref must be specified");
                             }
+                            // TODO: support children elements ?
+                            metadata.addServiceProperty(key, val);
                         }
                     }
-                    else if 
("registration-listener".equals(child.getLocalName())) {
-                        // TODO: registration-listener
+                }
+            }
+            else if (BLUEPRINT_NAMESPACE.equals(child.getNamespaceURI())
+                    && BEAN_ELEMENT.equals(child.getLocalName())) {
+                if (metadata.getServiceComponent() != null) {
+                    throw new IllegalArgumentException("Only one of @ref 
attribute and bean element is allowed");
+                }
+                Target bean = context.parseElement(BeanMetadata.class, 
metadata, child);
+                metadata.setServiceComponent(bean);
+            }
+            else {
+                if (metadata.getServiceComponent() != null) {
+                    throw new IllegalArgumentException("Only one of @ref 
attribute or inlined bean definition element is allowed");
+                }
+                NamespaceHandler handler = 
context.getNamespaceHandler(URI.create(child.getNamespaceURI()));
+                if (handler == null) {
+                    throw new IllegalStateException("No NamespaceHandler found 
for " + child.getNamespaceURI());
+                }
+                Metadata md = handler.parse(child, context);
+                if (!(md instanceof Target)) {
+                    throw new IllegalStateException("NamespaceHandler did not 
return a Target instance but " + md);
+                }
+                metadata.setServiceComponent((Target) md);
+            }
+        }
+        return metadata;
+    }
 
+    private Metadata parseReference(Element element, ParserContext context) {
+        MutableReferenceMetadata metadata = 
context.createMetadata(MutableReferenceMetadata.class);
+        // Parse attributes
+        if (element.hasAttribute(ID_ATTRIBUTE)) {
+            metadata.setId(element.getAttribute(ID_ATTRIBUTE));
+        } else {
+            metadata.setId(generateId(context));
+        }
+        
metadata.setAvailability(CARDINALITY_0_1.equals(element.getAttribute(CARDINALITY_ATTRIBUTE))
+                ? ReferenceMetadata.AVAILABILITY_OPTIONAL
+                : ReferenceMetadata.AVAILABILITY_MANDATORY);
+        metadata.setTimeout(getLong(element.getAttribute(TIMEOUT_ATTRIBUTE), 
DEFAULT_TIMEOUT));
+        metadata.setInterface(element.getAttribute(INTERFACE_ATTRIBUTE));
+        metadata.setFilter(element.getAttribute(FILTER_ATTRIBUTE));
+        String[] dependsOn = 
StringUtils.tokenizeToStringArray(element.getAttribute(DEPENDS_ON_ATTRIBUTE), 
",; ");
+        metadata.setDependsOn(dependsOn != null ? Arrays.asList(dependsOn) : 
null);
+        metadata.setComponentName(element.getAttribute(BEAN_NAME_ELEMENT));
+        // TODO: @context-class-loader
+        // Parse child elements
+        for (Element child : getChildren(element)) {
+            if (element.getNamespaceURI().equals(child.getNamespaceURI())) {
+                if (INTERFACES_ELEMENT.equals(child.getLocalName())) {
+                    List<String> itfs = parseInterfaces(child);
+                    metadata.setExtraInterfaces(itfs);
+                }
+                else if (LISTENER_ELEMENT.equals(child.getLocalName())) {
+                    String bindMethod = 
nonEmpty(child.getAttribute(BIND_METHOD_ATTRIBUTE));
+                    String unbindMethod = 
nonEmpty(child.getAttribute(UNBIND_METHOD_ATTRIBUTE));
+                    String refStr = 
nonEmpty(child.getAttribute(REF_ATTRIBUTE));
+                    Target listenerComponent = null;
+                    if (refStr != null) {
+                        MutableRefMetadata ref = 
context.createMetadata(MutableRefMetadata.class);
+                        ref.setComponentId(refStr);
+                        listenerComponent = ref;
                     }
-                    else if 
("service-properties".equals(child.getLocalName())) {
-                        // TODO: @key-type
-                        for (Element e : getChildren(child)) {
-                            if ("entry".equals(e.getLocalName())) {
-                                NonNullMetadata key;
-                                Metadata val;
-                                boolean hasKeyAttribute = 
e.hasAttribute("key");
-                                boolean hasKeyRefAttribute = 
e.hasAttribute("key-ref");
-                                if (hasKeyRefAttribute && !hasKeyAttribute) {
-                                    MutableRefMetadata r = 
context.createMetadata(MutableRefMetadata.class);
-                                    
r.setComponentId(e.getAttribute("key-ref"));
-                                    key = r;
-                                } else if (hasKeyAttribute && 
!hasKeyRefAttribute) {
-                                    MutableValueMetadata v = 
context.createMetadata(MutableValueMetadata.class);
-                                    v.setStringValue(e.getAttribute("key"));
-                                    key = v;
-                                } else {
-                                    throw new IllegalStateException("Either 
key or key-ref must be specified");
-                                }
-                                // TODO: support children elements ?
-                                boolean hasValAttribute = 
e.hasAttribute("value");
-                                boolean hasValRefAttribute = 
e.hasAttribute("value-ref");
-                                if (hasValRefAttribute && !hasValAttribute) {
-                                    MutableRefMetadata r = 
context.createMetadata(MutableRefMetadata.class);
-                                    
r.setComponentId(e.getAttribute("value-ref"));
-                                    val = r;
-                                } else if (hasValAttribute && 
!hasValRefAttribute) {
-                                    MutableValueMetadata v = 
context.createMetadata(MutableValueMetadata.class);
-                                    v.setStringValue(e.getAttribute("value"));
-                                    val = v;
-                                } else {
-                                    throw new IllegalStateException("Either 
val or val-ref must be specified");
-                                }
-                                // TODO: support children elements ?
-                                metadata.addServiceProperty(key, val);
-                            }
+                    for (Element cchild : getChildren(child)) {
+                        if (listenerComponent != null) {
+                            throw new IllegalArgumentException("Only one of 
@ref attribute or inlined bean definition element is allowed");
                         }
+                        listenerComponent = parseInlinedTarget(context, 
metadata, cchild);
                     }
+                    if (listenerComponent == null) {
+                        throw new IllegalArgumentException("Missing @ref 
attribute or inlined bean definition element");
+                    }
+                    metadata.addServiceListener(listenerComponent, bindMethod, 
unbindMethod);
                 }
-                else {
-                    throw new UnsupportedOperationException("Custom namespaces 
not supported");
-                }
             }
-            return metadata;
+            else {
+                throw new UnsupportedOperationException("Custom namespaces not 
supported");
+            }
         }
-        else if ("bundle".equals(element.getLocalName())) {
+        return metadata;
+    }
 
+    private Target parseInlinedTarget(ParserContext context, ComponentMetadata 
metadata, Element element) {
+        Target listenerComponent;
+        if (BLUEPRINT_NAMESPACE.equals(element.getNamespaceURI())
+                && BEAN_ELEMENT.equals(element.getLocalName())) {
+            listenerComponent = context.parseElement(BeanMetadata.class, 
metadata, element);
         }
-        else if ("set".equals(element.getLocalName())) {
-
+        else {
+            NamespaceHandler handler = 
context.getNamespaceHandler(URI.create(element.getNamespaceURI()));
+            if (handler == null) {
+                throw new IllegalStateException("No NamespaceHandler found for 
" + element.getNamespaceURI());
+            }
+            Metadata md = handler.parse(element, context);
+            if (!(md instanceof Target)) {
+                throw new IllegalStateException("NamespaceHandler did not 
return a Target instance but " + md);
+            }
+            listenerComponent = (Target) md;
         }
-        else if ("list".equals(element.getLocalName())) {
+        return listenerComponent;
+    }
 
+    private List<String> parseInterfaces(Element element) {
+        List<String> extra = new ArrayList<String>();
+        for (Element e : getChildren(element)) {
+            if (VALUE_ELEMENT.equals(e.getLocalName())) {
+                extra.add(getTextValue(e));
+            } else {
+                // The schema support all kind of children for a list type
+                // The type for the spring property is converted to a Class[] 
array
+                // TODO: support other elements ?
+                throw new UnsupportedOperationException("Unsupported child: " 
+ element.getLocalName());
+            }
         }
-        throw new UnsupportedOperationException();
+        return extra;
+    }
+
+    private String nonEmpty(String ref) {
+        return ref != null && ref.isEmpty() ? null : ref;
+    }
+
+    private String generateId(ParserContext context) {
+        String id;
+        do {
+            id = ".spring-osgi-" + ++idCounter;
+        } while 
(context.getComponentDefinitionRegistry().containsComponentDefinition(id));
+        return id;
     }
 
     @Override
@@ -230,7 +397,7 @@ public class SpringOsgiNamespaceHandler
         Assert.notNull(valueEle, "Element must not be null");
         StringBuilder sb = new StringBuilder();
         NodeList nl = valueEle.getChildNodes();
-        for(int i = 0; i < nl.getLength(); ++i) {
+        for(int i = 0, l = nl.getLength(); i < l; ++i) {
             Node item = nl.item(i);
             if(item instanceof CharacterData && !(item instanceof Comment) || 
item instanceof EntityReference) {
                 sb.append(item.getNodeValue());

Modified: aries/branches/java6support/blueprint/blueprint-spring/pom.xml
URL: 
http://svn.apache.org/viewvc/aries/branches/java6support/blueprint/blueprint-spring/pom.xml?rev=1738981&r1=1738980&r2=1738981&view=diff
==============================================================================
--- aries/branches/java6support/blueprint/blueprint-spring/pom.xml (original)
+++ aries/branches/java6support/blueprint/blueprint-spring/pom.xml Wed Apr 13 
18:41:23 2016
@@ -59,8 +59,8 @@
             org.apache.aries.blueprint.spring.Activator
         </aries.osgi.activator>
         <blueprint.api.version>1.0.0</blueprint.api.version>
-        <blueprint.core.version>1.5.0-SNAPSHOT</blueprint.core.version>
-        <blueprint.parser.version>1.4.0-SNAPSHOT</blueprint.parser.version>
+        <blueprint.core.version>1.6.0-SNAPSHOT</blueprint.core.version>
+        <blueprint.parser.version>1.5.0-SNAPSHOT</blueprint.parser.version>
         <!--
         <lastReleaseVersion>1.0.4</lastReleaseVersion>
         -->
@@ -71,8 +71,8 @@
             <id>dev</id>
             <properties>
                 <blueprint.api.version>1.0.1</blueprint.api.version>
-                <blueprint.core.version>1.5.0-SNAPSHOT</blueprint.core.version>
-                
<blueprint.parser.version>1.4.0-SNAPSHOT</blueprint.parser.version>
+                <blueprint.core.version>1.6.0-SNAPSHOT</blueprint.core.version>
+                
<blueprint.parser.version>1.5.0-SNAPSHOT</blueprint.parser.version>
             </properties>
         </profile>
     </profiles>
@@ -103,7 +103,6 @@
             <groupId>org.osgi</groupId>
             <artifactId>org.osgi.compendium</artifactId>
             <scope>provided</scope>
-            <version>4.3.1</version>
         </dependency>
         <dependency>
             <groupId>org.slf4j</groupId>
@@ -143,7 +142,6 @@
         <dependency>
             <groupId>junit</groupId>
             <artifactId>junit</artifactId>
-            <version>4.7</version>
             <scope>test</scope>
         </dependency>
         <dependency>
@@ -182,12 +180,6 @@
             <version>4.2.2.RELEASE</version>
             <scope>test</scope>
         </dependency>
-        <dependency>
-            <groupId>org.apache.aries.blueprint</groupId>
-            <artifactId>org.apache.aries.blueprint.testbundles</artifactId>
-            <version>1.0.0-SNAPSHOT</version>
-            <scope>test</scope>
-        </dependency>
     </dependencies>
 
     <build>

Modified: 
aries/branches/java6support/blueprint/blueprint-spring/src/main/java/org/apache/aries/blueprint/spring/BeansNamespaceHandler.java
URL: 
http://svn.apache.org/viewvc/aries/branches/java6support/blueprint/blueprint-spring/src/main/java/org/apache/aries/blueprint/spring/BeansNamespaceHandler.java?rev=1738981&r1=1738980&r2=1738981&view=diff
==============================================================================
--- 
aries/branches/java6support/blueprint/blueprint-spring/src/main/java/org/apache/aries/blueprint/spring/BeansNamespaceHandler.java
 (original)
+++ 
aries/branches/java6support/blueprint/blueprint-spring/src/main/java/org/apache/aries/blueprint/spring/BeansNamespaceHandler.java
 Wed Apr 13 18:41:23 2016
@@ -52,8 +52,8 @@ public class BeansNamespaceHandler imple
 
     @Override
     public BeanDefinition parse(Element ele, ParserContext parserContext) {
-        getReader(parserContext).parseElement(ele);
-        return null;
+        BeanDefinitionHolder bdh = getReader(parserContext).parseElement(ele);
+        return bdh != null ? bdh.getBeanDefinition() : null;
     }
 
     @Override
@@ -129,11 +129,12 @@ public class BeansNamespaceHandler imple
         }
 
 
-        public void parseElement(Element ele) {
+        public BeanDefinitionHolder parseElement(Element ele) {
             BeanDefinitionParserDelegate parent = this.delegate;
             this.delegate = createDelegate(getReaderContext(), 
ele.getOwnerDocument().getDocumentElement(), parent);
-            parseDefaultElement(ele, this.delegate);
+            BeanDefinitionHolder bdh = parseDefaultElement(ele, this.delegate);
             this.delegate = parent;
+            return bdh;
         }
 
         /**
@@ -199,7 +200,8 @@ public class BeansNamespaceHandler imple
             }
         }
 
-        private void parseDefaultElement(Element ele, 
BeanDefinitionParserDelegate delegate) {
+        private BeanDefinitionHolder parseDefaultElement(Element ele, 
BeanDefinitionParserDelegate delegate) {
+            BeanDefinitionHolder bdh = null;
             if (delegate.nodeNameEquals(ele, IMPORT_ELEMENT)) {
                 importBeanDefinitionResource(ele);
             }
@@ -207,12 +209,13 @@ public class BeansNamespaceHandler imple
                 processAliasRegistration(ele);
             }
             else if (delegate.nodeNameEquals(ele, BEAN_ELEMENT)) {
-                processBeanDefinition(ele, delegate);
+                bdh = processBeanDefinition(ele, delegate);
             }
             else if (delegate.nodeNameEquals(ele, NESTED_BEANS_ELEMENT)) {
                 // recurse
                 doRegisterBeanDefinitions(ele);
             }
+            return bdh;
         }
 
         /**
@@ -315,7 +318,7 @@ public class BeansNamespaceHandler imple
          * Process the given bean element, parsing the bean definition
          * and registering it with the registry.
          */
-        protected void processBeanDefinition(Element ele, 
BeanDefinitionParserDelegate delegate) {
+        protected BeanDefinitionHolder processBeanDefinition(Element ele, 
BeanDefinitionParserDelegate delegate) {
             BeanDefinitionHolder bdHolder = 
delegate.parseBeanDefinitionElement(ele);
             if (bdHolder != null) {
                 bdHolder = delegate.decorateBeanDefinitionIfRequired(ele, 
bdHolder);
@@ -330,6 +333,7 @@ public class BeansNamespaceHandler imple
                 // Send registration event.
                 getReaderContext().fireComponentRegistered(new 
BeanComponentDefinition(bdHolder));
             }
+            return bdHolder;
         }
     }
 

Modified: 
aries/branches/java6support/blueprint/blueprint-spring/src/main/java/org/apache/aries/blueprint/spring/BlueprintNamespaceHandler.java
URL: 
http://svn.apache.org/viewvc/aries/branches/java6support/blueprint/blueprint-spring/src/main/java/org/apache/aries/blueprint/spring/BlueprintNamespaceHandler.java?rev=1738981&r1=1738980&r2=1738981&view=diff
==============================================================================
--- 
aries/branches/java6support/blueprint/blueprint-spring/src/main/java/org/apache/aries/blueprint/spring/BlueprintNamespaceHandler.java
 (original)
+++ 
aries/branches/java6support/blueprint/blueprint-spring/src/main/java/org/apache/aries/blueprint/spring/BlueprintNamespaceHandler.java
 Wed Apr 13 18:41:23 2016
@@ -102,7 +102,22 @@ public class BlueprintNamespaceHandler i
             org.springframework.beans.factory.xml.ParserContext springContext
                     = getOrCreateParserContext(parserContext);
             // Parse spring bean
-            springHandler.parse(element, springContext);
+            BeanDefinition bd = springHandler.parse(element, springContext);
+            for (String name : 
springContext.getRegistry().getBeanDefinitionNames()) {
+                if (springContext.getRegistry().getBeanDefinition(name) == bd) 
{
+                    ComponentDefinitionRegistry registry = 
parserContext.getComponentDefinitionRegistry();
+                    if (registry.containsComponentDefinition(name)) {
+                        // Hack: we can't really make the difference between a 
top level bean
+                        // and an inlined bean when using custom (eventually 
nested) namespaces.
+                        // To work around the problem, the 
BlueprintBeanFactory will always register
+                        // a BeanMetadata for each bean, but here, we 
unregister it and return it instead
+                        // so that the caller is responsible for registering 
the metadata.
+                        ComponentMetadata metadata = 
registry.getComponentDefinition(name);
+                        registry.removeComponentDefinition(name);
+                        return metadata;
+                    }
+                }
+            }
             return null;
         } catch (Exception e) {
             throw new RuntimeException(e);

Modified: 
aries/branches/java6support/blueprint/blueprint-spring/src/main/java/org/apache/aries/blueprint/spring/SpringBeanProcessor.java
URL: 
http://svn.apache.org/viewvc/aries/branches/java6support/blueprint/blueprint-spring/src/main/java/org/apache/aries/blueprint/spring/SpringBeanProcessor.java?rev=1738981&r1=1738980&r2=1738981&view=diff
==============================================================================
--- 
aries/branches/java6support/blueprint/blueprint-spring/src/main/java/org/apache/aries/blueprint/spring/SpringBeanProcessor.java
 (original)
+++ 
aries/branches/java6support/blueprint/blueprint-spring/src/main/java/org/apache/aries/blueprint/spring/SpringBeanProcessor.java
 Wed Apr 13 18:41:23 2016
@@ -58,7 +58,7 @@ public class SpringBeanProcessor impleme
 
     @Override
     public Object beforeInit(Object o, String s, BeanCreator beanCreator, 
BeanMetadata beanMetadata) {
-        if (beanMetadata instanceof SpringMetadata) {
+        if (beanMetadata instanceof SpringMetadata || beanMetadata == null) {
             return o;
         }
         if (o instanceof Aware) {

Modified: aries/branches/java6support/blueprint/pom.xml
URL: 
http://svn.apache.org/viewvc/aries/branches/java6support/blueprint/pom.xml?rev=1738981&r1=1738980&r2=1738981&view=diff
==============================================================================
--- aries/branches/java6support/blueprint/pom.xml (original)
+++ aries/branches/java6support/blueprint/pom.xml Wed Apr 13 18:41:23 2016
@@ -50,11 +50,11 @@
         <module>blueprint-web</module>
         <module>blueprint-web-osgi</module>
         <module>blueprint-jexl-evaluator</module>
+        <module>blueprint-repository</module>
         <module>blueprint-sample</module>
         <module>blueprint-annotation-api</module>
         <module>blueprint-annotation-impl</module>
         <module>blueprint-authz</module>
-        <module>blueprint-testbundles</module>
         <module>blueprint-spring</module>
         <module>blueprint-spring-extender</module>
         <module>blueprint-sample-annotation</module>
@@ -62,6 +62,8 @@
         <module>blueprint-sample-war</module>
         <module>blueprint-testbundlea</module>
         <module>blueprint-testbundleb</module>
+        <module>blueprint-testbundlee</module>
+        <module>blueprint-testbundles</module>
         <module>blueprint-testquiescebundle</module>
         <module>blueprint-itests</module>
     </modules>

Modified: 
aries/branches/java6support/jmx/jmx-core/src/main/java/org/apache/aries/jmx/codec/ServiceEventData.java
URL: 
http://svn.apache.org/viewvc/aries/branches/java6support/jmx/jmx-core/src/main/java/org/apache/aries/jmx/codec/ServiceEventData.java?rev=1738981&r1=1738980&r2=1738981&view=diff
==============================================================================
--- 
aries/branches/java6support/jmx/jmx-core/src/main/java/org/apache/aries/jmx/codec/ServiceEventData.java
 (original)
+++ 
aries/branches/java6support/jmx/jmx-core/src/main/java/org/apache/aries/jmx/codec/ServiceEventData.java
 Wed Apr 13 18:41:23 2016
@@ -83,14 +83,17 @@ public class ServiceEventData {
     }
     
     public ServiceEventData(ServiceEvent serviceEvent) {
+        @SuppressWarnings("rawtypes")
         ServiceReference serviceReference = serviceEvent.getServiceReference();
         this.serviceId = (Long) 
serviceReference.getProperty(Constants.SERVICE_ID);
         this.serviceInterfaces = (String[]) 
serviceReference.getProperty(Constants.OBJECTCLASS);
-        Bundle bundle = serviceReference.getBundle();
-        this.bundleId = bundle.getBundleId();
-        this.bundleLocation = bundle.getLocation();
-        this.bundleSymbolicName = bundle.getSymbolicName();
         this.eventType = serviceEvent.getType();
+        Bundle bundle = serviceReference.getBundle();
+        if (bundle != null) {
+            this.bundleId = bundle.getBundleId();
+            this.bundleLocation = bundle.getLocation();
+            this.bundleSymbolicName = bundle.getSymbolicName();
+        }
     }
     
     /**

Modified: aries/branches/java6support/jpa/examples/pom.xml
URL: 
http://svn.apache.org/viewvc/aries/branches/java6support/jpa/examples/pom.xml?rev=1738981&r1=1738980&r2=1738981&view=diff
==============================================================================
--- aries/branches/java6support/jpa/examples/pom.xml (original)
+++ aries/branches/java6support/jpa/examples/pom.xml Wed Apr 13 18:41:23 2016
@@ -5,8 +5,7 @@
     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/xsd/maven-4.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>
 
@@ -18,7 +17,7 @@
     <parent>
         <groupId>org.apache.aries.jpa</groupId>
         <artifactId>org.apache.aries.jpa.parent</artifactId>
-        <version>2.3.0-SNAPSHOT</version>
+        <version>2.4.0-SNAPSHOT</version>
         <relativePath>../jpa-parent</relativePath>
     </parent>
 
@@ -76,14 +75,14 @@
             <dependency>
                 <groupId>org.apache.aries.jpa</groupId>
                 <artifactId>org.apache.aries.jpa.api</artifactId>
-                <version>${aries.jpa.version}</version>
+                <version>${project.version}</version>
             </dependency>
 
             <!-- Test dependencies -->
             <dependency>
                 <groupId>org.apache.aries.jpa</groupId>
                 <artifactId>org.apache.aries.jpa.support</artifactId>
-                <version>${aries.jpa.version}</version>
+                <version>${project.version}</version>
                 <scope>test</scope>
             </dependency>
             <dependency>

Modified: aries/branches/java6support/jpa/examples/tasklist-blueprint/pom.xml
URL: 
http://svn.apache.org/viewvc/aries/branches/java6support/jpa/examples/tasklist-blueprint/pom.xml?rev=1738981&r1=1738980&r2=1738981&view=diff
==============================================================================
--- aries/branches/java6support/jpa/examples/tasklist-blueprint/pom.xml 
(original)
+++ aries/branches/java6support/jpa/examples/tasklist-blueprint/pom.xml Wed Apr 
13 18:41:23 2016
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.apache.aries.jpa.example</groupId>
         <artifactId>org.apache.aries.jpa.example.parent</artifactId>
-        <version>2.3.0-SNAPSHOT</version>
+        <version>2.4.0-SNAPSHOT</version>
         <relativePath>..</relativePath>
     </parent>
     <artifactId>org.apache.aries.jpa.example.tasklist.blueprint</artifactId>

Modified: 
aries/branches/java6support/jpa/examples/tasklist-blueprint/src/test/java/org/apache/aries/jpa/example/tasklist/blueprint/impl/TaskServiceImplTest.java
URL: 
http://svn.apache.org/viewvc/aries/branches/java6support/jpa/examples/tasklist-blueprint/src/test/java/org/apache/aries/jpa/example/tasklist/blueprint/impl/TaskServiceImplTest.java?rev=1738981&r1=1738980&r2=1738981&view=diff
==============================================================================
--- 
aries/branches/java6support/jpa/examples/tasklist-blueprint/src/test/java/org/apache/aries/jpa/example/tasklist/blueprint/impl/TaskServiceImplTest.java
 (original)
+++ 
aries/branches/java6support/jpa/examples/tasklist-blueprint/src/test/java/org/apache/aries/jpa/example/tasklist/blueprint/impl/TaskServiceImplTest.java
 Wed Apr 13 18:41:23 2016
@@ -34,6 +34,8 @@ import org.junit.Test;
 public class TaskServiceImplTest {
     @Test
     public void testPersistence() {
+        // Make sure derby.log is in target
+        System.setProperty("derby.stream.error.file", "target/derby.log");
         TaskServiceImpl taskServiceImpl = new TaskServiceImpl();
         EntityManagerFactory emf = createTestEMF();
         final EntityManager em = emf.createEntityManager();

Modified: aries/branches/java6support/jpa/examples/tasklist-ds/pom.xml
URL: 
http://svn.apache.org/viewvc/aries/branches/java6support/jpa/examples/tasklist-ds/pom.xml?rev=1738981&r1=1738980&r2=1738981&view=diff
==============================================================================
--- aries/branches/java6support/jpa/examples/tasklist-ds/pom.xml (original)
+++ aries/branches/java6support/jpa/examples/tasklist-ds/pom.xml Wed Apr 13 
18:41:23 2016
@@ -5,14 +5,13 @@
     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/xsd/maven-4.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.jpa.example</groupId>
         <artifactId>org.apache.aries.jpa.example.parent</artifactId>
-        <version>2.3.0-SNAPSHOT</version>
+        <version>2.4.0-SNAPSHOT</version>
         <relativePath>..</relativePath>
     </parent>
     <artifactId>org.apache.aries.jpa.example.tasklist.ds</artifactId>

Modified: aries/branches/java6support/jpa/examples/tasklist-model/pom.xml
URL: 
http://svn.apache.org/viewvc/aries/branches/java6support/jpa/examples/tasklist-model/pom.xml?rev=1738981&r1=1738980&r2=1738981&view=diff
==============================================================================
--- aries/branches/java6support/jpa/examples/tasklist-model/pom.xml (original)
+++ aries/branches/java6support/jpa/examples/tasklist-model/pom.xml Wed Apr 13 
18:41:23 2016
@@ -5,15 +5,14 @@
     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/xsd/maven-4.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.jpa.example</groupId>
         <artifactId>org.apache.aries.jpa.example.parent</artifactId>
-        <version>2.3.0-SNAPSHOT</version>
+        <version>2.4.0-SNAPSHOT</version>
         <relativePath>..</relativePath>
     </parent>
 

Modified: 
aries/branches/java6support/jpa/itests/jpa-container-blueprint-testbundle/pom.xml
URL: 
http://svn.apache.org/viewvc/aries/branches/java6support/jpa/itests/jpa-container-blueprint-testbundle/pom.xml?rev=1738981&r1=1738980&r2=1738981&view=diff
==============================================================================
--- 
aries/branches/java6support/jpa/itests/jpa-container-blueprint-testbundle/pom.xml
 (original)
+++ 
aries/branches/java6support/jpa/itests/jpa-container-blueprint-testbundle/pom.xml
 Wed Apr 13 18:41:23 2016
@@ -24,7 +24,7 @@
     <parent>
         <groupId>org.apache.aries.jpa.itest</groupId>
         <artifactId>org.apache.aries.jpa.itest.parent</artifactId>
-        <version>2.3.0-SNAPSHOT</version>
+        <version>2.4.0-SNAPSHOT</version>
         <relativePath>..</relativePath>
     </parent>
 

Modified: 
aries/branches/java6support/jpa/itests/jpa-container-blueprint-testbundle/src/main/resources/OSGI-INF/blueprint/config.xml
URL: 
http://svn.apache.org/viewvc/aries/branches/java6support/jpa/itests/jpa-container-blueprint-testbundle/src/main/resources/OSGI-INF/blueprint/config.xml?rev=1738981&r1=1738980&r2=1738981&view=diff
==============================================================================
--- 
aries/branches/java6support/jpa/itests/jpa-container-blueprint-testbundle/src/main/resources/OSGI-INF/blueprint/config.xml
 (original)
+++ 
aries/branches/java6support/jpa/itests/jpa-container-blueprint-testbundle/src/main/resources/OSGI-INF/blueprint/config.xml
 Wed Apr 13 18:41:23 2016
@@ -64,6 +64,13 @@
     <bean id="carServiceEmJtaAnn"
         
class="org.apache.aries.jpa.container.itest.bundle.blueprint.impl.CarServiceEmJtaAnn">
     </bean>
+    
+    <service 
interface="org.apache.aries.jpa.container.itest.entities.CarService">
+        <service-properties>
+            <entry key="type" value="emJtaAnnInlined" />
+        </service-properties>
+        <bean 
class="org.apache.aries.jpa.container.itest.bundle.blueprint.impl.CarServiceEmJtaAnn"/>
+    </service>
 
     <service ref="carServiceEmSupplier"
         interface="org.apache.aries.jpa.container.itest.entities.CarService">

Modified: 
aries/branches/java6support/jpa/itests/jpa-container-itest-karaf/pom.xml
URL: 
http://svn.apache.org/viewvc/aries/branches/java6support/jpa/itests/jpa-container-itest-karaf/pom.xml?rev=1738981&r1=1738980&r2=1738981&view=diff
==============================================================================
--- aries/branches/java6support/jpa/itests/jpa-container-itest-karaf/pom.xml 
(original)
+++ aries/branches/java6support/jpa/itests/jpa-container-itest-karaf/pom.xml 
Wed Apr 13 18:41:23 2016
@@ -24,7 +24,7 @@
     <parent>
         <groupId>org.apache.aries.jpa.itest</groupId>
         <artifactId>org.apache.aries.jpa.itest.parent</artifactId>
-        <version>2.3.0-SNAPSHOT</version>
+        <version>2.4.0-SNAPSHOT</version>
         <relativePath>..</relativePath>
     </parent>
 

Modified: aries/branches/java6support/jpa/itests/jpa-container-itest/pom.xml
URL: 
http://svn.apache.org/viewvc/aries/branches/java6support/jpa/itests/jpa-container-itest/pom.xml?rev=1738981&r1=1738980&r2=1738981&view=diff
==============================================================================
--- aries/branches/java6support/jpa/itests/jpa-container-itest/pom.xml 
(original)
+++ aries/branches/java6support/jpa/itests/jpa-container-itest/pom.xml Wed Apr 
13 18:41:23 2016
@@ -24,7 +24,7 @@
     <parent>
         <groupId>org.apache.aries.jpa.itest</groupId>
         <artifactId>org.apache.aries.jpa.itest.parent</artifactId>
-        <version>2.3.0-SNAPSHOT</version>
+        <version>2.4.0-SNAPSHOT</version>
         <relativePath>..</relativePath>
     </parent>
 

Modified: 
aries/branches/java6support/jpa/itests/jpa-container-itest/src/test/java/org/apache/aries/jpa/blueprint/aries/itest/BlueprintTest.java
URL: 
http://svn.apache.org/viewvc/aries/branches/java6support/jpa/itests/jpa-container-itest/src/test/java/org/apache/aries/jpa/blueprint/aries/itest/BlueprintTest.java?rev=1738981&r1=1738980&r2=1738981&view=diff
==============================================================================
--- 
aries/branches/java6support/jpa/itests/jpa-container-itest/src/test/java/org/apache/aries/jpa/blueprint/aries/itest/BlueprintTest.java
 (original)
+++ 
aries/branches/java6support/jpa/itests/jpa-container-itest/src/test/java/org/apache/aries/jpa/blueprint/aries/itest/BlueprintTest.java
 Wed Apr 13 18:41:23 2016
@@ -102,6 +102,11 @@ public class BlueprintTest extends Abstr
     }
     
     @Test
+    public void testInlined() throws Exception {
+        carRealTransactionalLifecycle(getCarService("emJtaAnnInlined"));
+    }
+    
+    @Test
     public void testCoordinationLifecycle() throws InterruptedException, 
ExecutionException {
         CarService carService = getCarService("em");
         assertNoCars(carService);



Reply via email to