8173777: Merge javac -Xmodule into javac--patch-module
Summary: Converting uses of -Xmodule: to --patch-module.
Reviewed-by: alanb, mchung
--- a/jdk/test/javax/xml/jaxp/common/8035437/Document.java Fri Feb 10 11:00:41 2017 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-/*
- * Copyright (c) 2014, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-package org.w3c.dom;
-
-public interface Document {
-
- public org.w3c.dom.DocumentType getDoctype();
-}
--- a/jdk/test/javax/xml/jaxp/common/8035437/DocumentImpl.java Fri Feb 10 11:00:41 2017 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,67 +0,0 @@
-/*
- * Copyright (c) 2014, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-package com.sun.org.apache.xerces.internal.dom;
-
-import org.w3c.dom.Document;
-import org.w3c.dom.Node;
-import org.w3c.dom.DOMImplementation;
-
-public class DocumentImpl implements Document, Node {
-
- public short getNodeType() {
- return 9; //DOCUMENT_NODE = 9
- }
-
- public org.w3c.dom.Document getOwnerDocument() {
- return null;
- }
-
- public Node getFirstChild() {
- return null;
- }
-
- public String getPrefix() {
- return "TestPrefix";
- }
-
- public String getLocalName() {
- return "LocalName";
- }
-
- public boolean hasAttributes() {
- return false;
- }
-
- public Node renameNode(Node n, String namespaceURI, String name) {
- return n;
- }
-
- public org.w3c.dom.DocumentType getDoctype() {
- return null;
- }
-
- public DOMImplementation getImplementation() {
- return DOMImplementationImpl.getDOMImplementation();
- }
-
-}
--- a/jdk/test/javax/xml/jaxp/common/8035437/Node.java Fri Feb 10 11:00:41 2017 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,38 +0,0 @@
-/*
- * Copyright (c) 2014, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-package org.w3c.dom;
-
-public interface Node {
-
- public short getNodeType();
-
- public org.w3c.dom.Document getOwnerDocument();
-
- public Node getFirstChild();
-
- public String getPrefix();
-
- public String getLocalName();
-
- public boolean hasAttributes();
-}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/xml/jaxp/common/8035437/patch-src1/org/w3c/dom/Document.java Mon Feb 13 09:41:05 2017 +0100
@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) 2014, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.w3c.dom;
+
+public interface Document {
+
+ public org.w3c.dom.DocumentType getDoctype();
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/xml/jaxp/common/8035437/patch-src1/org/w3c/dom/Node.java Mon Feb 13 09:41:05 2017 +0100
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2014, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.w3c.dom;
+
+public interface Node {
+
+ public short getNodeType();
+
+ public org.w3c.dom.Document getOwnerDocument();
+
+ public Node getFirstChild();
+
+ public String getPrefix();
+
+ public String getLocalName();
+
+ public boolean hasAttributes();
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/xml/jaxp/common/8035437/patch-src2/com/sun/org/apache/xerces/internal/dom/DocumentImpl.java Mon Feb 13 09:41:05 2017 +0100
@@ -0,0 +1,67 @@
+/*
+ * Copyright (c) 2014, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package com.sun.org.apache.xerces.internal.dom;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+import org.w3c.dom.DOMImplementation;
+
+public class DocumentImpl implements Document, Node {
+
+ public short getNodeType() {
+ return 9; //DOCUMENT_NODE = 9
+ }
+
+ public org.w3c.dom.Document getOwnerDocument() {
+ return null;
+ }
+
+ public Node getFirstChild() {
+ return null;
+ }
+
+ public String getPrefix() {
+ return "TestPrefix";
+ }
+
+ public String getLocalName() {
+ return "LocalName";
+ }
+
+ public boolean hasAttributes() {
+ return false;
+ }
+
+ public Node renameNode(Node n, String namespaceURI, String name) {
+ return n;
+ }
+
+ public org.w3c.dom.DocumentType getDoctype() {
+ return null;
+ }
+
+ public DOMImplementation getImplementation() {
+ return DOMImplementationImpl.getDOMImplementation();
+ }
+
+}
--- a/jdk/test/javax/xml/jaxp/common/8035437/run.sh Fri Feb 10 11:00:41 2017 +0300
+++ b/jdk/test/javax/xml/jaxp/common/8035437/run.sh Mon Feb 13 09:41:05 2017 +0100
@@ -28,13 +28,43 @@
# @summary Tests that java.lang.AbstractMethodError is not thrown when
# serializing improper version of DocumentImpl class.
+OS=`uname -s`
+case "$OS" in
+ SunOS )
+ PS=":"
+ ;;
+ Linux )
+ PS=":"
+ ;;
+ Darwin )
+ PS=":"
+ ;;
+ AIX )
+ PS=":"
+ ;;
+ Windows*)
+ PS=";"
+ ;;
+ CYGWIN*)
+ PS=";"
+ ;;
+ * )
+ echo "Unrecognized system!"
+ exit 1;
+ ;;
+esac
+
mkdir -p exec/java.xml compile/java.xml
$COMPILEJAVA/bin/javac ${TESTJAVACOPTS} ${TESTTOOLVMOPTS} \
- -d compile/java.xml -Xmodule:java.xml $TESTSRC/Document.java $TESTSRC/Node.java || exit 1
+ -d compile/java.xml --patch-module java.xml=$TESTSRC/patch-src1 \
+ $TESTSRC/patch-src1/org/w3c/dom/Document.java \
+ $TESTSRC/patch-src1/org/w3c/dom/Node.java || exit 1
$COMPILEJAVA/bin/javac ${TESTJAVACOPTS} ${TESTTOOLVMOPTS} \
- -d exec/java.xml --patch-module java.xml=compile/java.xml -Xmodule:java.xml $TESTSRC/DocumentImpl.java || exit 2
+ -d exec/java.xml --patch-module java.xml=compile/java.xml${PS}$TESTSRC/patch-src2 \
+ $TESTSRC/patch-src2/com/sun/org/apache/xerces/internal/dom/DocumentImpl.java \
+ || exit 2
$COMPILEJAVA/bin/javac ${TESTJAVACOPTS} ${TESTTOOLVMOPTS} \
$TESTSRC/AbstractMethodErrorTest.java -d exec || exit 3
--- a/jdk/test/sun/text/IntHashtable/Bug4170614Test.java Fri Feb 10 11:00:41 2017 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,191 +0,0 @@
-/*
- * Copyright (c) 1999, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- (this test doesn't have an at-test tag because it's run by a shell
- script instead of directly by the test harness)
-*/
-
-/*
- *
- *
- * (C) Copyright Taligent, Inc. 1996, 1997 - All Rights Reserved
- * (C) Copyright IBM Corp. 1996 - 1998 - All Rights Reserved
- *
- * Portions copyright (c) 2007 Sun Microsystems, Inc.
- * All Rights Reserved.
- *
- * The original version of this source code and documentation
- * is copyrighted and owned by Taligent, Inc., a wholly-owned
- * subsidiary of IBM. These materials are provided under terms
- * of a License Agreement between Taligent and Sun. This technology
- * is protected by multiple US and International patents.
- *
- * This notice and attribution to Taligent may not be removed.
- * Taligent is a registered trademark of Taligent, Inc.
- *
- * Permission to use, copy, modify, and distribute this software
- * and its documentation for NON-COMMERCIAL purposes and without
- * fee is hereby granted provided that this copyright notice
- * appears in all copies. Please refer to the file "copyright.html"
- * for further important copyright and licensing information.
- *
- * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
- * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
- * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
- * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
- * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
- * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
- *
- */
-package java.text;
-import sun.text.IntHashtable;
-
-
-/**
- * This class tests some internal hashCode() functions.
- * Bug #4170614 complained that we had two iternal classes that
- * break the invariant that if a.equals(b) than a.hashCode() ==
- * b.hashCode(). This is because these classes overrode equals()
- * but not hashCode(). These are both purely internal classes, and
- * the library itself doesn't actually call hashCode(), so this isn't
- * actually causing anyone problems yet. But if these classes are
- * ever exposed in the API, their hashCode() methods need to work right.
- * PatternEntry will never be exposed in the API, but IntHashtable
- * might be. This is a shell test to allow us to access classes that
- * are declared package private.
- * @author Richard Gillam
- */
-public class Bug4170614Test {
- public static void main(String[] args) throws Exception {
- testIntHashtable();
- testPatternEntry();
- }
-
-
- public static void testIntHashtable() throws Exception {
- IntHashtable fred = new IntHashtable();
- fred.put(1, 10);
- fred.put(2, 20);
- fred.put(3, 30);
-
- IntHashtable barney = new IntHashtable();
- barney.put(1, 10);
- barney.put(3, 30);
- barney.put(2, 20);
-
- IntHashtable homer = new IntHashtable();
- homer.put(3, 30);
- homer.put(1, 10);
- homer.put(7, 900);
-
- if (fred.equals(barney)) {
- System.out.println("fred.equals(barney)");
- }
- else {
- System.out.println("!fred.equals(barney)");
- }
- System.out.println("fred.hashCode() == " + fred.hashCode());
- System.out.println("barney.hashCode() == " + barney.hashCode());
-
- if (!fred.equals(barney)) {
- throw new Exception("equals() failed on two hashtables that are equal");
- }
-
- if (fred.hashCode() != barney.hashCode()) {
- throw new Exception("hashCode() failed on two hashtables that are equal");
- }
-
- System.out.println();
- if (fred.equals(homer)) {
- System.out.println("fred.equals(homer)");
- }
- else {
- System.out.println("!fred.equals(homer)");
- }
- System.out.println("fred.hashCode() == " + fred.hashCode());
- System.out.println("homer.hashCode() == " + homer.hashCode());
-
- if (fred.equals(homer)) {
- throw new Exception("equals() failed on two hashtables that are not equal");
- }
-
- if (fred.hashCode() == homer.hashCode()) {
- throw new Exception("hashCode() failed on two hashtables that are not equal");
- }
-
- System.out.println();
- System.out.println("testIntHashtable() passed.\n");
- }
-
- public static void testPatternEntry() throws Exception {
- PatternEntry fred = new PatternEntry(1,
- new StringBuffer("hello"),
- new StringBuffer("up"));
- PatternEntry barney = new PatternEntry(1,
- new StringBuffer("hello"),
- new StringBuffer("down"));
- // (equals() only considers the "chars" field, so fred and barney are equal)
- PatternEntry homer = new PatternEntry(1,
- new StringBuffer("goodbye"),
- new StringBuffer("up"));
-
- if (fred.equals(barney)) {
- System.out.println("fred.equals(barney)");
- }
- else {
- System.out.println("!fred.equals(barney)");
- }
- System.out.println("fred.hashCode() == " + fred.hashCode());
- System.out.println("barney.hashCode() == " + barney.hashCode());
-
- if (!fred.equals(barney)) {
- throw new Exception("equals() failed on two hashtables that are equal");
- }
-
- if (fred.hashCode() != barney.hashCode()) {
- throw new Exception("hashCode() failed on two hashtables that are equal");
- }
-
- System.out.println();
- if (fred.equals(homer)) {
- System.out.println("fred.equals(homer)");
- }
- else {
- System.out.println("!fred.equals(homer)");
- }
- System.out.println("fred.hashCode() == " + fred.hashCode());
- System.out.println("homer.hashCode() == " + homer.hashCode());
-
- if (fred.equals(homer)) {
- throw new Exception("equals() failed on two hashtables that are not equal");
- }
-
- if (fred.hashCode() == homer.hashCode()) {
- throw new Exception("hashCode() failed on two hashtables that are not equal");
- }
-
- System.out.println();
- System.out.println("testPatternEntry() passed.\n");
- }
-}
--- a/jdk/test/sun/text/IntHashtable/Bug4170614Test.sh Fri Feb 10 11:00:41 2017 +0300
+++ b/jdk/test/sun/text/IntHashtable/Bug4170614Test.sh Mon Feb 13 09:41:05 2017 +0100
@@ -60,8 +60,8 @@
TEST_JAVABASE=${TESTCLASSES}/java.base
mkdir -p ${TEST_JAVABASE}
${COMPILEJAVA}/bin/javac ${TESTJAVACOPTS} ${TESTTOOLVMOPTS} \
- -Xmodule:java.base \
- -d ${TEST_JAVABASE} Bug4170614Test.java
+ --patch-module java.base=patch-src \
+ -d ${TEST_JAVABASE} patch-src/java/text/Bug4170614Test.java
${TESTJAVA}/bin/java ${TESTVMOPTS} --patch-module java.base=${TEST_JAVABASE} java.text.Bug4170614Test
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/text/IntHashtable/patch-src/java/text/Bug4170614Test.java Mon Feb 13 09:41:05 2017 +0100
@@ -0,0 +1,191 @@
+/*
+ * Copyright (c) 1999, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ (this test doesn't have an at-test tag because it's run by a shell
+ script instead of directly by the test harness)
+*/
+
+/*
+ *
+ *
+ * (C) Copyright Taligent, Inc. 1996, 1997 - All Rights Reserved
+ * (C) Copyright IBM Corp. 1996 - 1998 - All Rights Reserved
+ *
+ * Portions copyright (c) 2007 Sun Microsystems, Inc.
+ * All Rights Reserved.
+ *
+ * The original version of this source code and documentation
+ * is copyrighted and owned by Taligent, Inc., a wholly-owned
+ * subsidiary of IBM. These materials are provided under terms
+ * of a License Agreement between Taligent and Sun. This technology
+ * is protected by multiple US and International patents.
+ *
+ * This notice and attribution to Taligent may not be removed.
+ * Taligent is a registered trademark of Taligent, Inc.
+ *
+ * Permission to use, copy, modify, and distribute this software
+ * and its documentation for NON-COMMERCIAL purposes and without
+ * fee is hereby granted provided that this copyright notice
+ * appears in all copies. Please refer to the file "copyright.html"
+ * for further important copyright and licensing information.
+ *
+ * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
+ * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+ * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+ * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
+ * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
+ * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
+ *
+ */
+package java.text;
+import sun.text.IntHashtable;
+
+
+/**
+ * This class tests some internal hashCode() functions.
+ * Bug #4170614 complained that we had two iternal classes that
+ * break the invariant that if a.equals(b) than a.hashCode() ==
+ * b.hashCode(). This is because these classes overrode equals()
+ * but not hashCode(). These are both purely internal classes, and
+ * the library itself doesn't actually call hashCode(), so this isn't
+ * actually causing anyone problems yet. But if these classes are
+ * ever exposed in the API, their hashCode() methods need to work right.
+ * PatternEntry will never be exposed in the API, but IntHashtable
+ * might be. This is a shell test to allow us to access classes that
+ * are declared package private.
+ * @author Richard Gillam
+ */
+public class Bug4170614Test {
+ public static void main(String[] args) throws Exception {
+ testIntHashtable();
+ testPatternEntry();
+ }
+
+
+ public static void testIntHashtable() throws Exception {
+ IntHashtable fred = new IntHashtable();
+ fred.put(1, 10);
+ fred.put(2, 20);
+ fred.put(3, 30);
+
+ IntHashtable barney = new IntHashtable();
+ barney.put(1, 10);
+ barney.put(3, 30);
+ barney.put(2, 20);
+
+ IntHashtable homer = new IntHashtable();
+ homer.put(3, 30);
+ homer.put(1, 10);
+ homer.put(7, 900);
+
+ if (fred.equals(barney)) {
+ System.out.println("fred.equals(barney)");
+ }
+ else {
+ System.out.println("!fred.equals(barney)");
+ }
+ System.out.println("fred.hashCode() == " + fred.hashCode());
+ System.out.println("barney.hashCode() == " + barney.hashCode());
+
+ if (!fred.equals(barney)) {
+ throw new Exception("equals() failed on two hashtables that are equal");
+ }
+
+ if (fred.hashCode() != barney.hashCode()) {
+ throw new Exception("hashCode() failed on two hashtables that are equal");
+ }
+
+ System.out.println();
+ if (fred.equals(homer)) {
+ System.out.println("fred.equals(homer)");
+ }
+ else {
+ System.out.println("!fred.equals(homer)");
+ }
+ System.out.println("fred.hashCode() == " + fred.hashCode());
+ System.out.println("homer.hashCode() == " + homer.hashCode());
+
+ if (fred.equals(homer)) {
+ throw new Exception("equals() failed on two hashtables that are not equal");
+ }
+
+ if (fred.hashCode() == homer.hashCode()) {
+ throw new Exception("hashCode() failed on two hashtables that are not equal");
+ }
+
+ System.out.println();
+ System.out.println("testIntHashtable() passed.\n");
+ }
+
+ public static void testPatternEntry() throws Exception {
+ PatternEntry fred = new PatternEntry(1,
+ new StringBuffer("hello"),
+ new StringBuffer("up"));
+ PatternEntry barney = new PatternEntry(1,
+ new StringBuffer("hello"),
+ new StringBuffer("down"));
+ // (equals() only considers the "chars" field, so fred and barney are equal)
+ PatternEntry homer = new PatternEntry(1,
+ new StringBuffer("goodbye"),
+ new StringBuffer("up"));
+
+ if (fred.equals(barney)) {
+ System.out.println("fred.equals(barney)");
+ }
+ else {
+ System.out.println("!fred.equals(barney)");
+ }
+ System.out.println("fred.hashCode() == " + fred.hashCode());
+ System.out.println("barney.hashCode() == " + barney.hashCode());
+
+ if (!fred.equals(barney)) {
+ throw new Exception("equals() failed on two hashtables that are equal");
+ }
+
+ if (fred.hashCode() != barney.hashCode()) {
+ throw new Exception("hashCode() failed on two hashtables that are equal");
+ }
+
+ System.out.println();
+ if (fred.equals(homer)) {
+ System.out.println("fred.equals(homer)");
+ }
+ else {
+ System.out.println("!fred.equals(homer)");
+ }
+ System.out.println("fred.hashCode() == " + fred.hashCode());
+ System.out.println("homer.hashCode() == " + homer.hashCode());
+
+ if (fred.equals(homer)) {
+ throw new Exception("equals() failed on two hashtables that are not equal");
+ }
+
+ if (fred.hashCode() == homer.hashCode()) {
+ throw new Exception("hashCode() failed on two hashtables that are not equal");
+ }
+
+ System.out.println();
+ System.out.println("testPatternEntry() passed.\n");
+ }
+}
--- a/jdk/test/tools/launcher/ToolsOpts.java Fri Feb 10 11:00:41 2017 +0300
+++ b/jdk/test/tools/launcher/ToolsOpts.java Mon Feb 13 09:41:05 2017 +0100
@@ -87,11 +87,16 @@
contents.add(" }\n");
contents.add(" }\n");
contents.add("}\n");
- createFile(new File(mainJava), contents);
+ String mainJavaPath = "patch-src/com/sun/tools/javac/" + mainJava;
+ File mainJavaFile = new File(mainJavaPath.replace('/', File.separatorChar));
+ mainJavaFile.getParentFile().mkdirs();
+ createFile(mainJavaFile, contents);
// compile Main.java into directory to override classes in jdk.compiler
new File("jdk.compiler").mkdir();
- compile("-Xmodule:jdk.compiler", "-d", "jdk.compiler", mainJava);
+ compile("--patch-module", "jdk.compiler=patch-src",
+ "-d", "jdk.compiler",
+ mainJavaFile.toString());
}
static void pass(String msg) {
--- a/jdk/test/tools/launcher/modules/patch/basic/PatchTest.java Fri Feb 10 11:00:41 2017 +0300
+++ b/jdk/test/tools/launcher/modules/patch/basic/PatchTest.java Mon Feb 13 09:41:05 2017 +0100
@@ -105,22 +105,24 @@
MODS_DIR.resolve("test"));
assertTrue(compiled, "classes did not compile");
- // javac -Xmodule:$MODULE -d patches1/$MODULE patches1/$MODULE/**
+ // javac --patch-module $MODULE=patches1/$MODULE -d patches1/$MODULE patches1/$MODULE/**
// jar cf patches/$MODULE-1.jar -C patches1/$MODULE .
for (Path src : Files.newDirectoryStream(SRC1_DIR)) {
Path output = PATCHES1_DIR.resolve(src.getFileName());
String mn = src.getFileName().toString();
- compiled = CompilerUtils.compile(src, output, "-Xmodule:" + mn);
+ compiled = CompilerUtils.compile(src, output,
+ "--patch-module", mn + "=" + src.toString());
assertTrue(compiled, "classes did not compile");
JarUtils.createJarFile(PATCHES_DIR.resolve(mn + "-1.jar"), output);
}
- // javac -Xmodule:$MODULE -d patches2/$MODULE patches2/$MODULE/**
+ // javac --patch-module $MODULE=patches2/$MODULE -d patches2/$MODULE patches2/$MODULE/**
// jar cf patches/$MODULE-2.jar -C patches2/$MODULE .
for (Path src : Files.newDirectoryStream(SRC2_DIR)) {
Path output = PATCHES2_DIR.resolve(src.getFileName());
String mn = src.getFileName().toString();
- compiled = CompilerUtils.compile(src, output, "-Xmodule:" + mn);
+ compiled = CompilerUtils.compile(src, output,
+ "--patch-module", mn + "=" + src.toString());
assertTrue(compiled, "classes did not compile");
JarUtils.createJarFile(PATCHES_DIR.resolve(mn + "-2.jar"), output);
}
--- a/jdk/test/tools/launcher/modules/patch/basic/PatchTestWarningError.java Fri Feb 10 11:00:41 2017 +0300
+++ b/jdk/test/tools/launcher/modules/patch/basic/PatchTestWarningError.java Mon Feb 13 09:41:05 2017 +0100
@@ -93,20 +93,22 @@
MODS_DIR.resolve("test"));
assertTrue(compiled, "classes did not compile");
- // javac -Xmodule:$MODULE -d patches1/$MODULE patches1/$MODULE/**
+ // javac --patch-module $MODULE=patches1/$MODULE -d patches1/$MODULE patches1/$MODULE/**
Path src = SRC1_DIR.resolve("java.base");
Path output = PATCHES1_DIR.resolve(src.getFileName());
Files.createDirectories(output);
String mn = src.getFileName().toString();
- compiled = CompilerUtils.compile(src, output, "-Xmodule:" + mn);
+ compiled = CompilerUtils.compile(src, output,
+ "--patch-module", mn + "=" + src.toString());
assertTrue(compiled, "classes did not compile");
- // javac -Xmodule:$MODULE -d patches2/$MODULE patches2/$MODULE/**
+ // javac --patch-module $MODULE=patches2/$MODULE -d patches2/$MODULE patches2/$MODULE/**
src = SRC2_DIR.resolve("java.base");
output = PATCHES2_DIR.resolve(src.getFileName());
Files.createDirectories(output);
mn = src.getFileName().toString();
- compiled = CompilerUtils.compile(src, output, "-Xmodule:" + mn);
+ compiled = CompilerUtils.compile(src, output,
+ "--patch-module", mn + "=" + src.toString());
assertTrue(compiled, "classes did not compile");
}
--- a/jdk/test/tools/launcher/modules/patch/systemmodules/PatchSystemModules.java Fri Feb 10 11:00:41 2017 +0300
+++ b/jdk/test/tools/launcher/modules/patch/systemmodules/PatchSystemModules.java Mon Feb 13 09:41:05 2017 +0100
@@ -73,9 +73,10 @@
}
// compile patched source
+ String patchDir = PATCH_SRC_DIR.resolve(JAVA_BASE).toString();
assertTrue(CompilerUtils.compile(PATCH_SRC_DIR.resolve(JAVA_BASE),
PATCH_DIR.resolve(JAVA_BASE),
- "-Xmodule:java.base"));
+ "--patch-module", "java.base=" + patchDir));
assertTrue(CompilerUtils.compile(PATCH_SRC_DIR.resolve("m2"),
PATCH_DIR.resolve("m2")));