Skip to content

Commit

Permalink
8348038: Docs build failing in Options.notifyListeners with Assertion…
Browse files Browse the repository at this point in the history
…Error

Reviewed-by: jlahoda, mcimadamore
  • Loading branch information
archiecobbs committed Jan 20, 2025
1 parent 9346984 commit 0fbf10a
Show file tree
Hide file tree
Showing 3 changed files with 70 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,12 @@ public void setContext(Context context) {
// Initialize locations
locations.update(log, lint, FSInfo.instance(context));

// Apply options
options.whenReady(this::applyOptions);
}

protected void applyOptions(Options options) {

// Setting this option is an indication that close() should defer actually closing
// the file manager until after a specified period of inactivity.
// This is to accommodate clients which save references to Symbols created for use
Expand All @@ -106,16 +112,14 @@ public void setContext(Context context) {
// in seconds, of the period of inactivity to wait for, before the file manager
// is actually closed.
// See also deferredClose().
options.whenReady(options -> {
String s = options.get("fileManager.deferClose");
if (s != null) {
try {
deferredCloseTimeout = (int) (Float.parseFloat(s) * 1000);
} catch (NumberFormatException e) {
deferredCloseTimeout = 60 * 1000; // default: one minute, in millis
}
String s = options.get("fileManager.deferClose");
if (s != null) {
try {
deferredCloseTimeout = (int) (Float.parseFloat(s) * 1000);
} catch (NumberFormatException e) {
deferredCloseTimeout = 60 * 1000; // default: one minute, in millis
}
});
}
}

protected Locations createLocations() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,7 @@
import com.sun.tools.javac.util.DefinedBy.Api;
import com.sun.tools.javac.util.List;
import com.sun.tools.javac.util.ListBuffer;
import com.sun.tools.javac.util.Options;

import static java.nio.charset.StandardCharsets.US_ASCII;
import static java.nio.file.FileVisitOption.FOLLOW_LINKS;
Expand Down Expand Up @@ -109,7 +110,7 @@ public static char[] toArray(CharBuffer buffer) {
private static final Set<JavaFileObject.Kind> SOURCE_OR_CLASS =
Set.of(JavaFileObject.Kind.SOURCE, JavaFileObject.Kind.CLASS);

protected boolean symbolFileEnabled;
protected boolean symbolFileEnabled = true;

private PathFactory pathFactory = Paths::get;

Expand Down Expand Up @@ -169,8 +170,12 @@ public JavacFileManager(Context context, boolean register, Charset charset) {
@Override
public void setContext(Context context) {
super.setContext(context);

fsInfo = FSInfo.instance(context);
}

@Override
protected void applyOptions(Options options) {
super.applyOptions(options);

symbolFileEnabled = !options.isSet("ignore.symbol.file");

Expand Down
50 changes: 50 additions & 0 deletions test/langtools/tools/javac/options/JavadocIgnoreSymbolFile.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
/*
* Copyright (c) 2025, 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 8348038
* @summary Verify use of "-XDignore.symbol.file=true" doesn't cause assertion failure
* @modules jdk.javadoc/jdk.javadoc.internal.tool
*/

import java.io.File;
import java.io.PrintWriter;
import java.io.StringWriter;

public class JavadocIgnoreSymbolFile {

public static void main(String[] args) {
String[] javadocArgs = new String[] {
"-XDignore.symbol.file=true"
};
StringWriter buf = new StringWriter();
try (PrintWriter pw = new PrintWriter(buf)) {
jdk.javadoc.internal.tool.Main.execute(javadocArgs, pw);
}
String expected = "error: No modules, packages or classes specified. 1 error";
String actual = buf.toString().trim().replaceAll("\\s+", " ");
if (!actual.equals(expected))
throw new AssertionError("unexpected output:\n" + actual);
}
}

0 comments on commit 0fbf10a

Please sign in to comment.