You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by jw...@apache.org on 2016/06/15 19:23:47 UTC

svn commit: r1748624 [1/3] - in /aries/branches/java6support/blueprint: ./ blueprint-bundle/ blueprint-cm/ blueprint-cm/src/main/java/org/apache/aries/blueprint/compendium/cm/ blueprint-cm/src/main/resources/OSGI-INF/blueprint/ blueprint-core/ blueprin...

Author: jwross
Date: Wed Jun 15 19:23:47 2016
New Revision: 1748624

URL: http://svn.apache.org/viewvc?rev=1748624&view=rev
Log:
Merge ^/aries/trunk/blueprint r1728111 through r1748620 into java6support branch.

Added:
    aries/branches/java6support/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/namespace/MissingNamespaceException.java
      - copied unchanged from r1748620, aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/namespace/MissingNamespaceException.java
    aries/branches/java6support/blueprint/blueprint-core/src/test/java/org/apache/aries/blueprint/pojos/PojoGenerics2.java
      - copied unchanged from r1748620, aries/trunk/blueprint/blueprint-core/src/test/java/org/apache/aries/blueprint/pojos/PojoGenerics2.java
    aries/branches/java6support/blueprint/blueprint-itests/src/test/java/org/apache/aries/blueprint/itests/ParserServiceImportXSDsBetweenNamespaceHandlersTest.java
      - copied unchanged from r1748620, aries/trunk/blueprint/blueprint-itests/src/test/java/org/apache/aries/blueprint/itests/ParserServiceImportXSDsBetweenNamespaceHandlersTest.java
    aries/branches/java6support/blueprint/blueprint-itests/src/test/java/org/apache/aries/blueprint/itests/cm/handler/
      - copied from r1748620, aries/trunk/blueprint/blueprint-itests/src/test/java/org/apache/aries/blueprint/itests/cm/handler/
    aries/branches/java6support/blueprint/blueprint-itests/src/test/java/org/apache/aries/blueprint/itests/cm/handler/Aries1503aNamespaceHandler.java
      - copied unchanged from r1748620, aries/trunk/blueprint/blueprint-itests/src/test/java/org/apache/aries/blueprint/itests/cm/handler/Aries1503aNamespaceHandler.java
    aries/branches/java6support/blueprint/blueprint-itests/src/test/java/org/apache/aries/blueprint/itests/cm/handler/Aries1503bNamespaceHandler.java
      - copied unchanged from r1748620, aries/trunk/blueprint/blueprint-itests/src/test/java/org/apache/aries/blueprint/itests/cm/handler/Aries1503bNamespaceHandler.java
    aries/branches/java6support/blueprint/blueprint-itests/src/test/resources/ImportNamespacesTest.xml
      - copied unchanged from r1748620, aries/trunk/blueprint/blueprint-itests/src/test/resources/ImportNamespacesTest.xml
    aries/branches/java6support/blueprint/blueprint-itests/src/test/resources/blueprint-aries-1503-2.xml
      - copied unchanged from r1748620, aries/trunk/blueprint/blueprint-itests/src/test/resources/blueprint-aries-1503-2.xml
    aries/branches/java6support/blueprint/blueprint-itests/src/test/resources/blueprint-aries-1503-2.xsd
      - copied unchanged from r1748620, aries/trunk/blueprint/blueprint-itests/src/test/resources/blueprint-aries-1503-2.xsd
    aries/branches/java6support/blueprint/blueprint-itests/src/test/resources/blueprint-aries-1503.xml
      - copied unchanged from r1748620, aries/trunk/blueprint/blueprint-itests/src/test/resources/blueprint-aries-1503.xml
    aries/branches/java6support/blueprint/blueprint-itests/src/test/resources/blueprint-aries-1503.xsd
      - copied unchanged from r1748620, aries/trunk/blueprint/blueprint-itests/src/test/resources/blueprint-aries-1503.xsd
    aries/branches/java6support/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/Activation.java
      - copied unchanged from r1748620, aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/Activation.java
    aries/branches/java6support/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Argument.java
      - copied unchanged from r1748620, aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Argument.java
    aries/branches/java6support/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/ArgumentWriter.java
      - copied unchanged from r1748620, aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/ArgumentWriter.java
    aries/branches/java6support/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/service/
      - copied from r1748620, aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/service/
    aries/branches/java6support/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/service/ServiceProvider.java
      - copied unchanged from r1748620, aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/service/ServiceProvider.java
    aries/branches/java6support/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/service/ServiceProviderWriter.java
      - copied unchanged from r1748620, aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/service/ServiceProviderWriter.java
    aries/branches/java6support/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/AnnotatedService.java
      - copied unchanged from r1748620, aries/trunk/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/AnnotatedService.java
    aries/branches/java6support/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/BeanWithSetters.java
      - copied unchanged from r1748620, aries/trunk/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/BeanWithSetters.java
    aries/branches/java6support/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/MyBean5.java
      - copied unchanged from r1748620, aries/trunk/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/MyBean5.java
    aries/branches/java6support/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/MyBean6.java
      - copied unchanged from r1748620, aries/trunk/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/MyBean6.java
    aries/branches/java6support/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/MyFactoryBeanAsService.java
      - copied unchanged from r1748620, aries/trunk/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/MyFactoryBeanAsService.java
    aries/branches/java6support/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/MyFactoryNamedBean.java
      - copied unchanged from r1748620, aries/trunk/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/MyFactoryNamedBean.java
    aries/branches/java6support/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/MyProducedWithConstructor.java
      - copied unchanged from r1748620, aries/trunk/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/MyProducedWithConstructor.java
    aries/branches/java6support/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/ServiceAImplQualified.java
      - copied unchanged from r1748620, aries/trunk/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/ServiceAImplQualified.java
    aries/branches/java6support/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/ServiceC.java
      - copied unchanged from r1748620, aries/trunk/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/ServiceC.java
    aries/branches/java6support/blueprint/blueprint-testbundlea/src/main/java/org/apache/aries/blueprint/testbundlea/NSHandlerHeight.java
      - copied unchanged from r1748620, aries/trunk/blueprint/blueprint-testbundlea/src/main/java/org/apache/aries/blueprint/testbundlea/NSHandlerHeight.java
    aries/branches/java6support/blueprint/blueprint-testbundlea/src/main/resources/org/apache/aries/blueprint/testbundlea/nshandlerheight.xsd
      - copied unchanged from r1748620, aries/trunk/blueprint/blueprint-testbundlea/src/main/resources/org/apache/aries/blueprint/testbundlea/nshandlerheight.xsd
    aries/branches/java6support/blueprint/blueprint-testbundlea/src/main/resources/org/apache/aries/blueprint/testbundlea/nshandlerheightinc2.xsd
      - copied unchanged from r1748620, aries/trunk/blueprint/blueprint-testbundlea/src/main/resources/org/apache/aries/blueprint/testbundlea/nshandlerheightinc2.xsd
    aries/branches/java6support/blueprint/blueprint-testbundlea/src/main/resources/org/apache/aries/blueprint/testbundlea/nshandlerheightincluded.xsd
      - copied unchanged from r1748620, aries/trunk/blueprint/blueprint-testbundlea/src/main/resources/org/apache/aries/blueprint/testbundlea/nshandlerheightincluded.xsd
Removed:
    aries/branches/java6support/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/OsgiServiceProviderWriter.java
    aries/branches/java6support/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/BuiltInBeanRef.java
