Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/src/jdk.javadoc/share/classes/jdk/javadoc/doclet/Doclet.java
41159 views
1
/*
2
* Copyright (c) 2015, 2021, 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 jdk.javadoc.doclet;
27
28
import java.util.List;
29
import java.util.Locale;
30
import java.util.Set;
31
32
import javax.lang.model.SourceVersion;
33
34
/**
35
* The user doclet must implement this interface, as described in the
36
* <a href="package-summary.html#package-description">package description</a>.
37
* Each implementation of a Doclet must provide a public no-argument constructor
38
* to be used by tools to instantiate the doclet. The tool infrastructure will
39
* interact with classes implementing this interface as follows:
40
* <ol>
41
* <li> The tool will create an instance of a doclet using the no-arg constructor
42
* of the doclet class.
43
* <li> Next, the tool calls the {@link #init init} method with an appropriate locale
44
* and reporter.
45
* <li> Afterwards, the tool calls {@link #getSupportedOptions getSupportedOptions},
46
* and {@link #getSupportedSourceVersion getSupportedSourceVersion}.
47
* These methods are only called once.
48
* <li> As appropriate, the tool calls the {@link #run run} method on the doclet
49
* object, giving it a DocletEnvironment object, from which the doclet can determine
50
* the elements to be included in the documentation.
51
* </ol>
52
* <p>
53
* If a doclet object is created and used without the above protocol being followed,
54
* then the doclet's behavior is not defined by this interface specification.
55
* <p> To start the doclet, pass {@code -doclet} followed by the fully-qualified
56
* name of the entry point class (i.e. the implementation of this interface) on
57
* the javadoc tool command line.
58
*
59
* @since 9
60
*/
61
public interface Doclet {
62
63
/**
64
* Initializes this doclet with the given locale and error reporter.
65
* This locale will be used by the reporter and the doclet components.
66
*
67
* @param locale the locale to be used
68
* @param reporter the reporter to be used
69
*/
70
void init(Locale locale, Reporter reporter);
71
72
/**
73
* Returns a name identifying the doclet. A name is a simple identifier
74
* without white spaces, as defined in <cite>The Java Language Specification</cite>,
75
* section 6.2 "Names and Identifiers".
76
*
77
* @return name of the Doclet
78
*/
79
String getName();
80
81
/**
82
* Returns all the supported options.
83
*
84
* @return a set containing all the supported options, an empty set if none
85
*/
86
Set<? extends Option> getSupportedOptions();
87
88
/**
89
* Returns the version of the Java Programming Language supported
90
* by this doclet.
91
*
92
* @return the language version supported by this doclet, usually
93
* the latest version
94
*/
95
SourceVersion getSupportedSourceVersion();
96
97
/**
98
* The entry point of the doclet. Further processing will commence as
99
* instructed by this method.
100
*
101
* @param environment from which essential information can be extracted
102
* @return true on success
103
*/
104
boolean run(DocletEnvironment environment);
105
106
/**
107
* An encapsulation of option name, aliases, parameters and descriptions
108
* as used by the Doclet.
109
*/
110
interface Option {
111
/**
112
* Returns the number of arguments, this option will consume.
113
* @return number of consumed arguments
114
*/
115
int getArgumentCount();
116
117
/**
118
* Returns the description of the option. For instance, the option "group", would
119
* return the synopsis of the option such as, "groups the documents".
120
* @return description if set, otherwise an empty String
121
*/
122
String getDescription();
123
124
/**
125
* Returns the option kind.
126
* @return the kind of this option
127
*/
128
Option.Kind getKind();
129
130
/**
131
* Returns the list of names that may be used to identify the option. For instance, the
132
* list could be {@code ["-classpath", "--class-path"]} for the
133
* option "-classpath", with an alias "--class-path".
134
* @return the names of the option
135
*/
136
List<String> getNames();
137
138
/**
139
* Returns the parameters of the option. For instance "name &lt;p1&gt;:&lt;p2&gt;.."
140
* @return parameters if set, otherwise an empty String
141
*/
142
String getParameters();
143
144
/**
145
* Processes the option and arguments as needed. This method will
146
* be invoked if the given option name matches the option.
147
* @param option the option
148
* @param arguments a list encapsulating the arguments
149
* @return true if operation succeeded, false otherwise
150
*/
151
boolean process(String option, List<String> arguments);
152
153
/**
154
* The kind of an option.
155
*/
156
enum Kind {
157
/** An extended option, such as those prefixed with {@code -X}. */
158
EXTENDED,
159
/** A standard option. */
160
STANDARD,
161
/** An implementation-reserved option. */
162
OTHER;
163
}
164
}
165
}
166
167