Author: jbonofre
Date: Sat Apr  9 06:27:49 2016
New Revision: 1738326

URL: http://svn.apache.org/viewvc?rev=1738326&view=rev
Log:
Merge branch 'namespace-handler-fixes' of https://github.com/grgrzybek/aries 
into trunk

Conflicts:
        tx-control/pom.xml
        tx-control/tx-control-jpa-itests/pom.xml
        
tx-control/tx-control-jpa-itests/src/test/java/org/apache/aries/tx/control/itests/AbstractJPATransactionTest.java
        
tx-control/tx-control-provider-jpa-local/src/main/java/org/apache/aries/tx/control/jpa/local/impl/JPAEntityManagerProviderFactoryImpl.java

Modified:
    aries/trunk/blueprint/blueprint-cm/pom.xml
    
aries/trunk/blueprint/blueprint-cm/src/main/java/org/apache/aries/blueprint/compendium/cm/CmNamespaceHandler.java
    aries/trunk/blueprint/blueprint-core/pom.xml
    
aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/namespace/NamespaceHandlerRegistryImpl.java
    aries/trunk/blueprint/blueprint-parser/pom.xml
    
aries/trunk/blueprint/blueprint-parser/src/main/java/org/apache/aries/blueprint/NamespaceHandler2.java
    aries/trunk/blueprint/blueprint-spring/pom.xml
    
aries/trunk/blueprint/blueprint-spring/src/main/java/org/apache/aries/blueprint/spring/BlueprintNamespaceHandler.java

Modified: aries/trunk/blueprint/blueprint-cm/pom.xml
URL: 
http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-cm/pom.xml?rev=1738326&r1=1738325&r2=1738326&view=diff
==============================================================================
--- aries/trunk/blueprint/blueprint-cm/pom.xml (original)
+++ aries/trunk/blueprint/blueprint-cm/pom.xml Sat Apr  9 06:27:49 2016
@@ -56,8 +56,8 @@
         </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>
+        <blueprint.core.version>1.6.1-SNAPSHOT</blueprint.core.version>
+        <blueprint.parser.version>1.5.0-SNAPSHOT</blueprint.parser.version>
         <lastReleaseVersion>1.0.4</lastReleaseVersion>
     </properties>
 
@@ -66,7 +66,7 @@
             <id>dev</id>
             <properties>
                 <blueprint.api.version>1.0.1</blueprint.api.version>
-                <blueprint.core.version>1.4.4-SNAPSHOT</blueprint.core.version>
+                <blueprint.core.version>1.6.1-SNAPSHOT</blueprint.core.version>
                 
<blueprint.parser.version>1.3.2-SNAPSHOT</blueprint.parser.version>
             </properties>
         </profile>

Modified: 
aries/trunk/blueprint/blueprint-cm/src/main/java/org/apache/aries/blueprint/compendium/cm/CmNamespaceHandler.java
URL: 
http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-cm/src/main/java/org/apache/aries/blueprint/compendium/cm/CmNamespaceHandler.java?rev=1738326&r1=1738325&r2=1738326&view=diff
==============================================================================
--- 
aries/trunk/blueprint/blueprint-cm/src/main/java/org/apache/aries/blueprint/compendium/cm/CmNamespaceHandler.java
 (original)
+++ 
aries/trunk/blueprint/blueprint-cm/src/main/java/org/apache/aries/blueprint/compendium/cm/CmNamespaceHandler.java
 Sat Apr  9 06:27:49 2016
@@ -29,6 +29,7 @@ import java.util.Set;
 
 import org.apache.aries.blueprint.ComponentDefinitionRegistry;
 import org.apache.aries.blueprint.NamespaceHandler;
+import org.apache.aries.blueprint.NamespaceHandler2;
 import org.apache.aries.blueprint.ParserContext;
 import org.apache.aries.blueprint.ext.PlaceholdersUtils;
 import org.apache.aries.blueprint.mutable.MutableBeanMetadata;
@@ -77,7 +78,7 @@ import org.w3c.dom.NodeList;
  *
  * @version $Rev$, $Date$
  */
