[1.10 BACKPORT] 7091528: javadoc attempts to parse .class files
Deepak Bhole
dbhole at redhat.com
Tue Jan 10 06:51:37 PST 2012
* Dr Andrew John Hughes <ahughes at redhat.com> [2012-01-10 08:27]:
> 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?
Okay for 1.10.
Cheers,
Deepak
> --
> 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
> # 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 { }
> +
More information about the distro-pkg-dev
mailing list