# HG changeset patch # User pmuthuswamy # Date 1538547219 -19800 # Node ID f7babf9d1592ecb239699858a8d509900011e887 # Parent 7577686cc9bd5f1fddab2f746a8596459fdd5842 8208531: -javafx mode should be on by default when JavaFX is available Reviewed-by: jjg diff -r 7577686cc9bd -r f7babf9d1592 src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/BaseConfiguration.java --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/BaseConfiguration.java Tue Oct 02 22:36:08 2018 -0700 +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/BaseConfiguration.java Wed Oct 03 11:43:39 2018 +0530 @@ -399,6 +399,10 @@ // Utils needs docEnv, safe to init now. utils = new Utils(this); + if (!javafx) { + javafx = isJavaFXMode(); + } + // Once docEnv and Utils have been initialized, others should be safe. cmtUtils = new CommentUtils(this); workArounds = new WorkArounds(this); @@ -1347,4 +1351,19 @@ public synchronized VisibleMemberTable getVisibleMemberTable(TypeElement te) { return visibleMemberCache.getVisibleMemberTable(te); } + + /** + * Determines if JavaFX is available in the compilation environment. + * @return true if JavaFX is available + */ + public boolean isJavaFXMode() { + TypeElement observable = utils.elementUtils.getTypeElement("javafx.beans.Observable"); + if (observable != null) { + ModuleElement javafxModule = utils.elementUtils.getModuleOf(observable); + if (javafxModule == null || javafxModule.isUnnamed() || javafxModule.getQualifiedName().contentEquals("javafx.base")) { + return true; + } + } + return false; + } } diff -r 7577686cc9bd -r f7babf9d1592 test/langtools/jdk/javadoc/doclet/testJavaFX/TestJavaFxMode.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/langtools/jdk/javadoc/doclet/testJavaFX/TestJavaFxMode.java Wed Oct 03 11:43:39 2018 +0530 @@ -0,0 +1,98 @@ +/* + * Copyright (c) 2018, 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 8208531 + * @summary -javafx mode should be on by default when JavaFX is available. + * @library /tools/lib ../lib + * @modules jdk.javadoc/jdk.javadoc.internal.tool + * @build JavadocTester + * @run main TestJavaFxMode + */ + +import toolbox.ToolBox; + +import java.nio.file.Path; +import java.nio.file.Paths; + +public class TestJavaFxMode extends JavadocTester { + + final ToolBox tb; + + public static void main(String... args) throws Exception { + TestJavaFxMode tester = new TestJavaFxMode(); + if (tester.sanity()) { + tester.runTests(m -> new Object[]{Paths.get(m.getName())}); + } + } + + TestJavaFxMode() { + tb = new ToolBox(); + } + + // Check if FX modules are available. + boolean sanity() { + try { + Class.forName("javafx.beans.Observable"); + } catch (ClassNotFoundException cnfe) { + System.out.println("Note: javafx.beans.Observable: not found, test passes vacuously"); + return false; + } + return true; + } + + @Test + void test(Path base) throws Exception { + Path src = base.resolve("src"); + createTestClass(src); + Path outDir = base.resolve("out"); + + javadoc("-d", outDir.toString(), + "-sourcepath", src.toString(), + "pkg"); + + checkExit(Exit.OK); + checkOrder("pkg/A.html", + "Property Summary", + "javafx.beans.property.Property", "prop", + "Field Summary", + "javafx.beans.property.Property", "prop", + "Method Summary", + "getProp", "Gets the value of the property prop.", + "propProperty", "Sets the value of the property prop."); + } + + void createTestClass(Path src) throws Exception { + tb.writeJavaFiles(src, + "package pkg;\n" + + "import javafx.beans.property.Property;\n" + + "public class A {\n" + + " public Property prop;\n" + + " public Property propProperty(){return null;}\n" + + " public Property getProp(){return null;}\n" + + " public void setProp(Property prop){}\n" + + "}"); + } + +}