[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