Modified:
    aries/branches/java6support/blueprint/   (props changed)
    aries/branches/java6support/blueprint/blueprint-bundle/pom.xml
    aries/branches/java6support/blueprint/blueprint-cm/pom.xml
    aries/branches/java6support/blueprint/blueprint-cm/src/main/java/org/apache/aries/blueprint/compendium/cm/CmNamespaceHandler.java
    aries/branches/java6support/blueprint/blueprint-cm/src/main/resources/OSGI-INF/blueprint/blueprint-cm.xml
    aries/branches/java6support/blueprint/blueprint-core/pom.xml
    aries/branches/java6support/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/AbstractServiceReferenceRecipe.java
    aries/branches/java6support/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/AggregateConverter.java
    aries/branches/java6support/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintContainerImpl.java
    aries/branches/java6support/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/GenericType.java
    aries/branches/java6support/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/namespace/NamespaceHandlerRegistryImpl.java
    aries/branches/java6support/blueprint/blueprint-core/src/test/java/org/apache/aries/blueprint/WiringTest.java
    aries/branches/java6support/blueprint/blueprint-core/src/test/java/org/apache/aries/blueprint/container/AggregateConverterTest.java
    aries/branches/java6support/blueprint/blueprint-core/src/test/java/org/apache/aries/blueprint/container/BeanRecipeTest.java
    aries/branches/java6support/blueprint/blueprint-core/src/test/java/org/apache/aries/blueprint/container/GenericTypeTest.java
    aries/branches/java6support/blueprint/blueprint-core/src/test/resources/test-generics.xml
    aries/branches/java6support/blueprint/blueprint-itests/pom.xml
    aries/branches/java6support/blueprint/blueprint-itests/src/test/java/org/apache/aries/blueprint/itests/SpringTest.java
    aries/branches/java6support/blueprint/blueprint-maven-plugin/   (props changed)
    aries/branches/java6support/blueprint/blueprint-maven-plugin/pom.xml
    aries/branches/java6support/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/FilteredClassFinder.java
    aries/branches/java6support/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/GenerateMojo.java
    aries/branches/java6support/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/Generator.java
    aries/branches/java6support/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/OsgiServiceRefWriter.java
    aries/branches/java6support/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Bean.java
    aries/branches/java6support/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/BeanRef.java
    aries/branches/java6support/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Context.java
    aries/branches/java6support/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Introspector.java
    aries/branches/java6support/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Matcher.java
    aries/branches/java6support/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/OsgiServiceRef.java
    aries/branches/java6support/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/ProducedBean.java
    aries/branches/java6support/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Property.java
    aries/branches/java6support/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/GeneratorTest.java
    aries/branches/java6support/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/bad/BadFieldBean1.java
    aries/branches/java6support/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/bad/BadFieldBean2.java
    aries/branches/java6support/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/bad/BadFieldBean3.java
    aries/branches/java6support/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/bad/FieldBean4.java
    aries/branches/java6support/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/bad/ParentWithField.java
    aries/branches/java6support/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/bad/ParentWithInjectedField.java
    aries/branches/java6support/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/model/BeanTest.java
    aries/branches/java6support/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/MyBean1.java
    aries/branches/java6support/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/MyBean4.java
    aries/branches/java6support/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/MyFactoryBean.java
    aries/branches/java6support/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/MyProduced.java
    aries/branches/java6support/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/ServiceReferences.java
    aries/branches/java6support/blueprint/blueprint-noosgi/pom.xml
    aries/branches/java6support/blueprint/blueprint-parser/pom.xml
    aries/branches/java6support/blueprint/blueprint-parser/src/main/java/org/apache/aries/blueprint/NamespaceHandler2.java
    aries/branches/java6support/blueprint/blueprint-spring-extender/pom.xml
    aries/branches/java6support/blueprint/blueprint-spring/pom.xml
    aries/branches/java6support/blueprint/blueprint-spring/src/main/java/org/apache/aries/blueprint/spring/BlueprintNamespaceHandler.java
    aries/branches/java6support/blueprint/blueprint-spring/src/main/java/org/apache/aries/blueprint/spring/SpringApplicationContext.java
    aries/branches/java6support/blueprint/blueprint-testbundlea/pom.xml
    aries/branches/java6support/blueprint/blueprint-testbundlea/src/main/resources/OSGI-INF/blueprint/config.xml
    aries/branches/java6support/blueprint/blueprint-testbundleb/pom.xml
    aries/branches/java6support/blueprint/blueprint-testbundleb/src/main/resources/OSGI-INF/blueprint/config.xml
    aries/branches/java6support/blueprint/blueprint-testbundles/src/main/resources/OSGI-INF/blueprint/config.xml

Propchange: aries/branches/java6support/blueprint/
------------------------------------------------------------------------------
--- svn:mergeinfo (added)
+++ svn:mergeinfo Wed Jun 15 19:23:47 2016
@@ -0,0 +1,2 @@
+/aries/branches/1.0-prototype/blueprint:1306564-1337594
+/aries/trunk/blueprint:1728111-1748620

Modified: aries/branches/java6support/blueprint/blueprint-bundle/pom.xml
URL: http://svn.apache.org/viewvc/aries/branches/java6support/blueprint/blueprint-bundle/pom.xml?rev=1748624&r1=1748623&r2=1748624&view=diff
==============================================================================
--- aries/branches/java6support/blueprint/blueprint-bundle/pom.xml (original)
+++ aries/branches/java6support/blueprint/blueprint-bundle/pom.xml Wed Jun 15 19:23:47 2016
@@ -122,13 +122,13 @@
         <dependency>
             <groupId>org.apache.aries.blueprint</groupId>
             <artifactId>org.apache.aries.blueprint.core</artifactId>
-            <version>1.6.0-SNAPSHOT</version>
+            <version>1.6.3-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.aries.blueprint</groupId>
             <artifactId>org.apache.aries.blueprint.cm</artifactId>
-            <version>1.0.8-SNAPSHOT</version>
+            <version>1.0.9-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
         <dependency>

Modified: aries/branches/java6support/blueprint/blueprint-cm/pom.xml
URL: http://svn.apache.org/viewvc/aries/branches/java6support/blueprint/blueprint-cm/pom.xml?rev=1748624&r1=1748623&r2=1748624&view=diff
==============================================================================
--- aries/branches/java6support/blueprint/blueprint-cm/pom.xml (original)
+++ aries/branches/java6support/blueprint/blueprint-cm/pom.xml Wed Jun 15 19:23:47 2016
@@ -31,7 +31,7 @@
     <groupId>org.apache.aries.blueprint</groupId>
     <artifactId>org.apache.aries.blueprint.cm</artifactId>
     <packaging>bundle</packaging>
-    <version>1.0.8-SNAPSHOT</version>
+    <version>1.0.9-SNAPSHOT</version>
     <name>Apache Aries Blueprint CM</name>
     <description>
         This bundle contains the ConfigAdmin namespace for blueprint.
@@ -56,9 +56,9 @@
         </aries.osgi.private.pkg>
 
         <blueprint.api.version>1.0.0</blueprint.api.version>
-        <blueprint.core.version>1.2.0</blueprint.core.version>
-        <blueprint.parser.version>1.1.0</blueprint.parser.version>
-        <lastReleaseVersion>1.0.4</lastReleaseVersion>
+        <blueprint.core.version>1.6.3-SNAPSHOT</blueprint.core.version>
+        <blueprint.parser.version>1.4.0</blueprint.parser.version>
+        <lastReleaseVersion>1.0.8</lastReleaseVersion>
     </properties>
 
     <profiles>
@@ -66,8 +66,8 @@
             <id>dev</id>
             <properties>
                 <blueprint.api.version>1.0.1</blueprint.api.version>
-                <blueprint.core.version>1.4.4-SNAPSHOT</blueprint.core.version>
-                <blueprint.parser.version>1.3.2-SNAPSHOT</blueprint.parser.version>
+                <blueprint.core.version>1.6.1-SNAPSHOT</blueprint.core.version>
+                <blueprint.parser.version>1.4.0</blueprint.parser.version>
             </properties>
         </profile>
     </profiles>

Modified: aries/branches/java6support/blueprint/blueprint-cm/src/main/java/org/apache/aries/blueprint/compendium/cm/CmNamespaceHandler.java
URL: http://svn.apache.org/viewvc/aries/branches/java6support/blueprint/blueprint-cm/src/main/java/org/apache/aries/blueprint/compendium/cm/CmNamespaceHandler.java?rev=1748624&r1=1748623&r2=1748624&view=diff
==============================================================================
--- aries/branches/java6support/blueprint/blueprint-cm/src/main/java/org/apache/aries/blueprint/compendium/cm/CmNamespaceHandler.java (original)
+++ aries/branches/java6support/blueprint/blueprint-cm/src/main/java/org/apache/aries/blueprint/compendium/cm/CmNamespaceHandler.java Wed Jun 15 19:23:47 2016
@@ -40,6 +40,8 @@ import org.apache.aries.blueprint.mutabl
 import org.apache.aries.blueprint.mutable.MutableReferenceMetadata;
 import org.apache.aries.blueprint.mutable.MutableValueMetadata;
 import org.apache.aries.blueprint.utils.ServiceListener;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.FrameworkUtil;
 import org.osgi.service.blueprint.container.ComponentDefinitionException;
 import org.osgi.service.blueprint.reflect.BeanMetadata;
 import org.osgi.service.blueprint.reflect.BeanProperty;
@@ -148,7 +150,7 @@ public class CmNamespaceHandler implemen
     }
 
     public void setConfigAdmin(ConfigurationAdmin configAdmin) {
-        this.configAdmin = configAdmin;
+        CmNamespaceHandler.configAdmin = configAdmin;
     }
 
     public URL getSchemaLocation(String namespace) {
@@ -160,6 +162,21 @@ public class CmNamespaceHandler implemen
             return getClass().getResource("blueprint-cm-1.1.0.xsd");
         } else if (BLUEPRINT_CM_NAMESPACE_1_0.equals(namespace)) {
             return getClass().getResource("blueprint-cm-1.0.0.xsd");
+        } else if (namespace.startsWith("http://aries.apache.org/blueprint/xmlns/blueprint-ext")) {
+            try {
+                Class<?> extNsHandlerClazz;
+                Bundle extBundle = FrameworkUtil.getBundle(PlaceholdersUtils.class);
+                if (extBundle == null) {
+                    // we may not be in OSGi environment
+                    extNsHandlerClazz = getClass().getClassLoader().loadClass("org.apache.aries.blueprint.ext.impl.ExtNamespaceHandler");
+                } else {
+                    extNsHandlerClazz = extBundle.loadClass("org.apache.aries.blueprint.ext.impl.ExtNamespaceHandler");
+                }
+                return ((NamespaceHandler) extNsHandlerClazz.newInstance()).getSchemaLocation(namespace);
+            } catch (Throwable t) {
+                LOGGER.warn("Could not locate ext namespace schema", t);
+                return null;
+            }
         } else {
             return null;
         }

