--- old/jaxws/src/jdk.xml.ws/share/classes/com/sun/tools/internal/ws/wscompile/WsimportTool.java 2017-02-14 14:26:18.772441611 +0300 +++ new/jaxws/src/jdk.xml.ws/share/classes/com/sun/tools/internal/ws/wscompile/WsimportTool.java 2017-02-14 14:26:18.676440998 +0300 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2016, 2017, 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 @@ -63,8 +63,8 @@ * @author Vivek Pandey */ public class WsimportTool { - /** JAXWS module name. JAXWS dependency is mandatory in generated Java module. */ - private static final String JAXWS_MODULE = "java.xml.ws"; + /** JAXB module name. JAXB dependency is mandatory in generated Java module. */ + private static final String JAXWS_PACKAGE = "java.xml.ws"; private static final String WSIMPORT = "wsimport"; private final PrintStream out; @@ -246,7 +246,7 @@ } private void deleteGeneratedFiles() { - Set trackedRootPackages = new HashSet(); + Set trackedRootPackages = new HashSet<>(); if (options.clientjar != null) { //remove all non-java artifacts as they will packaged in jar. @@ -282,7 +282,7 @@ private void addClassesToGeneratedFiles() throws IOException { Iterable generatedFiles = options.getGeneratedFiles(); - final List trackedClassFiles = new ArrayList(); + final List trackedClassFiles = new ArrayList<>(); for(File f: generatedFiles) { if(f.getName().endsWith(".java")) { String relativeDir = DirectoryUtil.getRelativePathfromCommonBase(f.getParentFile(),options.sourceDir); @@ -477,7 +477,7 @@ } if (options.getModuleName() != null) { - options.getCodeModel()._prepareModuleInfo(options.getModuleName(), JAXWS_MODULE); + options.getCodeModel()._prepareModuleInfo(options.getModuleName(), JAXWS_PACKAGE); } CodeWriter cw; @@ -504,7 +504,7 @@ } protected boolean compileGeneratedClasses(ErrorReceiver receiver, WsimportListener listener){ - List sourceFiles = new ArrayList(); + List sourceFiles = new ArrayList<>(); for (File f : options.getGeneratedFiles()) { if (f.exists() && f.getName().endsWith(".java")) { @@ -515,10 +515,7 @@ if (sourceFiles.size() > 0) { String classDir = options.destDir.getAbsolutePath(); String classpathString = createClasspathString(); - List args = new ArrayList(); - - args.add("--add-modules"); - args.add("java.xml.ws"); + List args = new ArrayList<>(); args.add("-d"); args.add(classDir); @@ -534,8 +531,26 @@ args.add(options.encoding); } + boolean addModules = true; if (options.javacOptions != null) { - args.addAll(options.getJavacOptions(args, listener)); + List javacOptions = options.getJavacOptions(args, listener); + for (int i = 0; i < javacOptions.size(); i++) { + String opt = javacOptions.get(i); + if ("-source".equals(opt) && 9 >= getVersion(javacOptions.get(i + 1))) { + addModules = false; + } + if ("-target".equals(opt) && 9 >= getVersion(javacOptions.get(i + 1))) { + addModules = false; + } + if ("-release".equals(opt) && 9 >= getVersion(javacOptions.get(i + 1))) { + addModules = false; + } + args.add(opt); + } + } + if (addModules) { + args.add("--add-modules"); + args.add("java.xml.ws"); } for (int i = 0; i < sourceFiles.size(); ++i) { @@ -572,4 +587,8 @@ System.out.println(WscompileMessages.WSIMPORT_USAGE_EXTENSIONS()); System.out.println(WscompileMessages.WSIMPORT_USAGE_EXAMPLES()); } + + private float getVersion(String s) { + return Float.parseFloat(s); + } }