Author: pauls
Date: Wed Jan 23 13:45:25 2019
New Revision: 1851915
URL: http://svn.apache.org/viewvc?rev=1851915&view=rev
Log:
FELIX-6035: preload the jrt handler on URLHandlers init using the URL to avoid
an add-opens requirement.
Modified:
felix/trunk/framework/pom.xml
felix/trunk/framework/src/main/java/org/apache/felix/framework/URLHandlers.java
felix/trunk/framework/src/main/java/org/apache/felix/framework/URLHandlersStreamHandlerProxy.java
Modified: felix/trunk/framework/pom.xml
URL:
http://svn.apache.org/viewvc/felix/trunk/framework/pom.xml?rev=1851915&r1=1851914&r2=1851915&view=diff
==============================================================================
--- felix/trunk/framework/pom.xml (original)
+++ felix/trunk/framework/pom.xml Wed Jan 23 13:45:25 2019
@@ -43,7 +43,7 @@
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
- <version>3.5.0</version>
+ <version>4.1.0</version>
<extensions>true</extensions>
<configuration>
<instructions>
Modified:
felix/trunk/framework/src/main/java/org/apache/felix/framework/URLHandlers.java
URL:
http://svn.apache.org/viewvc/felix/trunk/framework/src/main/java/org/apache/felix/framework/URLHandlers.java?rev=1851915&r1=1851914&r2=1851915&view=diff
==============================================================================
---
felix/trunk/framework/src/main/java/org/apache/felix/framework/URLHandlers.java
(original)
+++
felix/trunk/framework/src/main/java/org/apache/felix/framework/URLHandlers.java
Wed Jan 23 13:45:25 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;
@@ -173,6 +174,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 efforts
+ }
+ }
+ }
+
if (currentFactory != null)
{
try
Modified:
felix/trunk/framework/src/main/java/org/apache/felix/framework/URLHandlersStreamHandlerProxy.java
URL:
http://svn.apache.org/viewvc/felix/trunk/framework/src/main/java/org/apache/felix/framework/URLHandlersStreamHandlerProxy.java?rev=1851915&r1=1851914&r2=1851915&view=diff
==============================================================================
---
felix/trunk/framework/src/main/java/org/apache/felix/framework/URLHandlersStreamHandlerProxy.java
(original)
+++
felix/trunk/framework/src/main/java/org/apache/felix/framework/URLHandlersStreamHandlerProxy.java
Wed Jan 23 13:45:25 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)
{