--- old/jaxp/src/java.xml/share/classes/module-info.java 2016-09-26 02:15:44.032409834 +0300 +++ new/jaxp/src/java.xml/share/classes/module-info.java 2016-09-26 02:15:43.932408348 +0300 @@ -61,12 +61,6 @@ java.xml.ws; exports com.sun.org.apache.xml.internal.dtm to java.xml.crypto; - exports com.sun.org.apache.xml.internal.resolver to - java.xml.ws, - jdk.xml.bind; - exports com.sun.org.apache.xml.internal.resolver.tools to - java.xml.ws, - jdk.xml.bind; exports com.sun.org.apache.xml.internal.utils to java.xml.crypto; exports com.sun.org.apache.xpath.internal to @@ -80,7 +74,6 @@ exports com.sun.org.apache.xpath.internal.res to java.xml.crypto; // reflection access from com.sun.xml.internal.ws.api.streaming.XMLStreamWriterFactory - exports com.sun.xml.internal.stream.writers to java.xml.ws; uses javax.xml.datatype.DatatypeFactory; uses javax.xml.parsers.DocumentBuilderFactory; uses javax.xml.parsers.SAXParserFactory; --- old/jaxws/src/java.activation/share/classes/javax/activation/CommandInfo.java 2016-09-26 02:15:44.404415364 +0300 +++ new/jaxws/src/java.activation/share/classes/javax/activation/CommandInfo.java 2016-09-26 02:15:44.304413878 +0300 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -26,7 +26,10 @@ package javax.activation; import java.io.*; -import java.beans.Beans; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.security.AccessController; +import java.security.PrivilegedAction; /** * The CommandInfo class is used by CommandMap implementations to @@ -84,11 +87,17 @@ /** * Return the instantiated JavaBean component. *