-public class CmNamespaceHandler implements NamespaceHandler {
+public class CmNamespaceHandler implements NamespaceHandler2 {
 
     public static final String BLUEPRINT_NAMESPACE = 
"http://www.osgi.org/xmlns/blueprint/v1.0.0";;
     public static final String BLUEPRINT_CM_NAMESPACE_1_0 = 
"http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.0.0";;
@@ -153,6 +154,16 @@ public class CmNamespaceHandler implemen
         CmNamespaceHandler.configAdmin = configAdmin;
     }
 
+    public boolean usePsvi() {
+        return false;
+    }
+
+    public boolean mayResolve(String namespace) {
+        return namespace != null
+                && 
(namespace.startsWith("http://aries.apache.org/blueprint/xmlns/blueprint-cm";)
+                || 
namespace.startsWith("http://aries.apache.org/blueprint/xmlns/blueprint-ext";));
+    }
+
     public URL getSchemaLocation(String namespace) {
         if (BLUEPRINT_CM_NAMESPACE_1_3.equals(namespace)) {
             return getClass().getResource("blueprint-cm-1.3.0.xsd");

Modified: aries/trunk/blueprint/blueprint-core/pom.xml
URL: 
http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-core/pom.xml?rev=1738326&r1=1738325&r2=1738326&view=diff
==============================================================================
--- aries/trunk/blueprint/blueprint-core/pom.xml (original)
+++ aries/trunk/blueprint/blueprint-core/pom.xml Sat Apr  9 06:27:49 2016
@@ -91,7 +91,7 @@
         </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.4.0</blueprint.parser.version>
+        <blueprint.parser.version>1.5.0-SNAPSHOT</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>
@@ -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.4.0</blueprint.parser.version>
+                
<blueprint.parser.version>1.5.0-SNAPSHOT</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/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/namespace/NamespaceHandlerRegistryImpl.java
URL: 
http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/namespace/NamespaceHandlerRegistryImpl.java?rev=1738326&r1=1738325&r2=1738326&view=diff
==============================================================================
--- 
aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/namespace/NamespaceHandlerRegistryImpl.java
 (original)
+++ 
aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/namespace/NamespaceHandlerRegistryImpl.java
 Sat Apr  9 06:27:49 2016
@@ -51,6 +51,7 @@ import javax.xml.validation.Schema;
 import javax.xml.validation.SchemaFactory;
 
 import org.apache.aries.blueprint.NamespaceHandler;
+import org.apache.aries.blueprint.NamespaceHandler2;
 import org.apache.aries.blueprint.container.NamespaceHandlerRegistry;
 import org.apache.aries.blueprint.parser.NamespaceHandlerSet;
 import org.osgi.framework.Bundle;
@@ -416,28 +417,47 @@ public class NamespaceHandlerRegistryImp
                     }
                 }
             }
-            for (NamespaceHandler h : handlers.values()) {
-                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
-                        }
+            URI uri = URI.create(namespaceURI);
+            Set<NamespaceHandler> hs = 
NamespaceHandlerRegistryImpl.this.handlers.get(uri);
+            // first check registered handlers
+            if (hs != null) {
+                for (NamespaceHandler h : hs) {
+                    URL url = h.getSchemaLocation(namespaceURI);
+                    if (url != null) {
+                        return createLSInput(publicId, systemId, url);
                     }
-                    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);
+                }
+            }
+            // then check if some handler may resolve the namespace
+            for (NamespaceHandler h : handlers.values()) {
+                if (h instanceof NamespaceHandler2 && ((NamespaceHandler2) 
h).mayResolve(namespaceURI)) {
+                    URL url = h.getSchemaLocation(namespaceURI);
+                    if (url != null) {
+                        return createLSInput(publicId, systemId, url);
+
                     }
                 }
             }
             return null;
         }
