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;


Reply via email to