[1.10 BACKPORT] 7091528: javadoc attempts to parse .class files
Dr Andrew John Hughes
ahughes at redhat.com
Tue Jan 10 05:11:41 PST 2012
I'd like to backport this patch to the 1.10 branch. It's already
on HEAD & 1.11 and fixes an issue I've encountered when trying
to build java-gnome's documentation with 1.10.x. The issue
is a regression due to the big OpenJDK6 langtools backport performed
by Oracle which has caused other issues too in the past.
The patch is attached. Ok for 1.10 with the usual NEWS & ChangeLog?
--
Andrew :)
Free Java Software Engineer
Red Hat, Inc. (http://www.redhat.com)
PGP Key: 248BDC07 (https://keys.indymedia.org/)
Fingerprint = EC5A 1F5E C0AD 1D15 8F1F 8F91 3B96 A578 248B DC07
-------------- next part --------------
# HG changeset patch
# User jjg
# Date 1316215126 25200
# Node ID dea82aa3ca4fc15712cc8cfce72caf0d3fb210fc
# Parent c0835c8489b0fc6c5c20095ed0f0d6c1b01b69e0
7091528: javadoc attempts to parse .class files
Reviewed-by: darcy
diff -r c0835c8489b0 -r dea82aa3ca4f src/share/classes/com/sun/tools/javadoc/JavadocTool.java
--- openjdk/langtools/src/share/classes/com/sun/tools/javadoc/JavadocTool.java Fri Sep 16 14:16:11 2011 +0100
+++ openjdk/langtools/src/share/classes/com/sun/tools/javadoc/JavadocTool.java Fri Sep 16 16:18:46 2011 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2011, 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
@@ -257,24 +257,15 @@
for (String p: excludedPackages)
includedPackages.put(p, false);
- if (docenv.fileManager.hasLocation(StandardLocation.SOURCE_PATH)) {
- searchSubPackages(subPackages,
- includedPackages,
- packages, packageFiles,
- StandardLocation.SOURCE_PATH,
- EnumSet.of(JavaFileObject.Kind.SOURCE));
- searchSubPackages(subPackages,
- includedPackages,
- packages, packageFiles,
- StandardLocation.CLASS_PATH,
- EnumSet.of(JavaFileObject.Kind.CLASS));
- } else {
- searchSubPackages(subPackages,
- includedPackages,
- packages, packageFiles,
- StandardLocation.CLASS_PATH,
- EnumSet.of(JavaFileObject.Kind.SOURCE, JavaFileObject.Kind.CLASS));
- }
+ StandardLocation path = docenv.fileManager.hasLocation(StandardLocation.SOURCE_PATH)
+ ? StandardLocation.SOURCE_PATH : StandardLocation.CLASS_PATH;
+
+ searchSubPackages(subPackages,
+ includedPackages,
+ packages, packageFiles,
+ path,
+ EnumSet.of(JavaFileObject.Kind.SOURCE));
+
return packageFiles;
}
diff -r c0835c8489b0 -r dea82aa3ca4f test/tools/javadoc/parser/7091528/T7091528.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ openjdk/langtools/test/tools/javadoc/parser/7091528/T7091528.java Fri Sep 16 16:18:46 2011 -0700
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2009, 2011, 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.
+ */
+
+/**
+ * @test
+ * @bug 7091528
+ * @summary javadoc attempts to parse .class files
+ * @compile p/C1.java p/q/C2.java
+ * @run main T7091528
+ */
+
+import java.io.File;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+
+public class T7091528 {
+ public static void main(String... args) {
+ new T7091528().run();
+ }
+
+ void run() {
+ File testSrc = new File(System.getProperty("test.src"));
+ File testClasses = new File(System.getProperty("test.classes"));
+ String[] args = {
+ "-d", ".",
+ "-sourcepath", testClasses + File.pathSeparator + testSrc,
+ "-subpackages",
+ "p"
+ };
+
+ StringWriter sw = new StringWriter();
+ PrintWriter pw = new PrintWriter(sw);
+ String doclet = com.sun.tools.doclets.standard.Standard.class.getName();
+ int rc = com.sun.tools.javadoc.Main.execute("javadoc", pw, pw, pw, doclet, args);
+ pw.close();
+
+ String out = sw.toString();
+ if (!out.isEmpty()) {
+ System.err.println(out);
+ }
+
+ if (rc != 0)
+ System.err.println("javadoc failed: exit code = " + rc);
+
+ if (out.matches("(?s).*p/[^ ]+\\.class.*"))
+ throw new Error("reading .class files");
+
+ if (!new File("index.html").exists())
+ throw new Error("index.html not found");
+ }
+}
diff -r c0835c8489b0 -r dea82aa3ca4f test/tools/javadoc/parser/7091528/p/C1.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ openjdk/langtools/test/tools/javadoc/parser/7091528/p/C1.java Fri Sep 16 16:18:46 2011 -0700
@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) 2011, 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 p1;
+
+/** This is class C1. */
+public class C1 { }
+
diff -r c0835c8489b0 -r dea82aa3ca4f test/tools/javadoc/parser/7091528/p/q/C2.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ openjdk/langtools/test/tools/javadoc/parser/7091528/p/q/C2.java Fri Sep 16 16:18:46 2011 -0700
@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) 2011, 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 p.q;
+
+/** This is class p.q.C2. */
+public class C2 { }
+
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20120110/a6d67bc1/attachment.bin
More information about the distro-pkg-dev
mailing list