From 5a72675b995e68dfb4b3e19bb13b322900bb64f2 Mon Sep 17 00:00:00 2001 From: aclement Date: Mon, 15 Dec 2008 17:47:59 +0000 Subject: [PATCH] attempt to commit patch for 256514 again: fixed the patch to be non-windoze only --- ajdoc/src/org/aspectj/tools/ajdoc/Main.java | 53 +++++++++++++++++++ .../tools/ajdoc/StubFileGenerator.java | 7 +++ 2 files changed, 60 insertions(+) diff --git a/ajdoc/src/org/aspectj/tools/ajdoc/Main.java b/ajdoc/src/org/aspectj/tools/ajdoc/Main.java index 15c4301e1..ed384642e 100644 --- a/ajdoc/src/org/aspectj/tools/ajdoc/Main.java +++ b/ajdoc/src/org/aspectj/tools/ajdoc/Main.java @@ -145,6 +145,8 @@ public class Main implements Config { System.out.println("> Building signature files..."); try { StubFileGenerator.doFiles(model, declIDTable, inputFiles, signatureFiles); + // Copy package.html and related files over + packageHTML(model, inputFiles); } catch (DocException d) { System.err.println(d.getMessage()); return; @@ -162,6 +164,57 @@ public class Main implements Config { } } + /** + * Method to copy over any package.html files that may be part of the documentation so that javadoc generates the + * package-summary properly. + */ + private static void packageHTML(AsmManager model, File[] inputFiles) throws IOException { + ArrayList dirList = new ArrayList(); + for (int i = 0; i < inputFiles.length; i++) { + String packageName = StructureUtil.getPackageDeclarationFromFile(model, inputFiles[i]); + // Only copy the package.html file once. + if (dirList.contains(packageName)) + continue; + + // Check to see if there exist a package.html file for this package. + String dir = inputFiles[i].getAbsolutePath().substring(0, inputFiles[i].getAbsolutePath().lastIndexOf(File.separator)); + File input = new File(dir + Config.DIR_SEP_CHAR + "package.html"); + File inDir = new File(dir + Config.DIR_SEP_CHAR + "doc-files"); + // If it does not exist lets go to the next package. + if (!input.exists()) { + dirList.add(packageName); + continue; + } + + String filename = ""; + String docFiles = ""; + if (packageName != null) { + String pathName = outputWorkingDir + File.separator + packageName.replace('.', File.separatorChar); + File packageDir = new File(pathName); + if (!packageDir.exists()) { + dirList.add(packageDir); + continue; + } + packageName = packageName.replace('.', '/'); // !!! + filename = outputWorkingDir + Config.DIR_SEP_CHAR + packageName + Config.DIR_SEP_CHAR + "package.html"; + docFiles = rootDir.getAbsolutePath() + Config.DIR_SEP_CHAR + packageName + Config.DIR_SEP_CHAR + "doc-files"; + } else { + filename = outputWorkingDir + Config.DIR_SEP_CHAR + "package.html"; + docFiles = rootDir.getAbsolutePath() + Config.DIR_SEP_CHAR + "doc-files"; + } + + File output = new File(filename); + FileUtil.copyFile(input, output);// Copy package.html + // javadoc doesn't do anything with the doc-files folder so + // we'll just copy it directly to the document location. + if (!inDir.exists()) + continue; + File outDir = new File(docFiles); + System.out.println("> Copying folder " + outDir); + FileUtil.copyFile(inDir, outDir);// Copy doc-files folder if it exist + } + } + private static AsmManager callAjc(File[] inputFiles) { ajcOptions.addElement("-noExit"); ajcOptions.addElement("-XjavadocsInModel"); // TODO: wrong option to force model gen diff --git a/ajdoc/src/org/aspectj/tools/ajdoc/StubFileGenerator.java b/ajdoc/src/org/aspectj/tools/ajdoc/StubFileGenerator.java index e07a294bb..59e099229 100644 --- a/ajdoc/src/org/aspectj/tools/ajdoc/StubFileGenerator.java +++ b/ajdoc/src/org/aspectj/tools/ajdoc/StubFileGenerator.java @@ -25,6 +25,7 @@ import java.util.List; import org.aspectj.asm.AsmManager; import org.aspectj.asm.IProgramElement; +import org.aspectj.util.FileUtil; /** * @author Mik Kersten @@ -42,6 +43,12 @@ class StubFileGenerator { static void processFile(AsmManager model, File inputFile, File signatureFile) throws DocException { try { + // Special Case for package-info.java just copy file directly. + if(signatureFile.getName().equals("package-info.java")) { + FileUtil.copyFile(inputFile, signatureFile); + return; + } + String path = StructureUtil.translateAjPathName(signatureFile.getCanonicalPath()); PrintWriter writer = new PrintWriter(new BufferedWriter(new FileWriter(path))); -- 2.39.5