Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_langtools
提交
8c65c37e
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看板
提交
8c65c37e
编写于
2月 17, 2010
作者:
L
lana
浏览文件
操作
浏览文件
下载
差异文件
Merge
上级
93b1df85
1e71acc4
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
110 addition
and
257 deletion
+110
-257
src/share/classes/com/sun/mirror/util/SourceOrderDeclScanner.java
...e/classes/com/sun/mirror/util/SourceOrderDeclScanner.java
+1
-1
src/share/classes/com/sun/tools/apt/comp/Apt.java
src/share/classes/com/sun/tools/apt/comp/Apt.java
+5
-50
src/share/classes/com/sun/tools/apt/main/Main.java
src/share/classes/com/sun/tools/apt/main/Main.java
+2
-55
src/share/classes/com/sun/tools/javac/file/Paths.java
src/share/classes/com/sun/tools/javac/file/Paths.java
+59
-0
src/share/classes/com/sun/tools/javac/processing/JavacProcessingEnvironment.java
...un/tools/javac/processing/JavacProcessingEnvironment.java
+42
-96
src/share/classes/com/sun/tools/javadoc/DocletInvoker.java
src/share/classes/com/sun/tools/javadoc/DocletInvoker.java
+1
-55
未找到文件。
src/share/classes/com/sun/mirror/util/SourceOrderDeclScanner.java
浏览文件 @
8c65c37e
...
...
@@ -102,7 +102,7 @@ class SourceOrderDeclScanner extends DeclarationScanner {
@SuppressWarnings
(
"cast"
)
private
int
compareEqualPosition
(
Declaration
d1
,
Declaration
d2
)
{
assert
(
d1
.
getPosition
()
==
d2
.
getPosition
())
||
// Handles
d1 == d2 == null
(
d1
.
getPosition
()
==
d2
.
getPosition
())
||
// Handles
two null positions.
(
d1
.
getPosition
().
file
().
compareTo
(
d2
.
getPosition
().
file
())
==
0
&&
d1
.
getPosition
().
line
()
==
d2
.
getPosition
().
line
()
&&
d1
.
getPosition
().
column
()
==
d2
.
getPosition
().
column
());
...
...
src/share/classes/com/sun/tools/apt/comp/Apt.java
浏览文件 @
8c65c37e
...
...
@@ -496,57 +496,12 @@ public class Apt extends ListBuffer<Env<AttrContext>> {
* won't match anything.
*/
Pattern
importStringToPattern
(
String
s
)
{
if
(
s
.
equals
(
"*"
))
{
return
allMatches
;
if
(
com
.
sun
.
tools
.
javac
.
processing
.
JavacProcessingEnvironment
.
isValidImportString
(
s
))
{
return
com
.
sun
.
tools
.
javac
.
processing
.
JavacProcessingEnvironment
.
validImportStringToPattern
(
s
)
;
}
else
{
String
t
=
s
;
boolean
star
=
false
;
/*
* Validate string from factory is legal. If the string
* has more than one asterisks or the asterisks does not
* appear as the last character (preceded by a period),
* the string is not legal.
*/
boolean
valid
=
true
;
int
index
=
t
.
indexOf
(
'*'
);
if
(
index
!=
-
1
)
{
// '*' must be last character...
if
(
index
==
t
.
length
()
-
1
)
{
// ... and preceeding character must be '.'
if
(
index
-
1
>=
0
)
{
valid
=
t
.
charAt
(
index
-
1
)
==
'.'
;
// Strip off ".*$" for identifier checks
t
=
t
.
substring
(
0
,
t
.
length
()-
2
);
}
}
else
valid
=
false
;
}
// Verify string is off the form (javaId \.)+ or javaId
if
(
valid
)
{
String
[]
javaIds
=
t
.
split
(
"\\."
,
t
.
length
()+
2
);
for
(
String
javaId:
javaIds
)
valid
&=
isJavaIdentifier
(
javaId
);
}
if
(!
valid
)
{
Bark
bark
=
Bark
.
instance
(
context
);
bark
.
aptWarning
(
"MalformedSupportedString"
,
s
);
return
noMatches
;
// won't match any valid identifier
}
String
s_prime
=
s
.
replaceAll
(
"\\."
,
"\\\\."
);
if
(
s_prime
.
endsWith
(
"*"
))
{
s_prime
=
s_prime
.
substring
(
0
,
s_prime
.
length
()
-
1
)
+
".+"
;
}
return
Pattern
.
compile
(
s_prime
);
Bark
bark
=
Bark
.
instance
(
context
);
bark
.
aptWarning
(
"MalformedSupportedString"
,
s
);
return
com
.
sun
.
tools
.
javac
.
processing
.
JavacProcessingEnvironment
.
noMatches
;
}
}
private
static
final
Pattern
allMatches
=
Pattern
.
compile
(
".*"
);
private
static
final
Pattern
noMatches
=
Pattern
.
compile
(
"(\\P{all})+"
);
}
src/share/classes/com/sun/tools/apt/main/Main.java
浏览文件 @
8c65c37e
...
...
@@ -56,6 +56,8 @@ import com.sun.tools.apt.comp.UsageMessageNeededException;
import
com.sun.tools.apt.util.Bark
;
import
com.sun.mirror.apt.AnnotationProcessorFactory
;
import
static
com
.
sun
.
tools
.
javac
.
file
.
Paths
.
pathToURLs
;
/** This class provides a commandline interface to the apt build-time
* tool.
*
...
...
@@ -1276,59 +1278,4 @@ public class Main {
}
}
}
// Borrowed from DocletInvoker
/**
* Utility method for converting a search path string to an array
* of directory and JAR file URLs.
*
* @param path the search path string
* @return the resulting array of directory and JAR file URLs
*/
static
URL
[]
pathToURLs
(
String
path
)
{
StringTokenizer
st
=
new
StringTokenizer
(
path
,
File
.
pathSeparator
);
URL
[]
urls
=
new
URL
[
st
.
countTokens
()];
int
count
=
0
;
while
(
st
.
hasMoreTokens
())
{
URL
url
=
fileToURL
(
new
File
(
st
.
nextToken
()));
if
(
url
!=
null
)
{
urls
[
count
++]
=
url
;
}
}
if
(
urls
.
length
!=
count
)
{
URL
[]
tmp
=
new
URL
[
count
];
System
.
arraycopy
(
urls
,
0
,
tmp
,
0
,
count
);
urls
=
tmp
;
}
return
urls
;
}
/**
* Returns the directory or JAR file URL corresponding to the specified
* local file name.
*
* @param file the File object
* @return the resulting directory or JAR file URL, or null if unknown
*/
static
URL
fileToURL
(
File
file
)
{
String
name
;
try
{
name
=
file
.
getCanonicalPath
();
}
catch
(
IOException
e
)
{
name
=
file
.
getAbsolutePath
();
}
name
=
name
.
replace
(
File
.
separatorChar
,
'/'
);
if
(!
name
.
startsWith
(
"/"
))
{
name
=
"/"
+
name
;
}
// If the file does not exist, then assume that it's a directory
if
(!
file
.
isFile
())
{
name
=
name
+
"/"
;
}
try
{
return
new
URL
(
"file"
,
""
,
name
);
}
catch
(
MalformedURLException
e
)
{
throw
new
IllegalArgumentException
(
"file"
);
}
}
}
src/share/classes/com/sun/tools/javac/file/Paths.java
浏览文件 @
8c65c37e
...
...
@@ -27,6 +27,8 @@ package com.sun.tools.javac.file;
import
java.io.File
;
import
java.io.IOException
;
import
java.net.MalformedURLException
;
import
java.net.URL
;
import
java.util.HashMap
;
import
java.util.HashSet
;
import
java.util.Map
;
...
...
@@ -34,6 +36,7 @@ import java.util.Set;
import
java.util.Collection
;
import
java.util.Collections
;
import
java.util.LinkedHashSet
;
import
java.util.StringTokenizer
;
import
java.util.zip.ZipFile
;
import
javax.tools.JavaFileManager.Location
;
...
...
@@ -449,4 +452,60 @@ public class Paths {
return
fsInfo
.
isFile
(
file
)
&&
(
n
.
endsWith
(
".jar"
)
||
n
.
endsWith
(
".zip"
));
}
/**
* Utility method for converting a search path string to an array
* of directory and JAR file URLs.
*
* Note that this method is called by apt and the DocletInvoker.
*
* @param path the search path string
* @return the resulting array of directory and JAR file URLs
*/
public
static
URL
[]
pathToURLs
(
String
path
)
{
StringTokenizer
st
=
new
StringTokenizer
(
path
,
File
.
pathSeparator
);
URL
[]
urls
=
new
URL
[
st
.
countTokens
()];
int
count
=
0
;
while
(
st
.
hasMoreTokens
())
{
URL
url
=
fileToURL
(
new
File
(
st
.
nextToken
()));
if
(
url
!=
null
)
{
urls
[
count
++]
=
url
;
}
}
if
(
urls
.
length
!=
count
)
{
URL
[]
tmp
=
new
URL
[
count
];
System
.
arraycopy
(
urls
,
0
,
tmp
,
0
,
count
);
urls
=
tmp
;
}
return
urls
;
}
/**
* Returns the directory or JAR file URL corresponding to the specified
* local file name.
*
* @param file the File object
* @return the resulting directory or JAR file URL, or null if unknown
*/
private
static
URL
fileToURL
(
File
file
)
{
String
name
;
try
{
name
=
file
.
getCanonicalPath
();
}
catch
(
IOException
e
)
{
name
=
file
.
getAbsolutePath
();
}
name
=
name
.
replace
(
File
.
separatorChar
,
'/'
);
if
(!
name
.
startsWith
(
"/"
))
{
name
=
"/"
+
name
;
}
// If the file does not exist, then assume that it's a directory
if
(!
file
.
isFile
())
{
name
=
name
+
"/"
;
}
try
{
return
new
URL
(
"file"
,
""
,
name
);
}
catch
(
MalformedURLException
e
)
{
throw
new
IllegalArgumentException
(
file
.
toString
());
}
}
}
src/share/classes/com/sun/tools/javac/processing/JavacProcessingEnvironment.java
浏览文件 @
8c65c37e
...
...
@@ -25,7 +25,6 @@
package
com.sun.tools.javac.processing
;
import
java.lang.reflect.*
;
import
java.util.*
;
import
java.util.regex.*
;
...
...
@@ -1355,115 +1354,62 @@ public class JavacProcessingEnvironment implements ProcessingEnvironment, Closea
return
specifiedPackages
;
}
// Borrowed from DocletInvoker and apt
// TODO: remove from apt's Main
private
static
final
Pattern
allMatches
=
Pattern
.
compile
(
".*"
);
public
static
final
Pattern
noMatches
=
Pattern
.
compile
(
"(\\P{all})+"
);
/**
* Utility method for converting a search path string to an array
* of directory and JAR file URLs.
*
* @param path the search path string
* @return the resulting array of directory and JAR file URLs
* Convert import-style string for supported annotations into a
* regex matching that string. If the string is a valid
* import-style string, return a regex that won't match anything.
*/
public
static
URL
[]
pathToURLs
(
String
path
)
{
StringTokenizer
st
=
new
StringTokenizer
(
path
,
File
.
pathSeparator
);
URL
[]
urls
=
new
URL
[
st
.
countTokens
()];
int
count
=
0
;
while
(
st
.
hasMoreTokens
())
{
URL
url
=
fileToURL
(
new
File
(
st
.
nextToken
()));
if
(
url
!=
null
)
{
urls
[
count
++]
=
url
;
}
}
if
(
urls
.
length
!=
count
)
{
URL
[]
tmp
=
new
URL
[
count
];
System
.
arraycopy
(
urls
,
0
,
tmp
,
0
,
count
);
urls
=
tmp
;
private
static
Pattern
importStringToPattern
(
String
s
,
Processor
p
,
Log
log
)
{
if
(
isValidImportString
(
s
))
{
return
validImportStringToPattern
(
s
);
}
else
{
log
.
warning
(
"proc.malformed.supported.string"
,
s
,
p
.
getClass
().
getName
());
return
noMatches
;
// won't match any valid identifier
}
return
urls
;
}
/**
* Returns the directory or JAR file URL corresponding to the specified
* local file name.
*
* @param file the File object
* @return the resulting directory or JAR file URL, or null if unknown
* Return true if the argument string is a valid import-style
* string specifying claimed annotations; return false otherwise.
*/
private
static
URL
fileToURL
(
File
file
)
{
String
name
;
try
{
name
=
file
.
getCanonicalPath
();
}
catch
(
IOException
e
)
{
name
=
file
.
getAbsolutePath
();
}
name
=
name
.
replace
(
File
.
separatorChar
,
'/'
);
if
(!
name
.
startsWith
(
"/"
))
{
name
=
"/"
+
name
;
}
// If the file does not exist, then assume that it's a directory
if
(!
file
.
isFile
())
{
name
=
name
+
"/"
;
public
static
boolean
isValidImportString
(
String
s
)
{
if
(
s
.
equals
(
"*"
))
return
true
;
boolean
valid
=
true
;
String
t
=
s
;
int
index
=
t
.
indexOf
(
'*'
);
if
(
index
!=
-
1
)
{
// '*' must be last character...
if
(
index
==
t
.
length
()
-
1
)
{
// ... any and preceding character must be '.'
if
(
index
-
1
>=
0
)
{
valid
=
t
.
charAt
(
index
-
1
)
==
'.'
;
// Strip off ".*$" for identifier checks
t
=
t
.
substring
(
0
,
t
.
length
()-
2
);
}
}
else
return
false
;
}
try
{
return
new
URL
(
"file"
,
""
,
name
);
}
catch
(
MalformedURLException
e
)
{
throw
new
IllegalArgumentException
(
"file"
);
// Verify string is off the form (javaId \.)+ or javaId
if
(
valid
)
{
String
[]
javaIds
=
t
.
split
(
"\\."
,
t
.
length
()+
2
);
for
(
String
javaId:
javaIds
)
valid
&=
SourceVersion
.
isIdentifier
(
javaId
);
}
return
valid
;
}
private
static
final
Pattern
allMatches
=
Pattern
.
compile
(
".*"
);
private
static
final
Pattern
noMatches
=
Pattern
.
compile
(
"(\\P{all})+"
);
/**
* Convert import-style string to regex matching that string. If
* the string is a valid import-style string, return a regex that
* won't match anything.
*/
// TODO: remove version in Apt.java
public
static
Pattern
importStringToPattern
(
String
s
,
Processor
p
,
Log
log
)
{
public
static
Pattern
validImportStringToPattern
(
String
s
)
{
if
(
s
.
equals
(
"*"
))
{
return
allMatches
;
}
else
{
String
t
=
s
;
boolean
star
=
false
;
/*
* Validate string from factory is legal. If the string
* has more than one asterisks or the asterisks does not
* appear as the last character (preceded by a period),
* the string is not legal.
*/
boolean
valid
=
true
;
int
index
=
t
.
indexOf
(
'*'
);
if
(
index
!=
-
1
)
{
// '*' must be last character...
if
(
index
==
t
.
length
()
-
1
)
{
// ... and preceeding character must be '.'
if
(
index
-
1
>=
0
)
{
valid
=
t
.
charAt
(
index
-
1
)
==
'.'
;
// Strip off ".*$" for identifier checks
t
=
t
.
substring
(
0
,
t
.
length
()-
2
);
}
}
else
valid
=
false
;
}
// Verify string is off the form (javaId \.)+ or javaId
if
(
valid
)
{
String
[]
javaIds
=
t
.
split
(
"\\."
,
t
.
length
()+
2
);
for
(
String
javaId:
javaIds
)
valid
&=
SourceVersion
.
isIdentifier
(
javaId
);
}
if
(!
valid
)
{
log
.
warning
(
"proc.malformed.supported.string"
,
s
,
p
.
getClass
().
getName
());
return
noMatches
;
// won't match any valid identifier
}
String
s_prime
=
s
.
replaceAll
(
"\\."
,
"\\\\."
);
String
s_prime
=
s
.
replace
(
"."
,
"\\."
);
if
(
s_prime
.
endsWith
(
"*"
))
{
s_prime
=
s_prime
.
substring
(
0
,
s_prime
.
length
()
-
1
)
+
".+"
;
...
...
src/share/classes/com/sun/tools/javadoc/DocletInvoker.java
浏览文件 @
8c65c37e
...
...
@@ -81,7 +81,7 @@ public class DocletInvoker {
cpString
=
appendPath
(
System
.
getProperty
(
"env.class.path"
),
cpString
);
cpString
=
appendPath
(
System
.
getProperty
(
"java.class.path"
),
cpString
);
cpString
=
appendPath
(
docletPath
,
cpString
);
URL
[]
urls
=
pathToURLs
(
cpString
);
URL
[]
urls
=
com
.
sun
.
tools
.
javac
.
file
.
Paths
.
pathToURLs
(
cpString
);
if
(
docletParentClassLoader
==
null
)
appClassLoader
=
new
URLClassLoader
(
urls
,
getDelegationClassLoader
(
docletClassName
));
else
...
...
@@ -313,58 +313,4 @@ public class DocletInvoker {
Thread
.
currentThread
().
setContextClassLoader
(
savedCCL
);
}
}
/**
* Utility method for converting a search path string to an array
* of directory and JAR file URLs.
*
* @param path the search path string
* @return the resulting array of directory and JAR file URLs
*/
static
URL
[]
pathToURLs
(
String
path
)
{
StringTokenizer
st
=
new
StringTokenizer
(
path
,
File
.
pathSeparator
);
URL
[]
urls
=
new
URL
[
st
.
countTokens
()];
int
count
=
0
;
while
(
st
.
hasMoreTokens
())
{
URL
url
=
fileToURL
(
new
File
(
st
.
nextToken
()));
if
(
url
!=
null
)
{
urls
[
count
++]
=
url
;
}
}
if
(
urls
.
length
!=
count
)
{
URL
[]
tmp
=
new
URL
[
count
];
System
.
arraycopy
(
urls
,
0
,
tmp
,
0
,
count
);
urls
=
tmp
;
}
return
urls
;
}
/**
* Returns the directory or JAR file URL corresponding to the specified
* local file name.
*
* @param file the File object
* @return the resulting directory or JAR file URL, or null if unknown
*/
static
URL
fileToURL
(
File
file
)
{
String
name
;
try
{
name
=
file
.
getCanonicalPath
();
}
catch
(
IOException
e
)
{
name
=
file
.
getAbsolutePath
();
}
name
=
name
.
replace
(
File
.
separatorChar
,
'/'
);
if
(!
name
.
startsWith
(
"/"
))
{
name
=
"/"
+
name
;
}
// If the file does not exist, then assume that it's a directory
if
(!
file
.
isFile
())
{
name
=
name
+
"/"
;
}
try
{
return
new
URL
(
"file"
,
""
,
name
);
}
catch
(
MalformedURLException
e
)
{
throw
new
IllegalArgumentException
(
"file"
);
}
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录