]> source.dussan.org Git - aspectj.git/commitdiff
attempt to commit patch for 256514 again: fixed the patch to be non-windoze only
authoraclement <aclement>
Mon, 15 Dec 2008 17:47:59 +0000 (17:47 +0000)
committeraclement <aclement>
Mon, 15 Dec 2008 17:47:59 +0000 (17:47 +0000)
ajdoc/src/org/aspectj/tools/ajdoc/Main.java
ajdoc/src/org/aspectj/tools/ajdoc/StubFileGenerator.java

index 15c4301e152004ac6c6aafc15cb8524897fe1e30..ed384642e7bcf9c20152975940b1e20a32dee802 100644 (file)
@@ -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
index e07a294bb562f70e0ce645e3fed11307d025f306..59e099229ae615b98568571e8f9ce3c218cb6430 100644 (file)
@@ -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)));