Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_langtools
提交
390a2aad
D
dragonwell8_langtools
项目概览
openanolis
/
dragonwell8_langtools
通知
0
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dragonwell8_langtools
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
390a2aad
编写于
11月 15, 2012
作者:
J
jjg
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
8003257: refactor javadoc tool option handling
Reviewed-by: darcy
上级
b62d577d
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
446 addition
and
398 deletion
+446
-398
src/share/classes/com/sun/tools/javadoc/DocEnv.java
src/share/classes/com/sun/tools/javadoc/DocEnv.java
+2
-2
src/share/classes/com/sun/tools/javadoc/DocLocale.java
src/share/classes/com/sun/tools/javadoc/DocLocale.java
+2
-2
src/share/classes/com/sun/tools/javadoc/DocletInvoker.java
src/share/classes/com/sun/tools/javadoc/DocletInvoker.java
+13
-13
src/share/classes/com/sun/tools/javadoc/JavadocTool.java
src/share/classes/com/sun/tools/javadoc/JavadocTool.java
+8
-13
src/share/classes/com/sun/tools/javadoc/Messager.java
src/share/classes/com/sun/tools/javadoc/Messager.java
+22
-203
src/share/classes/com/sun/tools/javadoc/Start.java
src/share/classes/com/sun/tools/javadoc/Start.java
+74
-165
src/share/classes/com/sun/tools/javadoc/ToolOption.java
src/share/classes/com/sun/tools/javadoc/ToolOption.java
+325
-0
未找到文件。
src/share/classes/com/sun/tools/javadoc/DocEnv.java
浏览文件 @
390a2aad
...
...
@@ -211,8 +211,8 @@ public class DocEnv {
public
void
setLocale
(
String
localeName
)
{
// create locale specifics
doclocale
=
new
DocLocale
(
this
,
localeName
,
breakiterator
);
//
reset
Messager if locale has changed.
messager
.
reset
(
);
//
update
Messager if locale has changed.
messager
.
setLocale
(
doclocale
.
locale
);
}
/** Check whether this member should be documented. */
...
...
src/share/classes/com/sun/tools/javadoc/DocLocale.java
浏览文件 @
390a2aad
...
...
@@ -49,7 +49,7 @@ class DocLocale {
final
String
localeName
;
/**
* The locale to be used. If user does
e
n't provide this,
* The locale to be used. If user doesn't provide this,
* then set it to default locale value.
*/
final
Locale
locale
;
...
...
@@ -98,7 +98,7 @@ class DocLocale {
if
(
locale
==
null
)
{
docenv
.
exit
();
}
else
{
Locale
.
setDefault
(
locale
);
Locale
.
setDefault
(
locale
);
// NOTE: updating global state
}
collator
=
Collator
.
getInstance
(
locale
);
sentenceBreaker
=
BreakIterator
.
getSentenceInstance
(
locale
);
...
...
src/share/classes/com/sun/tools/javadoc/DocletInvoker.java
浏览文件 @
390a2aad
...
...
@@ -95,7 +95,7 @@ public class DocletInvoker {
try
{
dc
=
appClassLoader
.
loadClass
(
docletClassName
);
}
catch
(
ClassNotFoundException
exc
)
{
messager
.
error
(
null
,
"main.doclet_class_not_found"
,
docletClassName
);
messager
.
error
(
Messager
.
NOPOS
,
"main.doclet_class_not_found"
,
docletClassName
);
messager
.
exit
();
}
docletClass
=
dc
;
...
...
@@ -168,7 +168,7 @@ public class DocletInvoker {
if
(
retVal
instanceof
Boolean
)
{
return
((
Boolean
)
retVal
).
booleanValue
();
}
else
{
messager
.
error
(
null
,
"main.must_return_boolean"
,
messager
.
error
(
Messager
.
NOPOS
,
"main.must_return_boolean"
,
docletClassName
,
methodName
);
return
false
;
}
...
...
@@ -192,7 +192,7 @@ public class DocletInvoker {
if
(
retVal
instanceof
Integer
)
{
return
((
Integer
)
retVal
).
intValue
();
}
else
{
messager
.
error
(
null
,
"main.must_return_int"
,
messager
.
error
(
Messager
.
NOPOS
,
"main.must_return_int"
,
docletClassName
,
methodName
);
return
-
1
;
}
...
...
@@ -217,7 +217,7 @@ public class DocletInvoker {
if
(
retVal
instanceof
Boolean
)
{
return
((
Boolean
)
retVal
).
booleanValue
();
}
else
{
messager
.
error
(
null
,
"main.must_return_boolean"
,
messager
.
error
(
Messager
.
NOPOS
,
"main.must_return_boolean"
,
docletClassName
,
methodName
);
return
false
;
}
...
...
@@ -241,7 +241,7 @@ public class DocletInvoker {
if
(
retVal
instanceof
LanguageVersion
)
{
return
(
LanguageVersion
)
retVal
;
}
else
{
messager
.
error
(
null
,
"main.must_return_languageversion"
,
messager
.
error
(
Messager
.
NOPOS
,
"main.must_return_languageversion"
,
docletClassName
,
methodName
);
return
JAVA_1_1
;
}
...
...
@@ -261,19 +261,19 @@ public class DocletInvoker {
meth
=
docletClass
.
getMethod
(
methodName
,
paramTypes
);
}
catch
(
NoSuchMethodException
exc
)
{
if
(
returnValueIfNonExistent
==
null
)
{
messager
.
error
(
null
,
"main.doclet_method_not_found"
,
messager
.
error
(
Messager
.
NOPOS
,
"main.doclet_method_not_found"
,
docletClassName
,
methodName
);
throw
new
DocletInvokeException
();
}
else
{
return
returnValueIfNonExistent
;
}
}
catch
(
SecurityException
exc
)
{
messager
.
error
(
null
,
"main.doclet_method_not_accessible"
,
messager
.
error
(
Messager
.
NOPOS
,
"main.doclet_method_not_accessible"
,
docletClassName
,
methodName
);
throw
new
DocletInvokeException
();
}
if
(!
Modifier
.
isStatic
(
meth
.
getModifiers
()))
{
messager
.
error
(
null
,
"main.doclet_method_must_be_static"
,
messager
.
error
(
Messager
.
NOPOS
,
"main.doclet_method_must_be_static"
,
docletClassName
,
methodName
);
throw
new
DocletInvokeException
();
}
...
...
@@ -283,23 +283,23 @@ public class DocletInvoker {
Thread
.
currentThread
().
setContextClassLoader
(
appClassLoader
);
return
meth
.
invoke
(
null
,
params
);
}
catch
(
IllegalArgumentException
exc
)
{
messager
.
error
(
null
,
"main.internal_error_exception_thrown"
,
messager
.
error
(
Messager
.
NOPOS
,
"main.internal_error_exception_thrown"
,
docletClassName
,
methodName
,
exc
.
toString
());
throw
new
DocletInvokeException
();
}
catch
(
IllegalAccessException
exc
)
{
messager
.
error
(
null
,
"main.doclet_method_not_accessible"
,
messager
.
error
(
Messager
.
NOPOS
,
"main.doclet_method_not_accessible"
,
docletClassName
,
methodName
);
throw
new
DocletInvokeException
();
}
catch
(
NullPointerException
exc
)
{
messager
.
error
(
null
,
"main.internal_error_exception_thrown"
,
messager
.
error
(
Messager
.
NOPOS
,
"main.internal_error_exception_thrown"
,
docletClassName
,
methodName
,
exc
.
toString
());
throw
new
DocletInvokeException
();
}
catch
(
InvocationTargetException
exc
)
{
Throwable
err
=
exc
.
getTargetException
();
if
(
err
instanceof
java
.
lang
.
OutOfMemoryError
)
{
messager
.
error
(
null
,
"main.out.of.memory"
);
messager
.
error
(
Messager
.
NOPOS
,
"main.out.of.memory"
);
}
else
{
messager
.
error
(
null
,
"main.exception_thrown"
,
messager
.
error
(
Messager
.
NOPOS
,
"main.exception_thrown"
,
docletClassName
,
methodName
,
exc
.
toString
());
exc
.
getTargetException
().
printStackTrace
();
}
...
...
src/share/classes/com/sun/tools/javadoc/JavadocTool.java
浏览文件 @
390a2aad
...
...
@@ -38,7 +38,6 @@ import javax.tools.StandardJavaFileManager;
import
javax.tools.StandardLocation
;
import
com.sun.tools.javac.code.Symbol.CompletionFailure
;
import
com.sun.tools.javac.comp.Annotate
;
import
com.sun.tools.javac.tree.JCTree
;
import
com.sun.tools.javac.tree.JCTree.JCClassDecl
;
import
com.sun.tools.javac.tree.JCTree.JCCompilationUnit
;
...
...
@@ -65,11 +64,9 @@ import com.sun.tools.javac.util.Position;
public
class
JavadocTool
extends
com
.
sun
.
tools
.
javac
.
main
.
JavaCompiler
{
DocEnv
docenv
;
final
Context
context
;
final
Messager
messager
;
final
JavadocClassReader
reader
;
final
JavadocEnter
enter
;
final
Annotate
annotate
;
final
JavadocClassReader
javadocReader
;
final
JavadocEnter
javadocEnter
;
/**
* Construct a new JavaCompiler processor, using appropriately
...
...
@@ -77,11 +74,9 @@ public class JavadocTool extends com.sun.tools.javac.main.JavaCompiler {
*/
protected
JavadocTool
(
Context
context
)
{
super
(
context
);
this
.
context
=
context
;
messager
=
Messager
.
instance0
(
context
);
reader
=
JavadocClassReader
.
instance0
(
context
);
enter
=
JavadocEnter
.
instance0
(
context
);
annotate
=
Annotate
.
instance
(
context
);
javadocReader
=
JavadocClassReader
.
instance0
(
context
);
javadocEnter
=
JavadocEnter
.
instance0
(
context
);
}
/**
...
...
@@ -138,7 +133,7 @@ public class JavadocTool extends com.sun.tools.javac.main.JavaCompiler {
docenv
.
setEncoding
(
encoding
);
docenv
.
docClasses
=
docClasses
;
docenv
.
legacyDoclet
=
legacyDoclet
;
r
eader
.
sourceCompleter
=
docClasses
?
null
:
this
;
javadocR
eader
.
sourceCompleter
=
docClasses
?
null
:
this
;
ListBuffer
<
String
>
names
=
new
ListBuffer
<
String
>();
ListBuffer
<
JCCompilationUnit
>
classTrees
=
new
ListBuffer
<
JCCompilationUnit
>();
...
...
@@ -156,7 +151,7 @@ public class JavadocTool extends com.sun.tools.javac.main.JavaCompiler {
}
else
if
(
isValidPackageName
(
name
))
{
names
=
names
.
append
(
name
);
}
else
if
(
name
.
endsWith
(
".java"
))
{
docenv
.
error
(
null
,
"main.file_not_found"
,
name
);
docenv
.
error
(
null
,
"main.file_not_found"
,
name
);
}
else
{
docenv
.
error
(
null
,
"main.illegal_package_name"
,
name
);
}
...
...
@@ -179,7 +174,7 @@ public class JavadocTool extends com.sun.tools.javac.main.JavaCompiler {
// Enter symbols for all files
docenv
.
notice
(
"main.Building_tree"
);
e
nter
.
main
(
classTrees
.
toList
().
appendList
(
packTrees
.
toList
()));
javadocE
nter
.
main
(
classTrees
.
toList
().
appendList
(
packTrees
.
toList
()));
}
}
catch
(
Abort
ex
)
{}
...
...
@@ -240,7 +235,7 @@ public class JavadocTool extends com.sun.tools.javac.main.JavaCompiler {
}
if
(!
hasFiles
)
{
messager
.
warning
(
null
,
"main.no_source_files_for_package"
,
messager
.
warning
(
Messager
.
NOPOS
,
"main.no_source_files_for_package"
,
name
.
replace
(
File
.
separatorChar
,
'.'
));
}
}
...
...
src/share/classes/com/sun/tools/javadoc/Messager.java
浏览文件 @
390a2aad
...
...
@@ -25,13 +25,15 @@
package
com.sun.tools.javadoc
;
import
java.io.PrintWriter
;
// Access to 'javac' output streams
import
java.io.PrintWriter
;
import
java.text.MessageFormat
;
import
java.util.
MissingResourceException
;
import
java.util.
Locale
;
import
java.util.ResourceBundle
;
import
com.sun.javadoc.*
;
import
com.sun.tools.javac.util.Context
;
import
com.sun.tools.javac.util.JCDiagnostic
;
import
com.sun.tools.javac.util.JavacMessages
;
import
com.sun.tools.javac.util.Log
;
/**
...
...
@@ -51,6 +53,7 @@ import com.sun.tools.javac.util.Log;
* @author Neal Gafter (rewrite)
*/
public
class
Messager
extends
Log
implements
DocErrorReporter
{
public
static
final
SourcePosition
NOPOS
=
null
;
/** Get the current messager, which is also the compiler log. */
public
static
Messager
instance0
(
Context
context
)
{
...
...
@@ -91,7 +94,9 @@ public class Messager extends Log implements DocErrorReporter {
final
String
programName
;
private
ResourceBundle
messageRB
=
null
;
private
Locale
locale
;
private
final
JavacMessages
messages
;
private
final
JCDiagnostic
.
Factory
javadocDiags
;
/** The default writer for diagnostics
*/
...
...
@@ -121,6 +126,9 @@ public class Messager extends Log implements DocErrorReporter {
PrintWriter
warnWriter
,
PrintWriter
noticeWriter
)
{
super
(
context
,
errWriter
,
warnWriter
,
noticeWriter
);
messages
=
JavacMessages
.
instance
(
context
);
messages
.
add
(
"com.sun.tools.javadoc.resources.javadoc"
);
javadocDiags
=
new
JCDiagnostic
.
Factory
(
messages
,
"javadoc"
);
this
.
programName
=
programName
;
}
...
...
@@ -134,94 +142,18 @@ public class Messager extends Log implements DocErrorReporter {
return
Integer
.
MAX_VALUE
;
}
/**
* Reset resource bundle, eg. locale has changed.
*/
public
void
reset
()
{
messageRB
=
null
;
}
/**
* Get string from ResourceBundle, initialize ResourceBundle
* if needed.
*/
private
String
getString
(
String
key
)
{
if
(
messageRB
==
null
)
{
try
{
messageRB
=
ResourceBundle
.
getBundle
(
"com.sun.tools.javadoc.resources.javadoc"
);
}
catch
(
MissingResourceException
e
)
{
throw
new
Error
(
"Fatal: Resource for javadoc is missing"
);
}
}
return
messageRB
.
getString
(
key
);
}
/**
* get and format message string from resource
*
* @param key selects message from resource
*/
String
getText
(
String
key
)
{
return
getText
(
key
,
(
String
)
null
);
}
/**
* get and format message string from resource
*
* @param key selects message from resource
* @param a1 first argument
*/
String
getText
(
String
key
,
String
a1
)
{
return
getText
(
key
,
a1
,
null
);
}
/**
* get and format message string from resource
*
* @param key selects message from resource
* @param a1 first argument
* @param a2 second argument
*/
String
getText
(
String
key
,
String
a1
,
String
a2
)
{
return
getText
(
key
,
a1
,
a2
,
null
);
}
/**
* get and format message string from resource
*
* @param key selects message from resource
* @param a1 first argument
* @param a2 second argument
* @param a3 third argument
*/
String
getText
(
String
key
,
String
a1
,
String
a2
,
String
a3
)
{
return
getText
(
key
,
a1
,
a2
,
a3
,
null
);
public
void
setLocale
(
Locale
locale
)
{
this
.
locale
=
locale
;
}
/**
* get and format message string from resource
*
* @param key selects message from resource
* @param a1 first argument
* @param a2 second argument
* @param a3 third argument
* @param a4 fourth argument
* @param args arguments for the message
*/
String
getText
(
String
key
,
String
a1
,
String
a2
,
String
a3
,
String
a4
)
{
try
{
String
message
=
getString
(
key
);
String
[]
args
=
new
String
[
4
];
args
[
0
]
=
a1
;
args
[
1
]
=
a2
;
args
[
2
]
=
a3
;
args
[
3
]
=
a4
;
return
MessageFormat
.
format
(
message
,
(
Object
[])
args
);
}
catch
(
MissingResourceException
e
)
{
return
"********** Resource for javadoc is broken. There is no "
+
key
+
" key in resource."
;
}
String
getText
(
String
key
,
Object
...
args
)
{
return
messages
.
getLocalizedString
(
locale
,
key
,
args
);
}
/**
...
...
@@ -307,138 +239,26 @@ public class Messager extends Log implements DocErrorReporter {
*
* @param key selects message from resource
*/
public
void
error
(
SourcePosition
pos
,
String
key
)
{
printError
(
pos
,
getText
(
key
));
}
/**
* Print error message, increment error count.
*
* @param key selects message from resource
* @param a1 first argument
*/
public
void
error
(
SourcePosition
pos
,
String
key
,
String
a1
)
{
printError
(
pos
,
getText
(
key
,
a1
));
}
/**
* Print error message, increment error count.
*
* @param key selects message from resource
* @param a1 first argument
* @param a2 second argument
*/
public
void
error
(
SourcePosition
pos
,
String
key
,
String
a1
,
String
a2
)
{
printError
(
pos
,
getText
(
key
,
a1
,
a2
));
}
/**
* Print error message, increment error count.
*
* @param key selects message from resource
* @param a1 first argument
* @param a2 second argument
* @param a3 third argument
*/
public
void
error
(
SourcePosition
pos
,
String
key
,
String
a1
,
String
a2
,
String
a3
)
{
printError
(
pos
,
getText
(
key
,
a1
,
a2
,
a3
));
}
/**
* Print warning message, increment warning count.
*
* @param key selects message from resource
*/
public
void
warning
(
SourcePosition
pos
,
String
key
)
{
printWarning
(
pos
,
getText
(
key
));
}
/**
* Print warning message, increment warning count.
*
* @param key selects message from resource
* @param a1 first argument
*/
public
void
warning
(
SourcePosition
pos
,
String
key
,
String
a1
)
{
printWarning
(
pos
,
getText
(
key
,
a1
));
}
/**
* Print warning message, increment warning count.
*
* @param key selects message from resource
* @param a1 first argument
* @param a2 second argument
*/
public
void
warning
(
SourcePosition
pos
,
String
key
,
String
a1
,
String
a2
)
{
printWarning
(
pos
,
getText
(
key
,
a1
,
a2
));
}
/**
* Print warning message, increment warning count.
*
* @param key selects message from resource
* @param a1 first argument
* @param a2 second argument
* @param a3 third argument
*/
public
void
warning
(
SourcePosition
pos
,
String
key
,
String
a1
,
String
a2
,
String
a3
)
{
printWarning
(
pos
,
getText
(
key
,
a1
,
a2
,
a3
));
public
void
error
(
SourcePosition
pos
,
String
key
,
Object
...
args
)
{
printError
(
pos
,
getText
(
key
,
args
));
}
/**
* Print warning message, increment warning count.
*
* @param key selects message from resource
* @param a1 first argument
* @param a2 second argument
* @param a3 third argument
*/
public
void
warning
(
SourcePosition
pos
,
String
key
,
String
a1
,
String
a2
,
String
a3
,
String
a4
)
{
printWarning
(
pos
,
getText
(
key
,
a1
,
a2
,
a3
,
a4
));
}
/**
* Print a message.
*
* @param key selects message from resource
*/
public
void
notice
(
String
key
)
{
print
Notice
(
getText
(
key
));
public
void
warning
(
SourcePosition
pos
,
String
key
,
Object
...
args
)
{
print
Warning
(
pos
,
getText
(
key
,
args
));
}
/**
* Print a message.
*
* @param key selects message from resource
* @param a1 first argument
*/
public
void
notice
(
String
key
,
String
a1
)
{
printNotice
(
getText
(
key
,
a1
));
}
/**
* Print a message.
*
* @param key selects message from resource
* @param a1 first argument
* @param a2 second argument
*/
public
void
notice
(
String
key
,
String
a1
,
String
a2
)
{
printNotice
(
getText
(
key
,
a1
,
a2
));
}
/**
* Print a message.
*
* @param key selects message from resource
* @param a1 first argument
* @param a2 second argument
* @param a3 third argument
*/
public
void
notice
(
String
key
,
String
a1
,
String
a2
,
String
a3
)
{
printNotice
(
getText
(
key
,
a1
,
a2
,
a3
));
public
void
notice
(
String
key
,
Object
...
args
)
{
printNotice
(
getText
(
key
,
args
));
}
/**
...
...
@@ -475,5 +295,4 @@ public class Messager extends Log implements DocErrorReporter {
public
void
exit
()
{
throw
new
ExitJavadoc
();
}
}
src/share/classes/com/sun/tools/javadoc/Start.java
浏览文件 @
390a2aad
...
...
@@ -29,7 +29,6 @@ import java.io.File;
import
java.io.FileNotFoundException
;
import
java.io.IOException
;
import
java.io.PrintWriter
;
import
java.util.StringTokenizer
;
import
com.sun.javadoc.*
;
import
com.sun.tools.javac.main.CommandLine
;
...
...
@@ -53,7 +52,7 @@ import static com.sun.tools.javac.code.Flags.*;
* @author Robert Field
* @author Neal Gafter (rewrite)
*/
class
Start
{
public
class
Start
extends
ToolOption
.
Helper
{
/** Context for this invocation. */
private
final
Context
context
;
...
...
@@ -65,25 +64,12 @@ class Start {
private
static
final
String
standardDocletClassName
=
"com.sun.tools.doclets.standard.Standard"
;
private
ListBuffer
<
String
[]>
options
=
new
ListBuffer
<
String
[]>();
private
ModifierFilter
showAccess
=
null
;
private
long
defaultFilter
=
PUBLIC
|
PROTECTED
;
private
final
Messager
messager
;
String
docLocale
=
""
;
boolean
breakiterator
=
false
;
boolean
quiet
=
false
;
String
encoding
=
null
;
private
DocletInvoker
docletInvoker
;
/* Treat warnings as errors. */
private
boolean
rejectWarnings
=
false
;
Start
(
String
programName
,
PrintWriter
errWriter
,
PrintWriter
warnWriter
,
...
...
@@ -132,23 +118,58 @@ class Start {
this
(
javadocName
);
}
public
Start
(
Context
context
)
{
context
.
getClass
();
// null check
this
.
context
=
context
;
defaultDocletClassName
=
standardDocletClassName
;
docletParentClassLoader
=
null
;
Log
log
=
context
.
get
(
Log
.
logKey
);
if
(
log
instanceof
Messager
)
messager
=
(
Messager
)
log
;
else
{
PrintWriter
out
=
context
.
get
(
Log
.
outKey
);
messager
=
(
out
==
null
)
?
new
Messager
(
context
,
javadocName
)
:
new
Messager
(
context
,
javadocName
,
out
,
out
,
out
);
}
}
/**
* Usage
*/
@Override
void
usage
()
{
usage
(
true
);
}
/**
* Usage
*/
private
void
usage
()
{
private
void
usage
(
boolean
exit
)
{
// RFE: it would be better to replace the following with code to
// write a header, then help for each option, then a footer.
messager
.
notice
(
"main.usage"
);
// let doclet print usage information (does nothing on error)
if
(
docletInvoker
!=
null
)
{
docletInvoker
.
optionLength
(
"-help"
);
}
if
(
exit
)
exit
();
}
@Override
void
Xusage
()
{
Xusage
(
true
);
}
/**
* Usage
*/
private
void
Xusage
()
{
private
void
Xusage
(
boolean
exit
)
{
messager
.
notice
(
"main.Xusage"
);
if
(
exit
)
exit
();
}
/**
...
...
@@ -167,18 +188,18 @@ class Start {
try
{
failed
=
!
parseAndExecute
(
argv
);
}
catch
(
Messager
.
ExitJavadoc
exc
)
{
}
catch
(
Messager
.
ExitJavadoc
exc
)
{
// ignore, we just exit this way
}
catch
(
OutOfMemoryError
ee
)
{
messager
.
error
(
null
,
"main.out.of.memory"
);
messager
.
error
(
Messager
.
NOPOS
,
"main.out.of.memory"
);
failed
=
true
;
}
catch
(
Error
ee
)
{
ee
.
printStackTrace
(
System
.
err
);
messager
.
error
(
null
,
"main.fatal.error"
);
messager
.
error
(
Messager
.
NOPOS
,
"main.fatal.error"
);
failed
=
true
;
}
catch
(
Exception
ee
)
{
ee
.
printStackTrace
(
System
.
err
);
messager
.
error
(
null
,
"main.fatal.exception"
);
messager
.
error
(
Messager
.
NOPOS
,
"main.fatal.exception"
);
failed
=
true
;
}
finally
{
messager
.
exitNotice
();
...
...
@@ -189,15 +210,6 @@ class Start {
return
failed
?
1
:
0
;
}
private
void
addToList
(
ListBuffer
<
String
>
list
,
String
str
){
StringTokenizer
st
=
new
StringTokenizer
(
str
,
":"
);
String
current
;
while
(
st
.
hasMoreTokens
()){
current
=
st
.
nextToken
();
list
.
append
(
current
);
}
}
/**
* Main program - internal
*/
...
...
@@ -210,7 +222,7 @@ class Start {
try
{
argv
=
CommandLine
.
parse
(
argv
);
}
catch
(
FileNotFoundException
e
)
{
messager
.
error
(
null
,
"main.cant.read"
,
e
.
getMessage
());
messager
.
error
(
Messager
.
NOPOS
,
"main.cant.read"
,
e
.
getMessage
());
exit
();
}
catch
(
IOException
e
)
{
e
.
printStackTrace
(
System
.
err
);
...
...
@@ -218,116 +230,29 @@ class Start {
}
setDocletInvoker
(
argv
);
ListBuffer
<
String
>
subPackages
=
new
ListBuffer
<
String
>();
ListBuffer
<
String
>
excludedPackages
=
new
ListBuffer
<
String
>();
Options
compOpts
=
Options
.
instance
(
context
);
boolean
docClasses
=
false
;
compOpts
=
Options
.
instance
(
context
);
// Parse arguments
for
(
int
i
=
0
;
i
<
argv
.
length
;
i
++)
{
String
arg
=
argv
[
i
];
if
(
arg
.
equals
(
"-subpackages"
))
{
oneArg
(
argv
,
i
++);
addToList
(
subPackages
,
argv
[
i
]);
}
else
if
(
arg
.
equals
(
"-exclude"
)){
oneArg
(
argv
,
i
++);
addToList
(
excludedPackages
,
argv
[
i
]);
}
else
if
(
arg
.
equals
(
"-verbose"
))
{
setOption
(
arg
);
compOpts
.
put
(
"-verbose"
,
""
);
}
else
if
(
arg
.
equals
(
"-encoding"
))
{
oneArg
(
argv
,
i
++);
encoding
=
argv
[
i
];
compOpts
.
put
(
"-encoding"
,
argv
[
i
]);
}
else
if
(
arg
.
equals
(
"-breakiterator"
))
{
breakiterator
=
true
;
setOption
(
"-breakiterator"
);
}
else
if
(
arg
.
equals
(
"-quiet"
))
{
quiet
=
true
;
setOption
(
"-quiet"
);
}
else
if
(
arg
.
equals
(
"-help"
))
{
usage
();
exit
();
}
else
if
(
arg
.
equals
(
"-Xclasses"
))
{
setOption
(
arg
);
docClasses
=
true
;
}
else
if
(
arg
.
equals
(
"-Xwerror"
))
{
setOption
(
arg
);
rejectWarnings
=
true
;
}
else
if
(
arg
.
equals
(
"-private"
))
{
setOption
(
arg
);
setFilter
(
ModifierFilter
.
ALL_ACCESS
);
}
else
if
(
arg
.
equals
(
"-package"
))
{
setOption
(
arg
);
setFilter
(
PUBLIC
|
PROTECTED
|
ModifierFilter
.
PACKAGE
);
}
else
if
(
arg
.
equals
(
"-protected"
))
{
setOption
(
arg
);
setFilter
(
PUBLIC
|
PROTECTED
);
}
else
if
(
arg
.
equals
(
"-public"
))
{
setOption
(
arg
);
setFilter
(
PUBLIC
);
}
else
if
(
arg
.
equals
(
"-source"
))
{
oneArg
(
argv
,
i
++);
if
(
compOpts
.
get
(
"-source"
)
!=
null
)
{
usageError
(
"main.option.already.seen"
,
arg
);
}
compOpts
.
put
(
"-source"
,
argv
[
i
]);
}
else
if
(
arg
.
equals
(
"-prompt"
))
{
compOpts
.
put
(
"-prompt"
,
"-prompt"
);
messager
.
promptOnError
=
true
;
}
else
if
(
arg
.
equals
(
"-sourcepath"
))
{
oneArg
(
argv
,
i
++);
if
(
compOpts
.
get
(
"-sourcepath"
)
!=
null
)
{
usageError
(
"main.option.already.seen"
,
arg
);
}
compOpts
.
put
(
"-sourcepath"
,
argv
[
i
]);
}
else
if
(
arg
.
equals
(
"-classpath"
))
{
oneArg
(
argv
,
i
++);
if
(
compOpts
.
get
(
"-classpath"
)
!=
null
)
{
usageError
(
"main.option.already.seen"
,
arg
);
}
compOpts
.
put
(
"-classpath"
,
argv
[
i
]);
}
else
if
(
arg
.
equals
(
"-sysclasspath"
))
{
oneArg
(
argv
,
i
++);
if
(
compOpts
.
get
(
"-bootclasspath"
)
!=
null
)
{
usageError
(
"main.option.already.seen"
,
arg
);
}
compOpts
.
put
(
"-bootclasspath"
,
argv
[
i
]);
}
else
if
(
arg
.
equals
(
"-bootclasspath"
))
{
oneArg
(
argv
,
i
++);
if
(
compOpts
.
get
(
"-bootclasspath"
)
!=
null
)
{
usageError
(
"main.option.already.seen"
,
arg
);
}
compOpts
.
put
(
"-bootclasspath"
,
argv
[
i
]);
}
else
if
(
arg
.
equals
(
"-extdirs"
))
{
oneArg
(
argv
,
i
++);
if
(
compOpts
.
get
(
"-extdirs"
)
!=
null
)
{
usageError
(
"main.option.already.seen"
,
arg
);
}
compOpts
.
put
(
"-extdirs"
,
argv
[
i
]);
}
else
if
(
arg
.
equals
(
"-overview"
))
{
oneArg
(
argv
,
i
++);
}
else
if
(
arg
.
equals
(
"-doclet"
))
{
i
++;
// handled in setDocletInvoker
}
else
if
(
arg
.
equals
(
"-docletpath"
))
{
i
++;
// handled in setDocletInvoker
}
else
if
(
arg
.
equals
(
"-locale"
))
{
if
(
i
!=
0
)
ToolOption
o
=
ToolOption
.
get
(
arg
);
if
(
o
!=
null
)
{
// hack: this restriction should be removed
if
(
o
==
ToolOption
.
LOCALE
&&
i
>
0
)
usageError
(
"main.locale_first"
);
oneArg
(
argv
,
i
++);
docLocale
=
argv
[
i
];
}
else
if
(
arg
.
equals
(
"-Xmaxerrs"
)
||
arg
.
equals
(
"-Xmaxwarns"
))
{
oneArg
(
argv
,
i
++);
if
(
compOpts
.
get
(
arg
)
!=
null
)
{
usageError
(
"main.option.already.seen"
,
arg
);
if
(
o
.
hasArg
)
{
oneArg
(
argv
,
i
++);
o
.
process
(
this
,
argv
[
i
]);
}
else
{
setOption
(
arg
);
o
.
process
(
this
);
}
compOpts
.
put
(
arg
,
argv
[
i
]);
}
else
if
(
arg
.
equals
(
"-X"
))
{
Xusage
();
exit
();
}
else
if
(
arg
.
startsWith
(
"-XD"
))
{
// hidden javac options
String
s
=
arg
.
substring
(
"-XD"
.
length
());
int
eq
=
s
.
indexOf
(
'='
);
String
key
=
(
eq
<
0
)
?
s
:
s
.
substring
(
0
,
eq
);
...
...
@@ -336,7 +261,7 @@ class Start {
}
// call doclet for its options
// other arg starts with - is invalid
else
if
(
arg
.
startsWith
(
"-"
)
)
{
else
if
(
arg
.
startsWith
(
"-"
)
)
{
int
optionLength
;
optionLength
=
docletInvoker
.
optionLength
(
arg
);
if
(
optionLength
<
0
)
{
...
...
@@ -380,12 +305,18 @@ class Start {
LanguageVersion
languageVersion
=
docletInvoker
.
languageVersion
();
RootDocImpl
root
=
comp
.
getRootDocImpl
(
docLocale
,
encoding
,
showAccess
,
javaNames
.
toList
(),
options
.
toList
(),
breakiterator
,
subPackages
.
toList
(),
excludedPackages
.
toList
(),
docLocale
,
encoding
,
showAccess
,
javaNames
.
toList
(),
options
.
toList
(),
breakiterator
,
subPackages
.
toList
(),
excludedPackages
.
toList
(),
docClasses
,
// legacy?
languageVersion
==
null
||
languageVersion
==
LanguageVersion
.
JAVA_1_1
,
quiet
);
languageVersion
==
null
||
languageVersion
==
LanguageVersion
.
JAVA_1_1
,
quiet
);
// release resources
comp
=
null
;
...
...
@@ -437,15 +368,6 @@ class Start {
docletParentClassLoader
);
}
private
void
setFilter
(
long
filterBits
)
{
if
(
showAccess
!=
null
)
{
messager
.
error
(
null
,
"main.incompatible.access.flags"
);
usage
();
exit
();
}
showAccess
=
new
ModifierFilter
(
filterBits
);
}
/**
* Set one arg option.
* Error and exit if one argument is not provided.
...
...
@@ -458,22 +380,10 @@ class Start {
}
}
private
void
usageError
(
String
key
)
{
messager
.
error
(
null
,
key
);
usage
();
exit
();
}
private
void
usageError
(
String
key
,
String
a1
)
{
messager
.
error
(
null
,
key
,
a1
);
usage
();
exit
();
}
private
void
usageError
(
String
key
,
String
a1
,
String
a2
)
{
messager
.
error
(
null
,
key
,
a1
,
a2
);
usage
();
exit
();
@Override
void
usageError
(
String
key
,
Object
...
args
)
{
messager
.
error
(
Messager
.
NOPOS
,
key
,
args
);
usage
(
true
);
}
/**
...
...
@@ -502,7 +412,6 @@ class Start {
for
(
List
<
String
>
i
=
arguments
;
i
.
nonEmpty
();
i
=
i
.
tail
)
{
args
[
k
++]
=
i
.
head
;
}
options
=
options
.
append
(
args
);
options
.
append
(
args
);
}
}
src/share/classes/com/sun/tools/javadoc/ToolOption.java
0 → 100644
浏览文件 @
390a2aad
/*
* Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package
com.sun.tools.javadoc
;
import
com.sun.tools.javac.code.Flags
;
import
com.sun.tools.javac.util.ListBuffer
;
import
com.sun.tools.javac.util.Options
;
import
java.util.StringTokenizer
;
/**
* javadoc tool options.
*
* <p><b>This is NOT part of any supported API.
* If you write code that depends on this, you do so at your own risk.
* This code and its internal interfaces are subject to change or
* deletion without notice.</b>
*/
public
enum
ToolOption
{
// ----- options for underlying compiler -----
BOOTCLASSPATH
(
"-bootclasspath"
,
true
)
{
@Override
public
void
process
(
Helper
helper
,
String
arg
)
{
helper
.
setCompilerOpt
(
opt
,
arg
);
}
},
CLASSPATH
(
"-classpath"
,
true
)
{
@Override
public
void
process
(
Helper
helper
,
String
arg
)
{
helper
.
setCompilerOpt
(
opt
,
arg
);
}
},
EXTDIRS
(
"-extdirs"
,
true
)
{
@Override
public
void
process
(
Helper
helper
,
String
arg
)
{
helper
.
setCompilerOpt
(
opt
,
arg
);
}
},
SOURCEPATH
(
"-sourcepath"
,
true
)
{
@Override
public
void
process
(
Helper
helper
,
String
arg
)
{
helper
.
setCompilerOpt
(
opt
,
arg
);
}
},
SYSCLASSPATH
(
"-sysclasspath"
,
true
)
{
@Override
public
void
process
(
Helper
helper
,
String
arg
)
{
helper
.
setCompilerOpt
(
"-bootclasspath"
,
arg
);
}
},
ENCODING
(
"-encoding"
,
true
)
{
@Override
public
void
process
(
Helper
helper
,
String
arg
)
{
helper
.
encoding
=
arg
;
helper
.
setCompilerOpt
(
opt
,
arg
);
}
},
SOURCE
(
"-source"
,
true
)
{
@Override
public
void
process
(
Helper
helper
,
String
arg
)
{
helper
.
setCompilerOpt
(
opt
,
arg
);
}
},
XMAXERRS
(
"-Xmaxerrs"
,
true
)
{
@Override
public
void
process
(
Helper
helper
,
String
arg
)
{
helper
.
setCompilerOpt
(
opt
,
arg
);
}
},
XMAXWARNS
(
"-Xmaxwarns"
,
true
)
{
@Override
public
void
process
(
Helper
helper
,
String
arg
)
{
helper
.
setCompilerOpt
(
opt
,
arg
);
}
},
// ----- doclet options -----
DOCLET
(
"-doclet"
,
true
),
// handled in setDocletInvoker
DOCLETPATH
(
"-docletpath"
,
true
),
// handled in setDocletInvoker
// ----- selection options -----
SUBPACKAGES
(
"-subpackages"
,
true
)
{
@Override
public
void
process
(
Helper
helper
,
String
arg
)
{
helper
.
addToList
(
helper
.
subPackages
,
arg
);
}
},
EXCLUDE
(
"-exclude"
,
true
)
{
@Override
public
void
process
(
Helper
helper
,
String
arg
)
{
helper
.
addToList
(
helper
.
excludedPackages
,
arg
);
}
},
// ----- filtering options -----
PACKAGE
(
"-package"
)
{
@Override
public
void
process
(
Helper
helper
)
{
helper
.
setFilter
(
Flags
.
PUBLIC
|
Flags
.
PROTECTED
|
ModifierFilter
.
PACKAGE
);
}
},
PRIVATE
(
"-private"
)
{
@Override
public
void
process
(
Helper
helper
)
{
helper
.
setFilter
(
ModifierFilter
.
ALL_ACCESS
);
}
},
PROTECTED
(
"-protected"
)
{
@Override
public
void
process
(
Helper
helper
)
{
helper
.
setFilter
(
Flags
.
PUBLIC
|
Flags
.
PROTECTED
);
}
},
PUBLIC
(
"-public"
)
{
@Override
public
void
process
(
Helper
helper
)
{
helper
.
setFilter
(
Flags
.
PUBLIC
);
}
},
// ----- output control options -----
PROMPT
(
"-prompt"
)
{
@Override
public
void
process
(
Helper
helper
)
{
helper
.
compOpts
.
put
(
"-prompt"
,
"-prompt"
);
helper
.
promptOnError
=
true
;
}
},
QUIET
(
"-quiet"
)
{
@Override
public
void
process
(
Helper
helper
)
{
helper
.
quiet
=
true
;
}
},
VERBOSE
(
"-verbose"
)
{
@Override
public
void
process
(
Helper
helper
)
{
helper
.
compOpts
.
put
(
"-verbose"
,
""
);
}
},
XWERROR
(
"-Xwerror"
)
{
@Override
public
void
process
(
Helper
helper
)
{
helper
.
rejectWarnings
=
true
;
}
},
// ----- other options -----
BREAKITERATOR
(
"-breakiterator"
)
{
@Override
public
void
process
(
Helper
helper
)
{
helper
.
breakiterator
=
true
;
}
},
LOCALE
(
"-locale"
,
true
)
{
@Override
public
void
process
(
Helper
helper
,
String
arg
)
{
helper
.
docLocale
=
arg
;
}
},
OVERVIEW
(
"-overview"
,
true
),
XCLASSES
(
"-Xclasses"
)
{
@Override
public
void
process
(
Helper
helper
)
{
helper
.
docClasses
=
true
;
}
},
// ----- help options -----
HELP
(
"-help"
)
{
@Override
public
void
process
(
Helper
helper
)
{
helper
.
usage
();
}
},
X
(
"-X"
)
{
@Override
public
void
process
(
Helper
helper
)
{
helper
.
Xusage
();
}
};
public
final
String
opt
;
public
final
boolean
hasArg
;
ToolOption
(
String
opt
)
{
this
(
opt
,
false
);
}
ToolOption
(
String
opt
,
boolean
hasArg
)
{
this
.
opt
=
opt
;
this
.
hasArg
=
hasArg
;
}
void
process
(
Helper
helper
,
String
arg
)
{
}
void
process
(
Helper
helper
)
{
}
static
ToolOption
get
(
String
name
)
{
for
(
ToolOption
o:
values
())
{
if
(
name
.
equals
(
o
.
opt
))
return
o
;
}
return
null
;
}
static
abstract
class
Helper
{
/** List of decoded options. */
final
ListBuffer
<
String
[]>
options
=
new
ListBuffer
<
String
[]>();
/** Selected packages, from -subpackages. */
final
ListBuffer
<
String
>
subPackages
=
new
ListBuffer
<
String
>();
/** Excluded packages, from -exclude. */
final
ListBuffer
<
String
>
excludedPackages
=
new
ListBuffer
<
String
>();
/** javac options, set by various options. */
Options
compOpts
;
// = Options.instance(context)
/* Encoding for javac, and files written? set by -encoding. */
String
encoding
=
null
;
/** Set by -breakiterator. */
boolean
breakiterator
=
false
;
/** Set by -quiet. */
boolean
quiet
=
false
;
/** Set by -Xclasses. */
boolean
docClasses
=
false
;
/** Set by -Xwerror. */
boolean
rejectWarnings
=
false
;
/** Set by -prompt. */
boolean
promptOnError
;
/** Set by -locale. */
String
docLocale
=
""
;
/** Set by -public, private, -protected, -package. */
ModifierFilter
showAccess
=
null
;
abstract
void
usage
();
abstract
void
Xusage
();
abstract
void
usageError
(
String
msg
,
Object
...
args
);
protected
void
addToList
(
ListBuffer
<
String
>
list
,
String
str
){
StringTokenizer
st
=
new
StringTokenizer
(
str
,
":"
);
String
current
;
while
(
st
.
hasMoreTokens
()){
current
=
st
.
nextToken
();
list
.
append
(
current
);
}
}
protected
void
setFilter
(
long
filterBits
)
{
if
(
showAccess
!=
null
)
{
usageError
(
"main.incompatible.access.flags"
);
}
showAccess
=
new
ModifierFilter
(
filterBits
);
}
private
void
setCompilerOpt
(
String
opt
,
String
arg
)
{
if
(
compOpts
.
get
(
opt
)
!=
null
)
{
usageError
(
"main.option.already.seen"
,
opt
);
}
compOpts
.
put
(
opt
,
arg
);
}
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录