Modified: aries/branches/java6support/blueprint/blueprint-cm/src/main/resources/OSGI-INF/blueprint/blueprint-cm.xml
URL: http://svn.apache.org/viewvc/aries/branches/java6support/blueprint/blueprint-cm/src/main/resources/OSGI-INF/blueprint/blueprint-cm.xml?rev=1748624&r1=1748623&r2=1748624&view=diff
==============================================================================
--- aries/branches/java6support/blueprint/blueprint-cm/src/main/resources/OSGI-INF/blueprint/blueprint-cm.xml (original)
+++ aries/branches/java6support/blueprint/blueprint-cm/src/main/resources/OSGI-INF/blueprint/blueprint-cm.xml Wed Jun 15 19:23:47 2016
@@ -21,22 +21,34 @@
 
     <bean id="CmNamespaceHandler" class="org.apache.aries.blueprint.compendium.cm.CmNamespaceHandler"/>
 
-    <service ref="CmNamespaceHandler" interface="org.apache.aries.blueprint.NamespaceHandler">
+    <service ref="CmNamespaceHandler">
+        <interfaces>
+            <value>org.apache.aries.blueprint.NamespaceHandler</value>
+        </interfaces>
         <service-properties>
             <entry key="osgi.service.blueprint.namespace" value="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.0.0"/>
         </service-properties>
     </service>
-    <service ref="CmNamespaceHandler" interface="org.apache.aries.blueprint.NamespaceHandler">
+    <service ref="CmNamespaceHandler">
+        <interfaces>
+            <value>org.apache.aries.blueprint.NamespaceHandler</value>
+        </interfaces>
         <service-properties>
             <entry key="osgi.service.blueprint.namespace" value="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0"/>
         </service-properties>
     </service>
-    <service ref="CmNamespaceHandler" interface="org.apache.aries.blueprint.NamespaceHandler">
+    <service ref="CmNamespaceHandler">
+        <interfaces>
+            <value>org.apache.aries.blueprint.NamespaceHandler</value>
+        </interfaces>
         <service-properties>
             <entry key="osgi.service.blueprint.namespace" value="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.2.0"/>
         </service-properties>
     </service>
-    <service ref="CmNamespaceHandler" interface="org.apache.aries.blueprint.NamespaceHandler">
+    <service ref="CmNamespaceHandler">
+        <interfaces>
+            <value>org.apache.aries.blueprint.NamespaceHandler</value>
+        </interfaces>
         <service-properties>
             <entry key="osgi.service.blueprint.namespace" value="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.3.0"/>
         </service-properties>

Modified: aries/branches/java6support/blueprint/blueprint-core/pom.xml
URL: http://svn.apache.org/viewvc/aries/branches/java6support/blueprint/blueprint-core/pom.xml?rev=1748624&r1=1748623&r2=1748624&view=diff
==============================================================================
--- aries/branches/java6support/blueprint/blueprint-core/pom.xml (original)
+++ aries/branches/java6support/blueprint/blueprint-core/pom.xml Wed Jun 15 19:23:47 2016
@@ -32,7 +32,7 @@
     <artifactId>org.apache.aries.blueprint.core</artifactId>
     <packaging>bundle</packaging>
     <name>Apache Aries Blueprint Core</name>
-    <version>1.6.0-SNAPSHOT</version>
+    <version>1.6.3-SNAPSHOT</version>
     <description>
         This bundle contains the core implementation of Blueprint
         along with the "ext" namespace handler.
@@ -91,12 +91,12 @@
         </aries.osgi.include.resource>
         <blueprint.annotation.api.version>1.0.0</blueprint.annotation.api.version>
         <blueprint.api.version>1.0.0</blueprint.api.version>
-        <blueprint.parser.version>1.5.0-SNAPSHOT</blueprint.parser.version>
+        <blueprint.parser.version>1.4.0</blueprint.parser.version>
         <proxy.api.version>1.0.0</proxy.api.version>
         <proxy.impl.version>1.0.3</proxy.impl.version>
         <quiesce.api.version>1.0.0</quiesce.api.version>
         <util.version>1.0.0</util.version>
-        <lastReleaseVersion>1.4.0</lastReleaseVersion>
+        <lastReleaseVersion>1.6.0</lastReleaseVersion>
     </properties>
 
     <profiles>
@@ -105,7 +105,7 @@
             <properties>
                 <blueprint.annotation.api.version>1.0.1</blueprint.annotation.api.version>
                 <blueprint.api.version>1.0.1</blueprint.api.version>
-                <blueprint.parser.version>1.5.0-SNAPSHOT</blueprint.parser.version>
+                <blueprint.parser.version>1.4.0</blueprint.parser.version>
                 <proxy.api.version>1.0.1</proxy.api.version>
                 <proxy.impl.version>1.0.1</proxy.impl.version>
                 <quiesce.api.version>1.0.0</quiesce.api.version>

Modified: aries/branches/java6support/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/AbstractServiceReferenceRecipe.java
URL: http://svn.apache.org/viewvc/aries/branches/java6support/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/AbstractServiceReferenceRecipe.java?rev=1748624&r1=1748623&r2=1748624&view=diff
==============================================================================
--- aries/branches/java6support/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/AbstractServiceReferenceRecipe.java (original)
+++ aries/branches/java6support/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/AbstractServiceReferenceRecipe.java Wed Jun 15 19:23:47 2016
@@ -89,7 +89,7 @@ public abstract class AbstractServiceRef
 
     private final AtomicBoolean started = new AtomicBoolean();
     private final AtomicBoolean satisfied = new AtomicBoolean();
-    private SatisfactionListener satisfactionListener;
+    private volatile SatisfactionListener satisfactionListener;
 
     private final AccessControlContext accessControlContext;
 
@@ -416,7 +416,10 @@ public abstract class AbstractServiceRef
         // so that it will only be true if the value actually changed
         if (satisfied.getAndSet(s) != s) {
             LOGGER.debug("Service reference with filter {} satisfied {}", getOsgiFilter(), this.satisfied);
-            this.satisfactionListener.notifySatisfaction(this);
+            SatisfactionListener listener = this.satisfactionListener;
+            if (listener != null) {
+                listener.notifySatisfaction(this);
+            }
         }
     }
 

Modified: aries/branches/java6support/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/AggregateConverter.java
URL: http://svn.apache.org/viewvc/aries/branches/java6support/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/AggregateConverter.java?rev=1748624&r1=1748623&r2=1748624&view=diff
==============================================================================
--- aries/branches/java6support/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/AggregateConverter.java (original)
+++ aries/branches/java6support/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/AggregateConverter.java Wed Jun 15 19:23:47 2016
@@ -20,7 +20,9 @@ import java.io.ByteArrayInputStream;
 import java.lang.reflect.Array;
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Modifier;
+import java.lang.reflect.ParameterizedType;
 import java.lang.reflect.Type;
+import java.lang.reflect.TypeVariable;
 import java.math.BigDecimal;
 import java.math.BigInteger;
 import java.security.AccessControlContext;
@@ -42,6 +44,7 @@ import java.util.concurrent.atomic.Atomi
 import java.util.regex.Pattern;
 
 import org.apache.aries.blueprint.container.BeanRecipe.UnwrapperedBeanHolder;
+import org.apache.aries.blueprint.container.GenericType.BoundType;
 import org.apache.aries.blueprint.di.CollectionRecipe;
 import org.apache.aries.blueprint.di.MapRecipe;
 import org.apache.aries.blueprint.services.ExtendedBlueprintContainer;
@@ -460,18 +463,119 @@ public class AggregateConverter implemen
         if (from.equals(to)) {
             return true;
         }
