Author: jbonofre
Date: Fri Feb 1 14:00:22 2019
New Revision: 1852742
URL: http://svn.apache.org/viewvc?rev=1852742&view=rev
Log:
FELIX-6035: preload the jrt handler on URLHandlers init using the URL to avoid
an add-opens requirement.
Modified:
felix/branches/org.apache.felix.framework-5.6.x/pom.xml
felix/branches/org.apache.felix.framework-5.6.x/src/main/java/org/apache/felix/framework/URLHandlers.java
felix/branches/org.apache.felix.framework-5.6.x/src/main/java/org/apache/felix/framework/URLHandlersStreamHandlerProxy.java
Modified: felix/branches/org.apache.felix.framework-5.6.x/pom.xml
URL:
http://svn.apache.org/viewvc/felix/branches/org.apache.felix.framework-5.6.x/pom.xml?rev=1852742&r1=1852741&r2=1852742&view=diff
==============================================================================
--- felix/branches/org.apache.felix.framework-5.6.x/pom.xml (original)
+++ felix/branches/org.apache.felix.framework-5.6.x/pom.xml Fri Feb 1 14:00:22
2019
@@ -43,7 +43,7 @@
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
- <version>2.5.0</version>
+ <version>4.1.0</version>
<extensions>true</extensions>
<configuration>
<instructions>
Modified:
felix/branches/org.apache.felix.framework-5.6.x/src/main/java/org/apache/felix/framework/URLHandlers.java
URL:
http://svn.apache.org/viewvc/felix/branches/org.apache.felix.framework-5.6.x/src/main/java/org/apache/felix/framework/URLHandlers.java?rev=1852742&r1=1852741&r2=1852742&view=diff
==============================================================================
---
felix/branches/org.apache.felix.framework-5.6.x/src/main/java/org/apache/felix/framework/URLHandlers.java
(original)
+++
felix/branches/org.apache.felix.framework-5.6.x/src/main/java/org/apache/felix/framework/URLHandlers.java
Fri Feb 1 14:00:22 2019
@@ -18,6 +18,7 @@
*/
package org.apache.felix.framework;
+import java.lang.reflect.Method;
import java.net.ContentHandler;
import java.net.ContentHandlerFactory;
import java.net.URL;
@@ -174,6 +175,30 @@ class URLHandlers implements URLStreamHa
// Ignore, this is a best effort (maybe log it or something)
}
+ // Try to preload the jrt handler as we need it from the jvm on
java > 8
+ if (getFromCache(m_builtIn, "jrt") == null)
+ {
+ try
+ {
+ // Try to get it directly from the URL class to if possible
+ Method getURLStreamHandler =
m_secureAction.getDeclaredMethod(URL.class,"getURLStreamHandler", new
Class[]{String.class});
+ URLStreamHandler handler = (URLStreamHandler)
m_secureAction.invoke(getURLStreamHandler, null, new Object[]{"jrt"});
+ addToCache(m_builtIn, "jrt", handler);
+ }
+ catch (Throwable ex)
+ {
+ // Ignore, this is a best effort and try to load the
normal way
+ try
+ {
+ getBuiltInStreamHandler("jrt", currentFactory);
+ }
+ catch (Throwable ex2)
+ {
+ // Ignore, this is a best effort
+ }
+ }
+ }
+
if (currentFactory != null)
{
try
Modified:
felix/branches/org.apache.felix.framework-5.6.x/src/main/java/org/apache/felix/framework/URLHandlersStreamHandlerProxy.java
URL:
http://svn.apache.org/viewvc/felix/branches/org.apache.felix.framework-5.6.x/src/main/java/org/apache/felix/framework/URLHandlersStreamHandlerProxy.java?rev=1852742&r1=1852741&r2=1852742&view=diff
==============================================================================
---
felix/branches/org.apache.felix.framework-5.6.x/src/main/java/org/apache/felix/framework/URLHandlersStreamHandlerProxy.java
(original)
+++
felix/branches/org.apache.felix.framework-5.6.x/src/main/java/org/apache/felix/framework/URLHandlersStreamHandlerProxy.java
Fri Feb 1 14:00:22 2019
@@ -264,7 +264,7 @@ public class URLHandlersStreamHandlerPro
Object svc = getStreamHandlerService();
if (svc == null)
{
- throw new MalformedURLException("Unknown protocol: " +
url.toString());
+ throw new MalformedURLException("Unknown protocol: " +
url.getProtocol());
}
if (svc instanceof URLStreamHandlerService)
{
@@ -317,7 +317,7 @@ public class URLHandlersStreamHandlerPro
Object svc = getStreamHandlerService();
if (svc == null)
{
- throw new MalformedURLException("Unknown protocol: " +
url.toString());
+ throw new MalformedURLException("Unknown protocol: " +
url.getProtocol());
}
if (svc instanceof URLStreamHandlerService)
{