+
+        private LSInput createLSInput(String publicId, String systemId, URL 
url) {
+            // 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);
+            }
+        }
     }
 
     private class SourceLSInput implements LSInput {

Modified: aries/trunk/blueprint/blueprint-parser/pom.xml
URL: 
http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-parser/pom.xml?rev=1738326&r1=1738325&r2=1738326&view=diff
==============================================================================
--- aries/trunk/blueprint/blueprint-parser/pom.xml (original)
+++ aries/trunk/blueprint/blueprint-parser/pom.xml Sat Apr  9 06:27:49 2016
@@ -45,7 +45,7 @@
 
     <properties>
         <blueprint.api.version>1.0.0</blueprint.api.version>
-        <lastReleaseVersion>1.3.0</lastReleaseVersion>
+        <lastReleaseVersion>1.4.0</lastReleaseVersion>
     </properties>
 
     <profiles>

Modified: 
aries/trunk/blueprint/blueprint-parser/src/main/java/org/apache/aries/blueprint/NamespaceHandler2.java
URL: 
http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-parser/src/main/java/org/apache/aries/blueprint/NamespaceHandler2.java?rev=1738326&r1=1738325&r2=1738326&view=diff
==============================================================================
--- 
aries/trunk/blueprint/blueprint-parser/src/main/java/org/apache/aries/blueprint/NamespaceHandler2.java
 (original)
+++ 
aries/trunk/blueprint/blueprint-parser/src/main/java/org/apache/aries/blueprint/NamespaceHandler2.java
 Sat Apr  9 06:27:49 2016
@@ -16,24 +16,25 @@
  */
 package org.apache.aries.blueprint;
 
-import java.net.URL;
-import java.util.Set;
-
-import org.osgi.service.blueprint.reflect.ComponentMetadata;
-import org.osgi.service.blueprint.reflect.Metadata;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-
 /**
  * Additional namespace features
  */
 public interface NamespaceHandler2 extends NamespaceHandler {
 
-    /*
+    /**
      * A namespace can return true if its parsing relies on PSVI,
      * i.e. extensions from the schema for default attributes values
      * for example.
      */
     boolean usePsvi();
 
+    /**
+     * <p>A hint for a registry of handlers that this handler actually may 
resolve given namespace
+     * and {@link NamespaceHandler#getSchemaLocation(String) return a location 
for XSD resource} for it.</p>
+     * <p>Some handlers return <em>some</em> XSD resource when asked for 
location of unknown namespace</p>
+     * @param namespace
+     * @return
+     */
+    boolean mayResolve(String namespace);
+
 }

Modified: aries/trunk/blueprint/blueprint-spring/pom.xml
URL: 
http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-spring/pom.xml?rev=1738326&r1=1738325&r2=1738326&view=diff
==============================================================================
--- aries/trunk/blueprint/blueprint-spring/pom.xml (original)
+++ aries/trunk/blueprint/blueprint-spring/pom.xml Sat Apr  9 06:27:49 2016
@@ -59,7 +59,7 @@
             org.apache.aries.blueprint.spring.Activator
         </aries.osgi.activator>
         <blueprint.api.version>1.0.0</blueprint.api.version>
-        <blueprint.core.version>1.6.0-SNAPSHOT</blueprint.core.version>
+        <blueprint.core.version>1.6.1-SNAPSHOT</blueprint.core.version>
         <blueprint.parser.version>1.5.0-SNAPSHOT</blueprint.parser.version>
         <!--
         <lastReleaseVersion>1.0.4</lastReleaseVersion>
@@ -71,7 +71,7 @@
             <id>dev</id>
             <properties>
                 <blueprint.api.version>1.0.1</blueprint.api.version>
-                <blueprint.core.version>1.6.0-SNAPSHOT</blueprint.core.version>
+                <blueprint.core.version>1.6.1-SNAPSHOT</blueprint.core.version>
                 
<blueprint.parser.version>1.5.0-SNAPSHOT</blueprint.parser.version>
             </properties>
         </profile>
@@ -86,13 +86,13 @@
         <dependency>
             <groupId>org.apache.aries.blueprint</groupId>
             <artifactId>blueprint-parser</artifactId>
-            <version>1.4.0</version>
+            <version>${blueprint.parser.version}</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.aries.blueprint</groupId>
             <artifactId>org.apache.aries.blueprint.core</artifactId>
-            <version>1.6.1-SNAPSHOT</version>
+            <version>${blueprint.core.version}</version>
         </dependency>
         <dependency>
             <groupId>org.osgi</groupId>

Modified: 
aries/trunk/blueprint/blueprint-spring/src/main/java/org/apache/aries/blueprint/spring/BlueprintNamespaceHandler.java
URL: 
http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-spring/src/main/java/org/apache/aries/blueprint/spring/BlueprintNamespaceHandler.java?rev=1738326&r1=1738325&r2=1738326&view=diff
==============================================================================
--- 
aries/trunk/blueprint/blueprint-spring/src/main/java/org/apache/aries/blueprint/spring/BlueprintNamespaceHandler.java
 (original)
+++ 
aries/trunk/blueprint/blueprint-spring/src/main/java/org/apache/aries/blueprint/spring/BlueprintNamespaceHandler.java
 Sat Apr  9 06:27:49 2016
@@ -83,6 +83,11 @@ public class BlueprintNamespaceHandler i
     }
 
     @Override
+    public boolean mayResolve(String namespace) {
+        return schemas.containsKey(namespace);
+    }
+
+    @Override
     public URL getSchemaLocation(String s) {
         if (schemas.containsKey(s)) {
             return bundle.getResource(schemas.getProperty(s));


Reply via email to