提交 7a90b19d 编写于 作者: J jjg

8008949: javadoc stopped copying doc-files

Reviewed-by: bpatel
上级 a43f132f
......@@ -80,6 +80,9 @@ public abstract class AbstractDoclet {
}
try {
doclet.startGeneration(root);
} catch (Configuration.Fault f) {
root.printError(f.getMessage());
return false;
} catch (Exception exc) {
exc.printStackTrace();
return false;
......@@ -110,7 +113,7 @@ public abstract class AbstractDoclet {
*
* @see com.sun.javadoc.RootDoc
*/
private void startGeneration(RootDoc root) throws Exception {
private void startGeneration(RootDoc root) throws Configuration.Fault, Exception {
if (root.classes().length == 0) {
configuration.message.
error("doclet.No_Public_Classes_To_Document");
......
......@@ -53,6 +53,21 @@ import javax.tools.JavaFileManager;
*/
public abstract class Configuration {
/**
* Exception used to report a problem during setOptions.
*/
public class Fault extends Exception {
private static final long serialVersionUID = 0;
Fault(String msg) {
super(msg);
}
Fault(String msg, Exception cause) {
super(msg, cause);
}
}
/**
* The factory for builders.
*/
......@@ -257,7 +272,7 @@ public abstract class Configuration {
* @param options The array of option names and values.
* @throws DocletAbortException
*/
public abstract void setSpecificDocletOptions(String[][] options);
public abstract void setSpecificDocletOptions(String[][] options) throws Fault;
/**
* Return the doclet specific {@link MessageRetriever}
......@@ -413,15 +428,26 @@ public abstract class Configuration {
*
* @param options the two dimensional array of options.
*/
public void setOptions(String[][] options) {
public void setOptions(String[][] options) throws Fault {
LinkedHashSet<String[]> customTagStrs = new LinkedHashSet<String[]>();
// Some options, specifically -link and -linkoffline, require that
// the output directory has already been created: so do that first.
for (int oi = 0; oi < options.length; ++oi) {
String[] os = options[oi];
String opt = os[0].toLowerCase();
if (opt.equals("-d")) {
destDirName = addTrailingFileSep(os[1]);
docFileDestDirName = destDirName;
} else if (opt.equals("-docfilessubdirs")) {
ensureOutputDirExists();
break;
}
}
for (int oi = 0; oi < options.length; ++oi) {
String[] os = options[oi];
String opt = os[0].toLowerCase();
if (opt.equals("-docfilessubdirs")) {
copydocfilesubdirs = true;
} else if (opt.equals("-docencoding")) {
docencoding = os[1];
......@@ -503,7 +529,7 @@ public abstract class Configuration {
*
* @throws DocletAbortException
*/
public void setOptions() {
public void setOptions() throws Fault {
initPackageArray();
setOptions(root.options());
if (!profilespath.isEmpty()) {
......@@ -517,6 +543,23 @@ public abstract class Configuration {
setSpecificDocletOptions(root.options());
}
private void ensureOutputDirExists() throws Fault {
DocFile destDir = DocFile.createFileForDirectory(this, destDirName);
if (!destDir.exists()) {
//Create the output directory (in case it doesn't exist yet)
root.printNotice(getText("doclet.dest_dir_create", destDirName));
destDir.mkdirs();
} else if (!destDir.isDirectory()) {
throw new Fault(getText(
"doclet.destination_directory_not_directory_0",
destDir.getPath()));
} else if (!destDir.canWrite()) {
throw new Fault(getText(
"doclet.destination_directory_not_writable_0",
destDir.getPath()));
}
}
/**
* Initialize the taglet manager. The strings to initialize the simple custom tags should
......@@ -650,26 +693,7 @@ public abstract class Configuration {
for (int oi = 0; oi < options.length; oi++) {
String[] os = options[oi];
String opt = os[0].toLowerCase();
if (opt.equals("-d")) {
String destdirname = addTrailingFileSep(os[1]);
DocFile destDir = DocFile.createFileForDirectory(this, destdirname);
if (!destDir.exists()) {
//Create the output directory (in case it doesn't exist yet)
reporter.printNotice(getText("doclet.dest_dir_create",
destdirname));
destDir.mkdirs();
} else if (!destDir.isDirectory()) {
reporter.printError(getText(
"doclet.destination_directory_not_directory_0",
destDir.getPath()));
return false;
} else if (!destDir.canWrite()) {
reporter.printError(getText(
"doclet.destination_directory_not_writable_0",
destDir.getPath()));
return false;
}
} else if (opt.equals("-docencoding")) {
if (opt.equals("-docencoding")) {
docencodingfound = true;
if (!checkOutputFileEncoding(os[1], reporter)) {
return false;
......
/*
* Copyright (c) 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.
*/
/*
* @test
* @bug 8008949
* @summary verify that doc-files get copied
* @library ../lib/
* @build JavadocTester
* @build TestDocFiles
* @run main TestDocFiles
*/
public class TestDocFiles extends JavadocTester {
private static final String BUG_ID = "8008949";
private static final String[][] TEST = {
{"tmp" + FS + "pkg" + FS + "doc-files" + FS + "test.txt", "test file"}};
private static final String[] ARGS =
new String[] {
"-d", "tmp", "-sourcepath", SRC_DIR, "pkg"};
/**
* The entry point of the test.
* @param args the array of command line arguments.
*/
public static void main(String[] args) {
TestDocFiles tester = new TestDocFiles();
run(tester, ARGS, TEST, NO_TEST);
tester.printSummary();
}
/**
* {@inheritDoc}
*/
public String getBugId() {
return BUG_ID;
}
/**
* {@inheritDoc}
*/
public String getBugName() {
return getClass().getName();
}
}
/*
* Copyright (c) 2002, 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.
*/
package pkg;
public class Test { }
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册