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