-
Bug
-
Resolution: Fixed
-
P2
-
9-repo-jigsaw
-
Verified
Several jaxws tests fail in jake b96. JDK-8131334 needs to be updated to work with jake. The following patch has been pushed to jake/jaxws.
"uses" is yet to be added in java.xml.ws module-info.java. It's not clear why SPI is used during the merge.
This needs to be examined.
diff --git a/src/java.xml.ws/share/classes/javax/xml/soap/ServiceLoaderUtil.java b/src/java.xml.ws/share/classes/javax/xml/soap/ServiceLoaderUtil.java
--- a/src/java.xml.ws/share/classes/javax/xml/soap/ServiceLoaderUtil.java
+++ b/src/java.xml.ws/share/classes/javax/xml/soap/ServiceLoaderUtil.java
@@ -25,6 +25,7 @@
package javax.xml.soap;
+import com.sun.xml.internal.ws.Modules;
import java.util.ServiceLoader;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -83,7 +84,9 @@
String defaultImplClassName, ClassLoader classLoader,
final ExceptionHandler<T> handler) throws T {
try {
- return safeLoadClass(className, defaultImplClassName, classLoader).newInstance();
+ Class spiClass = safeLoadClass(className, defaultImplClassName, classLoader);
+ Modules.ensureReadable(ServiceLoaderUtil.class, spiClass);
+ return spiClass.newInstance();
} catch (ClassNotFoundException x) {
throw handler.createException(x, "Provider " + className + " not found");
} catch (Exception x) {
"uses" is yet to be added in java.xml.ws module-info.java. It's not clear why SPI is used during the merge.
This needs to be examined.
diff --git a/src/java.xml.ws/share/classes/javax/xml/soap/ServiceLoaderUtil.java b/src/java.xml.ws/share/classes/javax/xml/soap/ServiceLoaderUtil.java
--- a/src/java.xml.ws/share/classes/javax/xml/soap/ServiceLoaderUtil.java
+++ b/src/java.xml.ws/share/classes/javax/xml/soap/ServiceLoaderUtil.java
@@ -25,6 +25,7 @@
package javax.xml.soap;
+import com.sun.xml.internal.ws.Modules;
import java.util.ServiceLoader;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -83,7 +84,9 @@
String defaultImplClassName, ClassLoader classLoader,
final ExceptionHandler<T> handler) throws T {
try {
- return safeLoadClass(className, defaultImplClassName, classLoader).newInstance();
+ Class spiClass = safeLoadClass(className, defaultImplClassName, classLoader);
+ Modules.ensureReadable(ServiceLoaderUtil.class, spiClass);
+ return spiClass.newInstance();
} catch (ClassNotFoundException x) {
throw handler.createException(x, "Provider " + className + " not found");
} catch (Exception x) {