From 2f39e1bd30f3cec6935d6689a9ff18448ba7c67b Mon Sep 17 00:00:00 2001 From: Roman Grigoriadi Date: Tue, 15 Nov 2016 23:43:38 +0300 Subject: [PATCH] 8164479: Update JAX-WS RI integration to latest version (2.3.0-SNAPSHOT) Reviewed-by: alanb, joehw, lancea, mchung --- .../classes/javax/activation/CommandInfo.java | 104 +++++++++- .../share/classes/module-info.java | 2 - .../com/sun/xml/internal/bind/util/Which.java | 4 +- .../classes/javax/xml/bind/JAXBContext.java | 4 +- .../javax/xml/bind/attachment/package.html | 6 +- .../helpers/AbstractUnmarshallerImpl.java | 18 +- .../javax/xml/bind/helpers/package.html | 6 +- .../share/classes/javax/xml/bind/package.html | 6 +- .../classes/javax/xml/bind/util/package.html | 6 +- .../ws/encoding/XmlDataContentHandler.java | 7 +- .../xml/internal/ws/model/RuntimeModeler.java | 28 ++- .../xml/internal/ws/util/version.properties | 2 +- .../sun/xml/internal/ws/util/xml/XmlUtil.java | 137 ++++++------- .../share/classes/module-info.java | 1 - .../sun/codemodel/internal/JCodeModel.java | 62 +++++- .../codemodel/internal/JExportsDirective.java | 67 +++++++ .../com/sun/codemodel/internal/JModule.java | 189 ++++++++++++++++++ .../codemodel/internal/JModuleDirective.java | 115 +++++++++++ .../com/sun/codemodel/internal/JPackage.java | 11 +- .../internal/JRequiresDirective.java | 91 +++++++++ .../internal/writer/FileCodeWriter.java | 8 +- .../internal/writer/FilterCodeWriter.java | 5 +- .../internal/writer/ProgressCodeWriter.java | 7 +- .../internal/writer/PrologCodeWriter.java | 3 +- .../writer/SingleStreamCodeWriter.java | 11 +- .../internal/writer/ZipCodeWriter.java | 9 +- .../internal/xjc/MessageBundle.properties | 6 +- .../com/sun/tools/internal/xjc/Messages.java | 5 +- .../com/sun/tools/internal/xjc/Options.java | 94 +++++---- .../internal/xjc/ProgressCodeWriter.java | 31 ++- .../xjc/generator/bean/BeanGenerator.java | 9 +- .../bean/ObjectFactoryGeneratorImpl.java | 10 +- .../internal/xjc/model/CBuiltinLeafInfo.java | 4 +- .../tools/internal/xjc/model/Constructor.java | 4 +- .../xjc/reader/dtd/bindinfo/BIInterface.java | 6 +- .../xsom/impl/parser/NGCCRuntimeEx.java | 100 ++++++++- .../impl/parser/state/attributeDeclBody.java | 24 +-- .../impl/parser/state/attributeGroupDecl.java | 24 +-- .../xsom/impl/parser/state/complexType.java | 27 +-- .../impl/parser/state/elementDeclBody.java | 26 +-- .../xsom/impl/parser/state/group.java | 24 +-- .../impl/parser/state/identityConstraint.java | 26 +-- .../xsom/impl/parser/state/notation.java | 25 +-- .../xsom/impl/parser/state/qname.java | 18 +- .../xsom/impl/parser/state/simpleType.java | 25 +-- .../modeler/annotation/TypeModeler.java | 31 ++- .../modeler/annotation/WebServiceAp.java | 76 +------ .../WebServiceWrapperGenerator.java | 26 ++- .../ws/resources/wscompile.properties | 3 +- .../sun/tools/internal/ws/version.properties | 2 +- .../ws/wscompile/FilerCodeWriter.java | 16 +- .../internal/ws/wscompile/WsgenTool.java | 29 +-- .../ws/wscompile/WsimportOptions.java | 18 +- .../internal/ws/wscompile/WsimportTool.java | 36 +--- 54 files changed, 1151 insertions(+), 483 deletions(-) create mode 100644 jaxws/src/jdk.xml.bind/share/classes/com/sun/codemodel/internal/JExportsDirective.java create mode 100644 jaxws/src/jdk.xml.bind/share/classes/com/sun/codemodel/internal/JModule.java create mode 100644 jaxws/src/jdk.xml.bind/share/classes/com/sun/codemodel/internal/JModuleDirective.java create mode 100644 jaxws/src/jdk.xml.bind/share/classes/com/sun/codemodel/internal/JRequiresDirective.java diff --git a/jaxws/src/java.activation/share/classes/javax/activation/CommandInfo.java b/jaxws/src/java.activation/share/classes/javax/activation/CommandInfo.java index b8dfd8b7091..b6312e0c253 100644 --- a/jaxws/src/java.activation/share/classes/javax/activation/CommandInfo.java +++ b/jaxws/src/java.activation/share/classes/javax/activation/CommandInfo.java @@ -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,8 +87,15 @@ public class CommandInfo { /** * Return the instantiated JavaBean component. *

- * Begin by instantiating the component with - * {@code Beans.instantiate()}. + * If {@code java.beans.Beans} is visible then it's + * {@code java.beans.Beans#instantiate} method is invoked to instantiate + * the component as a JavaBeans component. + * When {@code java.beans.Beans} is not visible (when {@code java.desktop} + * module is not readable or when the runtime image does not contain the + * {@code java.desktop} module) then the command's class is loaded and + * instantiated with its public no-args constructor. + *

+ * The component class needs to be public. *

* If the bean implements the {@code javax.activation.CommandObject} * interface, call its {@code setCommandContext} method. @@ -102,7 +112,7 @@ public class CommandInfo { * 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 +126,7 @@ public class CommandInfo { 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 +145,86 @@ public class CommandInfo { 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, false, loader); + try { + return beanClass.getDeclaredConstructor().newInstance(); + } catch (Exception ex) { + throw new ClassNotFoundException(beanClass + ": " + ex, ex); + } + + } + return null; + } + } } diff --git a/jaxws/src/java.activation/share/classes/module-info.java b/jaxws/src/java.activation/share/classes/module-info.java index dca632ee776..1ba4eb115ec 100644 --- a/jaxws/src/java.activation/share/classes/module-info.java +++ b/jaxws/src/java.activation/share/classes/module-info.java @@ -28,8 +28,6 @@ */ module java.activation { requires public java.datatransfer; - // dependence on java.beans.Beans to be eliminated - requires java.desktop; requires java.logging; exports javax.activation; diff --git a/jaxws/src/java.xml.bind/share/classes/com/sun/xml/internal/bind/util/Which.java b/jaxws/src/java.xml.bind/share/classes/com/sun/xml/internal/bind/util/Which.java index 4e52d9cce11..bb9eeb5faf8 100644 --- a/jaxws/src/java.xml.bind/share/classes/com/sun/xml/internal/bind/util/Which.java +++ b/jaxws/src/java.xml.bind/share/classes/com/sun/xml/internal/bind/util/Which.java @@ -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 @@ public class Which { /** * 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 diff --git a/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/JAXBContext.java b/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/JAXBContext.java index a2d9bceb37f..4b4f6e55c46 100644 --- a/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/JAXBContext.java +++ b/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/JAXBContext.java @@ -450,8 +450,8 @@ public abstract class JAXBContext { * 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. diff --git a/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/attachment/package.html b/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/attachment/package.html index c452cb9ad7f..499643d184d 100644 --- a/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/attachment/package.html +++ b/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/attachment/package.html @@ -1,6 +1,6 @@ - @since 1.6, JAXB 2.0 + @since JAXB 2.0 diff --git a/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/helpers/AbstractUnmarshallerImpl.java b/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/helpers/AbstractUnmarshallerImpl.java index cef1cf68e72..78f5232a446 100644 --- a/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/helpers/AbstractUnmarshallerImpl.java +++ b/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/helpers/AbstractUnmarshallerImpl.java @@ -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.dom.DOMSource; 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 @@ public abstract class AbstractUnmarshallerImpl implements Unmarshaller } 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()); } } diff --git a/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/helpers/package.html b/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/helpers/package.html index 059abed0a0b..02588965592 100644 --- a/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/helpers/package.html +++ b/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/helpers/package.html @@ -1,6 +1,6 @@