Mercurial > hg > icedtea8-forest > langtools
changeset 3408:a3d47fe59cc4 icedtea-3.4.0pre01
8061305, PR3335: Javadoc crashes when method name ends with "Property"
Reviewed-by: jjg
author | ksrini |
---|---|
date | Fri, 31 Oct 2014 07:02:56 -0700 |
parents | 059911105c60 |
children | ab8db7123822 |
files | src/share/classes/com/sun/tools/doclets/internal/toolkit/util/VisibleMemberMap.java test/com/sun/javadoc/testJavaFX/C.java test/com/sun/javadoc/testJavaFX/D.java test/com/sun/javadoc/testJavaFX/TestJavaFX.java test/com/sun/javadoc/testJavaFX/pkg1/C.java test/com/sun/javadoc/testJavaFX/pkg1/D.java test/com/sun/javadoc/testJavaFX/pkg2/Test.java |
diffstat | 7 files changed, 289 insertions(+), 158 deletions(-) [+] |
line wrap: on
line diff
--- a/src/share/classes/com/sun/tools/doclets/internal/toolkit/util/VisibleMemberMap.java Thu May 04 21:40:50 2017 +0100 +++ b/src/share/classes/com/sun/tools/doclets/internal/toolkit/util/VisibleMemberMap.java Fri Oct 31 07:02:56 2014 -0700 @@ -657,6 +657,9 @@ // properties aren't named setA* or getA* private final Pattern pattern = Pattern.compile("[sg]et\\p{Upper}.*"); private boolean isPropertyMethod(MethodDoc method) { + if (!configuration.javafx) { + return false; + } if (!method.name().endsWith("Property")) { return false; } @@ -668,7 +671,9 @@ if (pattern.matcher(method.name()).matches()) { return false; } - + if (method.typeParameters().length > 0) { + return false; + } return 0 == method.parameters().length && !"void".equals(method.returnType().simpleTypeName()); }
--- a/test/com/sun/javadoc/testJavaFX/C.java Thu May 04 21:40:50 2017 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,104 +0,0 @@ -/* - * Copyright (c) 2012, 2013, 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. - */ - -/** - * @expert Expert tag text - */ - -public class C { - - /** - * @propertySetter Property - * @propertyDescription PropertyDescription - */ - public void CC() {} - - /** - * @propertyGetter Property - * @expert Expert tag text - * - */ - public void B() {} - - /** - * Method A documentation - * @treatAsPrivate - */ - public void A() {} - - /** - * Field i - * @defaultValue 1.0 - */ - public int i; - - - /** - * Defines the direction/speed at which the {@code Timeline} is expected to - * be played. - * @defaultValue 11 - * @since JavaFX 8.0 - */ - private DoubleProperty rate; - - public final void setRate(double value) {} - - public final double getRate() {} - - public final DoubleProperty rateProperty() {} - - private BooleanProperty paused; - - public final void setPaused(boolean value) {} - - public final double isPaused() {} - - /** - * Defines if paused - * @defaultValue false - */ - public final BooleanProperty pausedProperty() {} - - class DoubleProperty {} - - class BooleanProperty {} - - public final BooleanProperty setTestMethodProperty() {} - - private class Inner { - private BooleanProperty testMethodProperty() {} - - /** - * Defines the direction/speed at which the {@code Timeline} is expected to - * be played. - * @defaultValue 11 - */ - private DoubleProperty rate; - - public final void setRate(double value) {} - - public final double getRate() {} - - public final DoubleProperty rateProperty() {} - } -}
--- a/test/com/sun/javadoc/testJavaFX/D.java Thu May 04 21:40:50 2017 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,28 +0,0 @@ -/* - * Copyright (c) 2012, 2013, 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. - */ - -/** - * @expert Expert tag text - */ - -public class D extends C {}
--- a/test/com/sun/javadoc/testJavaFX/TestJavaFX.java Thu May 04 21:40:50 2017 +0100 +++ b/test/com/sun/javadoc/testJavaFX/TestJavaFX.java Fri Oct 31 07:02:56 2014 -0700 @@ -23,7 +23,7 @@ /* * @test - * @bug 7112427 8012295 8025633 8026567 + * @bug 7112427 8012295 8025633 8026567 8061305 * @summary Test of the JavaFX doclet features. * @author jvalenta * @library ../lib @@ -39,44 +39,143 @@ } @Test - void test() { - javadoc("-d", "out", + void test1() { + javadoc("-d", "out1", "-sourcepath", testSrc, "-javafx", - testSrc("C.java"), testSrc("D.java")); - checkExit(Exit.FAILED); // should be EXIT_OK -- need to fix C.java + "-package", + "pkg1"); + checkExit(Exit.OK); - checkOutput("C.html", true, + checkOutput("pkg1/C.html", true, "<dt><span class=\"seeLabel\">See Also:</span></dt>\n" - + "<dd><a href=\"C.html#getRate--\"><code>getRate()</code></a>, \n" - + "<a href=\"C.html#setRate-double-\"><code>setRate(double)</code></a></dd>", + + "<dd><a href=\"../pkg1/C.html#getRate--\"><code>getRate()</code></a>, \n" + + "<a href=\"../pkg1/C.html#setRate-double-\">" + + "<code>setRate(double)</code></a></dd>", "<pre>public final void setRate(double value)</pre>\n" - + "<div class=\"block\">Sets the value of the property rate.</div>\n" - + "<dl>\n" - + "<dt><span class=\"simpleTagLabel\">Property description:</span></dt>", + + "<div class=\"block\">Sets the value of the property rate.</div>\n" + + "<dl>\n" + + "<dt><span class=\"simpleTagLabel\">Property description:</span></dt>", "<pre>public final double getRate()</pre>\n" - + "<div class=\"block\">Gets the value of the property rate.</div>\n" - + "<dl>\n" - + "<dt><span class=\"simpleTagLabel\">Property description:</span></dt>", - "<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"C.html#rateProperty\">rate</a></span></code>\n" - + "<div class=\"block\">Defines the direction/speed at which the <code>Timeline</code> is expected to", + + "<div class=\"block\">Gets the value of the property rate.</div>\n" + + "<dl>\n" + + "<dt><span class=\"simpleTagLabel\">Property description:</span></dt>", + "<td class=\"colLast\"><code><span class=\"memberNameLink\">" + + "<a href=\"../pkg1/C.html#rateProperty\">rate</a></span></code>\n" + + "<div class=\"block\">Defines the direction/speed at which the " + + "<code>Timeline</code> is expected to", "<span class=\"simpleTagLabel\">Default value:</span>", "<span class=\"simpleTagLabel\">Since:</span></dt>\n" - + "<dd>JavaFX 8.0</dd>", + + "<dd>JavaFX 8.0</dd>", "<p>Sets the value of the property <code>Property</code>", "<p>Gets the value of the property <code>Property</code>", "<span class=\"simpleTagLabel\">Property description:</span>", - "<td class=\"colLast\"><code><span class=\"memberNameLink\"><a href=\"C.html#setTestMethodProperty--\">setTestMethodProperty</a></span>()</code> </td>", + "<td class=\"colLast\"><code><span class=\"memberNameLink\">" + + "<a href=\"../pkg1/C.html#setTestMethodProperty--\">" + + "setTestMethodProperty</a></span>()</code> </td>", "<h4>isPaused</h4>\n" - + "<pre>public final double isPaused()</pre>\n" - + "<div class=\"block\">Gets the value of the property paused.</div>"); + + "<pre>public final double isPaused()</pre>\n" + + "<div class=\"block\">Gets the value of the property paused.</div>"); - checkOutput("C.html", false, + checkOutput("pkg1/C.html", false, "A()"); - checkOutput("D.html", true, - "<h3>Properties inherited from class <a href=\"C.html\" title=\"class in <Unnamed>\">C</a></h3>\n" - + "<code><a href=\"C.html#pausedProperty\">paused</a>, <a href=\"C.html#rateProperty\">rate</a></code></li>"); + checkOutput("pkg1/D.html", true, + "<h3>Properties inherited from class pkg1." + + "<a href=\"../pkg1/C.html\" title=\"class in pkg1\">C</a></h3>\n" + + "<code><a href=\"../pkg1/C.html#pausedProperty\">" + + "paused</a>, <a href=\"../pkg1/C.html#rateProperty\">rate</a></code></li>"); } - + /* + * Test with -javafx option enabled, to ensure property getters and setters + * are treated correctly. + */ + @Test + void test2() { + javadoc("-d", "out2a", + "-sourcepath", testSrc, + "-javafx", + "-package", + "pkg2"); + checkExit(Exit.OK); + checkOutput("pkg2/Test.html", true, + "<li class=\"blockList\"><a name=\"property.detail\">\n" + + "<!-- -->\n" + + "</a>\n" + + "<h3>Property Detail</h3>\n" + + "<a name=\"betaProperty\">\n" + + "<!-- -->\n" + + "</a>\n" + + "<ul class=\"blockList\">\n" + + "<li class=\"blockList\">\n" + + "<h4>beta</h4>\n" + + "<pre>public java.lang.Object betaProperty</pre>\n" + + "</li>\n" + + "</ul>\n" + + "<a name=\"gammaProperty\">\n" + + "<!-- -->\n" + + "</a>\n" + + "<ul class=\"blockList\">\n" + + "<li class=\"blockList\">\n" + + "<h4>gamma</h4>\n" + + "<pre>public final java.util.List<" + + "java.lang.String> gammaProperty</pre>\n" + + "</li>\n" + + "</ul>\n" + + "<a name=\"deltaProperty\">\n" + + "<!-- -->\n" + + "</a>\n" + + "<ul class=\"blockListLast\">\n" + + "<li class=\"blockList\">\n" + + "<h4>delta</h4>\n" + + "<pre>public final java.util.List<" + + "java.util.Set<? super java.lang.Object>> deltaProperty</pre>\n" + + "</li>\n" + + "</ul>\n" + + "</li>"); + } + /* + * Test without -javafx option, to ensure property getters and setters + * are treated just like any other java method. + */ + @Test + void test3() { + javadoc("-d", "out2b", + "-sourcepath", testSrc, + "-package", + "pkg2"); + checkExit(Exit.OK); + checkOutput("pkg2/Test.html", false, "<h3>Property Summary</h3>"); + checkOutput("pkg2/Test.html", true, + "<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>\n" + + "<th class=\"colLast\" scope=\"col\">Method and Description</th>\n" + + "</tr>\n" + + "<tr id=\"i0\" class=\"altColor\">\n" + + "<td class=\"colFirst\"><code><T> java.lang.Object</code></td>\n" + + "<td class=\"colLast\"><code><span class=\"memberNameLink\">" + + "<a href=\"../pkg2/Test.html#alphaProperty-java.util.List-\">" + + "alphaProperty</a></span>(java.util.List<T> foo)</code> </td>\n" + + "</tr>\n" + + "<tr id=\"i1\" class=\"rowColor\">\n" + + "<td class=\"colFirst\"><code>java.lang.Object</code></td>\n" + + "<td class=\"colLast\"><code><span class=\"memberNameLink\">" + + "<a href=\"../pkg2/Test.html#betaProperty--\">betaProperty</a></span>()</code>" + + " </td>\n" + + "</tr>\n" + + "<tr id=\"i2\" class=\"altColor\">\n" + + "<td class=\"colFirst\"><code>" + + "java.util.List<java.util.Set<? super java.lang.Object>>" + + "</code></td>\n" + + "<td class=\"colLast\"><code><span class=\"memberNameLink\">" + + "<a href=\"../pkg2/Test.html#deltaProperty--\">" + + "deltaProperty</a></span>()</code> </td>\n" + + "</tr>\n" + + "<tr id=\"i3\" class=\"rowColor\">\n" + + "<td class=\"colFirst\"><code>java.util.List<java.lang.String>" + + "</code></td>\n" + + "<td class=\"colLast\"><code><span class=\"memberNameLink\">" + + "<a href=\"../pkg2/Test.html#gammaProperty--\">gammaProperty</a>" + + "</span>()</code> </td>" + ); + } }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/com/sun/javadoc/testJavaFX/pkg1/C.java Fri Oct 31 07:02:56 2014 -0700 @@ -0,0 +1,100 @@ +/* + * Copyright (c) 2012, 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 pkg1; + +public class C { + + /** + * @propertySetter Property + * @propertyDescription PropertyDescription + */ + public void CC() {} + + /** + * @propertyGetter Property + * + */ + public void B() {} + + /** + * Method A documentation + * @treatAsPrivate + */ + public void A() {} + + /** + * Field i + * @defaultValue 1.0 + */ + public int i; + + + /** + * Defines the direction/speed at which the {@code Timeline} is expected to + * be played. + * @defaultValue 11 + * @since JavaFX 8.0 + */ + private DoubleProperty rate; + + public final void setRate(double value) {} + + public final double getRate() {} + + public final DoubleProperty rateProperty() {} + + private BooleanProperty paused; + + public final void setPaused(boolean value) {} + + public final double isPaused() {} + + /** + * Defines if paused + * @defaultValue false + */ + public final BooleanProperty pausedProperty() {} + + class DoubleProperty {} + + class BooleanProperty {} + + public final BooleanProperty setTestMethodProperty() {} + + private class Inner { + private BooleanProperty testMethodProperty() {} + + /** + * Defines the direction/speed at which the {@code Timeline} is expected to + * be played. + * @defaultValue 11 + */ + private DoubleProperty rate; + + public final void setRate(double value) {} + + public final double getRate() {} + + public final DoubleProperty rateProperty() {} + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/com/sun/javadoc/testJavaFX/pkg1/D.java Fri Oct 31 07:02:56 2014 -0700 @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2012, 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 pkg1; + +public class D extends C {}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/com/sun/javadoc/testJavaFX/pkg2/Test.java Fri Oct 31 07:02:56 2014 -0700 @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2012, 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 pkg2; + +import java.util.List; +import java.util.Set; + + +public class Test { + public <T> Object alphaProperty(List<T> foo) { return null; } + public Object betaProperty() { return null; } + public final List<String> gammaProperty() {return null;} + public final List<Set<? super Object>> deltaProperty() {return null;} +}