- * Begin by instantiating the component with - * {@code Beans.instantiate()}. + * If the current runtime environment supports + * {@link java.beans.Beans#instantiate Beans.instantiate}, + * use it to instantiate the JavaBeans component. Otherwise, use + * {@link java.lang.Class#forName Class.forName}. *

- * If the bean implements the {@code javax.activation.CommandObject} - * interface, call its {@code setCommandContext} method. + * The component class needs to be public. + * On Java SE 9 and newer, if the component class is in a named module, + * it needs to be in an exported package. + *

+ * If the bean implements the javax.activation.CommandObject + * interface, call its setCommandContext method. *

* If the DataHandler parameter is null, then the bean is * instantiated with no data. NOTE: this may be useful @@ -102,7 +111,7 @@ * this method will check if it implements the * java.io.Externalizable interface. If it does, the bean's * readExternal method will be called if an InputStream - * can be acquired from the DataHandler. + * can be acquired from the DataHandler.

* * @param dh The DataHandler that describes the data to be * passed to the command. @@ -116,7 +125,7 @@ Object new_bean = null; // try to instantiate the bean - new_bean = java.beans.Beans.instantiate(loader, className); + new_bean = Beans.instantiate(loader, className); // if we got one and it is a CommandObject if (new_bean != null) { @@ -135,4 +144,86 @@ return new_bean; } + + /** + * Helper class to invoke Beans.instantiate reflectively or the equivalent + * with core reflection when module java.desktop is not readable. + */ + private static final class Beans { + static final Method instantiateMethod; + + static { + Method m; + try { + Class c = Class.forName("java.beans.Beans"); + m = c.getDeclaredMethod("instantiate", ClassLoader.class, String.class); + } catch (ClassNotFoundException e) { + m = null; + } catch (NoSuchMethodException e) { + m = null; +} + instantiateMethod = m; + } + + /** + * Equivalent to invoking java.beans.Beans.instantiate(loader, cn) + */ + static Object instantiate(ClassLoader loader, String cn) + throws IOException, ClassNotFoundException { + + Exception exception; + + if (instantiateMethod != null) { + + // invoke Beans.instantiate + try { + return instantiateMethod.invoke(null, loader, cn); + } catch (InvocationTargetException e) { + exception = e; + } catch (IllegalAccessException e) { + exception = e; + } + + } else { + + SecurityManager security = System.getSecurityManager(); + if (security != null) { + // if it's ok with the SecurityManager, it's ok with me. + String cname = cn.replace('/', '.'); + if (cname.startsWith("[")) { + int b = cname.lastIndexOf('[') + 2; + if (b > 1 && b < cname.length()) { + cname = cname.substring(b); + } + } + int i = cname.lastIndexOf('.'); + if (i != -1) { + security.checkPackageAccess(cname.substring(0, i)); + } + } + + // Beans.instantiate specified to use SCL when loader is null + if (loader == null) { + loader = (ClassLoader) + AccessController.doPrivileged(new PrivilegedAction() { + public Object run() { + ClassLoader cl = null; + try { + cl = ClassLoader.getSystemClassLoader(); + } catch (SecurityException ex) { } + return cl; + } + }); + } + Class beanClass = Class.forName(cn, true, loader); + try { + return beanClass.newInstance(); + } catch (Exception ex) { + throw new ClassNotFoundException(beanClass + ": " + ex, ex); + } + + } + return null; + } + } } --- old/jaxws/src/java.xml.bind/share/classes/com/sun/xml/internal/bind/util/Which.java 2016-09-26 02:15:44.768420774 +0300 +++ new/jaxws/src/java.xml.bind/share/classes/com/sun/xml/internal/bind/util/Which.java 2016-09-26 02:15:44.676419407 +0300 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -41,7 +41,7 @@ /** * Search the specified classloader for the given classname. - * + * Then give the return value. * @param classname the fully qualified name of the class to search for * @param loader the classloader to search * @return the source location of the resource, or null if it wasn't found --- old/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/JAXBContext.java 2016-09-26 02:15:45.124426067 +0300 +++ new/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/JAXBContext.java 2016-09-26 02:15:45.028424640 +0300 @@ -450,8 +450,8 @@ * in an empty map. * * @return a new instance of a {@code JAXBContext} - * @throws JAXBException - * if an error was encountered while creating the {@code JAXBContext} such as + * @throws JAXBException if an error was encountered while creating the + * {@code JAXBContext} such as *

    *
  1. failure to locate either ObjectFactory.class or jaxb.index in the packages
  2. *
  3. an ambiguity among global elements contained in the contextPath
  4. --- old/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/attachment/package.html 2016-09-26 02:15:45.492431537 +0300 +++ new/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/attachment/package.html 2016-09-26 02:15:45.396430109 +0300 @@ -1,6 +1,6 @@ - @since 1.6, JAXB 2.0 + @since JAXB 2.0 --- old/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/helpers/AbstractUnmarshallerImpl.java 2016-09-26 02:15:45.860437007 +0300 +++ new/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/helpers/AbstractUnmarshallerImpl.java 2016-09-26 02:15:45.768435639 +0300 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -47,9 +47,7 @@ import javax.xml.transform.sax.SAXSource; import javax.xml.transform.stream.StreamSource; import javax.xml.validation.Schema; -import java.io.File; -import java.io.Reader; -import java.net.MalformedURLException; +import java.io.*; import java.net.URL; /** @@ -178,16 +176,8 @@ } try { - // copied from JAXP - String path = f.getAbsolutePath(); - if (File.separatorChar != '/') - path = path.replace(File.separatorChar, '/'); - if (!path.startsWith("/")) - path = "/" + path; - if (!path.endsWith("/") && f.isDirectory()) - path = path + "/"; - return unmarshal(new URL("file", "", path)); - } catch( MalformedURLException e ) { + return unmarshal(new BufferedInputStream(new FileInputStream(f))); + } catch( FileNotFoundException e ) { throw new IllegalArgumentException(e.getMessage()); } } --- old/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/helpers/package.html 2016-09-26 02:15:46.224442418 +0300 +++ new/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/helpers/package.html 2016-09-26 02:15:46.124440932 +0300 @@ -1,6 +1,6 @@