home *** CD-ROM | disk | FTP | other *** search
/ Symantec Visual Cafe for Java 2.5 / symantec-visual-cafe-2.5-database-dev-edition.iso / VPage / Java.bin / CLASSES.ZIP / sun / tools / javadoc / Main.class (.txt) < prev   
Encoding:
Java Class File  |  1997-07-08  |  9.1 KB  |  367 lines

  1. package sun.tools.javadoc;
  2.  
  3. import java.io.File;
  4. import java.io.IOException;
  5. import java.text.MessageFormat;
  6. import java.util.Enumeration;
  7. import java.util.Hashtable;
  8. import java.util.MissingResourceException;
  9. import java.util.ResourceBundle;
  10. import java.util.Vector;
  11. import sun.tools.java.ClassDeclaration;
  12. import sun.tools.java.ClassDefinition;
  13. import sun.tools.java.ClassFile;
  14. import sun.tools.java.ClassPath;
  15. import sun.tools.java.Constants;
  16. import sun.tools.java.FieldDefinition;
  17. import sun.tools.java.Identifier;
  18. import sun.tools.java.Package;
  19. import sun.tools.javac.BatchEnvironment;
  20. import sun.tools.javac.SourceClass;
  21. import sun.tools.tree.Node;
  22. import sun.tools.util.ModifierFilter;
  23.  
  24. public final class Main implements Constants {
  25.    public static final String program = "javadoc";
  26.    public static BatchEnvironment env;
  27.    public static File destDir;
  28.    public static DocumentationGenerator generator;
  29.    public static boolean showAuthors;
  30.    public static boolean showVersion;
  31.    public static boolean showPackage;
  32.    public static ModifierFilter showAccess = new ModifierFilter(5L);
  33.    public static boolean showDeprecated = true;
  34.    public static boolean showIndex = true;
  35.    public static boolean showTree = true;
  36.    private static ResourceBundle messageRB;
  37.  
  38.    static void error(String var0) {
  39.       System.out.println("javadoc: " + var0);
  40.       if (env != null) {
  41.          ++env.nerrors;
  42.       }
  43.  
  44.    }
  45.  
  46.    static void initResource() {
  47.       try {
  48.          messageRB = ResourceBundle.getBundle("sun.tools.javadoc.resources.javadoc");
  49.       } catch (MissingResourceException var0) {
  50.          throw new Error("Fatal: Resource for javadoc is missing");
  51.       }
  52.    }
  53.  
  54.    public static String getText(String var0) {
  55.       return getText(var0, (String)null);
  56.    }
  57.  
  58.    public static String getText(String var0, int var1) {
  59.       return getText(var0, Integer.toString(var1), (String)null);
  60.    }
  61.  
  62.    public static String getText(String var0, String var1) {
  63.       return getText(var0, var1, (String)null);
  64.    }
  65.  
  66.    public static String getText(String var0, String var1, String var2) {
  67.       return getText(var0, var1, var2, (String)null);
  68.    }
  69.  
  70.    public static String getText(String var0, String var1, String var2, String var3) {
  71.       if (messageRB == null) {
  72.          initResource();
  73.       }
  74.  
  75.       try {
  76.          String var4 = messageRB.getString(var0);
  77.          String[] var5 = new String[]{var1, var2, var3};
  78.          return MessageFormat.format(var4, var5);
  79.       } catch (MissingResourceException var6) {
  80.          throw new Error("Fatal: Resource for javadoc is broken. There is no " + var0 + " key in resource.");
  81.       }
  82.    }
  83.  
  84.    static void exit() {
  85.       byte var0 = 0;
  86.       if (env == null) {
  87.          var0 = 1;
  88.       } else {
  89.          env.flushErrors();
  90.          if (env.nerrors > 0) {
  91.             if (env.nerrors > 1) {
  92.                System.out.print(getText("main.errors", env.nerrors));
  93.             } else {
  94.                System.out.print(getText("main.error", env.nerrors));
  95.             }
  96.  
  97.             if (env.nwarnings > 0) {
  98.                if (env.nwarnings > 1) {
  99.                   System.out.print(getText("main.warnings", env.nwarnings));
  100.                } else {
  101.                   System.out.print(getText("main.warning", env.nwarnings));
  102.                }
  103.             }
  104.  
  105.             System.out.println();
  106.             var0 = 1;
  107.          } else if (env.nwarnings > 0) {
  108.             if (env.nwarnings > 1) {
  109.                System.out.print(getText("main.warnings", env.nwarnings));
  110.             } else {
  111.                System.out.print(getText("main.warning", env.nwarnings));
  112.             }
  113.          }
  114.       }
  115.  
  116.       System.exit(var0);
  117.    }
  118.  
  119.    static void usage() {
  120.       System.out.println(getText("main.usage"));
  121.    }
  122.  
  123.    public static void main(String[] var0) {
  124.       String var1 = System.getProperty("java.class.path");
  125.       int var2 = 4;
  126.       long var3 = System.currentTimeMillis();
  127.       Vector var5 = new Vector();
  128.       Vector var6 = new Vector();
  129.       String var7 = "HTML";
  130.       String var8 = null;
  131.       String var9 = null;
  132.       var2 |= 256;
  133.  
  134.       for(int var10 = 0; var10 < var0.length; ++var10) {
  135.          String var11 = var0[var10];
  136.          if (var11.equals("-verbose")) {
  137.             var2 |= 1;
  138.          } else if (var11.equals("-version")) {
  139.             showVersion = true;
  140.          } else if (var11.equals("-nodeprecated")) {
  141.             showDeprecated = false;
  142.          } else if (!var11.equals("-author") && !var11.equals("-authors")) {
  143.             if (var11.equals("-private")) {
  144.                showAccess = new ModifierFilter(-9223372036854775801L);
  145.             } else if (var11.equals("-package")) {
  146.                showAccess = new ModifierFilter(-9223372036854775803L);
  147.             } else if (var11.equals("-protected")) {
  148.                showAccess = new ModifierFilter(5L);
  149.             } else if (var11.equals("-public")) {
  150.                showAccess = new ModifierFilter(1L);
  151.             } else if (!var11.equals("-sourcepath") && !var11.equals("-classpath")) {
  152.                if (var11.equals("-doctype")) {
  153.                   if (var10 + 1 < var0.length) {
  154.                      ++var10;
  155.                      var7 = var0[var10];
  156.                   } else {
  157.                      error(getText("main.requires_argument", "-docType"));
  158.                      usage();
  159.                      exit();
  160.                   }
  161.                } else if (var11.equals("-noindex")) {
  162.                   showIndex = false;
  163.                } else if (var11.equals("-notree")) {
  164.                   showTree = false;
  165.                } else if (var11.equals("-d")) {
  166.                   if (var10 + 1 < var0.length) {
  167.                      ++var10;
  168.                      destDir = new File(var0[var10]);
  169.                      if (!destDir.exists()) {
  170.                         error(getText("main.does_not_exist", destDir.getPath()));
  171.                         exit();
  172.                      }
  173.                   } else {
  174.                      error(getText("main.requires_argument", "-d"));
  175.                      usage();
  176.                      exit();
  177.                   }
  178.                } else if (var11.equals("-encoding")) {
  179.                   if (var10 + 1 < var0.length) {
  180.                      ++var10;
  181.                      var8 = var0[var10];
  182.                   } else {
  183.                      error(getText("main.requires_argument", "-encoding"));
  184.                      usage();
  185.                      exit();
  186.                   }
  187.                } else if (var11.equals("-docencoding")) {
  188.                   if (var10 + 1 < var0.length) {
  189.                      ++var10;
  190.                      var9 = var0[var10];
  191.                   } else {
  192.                      error(getText("main.requires_argument", "-docencoding"));
  193.                      usage();
  194.                      exit();
  195.                   }
  196.                } else if (var11.startsWith("-")) {
  197.                   error(getText("main.invalid_flag", var11));
  198.                   usage();
  199.                   exit();
  200.                } else if (var11.endsWith(".java") && var11.indexOf(46) == var11.length() - 5) {
  201.                   var6.addElement(var11);
  202.                } else {
  203.                   var5.addElement(var11);
  204.                }
  205.             } else if (var10 + 1 < var0.length) {
  206.                ++var10;
  207.                var1 = var0[var10];
  208.             } else {
  209.                error(getText("main.requires_argument", var11));
  210.                usage();
  211.                exit();
  212.             }
  213.          } else {
  214.             showAuthors = true;
  215.          }
  216.       }
  217.  
  218.       if (var5.size() == 0 && var6.size() == 0) {
  219.          error(getText("main.No_packages_or_classes_specified"));
  220.          usage();
  221.          exit();
  222.       }
  223.  
  224.       if (var1 == null) {
  225.          var1 = ".";
  226.       }
  227.  
  228.       ClassPath var33 = new ClassPath(var1);
  229.       env = new BatchEnvironment(var33);
  230.       BatchEnvironment var10000 = env;
  231.       var10000.flags |= var2;
  232.       env.setCharacterEncoding(var8);
  233.  
  234.       try {
  235.          Class var12 = Class.forName("sun.tools.javadoc." + var7 + "DocumentationGenerator");
  236.          generator = (DocumentationGenerator)var12.newInstance();
  237.       } catch (Exception var28) {
  238.          System.out.println(getText("main.Cannot_generate", var7));
  239.          return;
  240.       }
  241.  
  242.       try {
  243.          Enumeration var34 = var6.elements();
  244.  
  245.          while(var34.hasMoreElements()) {
  246.             File var13 = new File((String)var34.nextElement());
  247.  
  248.             try {
  249.                env.parseFile(new ClassFile(var13));
  250.             } catch (IOException var27) {
  251.                env.error(0, "cant.read", var13.getPath());
  252.             }
  253.          }
  254.  
  255.          Vector var35 = new Vector();
  256.          Enumeration var14 = env.getClasses();
  257.  
  258.          while(var14.hasMoreElements()) {
  259.             ClassDeclaration var15 = (ClassDeclaration)var14.nextElement();
  260.             ClassDefinition var16 = var15.getClassDefinition();
  261.             if (var15.isDefined() && var16 instanceof SourceClass && showAccess.checkClass(var16)) {
  262.                var35.addElement(var15);
  263.             }
  264.          }
  265.  
  266.          Vector var36 = (Vector)var35.clone();
  267.          Hashtable var37 = new Hashtable();
  268.          Enumeration var17 = var5.elements();
  269.  
  270.          while(var17.hasMoreElements()) {
  271.             Identifier var18 = Identifier.lookup((String)var17.nextElement());
  272.             Package var19 = new Package(var33, var18);
  273.             boolean var20 = false;
  274.             Enumeration var21 = var19.getSourceFiles();
  275.  
  276.             while(var21.hasMoreElements()) {
  277.                if (!var20) {
  278.                   System.out.println(getText("main.Loading_source_files_for", var18.toString()));
  279.                   var20 = true;
  280.                }
  281.  
  282.                ClassFile var22 = (ClassFile)var21.nextElement();
  283.  
  284.                try {
  285.                   env.parseFile(var22);
  286.                } catch (IOException var26) {
  287.                   env.error(0, "cant.read", var22.getPath());
  288.                }
  289.             }
  290.  
  291.             if (!var20) {
  292.                System.out.println(getText("main.Warning_No_source_files_for_package", var18.toString()));
  293.             } else {
  294.                Enumeration var42 = env.getClasses();
  295.  
  296.                while(var42.hasMoreElements()) {
  297.                   ClassDeclaration var23 = (ClassDeclaration)var42.nextElement();
  298.                   ClassDefinition var24 = var23.getClassDefinition();
  299.                   if (var23.isDefined() && !var24.isSynthetic() && var24 instanceof SourceClass && showAccess.checkClass(var24)) {
  300.                      var36.addElement(var23);
  301.                   }
  302.  
  303.                   if (var24 != null && var37.get(var23) == null) {
  304.                      for(FieldDefinition var25 = var24.getFirstField(); var25 != null; var25 = var25.getNextField()) {
  305.                         if (var25.isMethod() && var25.getValue() != null) {
  306.                            var25.setValue((Node)null);
  307.                         }
  308.                      }
  309.  
  310.                      var37.put(var23, var23);
  311.                   }
  312.                }
  313.             }
  314.          }
  315.  
  316.          if (var9 == null) {
  317.             var9 = var8;
  318.          }
  319.  
  320.          generator.init(var36, var9);
  321.          generator.genPackagesDocumentation(var5);
  322.          Enumeration var38 = var5.elements();
  323.  
  324.          while(var38.hasMoreElements()) {
  325.             Identifier var39 = Identifier.lookup((String)var38.nextElement());
  326.             generator.genPackageDocumentation(var39);
  327.             env.flushErrors();
  328.          }
  329.  
  330.          Enumeration var40 = var35.elements();
  331.  
  332.          while(var40.hasMoreElements()) {
  333.             ClassDeclaration var41 = (ClassDeclaration)var40.nextElement();
  334.             generator.genClassDocumentation(var41, (ClassDeclaration)null, (ClassDeclaration)null);
  335.             env.flushErrors();
  336.          }
  337.  
  338.          if (showIndex) {
  339.             System.out.println(getText("main.Generating_index"));
  340.             generator.genFieldIndex();
  341.          }
  342.  
  343.          if (showTree) {
  344.             System.out.println(getText("main.Generating_tree"));
  345.             generator.genClassTree();
  346.          }
  347.       } catch (Error var29) {
  348.          ((Throwable)var29).printStackTrace();
  349.          env.error(0, "fatal.error");
  350.          env.flushErrors();
  351.          System.exit(1);
  352.       } catch (Exception var30) {
  353.          ((Throwable)var30).printStackTrace();
  354.          env.error(0, "fatal.exception");
  355.          env.flushErrors();
  356.          System.exit(1);
  357.       }
  358.  
  359.       if (env.verbose()) {
  360.          var3 = System.currentTimeMillis() - var3;
  361.          System.out.println(getText("main.done_in", Long.toString(var3)));
  362.       }
  363.  
  364.       exit();
  365.    }
  366. }
  367.