-        Type t = from.getRawClass().getGenericSuperclass();
-        if (t != null && isTypeAssignable(new GenericType(t), to)) {
-            return true;
-        }
-        for (Type ti : from.getRawClass().getGenericInterfaces()) {
-            if (ti != null && isTypeAssignable(new GenericType(ti), to)) {
-                return true;
+        if (from.getRawClass() == to.getRawClass()) {
+            if (from.size() == to.size()) {
+                boolean ok = true;
+                for (int i = 0; i < from.size(); i++) {
+                    ReifiedType tf = from.getActualTypeArgument(i);
+                    ReifiedType tt = to.getActualTypeArgument(i);
+                    if (!isWildcardCompatible(tf, tt)) {
+                        ok = false;
+                        break;
+                    }
+                }
+                if (ok) {
+                    return true;
+                }
+            }
+        } else {
+            ReifiedType t = getExactSuperType(from, to.getRawClass());
+            if (t != null) {
+                return isTypeAssignable(t, to);
             }
         }
         return false;
     }
 
+    private static ReifiedType getExactSuperType(ReifiedType from, Class<?> to) {
+        if (from.getRawClass() == to) {
+            return from;
+        }
+        if (!to.isAssignableFrom(from.getRawClass())) {
+            return null;
+        }
+        for (ReifiedType superType: getExactDirectSuperTypes(from)) {
+            ReifiedType result = getExactSuperType(superType, to);
+            if (result != null)
+                return result;
+        }
+        return null;
+    }
+
+    public static ReifiedType[] getExactDirectSuperTypes(ReifiedType type) {
+        Class<?> clazz = type.getRawClass();
+        Type[] superInterfaces = clazz.getGenericInterfaces();
+        Type superClass = clazz.getGenericSuperclass();
+        // the only supertype of an interface without superinterfaces is Object
+        if (superClass == null && superInterfaces.length == 0 && clazz.isInterface()) {
+            return new ReifiedType[] { new GenericType(Object.class) };
+        }
+        ReifiedType[] result;
+        int resultIndex;
+        if (superClass == null) {
+            result = new ReifiedType[superInterfaces.length];
+            resultIndex = 0;
+        } else {
+            result = new ReifiedType[superInterfaces.length + 1];
+            resultIndex = 1;
+            result[0] = mapTypeParameters(superClass, type);
+        }
+        for (Type superInterface : superInterfaces) {
+            result[resultIndex++] = mapTypeParameters(superInterface, type);
+        }
+        return result;
+    }
+
+    private static ReifiedType mapTypeParameters(Type toMapType, ReifiedType typeAndParams) {
+        if (typeAndParams.size() == 0 && typeAndParams.getRawClass().getTypeParameters().length > 0) {
+            // Missing generics information, return erased type
+            return new GenericType(new GenericType(toMapType).getRawClass());
+        }
+        if (toMapType instanceof Class) {
+            return new GenericType(toMapType);
+        }
+        Map<TypeVariable<?>, GenericType> map = new HashMap<TypeVariable<?>, GenericType>();
+        for (int i = 0; i < typeAndParams.size(); i++) {
+            map.put(typeAndParams.getRawClass().getTypeParameters()[i], (GenericType) typeAndParams.getActualTypeArgument(i));
+        }
+        return map(map, toMapType);
+    }
+
+
+    private static GenericType map(Map<TypeVariable<?>, GenericType> map, Type type) {
+        if (type instanceof Class) {
+            return new GenericType(type);
+        }
+        if (type instanceof TypeVariable) {
+            TypeVariable<?> tv = (TypeVariable<?>) type;
+            if (!map.containsKey(type)) {
+                throw new IllegalArgumentException("Unable to resolve TypeVariable: " + tv);
+            }
+            return map.get(type);
+        }
+        if (type instanceof ParameterizedType) {
+            ParameterizedType pType = (ParameterizedType) type;
+            GenericType[] args = new GenericType[pType.getActualTypeArguments().length];
+            for (int i = 0; i < args.length; i++) {
+                args[i] = map(map, pType.getActualTypeArguments()[i]);
+            }
+            return new GenericType((Class<?>) pType.getRawType(), args);
+        }
+        throw new RuntimeException("not implemented: mapping " + type.getClass() + " (" + type + ")");
+    }
+
+    private static boolean isWildcardCompatible(ReifiedType from, ReifiedType to) {
+        BoundType fromBoundType = GenericType.boundType(from);
+        BoundType toBoundType = GenericType.boundType(to);
+        if (toBoundType == BoundType.Extends) {
+            return fromBoundType != BoundType.Super && isTypeAssignable(from, GenericType.bound(to));
+        } else if (toBoundType == BoundType.Super) {
+            return fromBoundType != BoundType.Extends && isTypeAssignable(GenericType.bound(to), from);
+        } else {
+            return fromBoundType == BoundType.Exact && GenericType.bound(from).equals(GenericType.bound(to));
+        }
+    }
+
     private static Class unwrap(Class c) {
         Class u = primitives.get(c);
         return u != null ? u : c;

Modified: aries/branches/java6support/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintContainerImpl.java
URL: http://svn.apache.org/viewvc/aries/branches/java6support/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintContainerImpl.java?rev=1748624&r1=1748623&r2=1748624&view=diff
==============================================================================
--- aries/branches/java6support/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintContainerImpl.java (original)
+++ aries/branches/java6support/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintContainerImpl.java Wed Jun 15 19:23:47 2016
@@ -54,6 +54,7 @@ import org.apache.aries.blueprint.Proces
 import org.apache.aries.blueprint.di.ExecutionContext;
 import org.apache.aries.blueprint.di.Recipe;
 import org.apache.aries.blueprint.di.Repository;
+import org.apache.aries.blueprint.namespace.MissingNamespaceException;
 import org.apache.aries.blueprint.namespace.NamespaceHandlerRegistryImpl;
 import org.apache.aries.blueprint.parser.ComponentDefinitionRegistryImpl;
 import org.apache.aries.blueprint.parser.NamespaceHandlerSet;
@@ -314,7 +315,7 @@ public class BlueprintContainerImpl
                     {
                         List<String> missing = new ArrayList<String>();
                         List<URI> missingURIs = new ArrayList<URI>();
-                        for (URI ns : namespaces) {
+                        for (URI ns : handlerSet.getNamespaces()) {
                             if (handlerSet.getNamespaceHandler(ns) == null) {
                                 missing.add("(&(" + Constants.OBJECTCLASS + "=" + NamespaceHandler.class.getName() + ")(" + NamespaceHandlerRegistryImpl.NAMESPACE + "=" + ns + "))");
                                 missingURIs.add(ns);
@@ -337,15 +338,21 @@ public class BlueprintContainerImpl
                                 }
                             }
                         }
-                        if (xmlValidation == null || "true".equals(xmlValidation)) {
-                            parser.validate(handlerSet.getSchema(parser.getSchemaLocations()));
-                        } else if ("structure".equals(xmlValidation)) {
-                            parser.validate(handlerSet.getSchema(parser.getSchemaLocations()), new ValidationHandler());
-                        } else if ("psvi".equals(xmlValidation)) {
-                            parser.validatePsvi(handlerSet.getSchema(parser.getSchemaLocations()));
+                        try {
+                            if (xmlValidation == null || "true".equals(xmlValidation)) {
+                                parser.validate(handlerSet.getSchema(parser.getSchemaLocations()));
+                            } else if ("structure".equals(xmlValidation)) {
+                                parser.validate(handlerSet.getSchema(parser.getSchemaLocations()), new ValidationHandler());
+                            } else if ("psvi".equals(xmlValidation)) {
+                                parser.validatePsvi(handlerSet.getSchema(parser.getSchemaLocations()));
+                            }
+                            parser.populate(handlerSet, componentDefinitionRegistry);
+                            state = State.Populated;
+                        } catch (MissingNamespaceException e) {
+                            // If we found a missing namespace when parsing the schema,
+                            // we remain in the current state
+                            handlerSet.getNamespaces().add(e.getNamespace());
                         }
-                        parser.populate(handlerSet, componentDefinitionRegistry);
-                        state = State.Populated;
                         break;
                     }
                     case Populated:
@@ -926,13 +933,13 @@ public class BlueprintContainerImpl
     }
 
     public void namespaceHandlerRegistered(URI uri) {
-        if (namespaces != null && namespaces.contains(uri)) {
+        if (handlerSet != null && handlerSet.getNamespaces().contains(uri)) {
             schedule();
         }
     }
 
     public void namespaceHandlerUnregistered(URI uri) {
-        if (namespaces != null && namespaces.contains(uri)) {
+        if (handlerSet != null && handlerSet.getNamespaces().contains(uri)) {
             synchronized (scheduled) {
                 if (destroyed.get()) {
                     return;
@@ -941,6 +948,10 @@ public class BlueprintContainerImpl
                 resetComponentDefinitionRegistry();
                 cancelFutureIfPresent();
                 this.repository = null;
+                handlerSet.removeListener(this);
+                handlerSet.destroy();
+                handlerSet = handlers.getNamespaceHandlers(namespaces, getBundle());
+                handlerSet.addListener(this);
                 state = State.WaitForNamespaceHandlers;
                 schedule();
             }

Modified: aries/branches/java6support/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/GenericType.java
URL: http://svn.apache.org/viewvc/aries/branches/java6support/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/GenericType.java?rev=1748624&r1=1748623&r2=1748624&view=diff
==============================================================================
--- aries/branches/java6support/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/GenericType.java (original)
+++ aries/branches/java6support/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/GenericType.java Wed Jun 15 19:23:47 2016
@@ -56,15 +56,27 @@ public class GenericType extends Reified
         primitiveClasses.put("boolean", boolean.class);
     }
 
+    enum BoundType {
+        Exact,
+        Extends,
+        Super
+    }
+
     private GenericType[] parameters;
+    private BoundType boundType;
 
 	public GenericType(Type type) {
-		this(getConcreteClass(type), parametersOf(type));
+		this(getConcreteClass(type), boundType(type), parametersOf(type));
 	}
 
     public GenericType(Class clazz, GenericType... parameters) {
+        this(clazz, BoundType.Exact, parameters);
+    }
+
+    public GenericType(Class clazz, BoundType boundType, GenericType... parameters) {
         super(clazz);
         this.parameters = parameters;
+        this.boundType = boundType;
     }
 
     public static GenericType parse(String rawType, final Object loader) throws ClassNotFoundException, IllegalArgumentException {
@@ -92,6 +104,16 @@ public class GenericType extends Reified
         if (primitiveClasses.containsKey(type)) {
             return new GenericType(primitiveClasses.get(type));
         }
+        // Extends
+        if (type.startsWith("? extends ")) {
+            String raw = type.substring("? extends ".length());
+            return new GenericType(((ClassLoader) loader).loadClass(raw), BoundType.Extends);
+        }
+        // Super
+        if (type.startsWith("? super ")) {
+            String raw = type.substring("? extends ".length());
+            return new GenericType(((ClassLoader) loader).loadClass(raw), BoundType.Super);
+        }
         // Class
         if (loader instanceof ClassLoader) {
             return new GenericType(((ClassLoader) loader).loadClass(type));
@@ -133,6 +155,12 @@ public class GenericType extends Reified
 
     @Override
     public String toString() {
+        StringBuilder sb = new StringBuilder();
+        if (boundType == BoundType.Extends) {
+            sb.append("? extends ");
+        } else if (boundType == BoundType.Super) {
+            sb.append("? super ");
+        }
         Class cl = getRawClass();
         if (cl.isArray()) {
             if (parameters.length > 0) {
@@ -141,9 +169,8 @@ public class GenericType extends Reified
                 return cl.getComponentType().getName() + "[]";
             }
         }
+        sb.append(cl.getName());
         if (parameters.length > 0) {
-            StringBuilder sb = new StringBuilder();
-            sb.append(cl.getName());    
             sb.append("<");
             for (int i = 0; i < parameters.length; i++) {
                 if (i > 0) {
@@ -152,9 +179,8 @@ public class GenericType extends Reified
                 sb.append(parameters[i].toString());
             }
             sb.append(">");   
-            return sb.toString();
         }
-        return cl.getName();
+        return sb.toString();
     }
 
     public boolean equals(Object object) {
@@ -165,6 +191,9 @@ public class GenericType extends Reified
         if (getRawClass() != other.getRawClass()) {
             return false;
         }
+        if (boundType != other.boundType) {
+            return false;
+        }
         if (parameters == null) {
             return (other.parameters == null);
         } else {
@@ -182,7 +211,33 @@ public class GenericType extends Reified
             return true;
         }
     }
-    
+
+    static ReifiedType bound(ReifiedType type) {
+        if (type instanceof GenericType
+                && ((GenericType) type).boundType != BoundType.Exact) {
+            GenericType t = (GenericType) type;
+            return new GenericType(t.getRawClass(), BoundType.Exact, t.parameters);
+        }
+        return type;
+    }
+
+    static BoundType boundType(ReifiedType type) {
+        if (type instanceof GenericType) {
+            return ((GenericType) type).boundType;
+        } else {
+            return BoundType.Exact;
+        }
+    }
+
+    static BoundType boundType(Type type) {
+        if (type instanceof WildcardType) {
+            WildcardType wct = (WildcardType) type;
+            return wct.getLowerBounds().length == 0
+                    ? BoundType.Extends : BoundType.Super;
+        }
+        return BoundType.Exact;
+    }
+
     static GenericType[] parametersOf(Type type) {
 		if (type instanceof Class) {
 		    Class clazz = (Class) type;

Modified: aries/branches/java6support/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/namespace/NamespaceHandlerRegistryImpl.java
URL: http://svn.apache.org/viewvc/aries/branches/java6support/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/namespace/NamespaceHandlerRegistryImpl.java?rev=1748624&r1=1748623&r2=1748624&view=diff
==============================================================================
--- aries/branches/java6support/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/namespace/NamespaceHandlerRegistryImpl.java (original)
+++ aries/branches/java6support/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/namespace/NamespaceHandlerRegistryImpl.java Wed Jun 15 19:23:47 2016
@@ -18,6 +18,10 @@
  */
 package org.apache.aries.blueprint.namespace;
 
+import static javax.xml.XMLConstants.W3C_XML_SCHEMA_NS_URI;
+import static javax.xml.XMLConstants.XML_NS_URI;
+import static org.apache.aries.blueprint.parser.Parser.BLUEPRINT_NAMESPACE;
+
 import java.io.Closeable;
 import java.io.IOException;
 import java.io.InputStream;
@@ -44,7 +48,7 @@ import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.concurrent.CopyOnWriteArraySet;
-import javax.xml.XMLConstants;
+
 import javax.xml.transform.Source;
 import javax.xml.transform.stream.StreamSource;
 import javax.xml.validation.Schema;
@@ -74,8 +78,6 @@ import org.xml.sax.SAXException;
  */
 public class NamespaceHandlerRegistryImpl implements NamespaceHandlerRegistry, ServiceTrackerCustomizer {
     
-    public static final URI BLUEPRINT_NAMESPACE = URI.create("http://www.osgi.org/xmlns/blueprint/v1.0.0");
-
     public static final String NAMESPACE = "osgi.service.blueprint.namespace";
 
     private static final Logger LOGGER = LoggerFactory.getLogger(NamespaceHandlerRegistryImpl.class);
@@ -96,7 +98,7 @@ public class NamespaceHandlerRegistryImp
 
     // Access to this factory is synchronized on itself
     private final SchemaFactory schemaFactory =
-                        SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
+                        SchemaFactory.newInstance(W3C_XML_SCHEMA_NS_URI);
 
     // Access to this variable is must be synchronized on itself
     private final ArrayList<NamespaceHandlerSetImpl> sets =
@@ -251,25 +253,6 @@ public class NamespaceHandlerRegistryImp
         tracker.close();
     }
 
-    private Schema getSchema(Map<URI, NamespaceHandler> handlers,
-                             final Bundle bundle,
-                             final Properties schemaMap,
-                             Map<String, String> locations) throws IOException, SAXException {
-        if (schemaMap != null && !schemaMap.isEmpty()) {
-            return createSchema(handlers, bundle, schemaMap, locations);
-        }
-        // Find a schema that can handle all the requested namespaces
-        // If it contains additional namespaces, it should not be a problem since
-        // they won't be used at all
-        Schema schema = getExistingSchema(handlers);
-        if (schema == null) {
-            // Create schema
-            schema = createSchema(handlers, bundle, schemaMap, locations);
-            cacheSchema(handlers, schema);
-        }
-        return schema;
-    }
-
     private Schema getExistingSchema(Map<URI, NamespaceHandler> handlers) {
         synchronized (schemas) {
             for (Map<URI, NamespaceHandler> key : schemas.keySet()) {
@@ -324,48 +307,6 @@ public class NamespaceHandlerRegistryImp
         }
     }
 
-    private Schema createSchema(Map<URI, NamespaceHandler> handlers,
-                                Bundle bundle,
-                                Properties schemaMap,
-                                Map<String, String> locations) throws IOException, SAXException {
-        final List<StreamSource> schemaSources = new ArrayList<StreamSource>();
-        try {
-            schemaSources.add(new StreamSource(getClass().getResourceAsStream("/org/apache/aries/blueprint/blueprint.xsd")));
-            // Create a schema for all namespaces known at this point
-            // It will speed things as it can be reused for all other blueprint containers
-            for (URI ns : handlers.keySet()) {
-                URL url = handlers.get(ns).getSchemaLocation(ns.toString());
-                if (url == null && locations != null) {
-                    String loc = locations.get(ns.toString());
-                    if (loc != null) {
-                        url = handlers.get(ns).getSchemaLocation(loc);
-                    }
-                }
-                if (url == null) {
-                    LOGGER.warn("No URL is defined for schema " + ns + ". This schema will not be validated");
-                } else {
-                    schemaSources.add(new StreamSource(url.openStream(), url.toExternalForm()));
-                }
-            }
-            for (Object ns : schemaMap.values()) {
-                URL url = bundle.getResource(ns.toString());
-                if (url == null) {
-                    LOGGER.warn("No URL is defined for schema " + ns + ". This schema will not be validated");
-                } else {
-                    schemaSources.add(new StreamSource(url.openStream(), url.toExternalForm()));
-                }
-            }
-            synchronized (schemaFactory) {
-                schemaFactory.setResourceResolver(new BundleResourceResolver(schemaMap, bundle, schemaSources));
-                return schemaFactory.newSchema(schemaSources.toArray(new Source[schemaSources.size()]));
-            }
-        } finally {
-            for (StreamSource s : schemaSources) {
-                closeQuietly(s.getInputStream());
-            }
-        }
-    }
-
     private static void closeQuietly(Closeable closeable) {
         try {
             if (closeable != null) {
@@ -376,82 +317,11 @@ public class NamespaceHandlerRegistryImp
         }
     }
 
-    private class BundleResourceResolver implements LSResourceResolver {
-        private final Properties schemaMap;
-        private final Bundle bundle;
-        private final List<StreamSource> schemaSources;
-
-        public BundleResourceResolver(Properties schemaMap, Bundle bundle, List<StreamSource> schemaSources) {
-            this.schemaMap = schemaMap;
-            this.bundle = bundle;
-            this.schemaSources = schemaSources;
-        }
-
-        public LSInput resolveResource(String type,
-                                       final String namespaceURI,
-                                       final String publicId,
-                                       String systemId, String baseURI) {
-            String loc = null;
-            if (namespaceURI != null) {
-                loc = schemaMap.getProperty(namespaceURI);
-            }
-            if (loc == null && publicId != null) {
-                loc = schemaMap.getProperty(publicId);
-            }
-            if (loc == null && systemId != null) {
-                loc = schemaMap.getProperty(systemId);
-            }
-            if (loc != null) {
-                URL url = bundle.getResource(loc);
-                if (url != null) {
-                    try {
-                        StreamSource source
-                                = new StreamSource(url.openStream(), url.toExternalForm());
-                        schemaSources.add(source);
-                        return new SourceLSInput(source, publicId, url);
-                    } catch (IOException e) {
-                        throw new RuntimeException(e);
-                    }
-                }
-            }
-            URI uri = URI.create(namespaceURI);
-            Set<NamespaceHandler> hs = NamespaceHandlerRegistryImpl.this.handlers.get(uri);
-            if (hs == null) {
-                return null;
-            }
-            for (NamespaceHandler h : hs) {
-                URL url = h.getSchemaLocation(namespaceURI);
-                if (url != null) {
-                    // handling include-relative-path case
-                    if (systemId != null && !systemId.matches("^[a-z][-+.0-9a-z]*:.*")) {
-                        try {
-                            url = new URL(url, systemId);
-                        } catch (Exception e) {
-                            // ignore and use the given systemId
-                        }
-                    }
-                    try {
-                        final StreamSource source = new StreamSource(url.openStream(), url.toExternalForm());
-                        schemaSources.add(source);
-                        return new SourceLSInput(source, publicId, url);
-                    } catch (IOException e) {
-                        throw new RuntimeException(e);
-                    }
-                }
-            }
-            return null;
-        }
-    }
-
-    private class SourceLSInput implements LSInput {
+    private static class SourceLSInput implements LSInput {
         private final StreamSource source;
-        private final URL systemId;
-        private final String publicId;
 
-        public SourceLSInput(StreamSource source, String publicId, URL systemId) {
+        public SourceLSInput(StreamSource source) {
             this.source = source;
-            this.publicId = publicId;
-            this.systemId = systemId;
         }
 
         public Reader getCharacterStream() {
@@ -476,14 +346,14 @@ public class NamespaceHandlerRegistryImp
         }
 
         public String getSystemId() {
-            return systemId.toExternalForm();
+            return source.getSystemId();
         }
 
         public void setSystemId(String systemId) {
         }
 
         public String getPublicId() {
-            return publicId;
+            return null;
         }
 
         public void setPublicId(String publicId) {
@@ -522,7 +392,7 @@ public class NamespaceHandlerRegistryImp
 
         public NamespaceHandlerSetImpl(Set<URI> namespaces, Bundle bundle) {
             this.listeners = new CopyOnWriteArrayList<Listener>();
-            this.namespaces = namespaces;
+            this.namespaces = new HashSet<URI>(namespaces);
             this.bundle = bundle;
             handlers = new ConcurrentHashMap<URI, NamespaceHandler>();
             for (URI ns : namespaces) {
@@ -571,11 +441,211 @@ public class NamespaceHandlerRegistryImp
                 throw new IllegalStateException("NamespaceHandlerSet is not complete");
             }
             if (schema == null) {
-                schema = NamespaceHandlerRegistryImpl.this.getSchema(handlers, bundle, schemaMap, locations);
+                schema = doGetSchema(locations);
+            }
+            return schema;
+        }
+
+        private Schema doGetSchema(Map<String, String> locations) throws IOException, SAXException {
+            if (schemaMap != null && !schemaMap.isEmpty()) {
+                return createSchema(locations);
+            }
+            // Find a schema that can handle all the requested namespaces
+            // If it contains additional namespaces, it should not be a problem since
+            // they won't be used at all
+            Schema schema = getExistingSchema(handlers);
+            if (schema == null) {
+                // Create schema
+                schema = createSchema(locations);
+                cacheSchema(handlers, schema);
             }
             return schema;
         }
 
+        private class Loader implements LSResourceResolver, Closeable {
+            final List<StreamSource> sources = new ArrayList<StreamSource>();
+            final Map<String, URL> loaded = new HashMap<String, URL>();
+            final Map<String, String> namespaces = new HashMap<String, String>();
+            @Override
+            public LSInput resolveResource(String type, String namespaceURI, String publicId, String systemId, String baseURI) {
+                // Compute id
+                String id;
+                String prevNamespace = baseURI != null ? namespaces.get(baseURI) : null;
+                if (namespaceURI != null && prevNamespace != null && namespaceURI.equals(prevNamespace)) {
+                    // This is an include
+                    id = getId(type, namespaceURI, publicId, systemId);
+                } else {
+                    id = getId(type, namespaceURI, publicId, null);
+                }
+                // Check if it has already been loaded
+                if (loaded.containsKey(id)) {
+                    return createLSInput(loaded.get(id), id, namespaceURI);
+                }
+                // Schema map
+                //-----------
+                // Use provided schema map to find the resource.
+                // If the schema map contains the namespaceURI, publicId or systemId,
+                // load the corresponding resource directly from the bundle.
+                String loc = null;
+                if (namespaceURI != null) {
+                    loc = schemaMap.getProperty(namespaceURI);
+                }
+                if (loc == null && publicId != null) {
+                    loc = schemaMap.getProperty(publicId);
+                }
+                if (loc == null && systemId != null) {
+                    loc = schemaMap.getProperty(systemId);
+                }
+                if (loc != null) {
+                    URL url = bundle.getResource(loc);
+                    if (url != null) {
+                        return createLSInput(url, id, namespaceURI);
+                    }
+                }
+                // Relative uris
+                //---------------
+                // For relative uris, don't use the namespace handlers, but simply resolve the uri
+                // and use that one directly to load the resource.
+                String resolved = resolveIfRelative(systemId, baseURI);
+                if (resolved != null) {
+                    URL url;
+                    try {
+                        url = new URL(resolved);
+                    } catch (IOException e) {
+                        throw new RuntimeException(e);
+                    }
+                    return createLSInput(url, id, namespaceURI);
+                }
+                // Only support xml schemas from now on
+                if (namespaceURI == null || !W3C_XML_SCHEMA_NS_URI.equals(type)) {
+                    return null;
+                }
+                // We are now loading a schema, or schema part with
+                //  * notNull(namespaceURI)
+                //  * null(systemId) or absolute(systemId)
+                URI nsUri = URI.create(namespaceURI);
+                String rid = systemId != null ? systemId : namespaceURI;
+                NamespaceHandler h = getNamespaceHandler(nsUri);
+                // This is a resource from a known namespace
+                if (h != null) {
+                    URL url = h.getSchemaLocation(rid);
+                    if (isCorrectUrl(url)) {
+                        return createLSInput(url, id, namespaceURI);
+                    }
+                }
+                else {
+                    // Ask known handlers if they have this schema
+                    for (NamespaceHandler hd : handlers.values()) {
+                        URL url = hd.getSchemaLocation(rid);
+                        if (isCorrectUrl(url)) {
+                            return createLSInput(url, id, namespaceURI);
+                        }
+                    }
+                    // Find a compatible namespace handler
+                    h = findCompatibleNamespaceHandler(nsUri);
+                    if (h != null) {
+                        URL url = h.getSchemaLocation(namespaceURI);
+                        if (url == null) {
+                            url = h.getSchemaLocation(rid);
+                        }
+                        if (isCorrectUrl(url)) {
+                            LOGGER.warn("Dynamically adding namespace handler {} to bundle {}/{}",
+                                    nsUri, bundle.getSymbolicName(), bundle.getVersion());
+                            return createLSInput(url, id, namespaceURI);
+                        }
+                    }
+                }
+                LOGGER.warn("Unable to find namespace handler for {}", namespaceURI);
+                return null;
+            }
+
+            public String getId(String type, String namespaceURI, String publicId, String systemId) {
+                return type + "|" + namespaceURI + "|" + publicId + "|" + systemId;
+            }
+
+            public StreamSource use(URL resource, String id, String namespace) throws IOException {
+                String url = resource.toExternalForm();
+                StreamSource ss = new StreamSource(resource.openStream(), url);
+                sources.add(ss);
+                loaded.put(id, resource);
+                namespaces.put(url, namespace);
+                return ss;
+            }
+
+            @Override
+            public void close() {
+                for (StreamSource source : sources) {
+                    closeQuietly(source.getInputStream());
+                }
+            }
+
+            public Source[] getSources() {
+                return sources.toArray(new Source[sources.size()]);
+            }
+
+            private boolean isCorrectUrl(URL url) {
+                return url != null && !loaded.values().contains(url);
+            }
+            private String resolveIfRelative(String systemId, String baseURI) {
+                if (baseURI != null && systemId != null) {
+                    URI sId = URI.create(systemId);
+                    if (!sId.isAbsolute()) {
+                        return URI.create(baseURI).resolve(sId).toString();
+                    }
+                }
+                return null;
+            }
+            private LSInput createLSInput(URL url, String id, String namespace) {
+                try {
+                    return new SourceLSInput(use(url, id, namespace));
+                } catch (IOException e) {
+                    throw new RuntimeException(e);
+                }
+            }
+        }
+
+        private Schema createSchema(Map<String, String> locations) throws IOException, SAXException {
+            Loader loader = new Loader();
+            try {
+                loader.use(getClass().getResource("/org/osgi/service/blueprint/blueprint.xsd"),
+                           loader.getId(W3C_XML_SCHEMA_NS_URI, BLUEPRINT_NAMESPACE, null, null),
+                           BLUEPRINT_NAMESPACE);
+                loader.use(getClass().getResource("/org/apache/aries/blueprint/ext/impl/xml.xsd"),
+                           loader.getId(W3C_XML_SCHEMA_NS_URI, XML_NS_URI, null, null),
+                           XML_NS_URI);
+
+                // Create a schema for the namespaces
+                for (URI ns : handlers.keySet()) {
+                    URL url = handlers.get(ns).getSchemaLocation(ns.toString());
+                    if (url == null && locations != null) {
+                        String loc = locations.get(ns.toString());
+                        if (loc != null) {
+                            url = handlers.get(ns).getSchemaLocation(loc);
+                        }
+                    }
+                    if (url == null) {
+                        LOGGER.warn("No URL is defined for schema " + ns + ". This schema will not be validated");
+                    } else {
+                        loader.use(url, loader.getId(W3C_XML_SCHEMA_NS_URI, ns.toString(), null, null), ns.toString());
+                    }
+                }
+                for (Object ns : schemaMap.values()) {
+                    URL url = bundle.getResource(ns.toString());
+                    if (url == null) {
+                        LOGGER.warn("No URL is defined for schema " + ns + ". This schema will not be validated");
+                    } else {
+                        loader.use(url, loader.getId(W3C_XML_SCHEMA_NS_URI, ns.toString(), null, null), ns.toString());
+                    }
+                }
+                synchronized (schemaFactory) {
+                    schemaFactory.setResourceResolver(loader);
+                    return schemaFactory.newSchema(loader.getSources());
+                }
+            } finally {
+                loader.close();
+            }
+        }
+
         public void addListener(Listener listener) {
             listeners.add(listener);
         }
@@ -649,6 +719,7 @@ public class NamespaceHandlerRegistryImp
                         }
                     }
                     if (compat) {
+                        namespaces.add(ns);
                         handlers.put(ns, h);
                         return h;
                     }

Modified: aries/branches/java6support/blueprint/blueprint-core/src/test/java/org/apache/aries/blueprint/WiringTest.java
URL: http://svn.apache.org/viewvc/aries/branches/java6support/blueprint/blueprint-core/src/test/java/org/apache/aries/blueprint/WiringTest.java?rev=1748624&r1=1748623&r2=1748624&view=diff
==============================================================================
--- aries/branches/java6support/blueprint/blueprint-core/src/test/java/org/apache/aries/blueprint/WiringTest.java (original)
+++ aries/branches/java6support/blueprint/blueprint-core/src/test/java/org/apache/aries/blueprint/WiringTest.java Wed Jun 15 19:23:47 2016
@@ -18,6 +18,7 @@
  */
 package org.apache.aries.blueprint;
 
+import java.lang.reflect.Constructor;
 import java.math.BigInteger;
 import java.net.URI;
 import java.util.ArrayList;
@@ -36,7 +37,9 @@ import java.util.TimeZone;
 import junit.framework.Assert;
 
 import org.apache.aries.blueprint.CallbackTracker.Callback;
+import org.apache.aries.blueprint.container.AggregateConverter;
 import org.apache.aries.blueprint.container.BlueprintRepository;
+import org.apache.aries.blueprint.container.GenericType;
 import org.apache.aries.blueprint.container.ServiceRecipe;
 import org.apache.aries.blueprint.di.CircularDependencyException;
 import org.apache.aries.blueprint.di.ExecutionContext;
@@ -52,6 +55,10 @@ import org.apache.aries.blueprint.pojos.
 import org.apache.aries.blueprint.pojos.PojoA;
 import org.apache.aries.blueprint.pojos.PojoB;
 import org.apache.aries.blueprint.pojos.PojoGenerics;
+import org.apache.aries.blueprint.pojos.PojoGenerics2.MyClass;
+import org.apache.aries.blueprint.pojos.PojoGenerics2.MyObject;
+import org.apache.aries.blueprint.pojos.PojoGenerics2.Tata;
+import org.apache.aries.blueprint.pojos.PojoGenerics2.Toto;
 import org.apache.aries.blueprint.pojos.PojoListener;
 import org.apache.aries.blueprint.pojos.PojoRecursive;
 import org.apache.aries.blueprint.pojos.Primavera;
@@ -399,6 +406,12 @@ public class WiringTest extends Abstract
        assertEquals(map, ((Multiple)obj).getProperties());
    }
 
+    public void testGenerics2() throws Exception {
+        ComponentDefinitionRegistryImpl registry = parse("/test-generics.xml");
+        Repository repository = new TestBlueprintContainer(registry).getRepository();
+        repository.create("gen2");
+    }
+
     public void testGenerics() throws Exception {
         ComponentDefinitionRegistryImpl registry = parse("/test-generics.xml");
         Repository repository = new TestBlueprintContainer(registry).getRepository();

Modified: aries/branches/java6support/blueprint/blueprint-core/src/test/java/org/apache/aries/blueprint/container/AggregateConverterTest.java
URL: http://svn.apache.org/viewvc/aries/branches/java6support/blueprint/blueprint-core/src/test/java/org/apache/aries/blueprint/container/AggregateConverterTest.java?rev=1748624&r1=1748623&r2=1748624&view=diff
==============================================================================
--- aries/branches/java6support/blueprint/blueprint-core/src/test/java/org/apache/aries/blueprint/container/AggregateConverterTest.java (original)
+++ aries/branches/java6support/blueprint/blueprint-core/src/test/java/org/apache/aries/blueprint/container/AggregateConverterTest.java Wed Jun 15 19:23:47 2016
@@ -19,6 +19,7 @@
 package org.apache.aries.blueprint.container;
 
 import java.io.ByteArrayOutputStream;
+import java.lang.reflect.Constructor;
 import java.math.BigInteger;
 import java.net.URI;
 import java.net.URL;
@@ -33,6 +34,10 @@ import java.util.Properties;
 
 import junit.framework.TestCase;
 import org.apache.aries.blueprint.TestBlueprintContainer;
+import org.apache.aries.blueprint.pojos.PojoGenerics2.MyClass;
+import org.apache.aries.blueprint.pojos.PojoGenerics2.MyObject;
+import org.apache.aries.blueprint.pojos.PojoGenerics2.Tata;
+import org.apache.aries.blueprint.pojos.PojoGenerics2.Toto;
 import org.osgi.service.blueprint.container.ReifiedType;
 import org.osgi.service.blueprint.container.Converter;
 
@@ -193,6 +198,14 @@ public class AggregateConverterTest exte
         assertNull(result);
     }
 
+    public void testGenericWilcard() throws Exception {
+        Constructor cns = MyClass.class.getConstructor(MyObject.class);
+        assertTrue(AggregateConverter.isAssignable(new Toto(), new GenericType(cns.getGenericParameterTypes()[0])));
+
+        cns = Tata.class.getConstructor(MyObject.class);
+        assertTrue(AggregateConverter.isAssignable(new Toto(), new GenericType(cns.getGenericParameterTypes()[0])));
+    }
+
     public void testGenericAssignable() throws Exception {
         AggregateConverter s = new AggregateConverter(new TestBlueprintContainer(null));
 

Modified: aries/branches/java6support/blueprint/blueprint-core/src/test/java/org/apache/aries/blueprint/container/BeanRecipeTest.java
URL: http://svn.apache.org/viewvc/aries/branches/java6support/blueprint/blueprint-core/src/test/java/org/apache/aries/blueprint/container/BeanRecipeTest.java?rev=1748624&r1=1748623&r2=1748624&view=diff
==============================================================================
--- aries/branches/java6support/blueprint/blueprint-core/src/test/java/org/apache/aries/blueprint/container/BeanRecipeTest.java (original)
+++ aries/branches/java6support/blueprint/blueprint-core/src/test/java/org/apache/aries/blueprint/container/BeanRecipeTest.java Wed Jun 15 19:23:47 2016
@@ -68,6 +68,16 @@ public class BeanRecipeTest {
         public ExampleService(Example<String> e) {}
     }
 
+    static public interface BaseInterface<T> { }
+    static public interface ExtendedInterface<T0, T1> extends BaseInterface<T1> {}
+    static public class MyClass implements ExtendedInterface<String, Integer> { }
+    static public class MyClass2<T> implements BaseInterface<T> { }
+    static public class MyClass3 extends MyClass2<Long> { }
+    static public class MyService {
+        public MyService(BaseInterface<? extends Number> e) {}
+    }
+
+
     static public interface A {
         String getA();
         void setA(String a);
@@ -126,6 +136,26 @@ public class BeanRecipeTest {
         recipe.setArgTypes(Arrays.<String>asList((String) null));
         ExecutionContext.Holder.setContext(new BlueprintRepository(container));
         recipe.create();
+    }
+
+    @Test
+    public void parameterWithComplexGenerics1() throws Exception {
+        BlueprintContainerImpl container = new BlueprintContainerImpl(null, null, null, null, null, null, null, null, null, null);
+        BeanRecipe recipe = new BeanRecipe("example", container, MyService.class, false);
+        recipe.setArguments(Arrays.<Object>asList(new MyClass()));
+        recipe.setArgTypes(Arrays.<String>asList((String) null));
+        ExecutionContext.Holder.setContext(new BlueprintRepository(container));
+        recipe.create();
+    }
+
+    @Test
+    public void parameterWithComplexGenerics2() throws Exception {
+        BlueprintContainerImpl container = new BlueprintContainerImpl(null, null, null, null, null, null, null, null, null, null);
+        BeanRecipe recipe = new BeanRecipe("example", container, MyService.class, false);
+        recipe.setArguments(Arrays.<Object>asList(new MyClass3()));
+        recipe.setArgTypes(Arrays.<String>asList((String) null));
+        ExecutionContext.Holder.setContext(new BlueprintRepository(container));
+        recipe.create();
     }
 
     @Test

Modified: aries/branches/java6support/blueprint/blueprint-core/src/test/java/org/apache/aries/blueprint/container/GenericTypeTest.java
URL: http://svn.apache.org/viewvc/aries/branches/java6support/blueprint/blueprint-core/src/test/java/org/apache/aries/blueprint/container/GenericTypeTest.java?rev=1748624&r1=1748623&r2=1748624&view=diff
==============================================================================
--- aries/branches/java6support/blueprint/blueprint-core/src/test/java/org/apache/aries/blueprint/container/GenericTypeTest.java (original)
+++ aries/branches/java6support/blueprint/blueprint-core/src/test/java/org/apache/aries/blueprint/container/GenericTypeTest.java Wed Jun 15 19:23:47 2016
@@ -62,6 +62,11 @@ public class GenericTypeTest extends Tes
         assertEquals(List[].class, type.getRawClass());
         assertEquals(1, type.size());
         assertEquals(Integer.class, type.getActualTypeArgument(0).getActualTypeArgument(0).getRawClass());
+
+        type = parse("java.util.List<? extends java.lang.Number>");
+        assertEquals(List.class, type.getRawClass());
+        assertEquals(1, type.size());
+        assertEquals(Number.class, type.getActualTypeArgument(0).getRawClass());
     }
 
     public void testBasic() throws Exception {        

Modified: aries/branches/java6support/blueprint/blueprint-core/src/test/resources/test-generics.xml
URL: http://svn.apache.org/viewvc/aries/branches/java6support/blueprint/blueprint-core/src/test/resources/test-generics.xml?rev=1748624&r1=1748623&r2=1748624&view=diff
==============================================================================
--- aries/branches/java6support/blueprint/blueprint-core/src/test/resources/test-generics.xml (original)
+++ aries/branches/java6support/blueprint/blueprint-core/src/test/resources/test-generics.xml Wed Jun 15 19:23:47 2016
@@ -20,6 +20,12 @@
             xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0"
             default-availability="mandatory" >
 
+    <bean id="gen2" class="org.apache.aries.blueprint.pojos.PojoGenerics2$MyClass">
+        <argument>
+            <bean class="org.apache.aries.blueprint.pojos.PojoGenerics2$Toto"/>
+        </argument>
+    </bean>
+
     <bean id="method" class="org.apache.aries.blueprint.pojos.PojoGenerics">
         <property name="list">
             <list>

Modified: aries/branches/java6support/blueprint/blueprint-itests/pom.xml
URL: http://svn.apache.org/viewvc/aries/branches/java6support/blueprint/blueprint-itests/pom.xml?rev=1748624&r1=1748623&r2=1748624&view=diff
==============================================================================
--- aries/branches/java6support/blueprint/blueprint-itests/pom.xml (original)
+++ aries/branches/java6support/blueprint/blueprint-itests/pom.xml Wed Jun 15 19:23:47 2016
@@ -62,12 +62,12 @@
         <dependency>
             <groupId>org.apache.aries.blueprint</groupId>
             <artifactId>org.apache.aries.blueprint.core</artifactId>
-            <version>1.6.0-SNAPSHOT</version>
+            <version>1.6.3-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.aries.blueprint</groupId>
             <artifactId>blueprint-parser</artifactId>
-            <version>1.5.0-SNAPSHOT</version>
+            <version>1.4.0</version>
         </dependency>
         <dependency>
             <groupId>org.apache.aries.blueprint</groupId>
@@ -144,7 +144,7 @@
         <dependency>
             <groupId>org.apache.aries.blueprint</groupId>
             <artifactId>org.apache.aries.blueprint.cm</artifactId>
-            <version>1.0.8-SNAPSHOT</version>
+            <version>1.0.9-SNAPSHOT</version>
             <type>bundle</type>
             <scope>compile</scope>
             <exclusions>
@@ -188,7 +188,7 @@
             <groupId>org.apache.aries.blueprint</groupId>
             <artifactId>org.apache.aries.blueprint.testbundlea</artifactId>
             <scope>test</scope>
-            <version>1.0.1-SNAPSHOT</version>
+            <version>1.1.0-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.aries.blueprint</groupId>

Modified: aries/branches/java6support/blueprint/blueprint-itests/src/test/java/org/apache/aries/blueprint/itests/SpringTest.java
URL: http://svn.apache.org/viewvc/aries/branches/java6support/blueprint/blueprint-itests/src/test/java/org/apache/aries/blueprint/itests/SpringTest.java?rev=1748624&r1=1748623&r2=1748624&view=diff
==============================================================================
--- aries/branches/java6support/blueprint/blueprint-itests/src/test/java/org/apache/aries/blueprint/itests/SpringTest.java (original)
+++ aries/branches/java6support/blueprint/blueprint-itests/src/test/java/org/apache/aries/blueprint/itests/SpringTest.java Wed Jun 15 19:23:47 2016
@@ -32,6 +32,7 @@ import static org.apache.aries.blueprint
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.fail;
+import static org.ops4j.pax.exam.CoreOptions.mavenBundle;
 
 public class SpringTest extends AbstractBlueprintIntegrationTest {
 
@@ -72,6 +73,8 @@ public class SpringTest extends Abstract
             mvnBundle("org.apache.servicemix.bundles", "org.apache.servicemix.bundles.spring-aop"),
             mvnBundle("org.apache.servicemix.bundles", "org.apache.servicemix.bundles.spring-expression"),
             mvnBundle("org.apache.servicemix.bundles", "org.apache.servicemix.bundles.spring-tx"),
+            // Axon namespace handler for testing
+            mavenBundle("org.axonframework", "axon-core", "2.4.4"),
             // test bundle
             mvnBundle("org.apache.aries.blueprint", "org.apache.aries.blueprint.testbundles", false),
         };

Propchange: aries/branches/java6support/blueprint/blueprint-maven-plugin/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Wed Jun 15 19:23:47 2016
@@ -5,3 +5,4 @@ target
 .project
 velocity.log
 .externalToolBuilders
+.idea

Modified: aries/branches/java6support/blueprint/blueprint-maven-plugin/pom.xml
URL: http://svn.apache.org/viewvc/aries/branches/java6support/blueprint/blueprint-maven-plugin/pom.xml?rev=1748624&r1=1748623&r2=1748624&view=diff
==============================================================================
--- aries/branches/java6support/blueprint/blueprint-maven-plugin/pom.xml (original)
+++ aries/branches/java6support/blueprint/blueprint-maven-plugin/pom.xml Wed Jun 15 19:23:47 2016
@@ -31,7 +31,7 @@
     <groupId>org.apache.aries.blueprint</groupId>
     <artifactId>blueprint-maven-plugin</artifactId>
     <packaging>maven-plugin</packaging>
-    <version>1.4.0-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <name>Apache Aries Blueprint Maven Plugin</name>
     <description>
         Maven plugin to create blueprint files from annotations
@@ -57,6 +57,27 @@
                     <source>1.7</source>
                 </configuration>
             </plugin>
+            <plugin>
+                <artifactId>maven-plugin-plugin</artifactId>
+                <version>3.4</version>
+                <executions>
+                    <execution>
+                        <id>default-descriptor</id>
+                        <goals>
+                            <goal>descriptor</goal>
+                        </goals>
+                        <phase>process-classes</phase>
+                    </execution>
+                    <execution>
+                        <id>help-descriptor</id>
+                        <goals>
+                            <goal>helpmojo</goal>
+                        </goals>
+                        <phase>process-classes</phase>
+                    </execution>
+                </executions>
+            </plugin>
+
         </plugins>
         <pluginManagement>
             <plugins>
@@ -98,6 +119,11 @@
 
     <dependencies>
         <dependency>
+            <groupId>org.apache.maven.plugin-tools</groupId>
+            <artifactId>maven-plugin-annotations</artifactId>
+            <version>3.4</version>
+        </dependency>
+        <dependency>
             <groupId>javax.inject</groupId>
             <artifactId>javax.inject</artifactId>
             <version>1</version>
@@ -226,14 +252,5 @@
         </dependency>
     </dependencies>
 
-    <reporting>
-        <plugins>
-            <plugin>
-                <artifactId>maven-plugin-plugin</artifactId>
-                <version>2.9</version>
-            </plugin>
-        </plugins>
-
-    </reporting>
 
 </project>

Modified: aries/branches/java6support/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/FilteredClassFinder.java
URL: http://svn.apache.org/viewvc/aries/branches/java6support/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/FilteredClassFinder.java?rev=1748624&r1=1748623&r2=1748624&view=diff
==============================================================================
--- aries/branches/java6support/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/FilteredClassFinder.java (original)
+++ aries/branches/java6support/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/FilteredClassFinder.java Wed Jun 15 19:23:47 2016
@@ -18,17 +18,16 @@
  */
 package org.apache.aries.blueprint.plugin;
 
+import org.apache.xbean.finder.ClassFinder;
+import org.springframework.stereotype.Component;
+
+import javax.inject.Named;
+import javax.inject.Singleton;
 import java.lang.annotation.Annotation;
 import java.util.Collection;
 import java.util.HashSet;
 import java.util.Set;
 
-import javax.inject.Named;
-import javax.inject.Singleton;
-
-import org.apache.xbean.finder.ClassFinder;
-import org.springframework.stereotype.Component;
-
 public class FilteredClassFinder {
     
     @SuppressWarnings("unchecked")
@@ -50,12 +49,9 @@ public class FilteredClassFinder {
             for (String packageName : packageNames) {
                 if (clazz.getPackage().getName().startsWith(packageName)) {
                     filteredClasses.add(clazz);
-                    continue;
                 }
             }
         }
-        //System.out.println("Raw: " + rawClasses);
-        //System.out.println("Filtered: " + beanClasses);
         return filteredClasses;
     }
 }