1 /*
2  * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * This code is free software; you can redistribute it and/or modify it
6  * under the terms of the GNU General Public License version 2 only, as
7  * published by the Free Software Foundation.  Oracle designates this
8  * particular file as subject to the "Classpath" exception as provided
9  * by Oracle in the LICENSE file that accompanied this code.
10  *
11  * This code is distributed in the hope that it will be useful, but WITHOUT
12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14  * version 2 for more details (a copy is included in the LICENSE file that
15  * accompanied this code).
16  *
17  * You should have received a copy of the GNU General Public License version
18  * 2 along with this work; if not, write to the Free Software Foundation,
19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20  *
21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22  * or visit www.oracle.com if you need additional information or have any
23  * questions.
24  */
25 
26 package com.sun.tools.javadoc;
27 
28 import java.io.PrintWriter;
29 
30 /**
31  * Provides external entry points (tool and programmatic)
32  * for the javadoc program.
33  *
34  *  <p><b>This is NOT part of any supported API.
35  *  If you write code that depends on this, you do so at your own risk.
36  *  This code and its internal interfaces are subject to change or
37  *  deletion without notice.</b>
38  *
39  * @since 1.4
40  */
41 public class Main {
42 
43     /**
44      * Constructor should never be called.
45      */
Main()46     private Main() {
47     }
48 
49     /**
50      * Command line interface.
51      * @param args   The command line parameters.
52      */
main(String... args)53     public static void main(String... args) {
54         System.exit(execute(args));
55     }
56 
57     /**
58      * Programmatic interface.
59      * @param args   The command line parameters.
60      * @return The return code.
61      */
execute(String... args)62     public static int execute(String... args) {
63         Start jdoc = new Start();
64         return jdoc.begin(args);
65     }
66 
67     /**
68      * Programmatic interface.
69      * @param args   The command line parameters.
70      * @param docletParentClassLoader The parent class loader used when
71      *  creating the doclet classloader. If null, the class loader used
72      *  to instantiate doclets will be created without specifying a parent
73      *  class loader.
74      * @return The return code.
75      * @since 1.7
76      */
execute(ClassLoader docletParentClassLoader, String... args)77     public static int execute(ClassLoader docletParentClassLoader, String... args) {
78         Start jdoc = new Start(docletParentClassLoader);
79         return jdoc.begin(args);
80     }
81 
82     /**
83      * Programmatic interface.
84      * @param programName  Name of the program (for error messages).
85      * @param args   The command line parameters.
86      * @return The return code.
87      */
execute(String programName, String... args)88     public static int execute(String programName, String... args) {
89         Start jdoc = new Start(programName);
90         return jdoc.begin(args);
91     }
92 
93     /**
94      * Programmatic interface.
95      * @param programName  Name of the program (for error messages).
96      * @param args   The command line parameters.
97      * @param docletParentClassLoader The parent class loader used when
98      *  creating the doclet classloader. If null, the class loader used
99      *  to instantiate doclets will be created without specifying a parent
100      *  class loader.
101      * @return The return code.
102      * @since 1.7
103      */
execute(String programName, ClassLoader docletParentClassLoader, String... args)104     public static int execute(String programName, ClassLoader docletParentClassLoader, String... args) {
105         Start jdoc = new Start(programName, docletParentClassLoader);
106         return jdoc.begin(args);
107     }
108 
109     /**
110      * Programmatic interface.
111      * @param programName  Name of the program (for error messages).
112      * @param defaultDocletClassName  Fully qualified class name.
113      * @param args   The command line parameters.
114      * @return The return code.
115      */
execute(String programName, String defaultDocletClassName, String... args)116     public static int execute(String programName,
117                               String defaultDocletClassName,
118                               String... args) {
119         Start jdoc = new Start(programName, defaultDocletClassName);
120         return jdoc.begin(args);
121     }
122 
123     /**
124      * Programmatic interface.
125      * @param programName  Name of the program (for error messages).
126      * @param defaultDocletClassName  Fully qualified class name.
127      * @param docletParentClassLoader The parent class loader used when
128      *  creating the doclet classloader. If null, the class loader used
129      *  to instantiate doclets will be created without specifying a parent
130      *  class loader.
131      * @param args   The command line parameters.
132      * @return The return code.
133      * @since 1.7
134      */
execute(String programName, String defaultDocletClassName, ClassLoader docletParentClassLoader, String... args)135     public static int execute(String programName,
136                               String defaultDocletClassName,
137                               ClassLoader docletParentClassLoader,
138                               String... args) {
139         Start jdoc = new Start(programName, defaultDocletClassName, docletParentClassLoader);
140         return jdoc.begin(args);
141     }
142 
143     /**
144      * Programmatic interface.
145      * @param programName  Name of the program (for error messages).
146      * @param errWriter    PrintWriter to receive error messages.
147      * @param warnWriter    PrintWriter to receive error messages.
148      * @param noticeWriter    PrintWriter to receive error messages.
149      * @param defaultDocletClassName  Fully qualified class name.
150      * @param args   The command line parameters.
151      * @return The return code.
152      */
execute(String programName, PrintWriter errWriter, PrintWriter warnWriter, PrintWriter noticeWriter, String defaultDocletClassName, String... args)153     public static int execute(String programName,
154                               PrintWriter errWriter,
155                               PrintWriter warnWriter,
156                               PrintWriter noticeWriter,
157                               String defaultDocletClassName,
158                               String... args) {
159         Start jdoc = new Start(programName,
160                                errWriter, warnWriter, noticeWriter,
161                                defaultDocletClassName);
162         return jdoc.begin(args);
163     }
164 
165     /**
166      * Programmatic interface.
167      * @param programName  Name of the program (for error messages).
168      * @param errWriter    PrintWriter to receive error messages.
169      * @param warnWriter    PrintWriter to receive error messages.
170      * @param noticeWriter    PrintWriter to receive error messages.
171      * @param defaultDocletClassName  Fully qualified class name.
172      * @param docletParentClassLoader The parent class loader used when
173      *  creating the doclet classloader. If null, the class loader used
174      *  to instantiate doclets will be created without specifying a parent
175      *  class loader.
176      * @param args   The command line parameters.
177      * @return The return code.
178      * @since 1.7
179      */
execute(String programName, PrintWriter errWriter, PrintWriter warnWriter, PrintWriter noticeWriter, String defaultDocletClassName, ClassLoader docletParentClassLoader, String... args)180     public static int execute(String programName,
181                               PrintWriter errWriter,
182                               PrintWriter warnWriter,
183                               PrintWriter noticeWriter,
184                               String defaultDocletClassName,
185                               ClassLoader docletParentClassLoader,
186                               String... args) {
187         Start jdoc = new Start(programName,
188                                errWriter, warnWriter, noticeWriter,
189                                defaultDocletClassName,
190                                docletParentClassLoader);
191         return jdoc.begin(args);
192     }
193 }
194