You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by gg...@apache.org on 2017/02/28 08:48:58 UTC

svn commit: r1784702 - /aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/namespace/NamespaceHandlerRegistryImpl.java

Author: ggrzybek
Date: Tue Feb 28 08:48:57 2017
New Revision: 1784702

URL: http://svn.apache.org/viewvc?rev=1784702&view=rev
Log:
[ARIES-1682] Fallback to URL API if URI.resolve(systemId) is still relative (case of jar:file:)

Modified:
    aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/namespace/NamespaceHandlerRegistryImpl.java

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=1784702&r1=1784701&r2=1784702&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 Tue Feb 28 08:48:57 2017
@@ -28,6 +28,7 @@ import java.io.InputStream;
 import java.io.Reader;
 import java.lang.ref.Reference;
 import java.lang.ref.SoftReference;
+import java.net.MalformedURLException;
 import java.net.URI;
 import java.net.URISyntaxException;
 import java.net.URL;
@@ -576,7 +577,17 @@ public class NamespaceHandlerRegistryImp
                 if (baseURI != null && systemId != null) {
                     URI sId = URI.create(systemId);
                     if (!sId.isAbsolute()) {
-                        return URI.create(baseURI).resolve(sId).toString();
+                        URI resolved = URI.create(baseURI).resolve(sId);
+                        if (resolved.isAbsolute()) {
+                            return resolved.toString();
+                        } else {
+                            try {
+                                return new URL(new URL(baseURI), systemId).toString();
+                            } catch (MalformedURLException e) {
+                                LOGGER.warn("Can't resolve " + systemId + " against " + baseURI);
+                                return null;
+                            }
+                        }
                     }
                 }
                 return null;