Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
ab1229d1
D
dragonwell8_jdk
项目概览
openanolis
/
dragonwell8_jdk
通知
4
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dragonwell8_jdk
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
ab1229d1
编写于
3月 10, 2008
作者:
L
lmalvent
浏览文件
操作
浏览文件
下载
差异文件
Merge
上级
73d65ed1
0064db34
变更
147
展开全部
隐藏空白更改
内联
并排
Showing
147 changed file
with
1215 addition
and
1415 deletion
+1215
-1415
make/tools/src/build/tools/jdwpgen/CommandNode.java
make/tools/src/build/tools/jdwpgen/CommandNode.java
+4
-4
make/tools/src/build/tools/jdwpgen/ConstantSetNode.java
make/tools/src/build/tools/jdwpgen/ConstantSetNode.java
+1
-1
make/tools/src/build/tools/jdwpgen/RepeatNode.java
make/tools/src/build/tools/jdwpgen/RepeatNode.java
+1
-1
src/share/classes/com/sun/tools/example/debug/bdi/EventRequestSpec.java
...ses/com/sun/tools/example/debug/bdi/EventRequestSpec.java
+1
-3
src/share/classes/com/sun/tools/example/debug/bdi/EventRequestSpecList.java
...com/sun/tools/example/debug/bdi/EventRequestSpecList.java
+16
-16
src/share/classes/com/sun/tools/example/debug/bdi/ExecutionManager.java
...ses/com/sun/tools/example/debug/bdi/ExecutionManager.java
+14
-23
src/share/classes/com/sun/tools/example/debug/bdi/JDIEventSource.java
...asses/com/sun/tools/example/debug/bdi/JDIEventSource.java
+1
-3
src/share/classes/com/sun/tools/example/debug/bdi/LineBreakpointSpec.java
...s/com/sun/tools/example/debug/bdi/LineBreakpointSpec.java
+2
-2
src/share/classes/com/sun/tools/example/debug/bdi/MethodBreakpointSpec.java
...com/sun/tools/example/debug/bdi/MethodBreakpointSpec.java
+11
-17
src/share/classes/com/sun/tools/example/debug/bdi/ThreadGroupIterator.java
.../com/sun/tools/example/debug/bdi/ThreadGroupIterator.java
+5
-5
src/share/classes/com/sun/tools/example/debug/bdi/ThreadIterator.java
...asses/com/sun/tools/example/debug/bdi/ThreadIterator.java
+4
-4
src/share/classes/com/sun/tools/example/debug/expr/LValue.java
...hare/classes/com/sun/tools/example/debug/expr/LValue.java
+25
-27
src/share/classes/com/sun/tools/example/debug/gui/ClassTreeTool.java
...lasses/com/sun/tools/example/debug/gui/ClassTreeTool.java
+1
-3
src/share/classes/com/sun/tools/example/debug/gui/CommandInterpreter.java
...s/com/sun/tools/example/debug/gui/CommandInterpreter.java
+33
-42
src/share/classes/com/sun/tools/example/debug/gui/JDBFileFilter.java
...lasses/com/sun/tools/example/debug/gui/JDBFileFilter.java
+3
-3
src/share/classes/com/sun/tools/example/debug/gui/LaunchTool.java
...e/classes/com/sun/tools/example/debug/gui/LaunchTool.java
+6
-9
src/share/classes/com/sun/tools/example/debug/gui/SearchPath.java
...e/classes/com/sun/tools/example/debug/gui/SearchPath.java
+3
-3
src/share/classes/com/sun/tools/example/debug/gui/SourceManager.java
...lasses/com/sun/tools/example/debug/gui/SourceManager.java
+3
-3
src/share/classes/com/sun/tools/example/debug/gui/SourceModel.java
.../classes/com/sun/tools/example/debug/gui/SourceModel.java
+6
-11
src/share/classes/com/sun/tools/example/debug/gui/StackTraceTool.java
...asses/com/sun/tools/example/debug/gui/StackTraceTool.java
+1
-1
src/share/classes/com/sun/tools/example/debug/gui/ThreadTreeTool.java
...asses/com/sun/tools/example/debug/gui/ThreadTreeTool.java
+9
-11
src/share/classes/com/sun/tools/example/debug/tty/BreakpointSpec.java
...asses/com/sun/tools/example/debug/tty/BreakpointSpec.java
+13
-19
src/share/classes/com/sun/tools/example/debug/tty/Commands.java
...are/classes/com/sun/tools/example/debug/tty/Commands.java
+69
-133
src/share/classes/com/sun/tools/example/debug/tty/Env.java
src/share/classes/com/sun/tools/example/debug/tty/Env.java
+13
-24
src/share/classes/com/sun/tools/example/debug/tty/EventHandler.java
...classes/com/sun/tools/example/debug/tty/EventHandler.java
+2
-2
src/share/classes/com/sun/tools/example/debug/tty/EventRequestSpec.java
...ses/com/sun/tools/example/debug/tty/EventRequestSpec.java
+3
-7
src/share/classes/com/sun/tools/example/debug/tty/EventRequestSpecList.java
...com/sun/tools/example/debug/tty/EventRequestSpecList.java
+9
-13
src/share/classes/com/sun/tools/example/debug/tty/SourceMapper.java
...classes/com/sun/tools/example/debug/tty/SourceMapper.java
+4
-6
src/share/classes/com/sun/tools/example/debug/tty/TTY.java
src/share/classes/com/sun/tools/example/debug/tty/TTY.java
+8
-16
src/share/classes/com/sun/tools/example/debug/tty/ThreadGroupIterator.java
.../com/sun/tools/example/debug/tty/ThreadGroupIterator.java
+5
-5
src/share/classes/com/sun/tools/example/debug/tty/ThreadInfo.java
...e/classes/com/sun/tools/example/debug/tty/ThreadInfo.java
+5
-12
src/share/classes/com/sun/tools/example/debug/tty/ThreadIterator.java
...asses/com/sun/tools/example/debug/tty/ThreadIterator.java
+4
-4
src/share/classes/com/sun/tools/example/debug/tty/VMConnection.java
...classes/com/sun/tools/example/debug/tty/VMConnection.java
+5
-7
src/share/classes/com/sun/tools/hat/internal/server/ClassQuery.java
...classes/com/sun/tools/hat/internal/server/ClassQuery.java
+1
-2
src/share/classes/com/sun/tools/hat/internal/server/PlatformClasses.java
...es/com/sun/tools/hat/internal/server/PlatformClasses.java
+1
-3
src/share/classes/com/sun/tools/jdi/AbstractLauncher.java
src/share/classes/com/sun/tools/jdi/AbstractLauncher.java
+1
-1
src/share/classes/com/sun/tools/jdi/ClassTypeImpl.java
src/share/classes/com/sun/tools/jdi/ClassTypeImpl.java
+5
-13
src/share/classes/com/sun/tools/jdi/ConcreteMethodImpl.java
src/share/classes/com/sun/tools/jdi/ConcreteMethodImpl.java
+4
-4
src/share/classes/com/sun/tools/jdi/EventSetImpl.java
src/share/classes/com/sun/tools/jdi/EventSetImpl.java
+3
-7
src/share/classes/com/sun/tools/jdi/JNITypeParser.java
src/share/classes/com/sun/tools/jdi/JNITypeParser.java
+2
-2
src/share/classes/com/sun/tools/jdi/MethodImpl.java
src/share/classes/com/sun/tools/jdi/MethodImpl.java
+7
-7
src/share/classes/com/sun/tools/jdi/ObjectReferenceImpl.java
src/share/classes/com/sun/tools/jdi/ObjectReferenceImpl.java
+2
-2
src/share/classes/com/sun/tools/jdi/PacketStream.java
src/share/classes/com/sun/tools/jdi/PacketStream.java
+1
-1
src/share/classes/com/sun/tools/jdi/ReferenceTypeImpl.java
src/share/classes/com/sun/tools/jdi/ReferenceTypeImpl.java
+12
-24
src/share/classes/com/sun/tools/jdi/SDE.java
src/share/classes/com/sun/tools/jdi/SDE.java
+1
-1
src/share/classes/com/sun/tools/jdi/StackFrameImpl.java
src/share/classes/com/sun/tools/jdi/StackFrameImpl.java
+2
-2
src/share/classes/com/sun/tools/jdi/TargetVM.java
src/share/classes/com/sun/tools/jdi/TargetVM.java
+1
-1
src/share/classes/com/sun/tools/jdi/ThreadGroupReferenceImpl.java
...e/classes/com/sun/tools/jdi/ThreadGroupReferenceImpl.java
+8
-16
src/share/classes/com/sun/tools/jdi/VirtualMachineImpl.java
src/share/classes/com/sun/tools/jdi/VirtualMachineImpl.java
+2
-3
src/share/classes/com/sun/tools/jdi/VirtualMachineManagerImpl.java
.../classes/com/sun/tools/jdi/VirtualMachineManagerImpl.java
+2
-2
src/share/classes/java/io/ObjectInputStream.java
src/share/classes/java/io/ObjectInputStream.java
+7
-6
src/share/classes/java/io/ObjectStreamClass.java
src/share/classes/java/io/ObjectStreamClass.java
+36
-43
src/share/classes/java/lang/Class.java
src/share/classes/java/lang/Class.java
+57
-62
src/share/classes/java/lang/ClassLoader.java
src/share/classes/java/lang/ClassLoader.java
+83
-81
src/share/classes/java/lang/Compiler.java
src/share/classes/java/lang/Compiler.java
+3
-3
src/share/classes/java/lang/Long.java
src/share/classes/java/lang/Long.java
+1
-1
src/share/classes/java/lang/Package.java
src/share/classes/java/lang/Package.java
+12
-9
src/share/classes/java/lang/ref/Finalizer.java
src/share/classes/java/lang/ref/Finalizer.java
+4
-4
src/share/classes/java/lang/reflect/AccessibleObject.java
src/share/classes/java/lang/reflect/AccessibleObject.java
+3
-3
src/share/classes/java/lang/reflect/Modifier.java
src/share/classes/java/lang/reflect/Modifier.java
+2
-3
src/share/classes/java/lang/reflect/Proxy.java
src/share/classes/java/lang/reflect/Proxy.java
+15
-12
src/share/classes/java/net/DatagramSocket.java
src/share/classes/java/net/DatagramSocket.java
+3
-2
src/share/classes/java/net/ServerSocket.java
src/share/classes/java/net/ServerSocket.java
+3
-2
src/share/classes/java/net/Socket.java
src/share/classes/java/net/Socket.java
+6
-6
src/share/classes/java/net/SocksSocketImpl.java
src/share/classes/java/net/SocksSocketImpl.java
+17
-17
src/share/classes/java/net/URLClassLoader.java
src/share/classes/java/net/URLClassLoader.java
+18
-18
src/share/classes/java/nio/channels/spi/SelectorProvider.java
...share/classes/java/nio/channels/spi/SelectorProvider.java
+3
-3
src/share/classes/java/rmi/activation/ActivationGroupDesc.java
...hare/classes/java/rmi/activation/ActivationGroupDesc.java
+1
-1
src/share/classes/java/rmi/dgc/VMID.java
src/share/classes/java/rmi/dgc/VMID.java
+3
-3
src/share/classes/java/security/cert/TrustAnchor.java
src/share/classes/java/security/cert/TrustAnchor.java
+2
-2
src/share/classes/java/security/cert/X509CertSelector.java
src/share/classes/java/security/cert/X509CertSelector.java
+9
-9
src/share/classes/java/util/ArrayList.java
src/share/classes/java/util/ArrayList.java
+2
-1
src/share/classes/java/util/Arrays.java
src/share/classes/java/util/Arrays.java
+4
-4
src/share/classes/java/util/EnumMap.java
src/share/classes/java/util/EnumMap.java
+4
-4
src/share/classes/java/util/IdentityHashMap.java
src/share/classes/java/util/IdentityHashMap.java
+4
-4
src/share/classes/java/util/JumboEnumSet.java
src/share/classes/java/util/JumboEnumSet.java
+1
-1
src/share/classes/java/util/Random.java
src/share/classes/java/util/Random.java
+1
-1
src/share/classes/java/util/TreeSet.java
src/share/classes/java/util/TreeSet.java
+3
-3
src/share/classes/java/util/prefs/AbstractPreferences.java
src/share/classes/java/util/prefs/AbstractPreferences.java
+20
-20
src/share/classes/java/util/regex/Matcher.java
src/share/classes/java/util/regex/Matcher.java
+1
-1
src/share/classes/javax/rmi/ssl/SslRMIClientSocketFactory.java
...hare/classes/javax/rmi/ssl/SslRMIClientSocketFactory.java
+2
-2
src/share/classes/javax/rmi/ssl/SslRMIServerSocketFactory.java
...hare/classes/javax/rmi/ssl/SslRMIServerSocketFactory.java
+12
-14
src/share/classes/javax/security/auth/kerberos/KerberosTicket.java
.../classes/javax/security/auth/kerberos/KerberosTicket.java
+5
-6
src/share/classes/javax/security/auth/kerberos/KeyImpl.java
src/share/classes/javax/security/auth/kerberos/KeyImpl.java
+2
-2
src/share/classes/sun/misc/ClassFileTransformer.java
src/share/classes/sun/misc/ClassFileTransformer.java
+6
-4
src/share/classes/sun/misc/Cleaner.java
src/share/classes/sun/misc/Cleaner.java
+2
-2
src/share/classes/sun/misc/ExtensionDependency.java
src/share/classes/sun/misc/ExtensionDependency.java
+11
-13
src/share/classes/sun/misc/GC.java
src/share/classes/sun/misc/GC.java
+8
-8
src/share/classes/sun/misc/Launcher.java
src/share/classes/sun/misc/Launcher.java
+14
-14
src/share/classes/sun/misc/PerformanceLogger.java
src/share/classes/sun/misc/PerformanceLogger.java
+8
-8
src/share/classes/sun/misc/ProxyGenerator.java
src/share/classes/sun/misc/ProxyGenerator.java
+16
-15
src/share/classes/sun/misc/URLClassPath.java
src/share/classes/sun/misc/URLClassPath.java
+29
-29
src/share/classes/sun/net/NetProperties.java
src/share/classes/sun/net/NetProperties.java
+2
-2
src/share/classes/sun/net/NetworkClient.java
src/share/classes/sun/net/NetworkClient.java
+5
-5
src/share/classes/sun/net/ftp/FtpClient.java
src/share/classes/sun/net/ftp/FtpClient.java
+5
-5
src/share/classes/sun/net/spi/DefaultProxySelector.java
src/share/classes/sun/net/spi/DefaultProxySelector.java
+6
-6
src/share/classes/sun/net/www/MessageHeader.java
src/share/classes/sun/net/www/MessageHeader.java
+10
-13
src/share/classes/sun/net/www/MimeTable.java
src/share/classes/sun/net/www/MimeTable.java
+22
-19
src/share/classes/sun/net/www/http/HttpClient.java
src/share/classes/sun/net/www/http/HttpClient.java
+10
-11
src/share/classes/sun/net/www/http/KeepAliveCache.java
src/share/classes/sun/net/www/http/KeepAliveCache.java
+22
-21
src/share/classes/sun/net/www/http/KeepAliveStream.java
src/share/classes/sun/net/www/http/KeepAliveStream.java
+2
-2
src/share/classes/sun/net/www/http/KeepAliveStreamCleaner.java
...hare/classes/sun/net/www/http/KeepAliveStreamCleaner.java
+10
-10
src/share/classes/sun/net/www/protocol/ftp/FtpURLConnection.java
...re/classes/sun/net/www/protocol/ftp/FtpURLConnection.java
+4
-5
src/share/classes/sun/net/www/protocol/http/HttpURLConnection.java
.../classes/sun/net/www/protocol/http/HttpURLConnection.java
+45
-57
src/share/classes/sun/net/www/protocol/jar/URLJarFile.java
src/share/classes/sun/net/www/protocol/jar/URLJarFile.java
+10
-12
src/share/classes/sun/nio/ch/Reflect.java
src/share/classes/sun/nio/ch/Reflect.java
+4
-4
src/share/classes/sun/nio/ch/SocketAdaptor.java
src/share/classes/sun/nio/ch/SocketAdaptor.java
+6
-6
src/share/classes/sun/nio/ch/Util.java
src/share/classes/sun/nio/ch/Util.java
+25
-21
src/share/classes/sun/reflect/ClassDefiner.java
src/share/classes/sun/reflect/ClassDefiner.java
+3
-3
src/share/classes/sun/reflect/MethodAccessorGenerator.java
src/share/classes/sun/reflect/MethodAccessorGenerator.java
+5
-4
src/share/classes/sun/reflect/ReflectionFactory.java
src/share/classes/sun/reflect/ReflectionFactory.java
+17
-16
src/share/classes/sun/reflect/annotation/AnnotationInvocationHandler.java
...s/sun/reflect/annotation/AnnotationInvocationHandler.java
+2
-2
src/share/classes/sun/reflect/misc/MethodUtil.java
src/share/classes/sun/reflect/misc/MethodUtil.java
+17
-19
src/share/classes/sun/rmi/log/ReliableLog.java
src/share/classes/sun/rmi/log/ReliableLog.java
+4
-4
src/share/classes/sun/rmi/registry/RegistryImpl.java
src/share/classes/sun/rmi/registry/RegistryImpl.java
+12
-11
src/share/classes/sun/rmi/rmic/RemoteClass.java
src/share/classes/sun/rmi/rmic/RemoteClass.java
+17
-16
src/share/classes/sun/rmi/rmic/newrmic/jrmp/RemoteClass.java
src/share/classes/sun/rmi/rmic/newrmic/jrmp/RemoteClass.java
+3
-3
src/share/classes/sun/rmi/runtime/Log.java
src/share/classes/sun/rmi/runtime/Log.java
+7
-8
src/share/classes/sun/rmi/server/LoaderHandler.java
src/share/classes/sun/rmi/server/LoaderHandler.java
+21
-18
src/share/classes/sun/rmi/server/MarshalInputStream.java
src/share/classes/sun/rmi/server/MarshalInputStream.java
+10
-9
src/share/classes/sun/rmi/server/MarshalOutputStream.java
src/share/classes/sun/rmi/server/MarshalOutputStream.java
+2
-2
src/share/classes/sun/rmi/server/Util.java
src/share/classes/sun/rmi/server/Util.java
+10
-10
src/share/classes/sun/rmi/server/WeakClassHashMap.java
src/share/classes/sun/rmi/server/WeakClassHashMap.java
+1
-1
src/share/classes/sun/rmi/transport/DGCClient.java
src/share/classes/sun/rmi/transport/DGCClient.java
+10
-9
src/share/classes/sun/rmi/transport/Target.java
src/share/classes/sun/rmi/transport/Target.java
+3
-3
src/share/classes/sun/rmi/transport/Transport.java
src/share/classes/sun/rmi/transport/Transport.java
+3
-3
src/share/classes/sun/rmi/transport/proxy/CGIHandler.java
src/share/classes/sun/rmi/transport/proxy/CGIHandler.java
+2
-2
src/share/classes/sun/rmi/transport/proxy/HttpSendSocket.java
...share/classes/sun/rmi/transport/proxy/HttpSendSocket.java
+1
-1
src/share/classes/sun/rmi/transport/proxy/RMIMasterSocketFactory.java
...asses/sun/rmi/transport/proxy/RMIMasterSocketFactory.java
+10
-12
src/share/classes/sun/rmi/transport/tcp/ConnectionMultiplexer.java
.../classes/sun/rmi/transport/tcp/ConnectionMultiplexer.java
+1
-1
src/share/classes/sun/security/jgss/GSSManagerImpl.java
src/share/classes/sun/security/jgss/GSSManagerImpl.java
+1
-1
src/share/classes/sun/security/jgss/krb5/InitSecContextToken.java
...e/classes/sun/security/jgss/krb5/InitSecContextToken.java
+1
-2
src/share/classes/sun/security/ssl/CipherSuite.java
src/share/classes/sun/security/ssl/CipherSuite.java
+2
-2
src/share/classes/sun/security/ssl/DHCrypt.java
src/share/classes/sun/security/ssl/DHCrypt.java
+1
-2
src/share/classes/sun/security/ssl/JsseJce.java
src/share/classes/sun/security/ssl/JsseJce.java
+1
-2
src/share/classes/sun/security/ssl/ProtocolList.java
src/share/classes/sun/security/ssl/ProtocolList.java
+1
-1
src/share/classes/sun/security/ssl/SSLSessionImpl.java
src/share/classes/sun/security/ssl/SSLSessionImpl.java
+3
-3
src/share/classes/sun/security/ssl/SessionId.java
src/share/classes/sun/security/ssl/SessionId.java
+1
-1
src/share/classes/sun/security/ssl/SunX509KeyManagerImpl.java
...share/classes/sun/security/ssl/SunX509KeyManagerImpl.java
+3
-3
src/share/classes/sun/security/x509/CertificatePolicySet.java
...share/classes/sun/security/x509/CertificatePolicySet.java
+1
-1
src/share/classes/sun/security/x509/X509Cert.java
src/share/classes/sun/security/x509/X509Cert.java
+1
-1
src/share/classes/sun/tools/jar/JarVerifierStream.java
src/share/classes/sun/tools/jar/JarVerifierStream.java
+11
-11
src/share/classes/sun/tools/native2ascii/N2AFilter.java
src/share/classes/sun/tools/native2ascii/N2AFilter.java
+1
-1
src/solaris/classes/java/util/prefs/FileSystemPreferences.java
...olaris/classes/java/util/prefs/FileSystemPreferences.java
+44
-44
src/solaris/classes/sun/nio/ch/DevPollArrayWrapper.java
src/solaris/classes/sun/nio/ch/DevPollArrayWrapper.java
+1
-2
src/solaris/classes/sun/security/provider/NativePRNG.java
src/solaris/classes/sun/security/provider/NativePRNG.java
+3
-3
src/windows/classes/sun/security/mscapi/SunMSCAPI.java
src/windows/classes/sun/security/mscapi/SunMSCAPI.java
+2
-2
未找到文件。
make/tools/src/build/tools/jdwpgen/CommandNode.java
浏览文件 @
ab1229d1
...
...
@@ -32,9 +32,9 @@ class CommandNode extends AbstractCommandNode {
void
constrain
(
Context
ctx
)
{
if
(
components
.
size
()
==
3
)
{
Node
out
=
(
Node
)
components
.
get
(
0
);
Node
reply
=
(
Node
)
components
.
get
(
1
);
Node
error
=
(
Node
)
components
.
get
(
2
);
Node
out
=
components
.
get
(
0
);
Node
reply
=
components
.
get
(
1
);
Node
error
=
components
.
get
(
2
);
if
(!(
out
instanceof
OutNode
))
{
error
(
"Expected 'Out' item, got: "
+
out
);
}
...
...
@@ -45,7 +45,7 @@ class CommandNode extends AbstractCommandNode {
error
(
"Expected 'ErrorSet' item, got: "
+
error
);
}
}
else
if
(
components
.
size
()
==
1
)
{
Node
evt
=
(
Node
)
components
.
get
(
0
);
Node
evt
=
components
.
get
(
0
);
if
(!(
evt
instanceof
EventNode
))
{
error
(
"Expected 'Event' item, got: "
+
evt
);
}
...
...
make/tools/src/build/tools/jdwpgen/ConstantSetNode.java
浏览文件 @
ab1229d1
...
...
@@ -98,7 +98,7 @@ class ConstantSetNode extends AbstractNamedNode {
if
(
constantMap
==
null
)
{
return
""
;
}
String
com
=
(
String
)
constantMap
.
get
(
key
);
String
com
=
constantMap
.
get
(
key
);
if
(
com
==
null
){
return
""
;
}
else
{
...
...
make/tools/src/build/tools/jdwpgen/RepeatNode.java
浏览文件 @
ab1229d1
...
...
@@ -37,7 +37,7 @@ class RepeatNode extends AbstractTypeNode {
if
(
components
.
size
()
!=
1
)
{
error
(
"Repeat must have exactly one member, use Group for more"
);
}
member
=
(
Node
)(
components
.
get
(
0
)
);
member
=
components
.
get
(
0
);
if
(!(
member
instanceof
TypeNode
))
{
error
(
"Repeat member must be type specifier"
);
}
...
...
src/share/classes/com/sun/tools/example/debug/bdi/EventRequestSpec.java
浏览文件 @
ab1229d1
...
...
@@ -91,9 +91,7 @@ abstract public class EventRequestSpec {
void
attemptImmediateResolve
(
VirtualMachine
vm
)
{
// try to resolve immediately
Iterator
iter
=
vm
.
allClasses
().
iterator
();
while
(
iter
.
hasNext
())
{
ReferenceType
refType
=
(
ReferenceType
)
iter
.
next
();
for
(
ReferenceType
refType
:
vm
.
allClasses
())
{
if
(
refSpec
.
matches
(
refType
))
{
try
{
resolve
(
refType
);
...
...
src/share/classes/com/sun/tools/example/debug/bdi/EventRequestSpecList.java
浏览文件 @
ab1229d1
...
...
@@ -47,9 +47,8 @@ class EventRequestSpecList {
*/
void
resolve
(
ReferenceType
refType
)
{
synchronized
(
eventRequestSpecs
)
{
Iterator
iter
=
eventRequestSpecs
.
iterator
();
while
(
iter
.
hasNext
())
{
((
EventRequestSpec
)
iter
.
next
()).
attemptResolve
(
refType
);
for
(
EventRequestSpec
spec
:
eventRequestSpecs
)
{
spec
.
attemptResolve
(
refType
);
}
}
}
...
...
@@ -79,7 +78,7 @@ class EventRequestSpecList {
BreakpointSpec
createMethodBreakpoint
(
String
classPattern
,
String
methodId
,
List
methodArgs
)
{
String
methodId
,
List
<
String
>
methodArgs
)
{
ReferenceTypeSpec
refSpec
=
new
PatternReferenceTypeSpec
(
classPattern
);
return
new
MethodBreakpointSpec
(
this
,
refSpec
,
...
...
@@ -132,47 +131,48 @@ class EventRequestSpecList {
// -------- notify routines --------------------
private
Vector
specListeners
()
{
return
(
Vector
)
runtime
.
specListeners
.
clone
();
@SuppressWarnings
(
"unchecked"
)
private
Vector
<
SpecListener
>
specListeners
()
{
return
(
Vector
<
SpecListener
>)
runtime
.
specListeners
.
clone
();
}
void
notifySet
(
EventRequestSpec
spec
)
{
Vector
l
=
specListeners
();
Vector
<
SpecListener
>
l
=
specListeners
();
SpecEvent
evt
=
new
SpecEvent
(
spec
);
for
(
int
i
=
0
;
i
<
l
.
size
();
i
++)
{
spec
.
notifySet
(
(
SpecListener
)
l
.
elementAt
(
i
),
evt
);
spec
.
notifySet
(
l
.
elementAt
(
i
),
evt
);
}
}
void
notifyDeferred
(
EventRequestSpec
spec
)
{
Vector
l
=
specListeners
();
Vector
<
SpecListener
>
l
=
specListeners
();
SpecEvent
evt
=
new
SpecEvent
(
spec
);
for
(
int
i
=
0
;
i
<
l
.
size
();
i
++)
{
spec
.
notifyDeferred
(
(
SpecListener
)
l
.
elementAt
(
i
),
evt
);
spec
.
notifyDeferred
(
l
.
elementAt
(
i
),
evt
);
}
}
void
notifyDeleted
(
EventRequestSpec
spec
)
{
Vector
l
=
specListeners
();
Vector
<
SpecListener
>
l
=
specListeners
();
SpecEvent
evt
=
new
SpecEvent
(
spec
);
for
(
int
i
=
0
;
i
<
l
.
size
();
i
++)
{
spec
.
notifyDeleted
(
(
SpecListener
)
l
.
elementAt
(
i
),
evt
);
spec
.
notifyDeleted
(
l
.
elementAt
(
i
),
evt
);
}
}
void
notifyResolved
(
EventRequestSpec
spec
)
{
Vector
l
=
specListeners
();
Vector
<
SpecListener
>
l
=
specListeners
();
SpecEvent
evt
=
new
SpecEvent
(
spec
);
for
(
int
i
=
0
;
i
<
l
.
size
();
i
++)
{
spec
.
notifyResolved
(
(
SpecListener
)
l
.
elementAt
(
i
),
evt
);
spec
.
notifyResolved
(
l
.
elementAt
(
i
),
evt
);
}
}
void
notifyError
(
EventRequestSpec
spec
,
Exception
exc
)
{
Vector
l
=
specListeners
();
Vector
<
SpecListener
>
l
=
specListeners
();
SpecErrorEvent
evt
=
new
SpecErrorEvent
(
spec
,
exc
);
for
(
int
i
=
0
;
i
<
l
.
size
();
i
++)
{
spec
.
notifyError
(
(
SpecListener
)
l
.
elementAt
(
i
),
evt
);
spec
.
notifyError
(
l
.
elementAt
(
i
),
evt
);
}
}
}
src/share/classes/com/sun/tools/example/debug/bdi/ExecutionManager.java
浏览文件 @
ab1229d1
...
...
@@ -232,10 +232,7 @@ public class ExecutionManager {
if
(
pattern
.
startsWith
(
"*."
))
{
// Wildcard matches any leading package name.
pattern
=
pattern
.
substring
(
1
);
List
classes
=
vm
().
allClasses
();
Iterator
iter
=
classes
.
iterator
();
while
(
iter
.
hasNext
())
{
ReferenceType
type
=
((
ReferenceType
)
iter
.
next
());
for
(
ReferenceType
type
:
vm
().
allClasses
())
{
if
(
type
.
name
().
endsWith
(
pattern
))
{
result
.
add
(
type
);
}
...
...
@@ -278,7 +275,7 @@ public class ExecutionManager {
public
ThreadGroupReference
systemThreadGroup
()
throws
NoSessionException
{
ensureActiveSession
();
return
(
ThreadGroupReference
)
vm
().
topLevelThreadGroups
().
get
(
0
);
return
vm
().
topLevelThreadGroups
().
get
(
0
);
}
/*
...
...
@@ -349,10 +346,9 @@ public class ExecutionManager {
* attach sessions.
*/
VirtualMachineManager
mgr
=
Bootstrap
.
virtualMachineManager
();
List
connectors
=
mgr
.
attachingConnectors
();
AttachingConnector
connector
=
(
AttachingConnector
)
connectors
.
get
(
0
);
AttachingConnector
connector
=
mgr
.
attachingConnectors
().
get
(
0
);
Map
<
String
,
Connector
.
Argument
>
arguments
=
connector
.
defaultArguments
();
((
Connector
.
Argument
)
arguments
.
get
(
"port"
)
).
setValue
(
portName
);
arguments
.
get
(
"port"
).
setValue
(
portName
);
Session
newSession
=
internalAttach
(
connector
,
arguments
);
if
(
newSession
!=
null
)
{
...
...
@@ -504,10 +500,7 @@ public class ExecutionManager {
* if so, it gets removed here.
*/
EventRequestManager
mgr
=
vm
().
eventRequestManager
();
List
requests
=
mgr
.
stepRequests
();
Iterator
iter
=
requests
.
iterator
();
while
(
iter
.
hasNext
())
{
StepRequest
request
=
(
StepRequest
)
iter
.
next
();
for
(
StepRequest
request
:
mgr
.
stepRequests
())
{
if
(
request
.
thread
().
equals
(
thread
))
{
mgr
.
deleteEventRequest
(
request
);
break
;
...
...
@@ -591,7 +584,7 @@ public class ExecutionManager {
if
(
session
==
null
||
thread
==
null
)
{
return
null
;
}
ThreadInfo
info
=
(
ThreadInfo
)
threadInfoMap
.
get
(
thread
);
ThreadInfo
info
=
threadInfoMap
.
get
(
thread
);
if
(
info
==
null
)
{
//### Should not hardcode initial frame count and prefetch here!
//info = new ThreadInfo(thread, 10, 10);
...
...
@@ -607,24 +600,22 @@ public class ExecutionManager {
void
validateThreadInfo
()
{
session
.
interrupted
=
true
;
Iterator
iter
=
threadInfoList
.
iterator
();
while
(
iter
.
hasNext
())
{
((
ThreadInfo
)
iter
.
next
()).
validate
();
for
(
ThreadInfo
threadInfo
:
threadInfoList
)
{
threadInfo
.
validate
();
}
}
private
void
invalidateThreadInfo
()
{
if
(
session
!=
null
)
{
session
.
interrupted
=
false
;
Iterator
iter
=
threadInfoList
.
iterator
();
while
(
iter
.
hasNext
())
{
((
ThreadInfo
)
iter
.
next
()).
invalidate
();
for
(
ThreadInfo
threadInfo
:
threadInfoList
)
{
threadInfo
.
invalidate
();
}
}
}
void
removeThreadInfo
(
ThreadReference
thread
)
{
ThreadInfo
info
=
(
ThreadInfo
)
threadInfoMap
.
get
(
thread
);
ThreadInfo
info
=
threadInfoMap
.
get
(
thread
);
if
(
info
!=
null
)
{
info
.
invalidate
();
threadInfoMap
.
remove
(
thread
);
...
...
@@ -702,7 +693,7 @@ public class ExecutionManager {
while
(
inputBuffer
.
size
()
<
1
)
{
inputLock
.
wait
();
}
line
=
(
String
)
inputBuffer
.
removeLast
();
line
=
inputBuffer
.
removeLast
();
}
catch
(
InterruptedException
e
)
{}
}
}
...
...
@@ -774,7 +765,7 @@ public class ExecutionManager {
public
BreakpointSpec
createMethodBreakpoint
(
String
classPattern
,
String
methodId
,
List
methodArgs
)
{
String
methodId
,
List
<
String
>
methodArgs
)
{
return
specList
.
createMethodBreakpoint
(
classPattern
,
methodId
,
methodArgs
);
}
...
...
@@ -811,7 +802,7 @@ public class ExecutionManager {
specList
.
install
(
spec
,
vm
());
}
public
List
eventRequestSpecs
()
{
public
List
<
EventRequestSpec
>
eventRequestSpecs
()
{
return
specList
.
eventRequestSpecs
();
}
}
src/share/classes/com/sun/tools/example/debug/bdi/JDIEventSource.java
浏览文件 @
ab1229d1
...
...
@@ -82,9 +82,7 @@ class JDIEventSource extends Thread {
boolean
interrupted
=
es
.
suspendedAll
();
es
.
notify
(
firstListener
);
boolean
wantInterrupt
=
JDIEventSource
.
this
.
wantInterrupt
;
for
(
Iterator
it
=
session
.
runtime
.
jdiListeners
.
iterator
();
it
.
hasNext
();
)
{
JDIListener
jl
=
(
JDIListener
)
it
.
next
();
for
(
JDIListener
jl
:
session
.
runtime
.
jdiListeners
)
{
es
.
notify
(
jl
);
}
if
(
interrupted
&&
!
wantInterrupt
)
{
...
...
src/share/classes/com/sun/tools/example/debug/bdi/LineBreakpointSpec.java
浏览文件 @
ab1229d1
...
...
@@ -58,12 +58,12 @@ public class LineBreakpointSpec extends BreakpointSpec {
LineNotFoundException
{
Location
location
=
null
;
try
{
List
locs
=
clazz
.
locationsOfLine
(
lineNumber
());
List
<
Location
>
locs
=
clazz
.
locationsOfLine
(
lineNumber
());
if
(
locs
.
size
()
==
0
)
{
throw
new
LineNotFoundException
();
}
// TODO handle multiple locations
location
=
(
Location
)
locs
.
get
(
0
);
location
=
locs
.
get
(
0
);
if
(
location
.
method
()
==
null
)
{
throw
new
LineNotFoundException
();
}
...
...
src/share/classes/com/sun/tools/example/debug/bdi/MethodBreakpointSpec.java
浏览文件 @
ab1229d1
...
...
@@ -34,11 +34,11 @@ import java.util.Iterator;
public
class
MethodBreakpointSpec
extends
BreakpointSpec
{
String
methodId
;
List
methodArgs
;
List
<
String
>
methodArgs
;
MethodBreakpointSpec
(
EventRequestSpecList
specs
,
ReferenceTypeSpec
refSpec
,
String
methodId
,
List
methodArgs
)
{
String
methodId
,
List
<
String
>
methodArgs
)
{
super
(
specs
,
refSpec
);
this
.
methodId
=
methodId
;
this
.
methodArgs
=
methodArgs
;
...
...
@@ -76,7 +76,7 @@ public class MethodBreakpointSpec extends BreakpointSpec {
return
methodId
;
}
public
List
methodArgs
()
{
public
List
<
String
>
methodArgs
()
{
return
methodArgs
;
}
...
...
@@ -120,14 +120,13 @@ public class MethodBreakpointSpec extends BreakpointSpec {
buffer
.
append
(
'.'
);
buffer
.
append
(
methodId
);
if
(
methodArgs
!=
null
)
{
Iterator
iter
=
methodArgs
.
iterator
();
boolean
first
=
true
;
buffer
.
append
(
'('
);
while
(
iter
.
hasNext
()
)
{
for
(
String
name
:
methodArgs
)
{
if
(!
first
)
{
buffer
.
append
(
','
);
}
buffer
.
append
(
(
String
)
iter
.
next
()
);
buffer
.
append
(
name
);
first
=
false
;
}
buffer
.
append
(
")"
);
...
...
@@ -151,8 +150,8 @@ public class MethodBreakpointSpec extends BreakpointSpec {
* and if the number of arguments in the method matches the
* number of names passed
*/
private
boolean
compareArgTypes
(
Method
method
,
List
nameList
)
{
List
argTypeNames
=
method
.
argumentTypeNames
();
private
boolean
compareArgTypes
(
Method
method
,
List
<
String
>
nameList
)
{
List
<
String
>
argTypeNames
=
method
.
argumentTypeNames
();
// If argument counts differ, we can stop here
if
(
argTypeNames
.
size
()
!=
nameList
.
size
())
{
...
...
@@ -162,8 +161,8 @@ public class MethodBreakpointSpec extends BreakpointSpec {
// Compare each argument type's name
int
nTypes
=
argTypeNames
.
size
();
for
(
int
i
=
0
;
i
<
nTypes
;
++
i
)
{
String
comp1
=
(
String
)
argTypeNames
.
get
(
i
);
String
comp2
=
(
String
)
nameList
.
get
(
i
);
String
comp1
=
argTypeNames
.
get
(
i
);
String
comp2
=
nameList
.
get
(
i
);
if
(!
comp1
.
equals
(
comp2
))
{
/*
* We have to handle varargs. EG, the
...
...
@@ -288,22 +287,17 @@ public class MethodBreakpointSpec extends BreakpointSpec {
List
<
String
>
argTypeNames
=
null
;
if
(
methodArgs
()
!=
null
)
{
argTypeNames
=
new
ArrayList
<
String
>(
methodArgs
().
size
());
Iterator
iter
=
methodArgs
().
iterator
();
while
(
iter
.
hasNext
())
{
String
name
=
(
String
)
iter
.
next
();
for
(
String
name
:
methodArgs
())
{
name
=
normalizeArgTypeName
(
name
);
argTypeNames
.
add
(
name
);
}
}
// Check each method in the class for matches
Iterator
iter
=
clazz
.
methods
().
iterator
();
Method
firstMatch
=
null
;
// first method with matching name
Method
exactMatch
=
null
;
// (only) method with same name & sig
int
matchCount
=
0
;
// > 1 implies overload
while
(
iter
.
hasNext
())
{
Method
candidate
=
(
Method
)
iter
.
next
();
for
(
Method
candidate
:
clazz
.
methods
())
{
if
(
candidate
.
name
().
equals
(
methodName
()))
{
matchCount
++;
...
...
src/share/classes/com/sun/tools/example/debug/bdi/ThreadGroupIterator.java
浏览文件 @
ab1229d1
...
...
@@ -36,7 +36,7 @@ import java.util.Iterator;
* Descend the tree of thread groups.
* @author Robert G. Field
*/
public
class
ThreadGroupIterator
implements
Iterator
{
public
class
ThreadGroupIterator
implements
Iterator
<
ThreadGroupReference
>
{
private
final
Stack
<
Iterator
<
ThreadGroupReference
>>
stack
=
new
Stack
<
Iterator
<
ThreadGroupReference
>>();
...
...
@@ -56,8 +56,8 @@ public class ThreadGroupIterator implements Iterator {
}
*/
private
Iterator
top
()
{
return
(
Iterator
)
stack
.
peek
();
private
Iterator
<
ThreadGroupReference
>
top
()
{
return
stack
.
peek
();
}
/**
...
...
@@ -77,12 +77,12 @@ public class ThreadGroupIterator implements Iterator {
return
!
stack
.
isEmpty
();
}
public
Object
next
()
{
public
ThreadGroupReference
next
()
{
return
nextThreadGroup
();
}
public
ThreadGroupReference
nextThreadGroup
()
{
ThreadGroupReference
tg
=
(
ThreadGroupReference
)
top
().
next
();
ThreadGroupReference
tg
=
top
().
next
();
push
(
tg
.
threadGroups
());
return
tg
;
}
...
...
src/share/classes/com/sun/tools/example/debug/bdi/ThreadIterator.java
浏览文件 @
ab1229d1
...
...
@@ -30,8 +30,8 @@ import com.sun.jdi.ThreadReference;
import
java.util.List
;
import
java.util.Iterator
;
public
class
ThreadIterator
implements
Iterator
{
Iterator
it
=
null
;
public
class
ThreadIterator
implements
Iterator
<
ThreadReference
>
{
Iterator
<
ThreadReference
>
it
=
null
;
ThreadGroupIterator
tgi
;
public
ThreadIterator
(
ThreadGroupReference
tg
)
{
...
...
@@ -53,12 +53,12 @@ public class ThreadIterator implements Iterator {
return
true
;
}
public
Object
next
()
{
public
ThreadReference
next
()
{
return
it
.
next
();
}
public
ThreadReference
nextThread
()
{
return
(
ThreadReference
)
next
();
return
next
();
}
public
void
remove
()
{
...
...
src/share/classes/com/sun/tools/example/debug/expr/LValue.java
浏览文件 @
ab1229d1
...
...
@@ -191,11 +191,12 @@ abstract class LValue {
return
field
;
}
static
List
methodsByName
(
ReferenceType
refType
,
String
name
,
int
kind
)
{
List
list
=
refType
.
methodsByName
(
name
);
Iterator
iter
=
list
.
iterator
();
static
List
<
Method
>
methodsByName
(
ReferenceType
refType
,
String
name
,
int
kind
)
{
List
<
Method
>
list
=
refType
.
methodsByName
(
name
);
Iterator
<
Method
>
iter
=
list
.
iterator
();
while
(
iter
.
hasNext
())
{
Method
method
=
(
Method
)
iter
.
next
();
Method
method
=
iter
.
next
();
boolean
isStatic
=
method
.
isStatic
();
if
(((
kind
==
STATIC
)
&&
!
isStatic
)
||
((
kind
==
INSTANCE
)
&&
isStatic
))
{
...
...
@@ -231,21 +232,21 @@ abstract class LValue {
* argType is not assignable from the type of the argument value.
* IE, one is an Apple and the other is an Orange.
*/
static
int
argumentsMatch
(
List
argTypes
,
List
arguments
)
{
static
int
argumentsMatch
(
List
<
Type
>
argTypes
,
List
<
Value
>
arguments
)
{
if
(
argTypes
.
size
()
!=
arguments
.
size
())
{
return
DIFFERENT
;
}
Iterator
typeIter
=
argTypes
.
iterator
();
Iterator
valIter
=
arguments
.
iterator
();
Iterator
<
Type
>
typeIter
=
argTypes
.
iterator
();
Iterator
<
Value
>
valIter
=
arguments
.
iterator
();
int
result
=
SAME
;
// If any pair aren't the same, change the
// result to ASSIGNABLE. If any pair aren't
// assignable, return DIFFERENT
while
(
typeIter
.
hasNext
())
{
Type
argType
=
(
Type
)
typeIter
.
next
();
Value
value
=
(
Value
)
valIter
.
next
();
Type
argType
=
typeIter
.
next
();
Value
value
=
valIter
.
next
();
if
(
value
==
null
)
{
// Null values can be passed to any non-primitive argument
if
(
primitiveTypeNames
.
contains
(
argType
.
name
()))
{
...
...
@@ -333,7 +334,7 @@ abstract class LValue {
if
(
fromType
instanceof
ArrayType
)
{
return
isArrayAssignableTo
((
ArrayType
)
fromType
,
toType
);
}
List
interfaces
;
List
<
InterfaceType
>
interfaces
;
if
(
fromType
instanceof
ClassType
)
{
ClassType
superclazz
=
((
ClassType
)
fromType
).
superclass
();
if
((
superclazz
!=
null
)
&&
isAssignableTo
(
superclazz
,
toType
))
{
...
...
@@ -344,9 +345,7 @@ abstract class LValue {
// fromType must be an InterfaceType
interfaces
=
((
InterfaceType
)
fromType
).
superinterfaces
();
}
Iterator
iter
=
interfaces
.
iterator
();
while
(
iter
.
hasNext
())
{
InterfaceType
interfaze
=
(
InterfaceType
)
iter
.
next
();
for
(
InterfaceType
interfaze
:
interfaces
)
{
if
(
isAssignableTo
(
interfaze
,
toType
))
{
return
true
;
}
...
...
@@ -354,7 +353,8 @@ abstract class LValue {
return
false
;
}
static
Method
resolveOverload
(
List
overloads
,
List
arguments
)
static
Method
resolveOverload
(
List
<
Method
>
overloads
,
List
<
Value
>
arguments
)
throws
ParseException
{
// If there is only one method to call, we'll just choose
...
...
@@ -362,7 +362,7 @@ abstract class LValue {
// the invoke will return a better error message than we
// could generate here.
if
(
overloads
.
size
()
==
1
)
{
return
(
Method
)
overloads
.
get
(
0
);
return
overloads
.
get
(
0
);
}
// Resolving overloads is beyond the scope of this exercise.
...
...
@@ -374,12 +374,10 @@ abstract class LValue {
// methods to call. And, since casts aren't implemented,
// the user can't use them to pick a particular overload to call.
// IE, the user is out of luck in this case.
Iterator
iter
=
overloads
.
iterator
();
Method
retVal
=
null
;
int
assignableCount
=
0
;
while
(
iter
.
hasNext
())
{
Method
mm
=
(
Method
)
iter
.
next
();
List
argTypes
;
for
(
Method
mm
:
overloads
)
{
List
<
Type
>
argTypes
;
try
{
argTypes
=
mm
.
argumentTypes
();
}
catch
(
ClassNotLoadedException
ee
)
{
...
...
@@ -443,7 +441,7 @@ abstract class LValue {
final
ObjectReference
obj
;
final
ThreadReference
thread
;
final
Field
matchingField
;
final
List
overloads
;
final
List
<
Method
>
overloads
;
Method
matchingMethod
=
null
;
List
<
Value
>
methodArguments
=
null
;
...
...
@@ -510,7 +508,7 @@ abstract class LValue {
final
ReferenceType
refType
;
final
ThreadReference
thread
;
final
Field
matchingField
;
final
List
overloads
;
final
List
<
Method
>
overloads
;
Method
matchingMethod
=
null
;
List
<
Value
>
methodArguments
=
null
;
...
...
@@ -765,7 +763,7 @@ abstract class LValue {
static
LValue
makeNewObject
(
VirtualMachine
vm
,
ExpressionParser
.
GetFrame
frameGetter
,
String
className
,
List
<
Value
>
arguments
)
throws
ParseException
{
List
classes
=
vm
.
classesByName
(
className
);
List
<
ReferenceType
>
classes
=
vm
.
classesByName
(
className
);
if
(
classes
.
size
()
==
0
)
{
throw
new
ParseException
(
"No class named: "
+
className
);
}
...
...
@@ -774,7 +772,7 @@ abstract class LValue {
throw
new
ParseException
(
"More than one class named: "
+
className
);
}
ReferenceType
refType
=
(
ReferenceType
)
classes
.
get
(
0
);
ReferenceType
refType
=
classes
.
get
(
0
);
if
(!(
refType
instanceof
ClassType
))
{
...
...
@@ -784,9 +782,9 @@ abstract class LValue {
ClassType
classType
=
(
ClassType
)
refType
;
List
<
Method
>
methods
=
new
ArrayList
<
Method
>(
classType
.
methods
());
// writable
Iterator
iter
=
methods
.
iterator
();
Iterator
<
Method
>
iter
=
methods
.
iterator
();
while
(
iter
.
hasNext
())
{
Method
method
=
(
Method
)
iter
.
next
();
Method
method
=
iter
.
next
();
if
(!
method
.
isConstructor
())
{
iter
.
remove
();
}
...
...
@@ -858,13 +856,13 @@ abstract class LValue {
}
// check for class name
while
(
izer
.
hasMoreTokens
())
{
List
classes
=
vm
.
classesByName
(
first
);
List
<
ReferenceType
>
classes
=
vm
.
classesByName
(
first
);
if
(
classes
.
size
()
>
0
)
{
if
(
classes
.
size
()
>
1
)
{
throw
new
ParseException
(
"More than one class named: "
+
first
);
}
else
{
ReferenceType
refType
=
(
ReferenceType
)
classes
.
get
(
0
);
ReferenceType
refType
=
classes
.
get
(
0
);
LValue
lval
=
new
LValueStaticMember
(
refType
,
izer
.
nextToken
(),
thread
);
return
nFields
(
lval
,
izer
,
thread
);
...
...
src/share/classes/com/sun/tools/example/debug/gui/ClassTreeTool.java
浏览文件 @
ab1229d1
...
...
@@ -124,9 +124,7 @@ public class ClassTreeTool extends JPanel {
public
void
sessionStart
(
EventObject
e
)
{
// Get system classes and any others loaded before attaching.
try
{
Iterator
iter
=
runtime
.
allClasses
().
iterator
();
while
(
iter
.
hasNext
())
{
ReferenceType
type
=
((
ReferenceType
)
iter
.
next
());
for
(
ReferenceType
type
:
runtime
.
allClasses
())
{
root
.
addClass
(
type
);
}
}
catch
(
VMDisconnectedException
ee
)
{
...
...
src/share/classes/com/sun/tools/example/debug/gui/CommandInterpreter.java
浏览文件 @
ab1229d1
...
...
@@ -77,7 +77,7 @@ public class CommandInterpreter {
while
(
ti
.
hasNext
())
{
tlist
.
add
(
ti
.
nextThread
());
}
threads
=
(
ThreadReference
[])
tlist
.
toArray
(
new
ThreadReference
[
tlist
.
size
()]);
threads
=
tlist
.
toArray
(
new
ThreadReference
[
tlist
.
size
()]);
}
return
threads
;
}
...
...
@@ -146,11 +146,9 @@ public class CommandInterpreter {
// Command: classes
private
void
commandClasses
()
throws
NoSessionException
{
List
list
=
runtime
.
allClasses
();
OutputSink
out
=
env
.
getOutputSink
();
//out.println("** classes list **");
for
(
int
i
=
0
;
i
<
list
.
size
()
;
i
++)
{
ReferenceType
refType
=
(
ReferenceType
)
list
.
get
(
i
);
for
(
ReferenceType
refType
:
runtime
.
allClasses
())
{
out
.
println
(
refType
.
name
());
}
out
.
show
();
...
...
@@ -167,16 +165,16 @@ public class CommandInterpreter {
String
idClass
=
t
.
nextToken
();
ReferenceType
cls
=
findClass
(
idClass
);
if
(
cls
!=
null
)
{
List
methods
=
cls
.
allMethods
();
List
<
Method
>
methods
=
cls
.
allMethods
();
OutputSink
out
=
env
.
getOutputSink
();
for
(
int
i
=
0
;
i
<
methods
.
size
();
i
++)
{
Method
method
=
(
Method
)
methods
.
get
(
i
);
Method
method
=
methods
.
get
(
i
);
out
.
print
(
method
.
declaringType
().
name
()
+
" "
+
method
.
name
()
+
"("
);
Iterator
it
=
method
.
argumentTypeNames
().
iterator
();
Iterator
<
String
>
it
=
method
.
argumentTypeNames
().
iterator
();
if
(
it
.
hasNext
())
{
while
(
true
)
{
out
.
print
(
(
String
)
it
.
next
());
out
.
print
(
it
.
next
());
if
(!
it
.
hasNext
())
{
break
;
}
...
...
@@ -193,10 +191,10 @@ public class CommandInterpreter {
}
private
ReferenceType
findClass
(
String
pattern
)
throws
NoSessionException
{
List
results
=
runtime
.
findClassesMatchingPattern
(
pattern
);
List
<
ReferenceType
>
results
=
runtime
.
findClassesMatchingPattern
(
pattern
);
if
(
results
.
size
()
>
0
)
{
//### Should handle multiple results sensibly.
return
(
ReferenceType
)
results
.
get
(
0
);
return
results
.
get
(
0
);
}
return
null
;
}
...
...
@@ -235,11 +233,11 @@ public class CommandInterpreter {
private
int
printThreadGroup
(
OutputSink
out
,
ThreadGroupReference
tg
,
int
iThread
)
{
out
.
println
(
"Group "
+
tg
.
name
()
+
":"
);
List
tlist
=
tg
.
threads
();
List
<
ThreadReference
>
tlist
=
tg
.
threads
();
int
maxId
=
0
;
int
maxName
=
0
;
for
(
int
i
=
0
;
i
<
tlist
.
size
()
;
i
++)
{
ThreadReference
thr
=
(
ThreadReference
)
tlist
.
get
(
i
);
ThreadReference
thr
=
tlist
.
get
(
i
);
int
len
=
Utils
.
description
(
thr
).
length
();
if
(
len
>
maxId
)
maxId
=
len
;
...
...
@@ -254,7 +252,7 @@ public class CommandInterpreter {
String
maxNumString
=
String
.
valueOf
(
iThread
+
tlist
.
size
());
int
maxNumDigits
=
maxNumString
.
length
();
for
(
int
i
=
0
;
i
<
tlist
.
size
()
;
i
++)
{
ThreadReference
thr
=
(
ThreadReference
)
tlist
.
get
(
i
);
ThreadReference
thr
=
tlist
.
get
(
i
);
char
buf
[]
=
new
char
[
80
];
for
(
int
j
=
0
;
j
<
79
;
j
++)
{
buf
[
j
]
=
' '
;
...
...
@@ -283,9 +281,7 @@ public class CommandInterpreter {
sbOut
.
setLength
(
79
);
out
.
println
(
sbOut
.
toString
());
}
List
tglist
=
tg
.
threadGroups
();
for
(
int
ig
=
0
;
ig
<
tglist
.
size
();
ig
++)
{
ThreadGroupReference
tg0
=
(
ThreadGroupReference
)
tglist
.
get
(
ig
);
for
(
ThreadGroupReference
tg0
:
tg
.
threadGroups
())
{
if
(!
tg
.
equals
(
tg0
))
{
// TODO ref mgt
iThread
+=
printThreadGroup
(
out
,
tg0
,
iThread
+
tlist
.
size
());
}
...
...
@@ -733,7 +729,7 @@ public class CommandInterpreter {
if
(
token
.
toLowerCase
().
equals
(
"all"
))
{
ThreadIterator
it
=
allThreads
();
while
(
it
.
hasNext
())
{
ThreadReference
thread
=
(
ThreadReference
)
it
.
next
();
ThreadReference
thread
=
it
.
next
();
out
.
println
(
thread
.
name
()
+
": "
);
dumpStack
(
thread
,
showPC
);
}
...
...
@@ -755,7 +751,7 @@ public class CommandInterpreter {
//env.failure("Target VM must be in interrupted state.");
//env.failure("Current thread isn't suspended.");
//### Should handle extremely long stack traces sensibly for user.
List
stack
=
null
;
List
<
StackFrame
>
stack
=
null
;
try
{
stack
=
thread
.
frames
();
}
catch
(
IncompatibleThreadStateException
e
)
{
...
...
@@ -772,7 +768,7 @@ public class CommandInterpreter {
OutputSink
out
=
env
.
getOutputSink
();
int
nFrames
=
stack
.
size
();
for
(
int
i
=
frameIndex
;
i
<
nFrames
;
i
++)
{
StackFrame
frame
=
(
StackFrame
)
stack
.
get
(
i
);
StackFrame
frame
=
stack
.
get
(
i
);
Location
loc
=
frame
.
location
();
Method
meth
=
loc
.
method
();
out
.
print
(
" ["
+
(
i
+
1
)
+
"] "
);
...
...
@@ -780,7 +776,7 @@ public class CommandInterpreter {
out
.
print
(
'.'
);
out
.
print
(
meth
.
name
());
out
.
print
(
" ("
);
if
(
meth
instanceof
Method
&&
((
Method
)
meth
)
.
isNative
())
{
if
(
meth
.
isNative
())
{
out
.
print
(
"native method"
);
}
else
if
(
loc
.
lineNumber
()
!=
-
1
)
{
try
{
...
...
@@ -806,14 +802,13 @@ public class CommandInterpreter {
private
void
listEventRequests
()
throws
NoSessionException
{
// Print set breakpoints
Iterator
iter
=
runtime
.
eventRequestSpecs
().
iterator
();
if
(
!
iter
.
hasNext
())
{
List
<
EventRequestSpec
>
specs
=
runtime
.
eventRequestSpecs
();
if
(
specs
.
isEmpty
())
{
env
.
notice
(
"No breakpoints/watchpoints/exceptions set."
);
}
else
{
OutputSink
out
=
env
.
getOutputSink
();
out
.
println
(
"Current breakpoints/watchpoints/exceptions set:"
);
while
(
iter
.
hasNext
())
{
EventRequestSpec
bp
=
(
EventRequestSpec
)
iter
.
next
();
for
(
EventRequestSpec
bp
:
specs
)
{
out
.
println
(
"\t"
+
bp
);
}
out
.
show
();
...
...
@@ -926,13 +921,13 @@ public class CommandInterpreter {
//### need 'clear all'
BreakpointSpec
bpSpec
=
parseBreakpointSpec
(
t
.
nextToken
());
if
(
bpSpec
!=
null
)
{
Iterator
iter
=
runtime
.
eventRequestSpecs
().
iterator
();
if
(!
iter
.
hasNext
())
{
List
<
EventRequestSpec
>
specs
=
runtime
.
eventRequestSpecs
();
if
(
specs
.
isEmpty
())
{
env
.
notice
(
"No breakpoints set."
);
}
else
{
List
<
BreakpointSpec
>
toDelete
=
new
ArrayList
<
BreakpointSpec
>();
while
(
iter
.
hasNext
())
{
BreakpointSpec
spec
=
(
BreakpointSpec
)
iter
.
next
();
List
<
EventRequestSpec
>
toDelete
=
new
ArrayList
<
EventRequestSpec
>();
for
(
EventRequestSpec
spec
:
specs
)
{
if
(
spec
.
equals
(
bpSpec
))
{
toDelete
.
add
(
spec
);
}
...
...
@@ -941,7 +936,7 @@ public class CommandInterpreter {
if
(
toDelete
.
size
()
<=
1
)
{
env
.
notice
(
"No matching breakpoint set."
);
}
for
(
Breakpoin
tSpec
spec
:
toDelete
)
{
for
(
EventReques
tSpec
spec
:
toDelete
)
{
runtime
.
delete
(
spec
);
}
}
...
...
@@ -988,7 +983,7 @@ public class CommandInterpreter {
lineno
=
Integer
.
valueOf
(
id
).
intValue
();
}
catch
(
NumberFormatException
nfe
)
{
// It isn't -- see if it's a method name.
List
meths
=
refType
.
methodsByName
(
id
);
List
<
Method
>
meths
=
refType
.
methodsByName
(
id
);
if
(
meths
==
null
||
meths
.
size
()
==
0
)
{
env
.
failure
(
id
+
" is not a valid line number or "
+
...
...
@@ -1001,7 +996,7 @@ public class CommandInterpreter {
refType
.
name
());
return
;
}
loc
=
((
Method
)
meths
.
get
(
0
)
).
location
();
loc
=
meths
.
get
(
0
).
location
();
lineno
=
loc
.
lineNumber
();
}
}
...
...
@@ -1121,7 +1116,7 @@ public class CommandInterpreter {
return
;
}
List
vars
;
List
<
LocalVariable
>
vars
;
try
{
vars
=
frame
.
visibleVariables
();
if
(
vars
==
null
||
vars
.
size
()
==
0
)
{
...
...
@@ -1136,15 +1131,13 @@ public class CommandInterpreter {
OutputSink
out
=
env
.
getOutputSink
();
out
.
println
(
"Method arguments:"
);
for
(
Iterator
it
=
vars
.
iterator
();
it
.
hasNext
();
)
{
LocalVariable
var
=
(
LocalVariable
)
it
.
next
();
for
(
LocalVariable
var
:
vars
)
{
if
(
var
.
isArgument
())
{
printVar
(
out
,
var
,
frame
);
}
}
out
.
println
(
"Local variables:"
);
for
(
Iterator
it
=
vars
.
iterator
();
it
.
hasNext
();
)
{
LocalVariable
var
=
(
LocalVariable
)
it
.
next
();
for
(
LocalVariable
var
:
vars
)
{
if
(!
var
.
isArgument
())
{
printVar
(
out
,
var
,
frame
);
}
...
...
@@ -1245,8 +1238,7 @@ public class CommandInterpreter {
private
void
dump
(
OutputSink
out
,
ObjectReference
obj
,
ReferenceType
refType
,
ReferenceType
refTypeBase
)
{
for
(
Iterator
it
=
refType
.
fields
().
iterator
();
it
.
hasNext
();
)
{
Field
field
=
(
Field
)
it
.
next
();
for
(
Field
field
:
refType
.
fields
())
{
out
.
print
(
" "
);
if
(!
refType
.
equals
(
refTypeBase
))
{
out
.
print
(
refType
.
name
()
+
"."
);
...
...
@@ -1261,9 +1253,8 @@ public class CommandInterpreter {
dump
(
out
,
obj
,
sup
,
refTypeBase
);
}
}
else
if
(
refType
instanceof
InterfaceType
)
{
List
sups
=
((
InterfaceType
)
refType
).
superinterfaces
();
for
(
Iterator
it
=
sups
.
iterator
();
it
.
hasNext
();
)
{
dump
(
out
,
obj
,
(
ReferenceType
)
it
.
next
(),
refTypeBase
);
for
(
InterfaceType
sup
:
((
InterfaceType
)
refType
).
superinterfaces
())
{
dump
(
out
,
obj
,
sup
,
refTypeBase
);
}
}
}
...
...
src/share/classes/com/sun/tools/example/debug/gui/JDBFileFilter.java
浏览文件 @
ab1229d1
...
...
@@ -201,11 +201,11 @@ public class JDBFileFilter extends FileFilter {
if
(
description
==
null
||
isExtensionListInDescription
())
{
fullDescription
=
description
==
null
?
"("
:
description
+
" ("
;
// build the description from the extension list
Enumeration
extensions
=
filters
.
keys
();
Enumeration
<
String
>
extensions
=
filters
.
keys
();
if
(
extensions
!=
null
)
{
fullDescription
+=
"."
+
(
String
)
extensions
.
nextElement
();
fullDescription
+=
"."
+
extensions
.
nextElement
();
while
(
extensions
.
hasMoreElements
())
{
fullDescription
+=
", "
+
(
String
)
extensions
.
nextElement
();
fullDescription
+=
", "
+
extensions
.
nextElement
();
}
}
fullDescription
+=
")"
;
...
...
src/share/classes/com/sun/tools/example/debug/gui/LaunchTool.java
浏览文件 @
ab1229d1
...
...
@@ -131,14 +131,13 @@ class LaunchTool {
final
JPanel
radioPanel
=
new
JPanel
();
final
ButtonGroup
radioGroup
=
new
ButtonGroup
();
VirtualMachineManager
manager
=
Bootstrap
.
virtualMachineManager
();
List
all
=
manager
.
allConnectors
();
List
<
Connector
>
all
=
manager
.
allConnectors
();
Map
<
ButtonModel
,
Connector
>
modelToConnector
=
new
HashMap
<
ButtonModel
,
Connector
>(
all
.
size
(),
0.5f
);
dialog
.
setModal
(
true
);
dialog
.
setTitle
(
"Select Connector Type"
);
radioPanel
.
setLayout
(
new
BoxLayout
(
radioPanel
,
BoxLayout
.
Y_AXIS
));
for
(
Iterator
it
=
all
.
iterator
();
it
.
hasNext
();
)
{
Connector
connector
=
(
Connector
)
it
.
next
();
for
(
Connector
connector
:
all
)
{
JRadioButton
radio
=
new
JRadioButton
(
connector
.
description
());
modelToConnector
.
put
(
radio
.
getModel
(),
connector
);
radioPanel
.
add
(
radio
);
...
...
@@ -166,7 +165,7 @@ class LaunchTool {
dialog
.
show
();
return
oked
[
0
]
?
(
Connector
)(
modelToConnector
.
get
(
radioGroup
.
getSelection
()
))
:
modelToConnector
.
get
(
radioGroup
.
getSelection
(
))
:
null
;
}
...
...
@@ -188,13 +187,12 @@ class LaunchTool {
// guts.add(new JLabel(connector.description()));
final
List
<
ArgRep
>
argReps
=
new
ArrayList
<
ArgRep
>(
args
.
size
());
for
(
Iterator
it
=
args
.
values
().
iterator
();
it
.
hasNext
();
)
{
Object
arg
=
it
.
next
();
for
(
Connector
.
Argument
arg
:
args
.
values
())
{
ArgRep
ar
;
if
(
arg
instanceof
Connector
.
BooleanArgument
)
{
ar
=
new
BooleanArgRep
((
Connector
.
BooleanArgument
)
arg
,
guts
);
}
else
{
ar
=
new
StringArgRep
(
(
Connector
.
Argument
)
arg
,
guts
);
ar
=
new
StringArgRep
(
arg
,
guts
);
}
argReps
.
add
(
ar
);
}
...
...
@@ -202,8 +200,7 @@ class LaunchTool {
JPanel
buttonPanel
=
okCancel
(
dialog
,
new
ActionListener
()
{
public
void
actionPerformed
(
ActionEvent
event
)
{
for
(
Iterator
it
=
argReps
.
iterator
();
it
.
hasNext
();
)
{
ArgRep
ar
=
(
ArgRep
)
it
.
next
();
for
(
ArgRep
ar
:
argReps
)
{
if
(!
ar
.
isSpecified
())
{
JOptionPane
.
showMessageDialog
(
dialog
,
ar
.
arg
.
label
()
+
...
...
src/share/classes/com/sun/tools/example/debug/gui/SearchPath.java
浏览文件 @
ab1229d1
...
...
@@ -42,7 +42,7 @@ public class SearchPath {
dlist
.
add
(
st
.
nextToken
());
}
pathString
=
searchPath
;
pathArray
=
(
String
[])
dlist
.
toArray
(
new
String
[
dlist
.
size
()]);
pathArray
=
dlist
.
toArray
(
new
String
[
dlist
.
size
()]);
}
public
boolean
isEmpty
()
{
...
...
@@ -54,7 +54,7 @@ public class SearchPath {
}
public
String
[]
asArray
()
{
return
(
String
[])
pathArray
.
clone
();
return
pathArray
.
clone
();
}
public
File
resolve
(
String
relativeFileName
)
{
...
...
@@ -89,7 +89,7 @@ public class SearchPath {
}
}
}
return
(
String
[])
s
.
toArray
(
new
String
[
s
.
size
()]);
return
s
.
toArray
(
new
String
[
s
.
size
()]);
}
}
src/share/classes/com/sun/tools/example/debug/gui/SourceManager.java
浏览文件 @
ab1229d1
...
...
@@ -113,7 +113,7 @@ public class SourceManager {
* Returns null if not available.
*/
public
SourceModel
sourceForClass
(
ReferenceType
refType
)
{
SourceModel
sm
=
(
SourceModel
)
classToSource
.
get
(
refType
);
SourceModel
sm
=
classToSource
.
get
(
refType
);
if
(
sm
!=
null
)
{
return
sm
;
}
...
...
@@ -140,10 +140,10 @@ public class SourceManager {
*/
//### Use hash table for this?
public
SourceModel
sourceForFile
(
File
path
)
{
Iterator
iter
=
sourceList
.
iterator
();
Iterator
<
SourceModel
>
iter
=
sourceList
.
iterator
();
SourceModel
sm
=
null
;
while
(
iter
.
hasNext
())
{
SourceModel
candidate
=
(
SourceModel
)
iter
.
next
();
SourceModel
candidate
=
iter
.
next
();
if
(
candidate
.
fileName
().
equals
(
path
))
{
sm
=
candidate
;
iter
.
remove
();
// Will move to start of list.
...
...
src/share/classes/com/sun/tools/example/debug/gui/SourceModel.java
浏览文件 @
ab1229d1
...
...
@@ -187,22 +187,17 @@ public class SourceModel extends AbstractListModel {
* when sourceLines is set.
*/
private
void
markClassLines
(
ReferenceType
refType
)
{
List
methods
=
refType
.
methods
();
for
(
Iterator
mit
=
methods
.
iterator
();
mit
.
hasNext
();)
{
Method
meth
=
(
Method
)
mit
.
next
();
for
(
Method
meth
:
refType
.
methods
())
{
try
{
List
lines
=
meth
.
allLineLocations
();
for
(
Iterator
lit
=
lines
.
iterator
();
lit
.
hasNext
();)
{
Location
loc
=
(
Location
)
lit
.
next
();
for
(
Location
loc
:
meth
.
allLineLocations
())
{
showExecutable
(
loc
.
lineNumber
(),
refType
);
}
}
catch
(
AbsentInformationException
exc
)
{
// do nothing
}
}
List
bps
=
env
.
getExecutionManager
().
eventRequestManager
().
breakpointRequests
();
for
(
Iterator
it
=
bps
.
iterator
();
it
.
hasNext
();)
{
BreakpointRequest
bp
=
(
BreakpointRequest
)
it
.
next
();
for
(
BreakpointRequest
bp
:
env
.
getExecutionManager
().
eventRequestManager
().
breakpointRequests
())
{
if
(
bp
.
location
()
!=
null
)
{
Location
loc
=
bp
.
location
();
if
(
loc
.
declaringType
().
equals
(
refType
))
{
...
...
@@ -224,8 +219,8 @@ public class SourceModel extends AbstractListModel {
}
finally
{
reader
.
close
();
}
for
(
Iterator
it
=
classes
.
iterator
();
it
.
hasNext
();
)
{
markClassLines
(
(
ClassType
)
it
.
next
()
);
for
(
ReferenceType
refType
:
classes
)
{
markClassLines
(
refType
);
}
}
...
...
src/share/classes/com/sun/tools/example/debug/gui/StackTraceTool.java
浏览文件 @
ab1229d1
...
...
@@ -139,7 +139,7 @@ public class StackTraceTool extends JPanel {
String
methName
=
meth
.
declaringType
().
name
()
+
'.'
+
meth
.
name
();
String
position
=
""
;
if
(
meth
instanceof
Method
&&
((
Method
)
meth
)
.
isNative
())
{
if
(
meth
.
isNative
())
{
position
=
" (native method)"
;
}
else
if
(
loc
.
lineNumber
()
!=
-
1
)
{
position
=
":"
+
loc
.
lineNumber
();
...
...
src/share/classes/com/sun/tools/example/debug/gui/ThreadTreeTool.java
浏览文件 @
ab1229d1
...
...
@@ -133,9 +133,7 @@ public class ThreadTreeTool extends JPanel {
public
void
sessionStart
(
EventObject
e
)
{
try
{
Iterator
iter
=
runtime
.
allThreads
().
iterator
();
while
(
iter
.
hasNext
())
{
ThreadReference
thread
=
((
ThreadReference
)
iter
.
next
());
for
(
ThreadReference
thread
:
runtime
.
allThreads
())
{
root
.
addThread
(
thread
);
}
}
catch
(
VMDisconnectedException
ee
)
{
...
...
@@ -244,16 +242,16 @@ public class ThreadTreeTool extends JPanel {
}
}
private
void
addThread
(
List
threadPath
,
ThreadReference
thread
)
{
private
void
addThread
(
List
<
String
>
threadPath
,
ThreadReference
thread
)
{
int
size
=
threadPath
.
size
();
if
(
size
==
0
)
{
return
;
}
else
if
(
size
==
1
)
{
String
name
=
(
String
)
threadPath
.
get
(
0
);
String
name
=
threadPath
.
get
(
0
);
insertNode
(
name
,
thread
);
}
else
{
String
head
=
(
String
)
threadPath
.
get
(
0
);
List
tail
=
threadPath
.
subList
(
1
,
size
);
String
head
=
threadPath
.
get
(
0
);
List
<
String
>
tail
=
threadPath
.
subList
(
1
,
size
);
ThreadTreeNode
child
=
insertNode
(
head
,
null
);
child
.
addThread
(
tail
,
thread
);
}
...
...
@@ -288,17 +286,17 @@ public class ThreadTreeTool extends JPanel {
}
}
private
void
removeThread
(
List
threadPath
,
ThreadReference
thread
)
{
private
void
removeThread
(
List
<
String
>
threadPath
,
ThreadReference
thread
)
{
int
size
=
threadPath
.
size
();
if
(
size
==
0
)
{
return
;
}
else
if
(
size
==
1
)
{
String
name
=
(
String
)
threadPath
.
get
(
0
);
String
name
=
threadPath
.
get
(
0
);
ThreadTreeNode
child
=
findLeafNode
(
thread
,
name
);
treeModel
.
removeNodeFromParent
(
child
);
}
else
{
String
head
=
(
String
)
threadPath
.
get
(
0
);
List
tail
=
threadPath
.
subList
(
1
,
size
);
String
head
=
threadPath
.
get
(
0
);
List
<
String
>
tail
=
threadPath
.
subList
(
1
,
size
);
ThreadTreeNode
child
=
findInternalNode
(
head
);
child
.
removeThread
(
tail
,
thread
);
if
(
child
.
isThreadGroup
()
&&
child
.
getChildCount
()
<
1
)
{
...
...
src/share/classes/com/sun/tools/example/debug/tty/BreakpointSpec.java
浏览文件 @
ab1229d1
...
...
@@ -34,7 +34,7 @@ import java.util.Iterator;
class
BreakpointSpec
extends
EventRequestSpec
{
String
methodId
;
List
methodArgs
;
List
<
String
>
methodArgs
;
int
lineNumber
;
BreakpointSpec
(
ReferenceTypeSpec
refSpec
,
int
lineNumber
)
{
...
...
@@ -45,7 +45,7 @@ class BreakpointSpec extends EventRequestSpec {
}
BreakpointSpec
(
ReferenceTypeSpec
refSpec
,
String
methodId
,
List
methodArgs
)
throws
MalformedMemberNameException
{
List
<
String
>
methodArgs
)
throws
MalformedMemberNameException
{
super
(
refSpec
);
this
.
methodId
=
methodId
;
this
.
methodArgs
=
methodArgs
;
...
...
@@ -83,7 +83,7 @@ class BreakpointSpec extends EventRequestSpec {
return
lineNumber
;
}
List
methodArgs
()
{
List
<
String
>
methodArgs
()
{
return
methodArgs
;
}
...
...
@@ -146,14 +146,13 @@ class BreakpointSpec extends EventRequestSpec {
buffer
.
append
(
'.'
);
buffer
.
append
(
methodId
);
if
(
methodArgs
!=
null
)
{
Iterator
iter
=
methodArgs
.
iterator
();
boolean
first
=
true
;
buffer
.
append
(
'('
);
while
(
iter
.
hasNext
()
)
{
for
(
String
arg
:
methodArgs
)
{
if
(!
first
)
{
buffer
.
append
(
','
);
}
buffer
.
append
(
(
String
)
iter
.
next
()
);
buffer
.
append
(
arg
);
first
=
false
;
}
buffer
.
append
(
")"
);
...
...
@@ -176,12 +175,12 @@ class BreakpointSpec extends EventRequestSpec {
location
=
method
.
location
();
}
else
{
// let AbsentInformationException be thrown
List
locs
=
refType
.
locationsOfLine
(
lineNumber
());
List
<
Location
>
locs
=
refType
.
locationsOfLine
(
lineNumber
());
if
(
locs
.
size
()
==
0
)
{
throw
new
LineNotFoundException
();
}
// TO DO: handle multiple locations
location
=
(
Location
)
locs
.
get
(
0
);
location
=
locs
.
get
(
0
);
if
(
location
.
method
()
==
null
)
{
throw
new
LineNotFoundException
();
}
...
...
@@ -202,8 +201,8 @@ class BreakpointSpec extends EventRequestSpec {
* and if the number of arguments in the method matches the
* number of names passed
*/
private
boolean
compareArgTypes
(
Method
method
,
List
nameList
)
{
List
argTypeNames
=
method
.
argumentTypeNames
();
private
boolean
compareArgTypes
(
Method
method
,
List
<
String
>
nameList
)
{
List
<
String
>
argTypeNames
=
method
.
argumentTypeNames
();
// If argument counts differ, we can stop here
if
(
argTypeNames
.
size
()
!=
nameList
.
size
())
{
...
...
@@ -213,8 +212,8 @@ class BreakpointSpec extends EventRequestSpec {
// Compare each argument type's name
int
nTypes
=
argTypeNames
.
size
();
for
(
int
i
=
0
;
i
<
nTypes
;
++
i
)
{
String
comp1
=
(
String
)
argTypeNames
.
get
(
i
);
String
comp2
=
(
String
)
nameList
.
get
(
i
);
String
comp1
=
argTypeNames
.
get
(
i
);
String
comp2
=
nameList
.
get
(
i
);
if
(!
comp1
.
equals
(
comp2
))
{
/*
* We have to handle varargs. EG, the
...
...
@@ -331,22 +330,17 @@ class BreakpointSpec extends EventRequestSpec {
List
<
String
>
argTypeNames
=
null
;
if
(
methodArgs
()
!=
null
)
{
argTypeNames
=
new
ArrayList
<
String
>(
methodArgs
().
size
());
Iterator
iter
=
methodArgs
().
iterator
();
while
(
iter
.
hasNext
())
{
String
name
=
(
String
)
iter
.
next
();
for
(
String
name
:
methodArgs
())
{
name
=
normalizeArgTypeName
(
name
);
argTypeNames
.
add
(
name
);
}
}
// Check each method in the class for matches
Iterator
iter
=
refType
.
methods
().
iterator
();
Method
firstMatch
=
null
;
// first method with matching name
Method
exactMatch
=
null
;
// (only) method with same name & sig
int
matchCount
=
0
;
// > 1 implies overload
while
(
iter
.
hasNext
())
{
Method
candidate
=
(
Method
)
iter
.
next
();
for
(
Method
candidate
:
refType
.
methods
())
{
if
(
candidate
.
name
().
equals
(
methodName
()))
{
matchCount
++;
...
...
src/share/classes/com/sun/tools/example/debug/tty/Commands.java
浏览文件 @
ab1229d1
此差异已折叠。
点击以展开。
src/share/classes/com/sun/tools/example/debug/tty/Env.java
浏览文件 @
ab1229d1
...
...
@@ -89,7 +89,7 @@ class Env {
sourceCache
.
clear
();
}
static
void
setSourcePath
(
List
srcList
)
{
static
void
setSourcePath
(
List
<
String
>
srcList
)
{
sourceMapper
=
new
SourceMapper
(
srcList
);
sourceCache
.
clear
();
}
...
...
@@ -106,10 +106,8 @@ class Env {
}
static
String
excludesString
()
{
Iterator
iter
=
excludes
().
iterator
();
StringBuffer
buffer
=
new
StringBuffer
();
while
(
iter
.
hasNext
())
{
String
pattern
=
(
String
)
iter
.
next
();
for
(
String
pattern
:
excludes
())
{
buffer
.
append
(
pattern
);
buffer
.
append
(
","
);
}
...
...
@@ -117,25 +115,19 @@ class Env {
}
static
void
addExcludes
(
StepRequest
request
)
{
Iterator
iter
=
excludes
().
iterator
();
while
(
iter
.
hasNext
())
{
String
pattern
=
(
String
)
iter
.
next
();
for
(
String
pattern
:
excludes
())
{
request
.
addClassExclusionFilter
(
pattern
);
}
}
static
void
addExcludes
(
MethodEntryRequest
request
)
{
Iterator
iter
=
excludes
().
iterator
();
while
(
iter
.
hasNext
())
{
String
pattern
=
(
String
)
iter
.
next
();
for
(
String
pattern
:
excludes
())
{
request
.
addClassExclusionFilter
(
pattern
);
}
}
static
void
addExcludes
(
MethodExitRequest
request
)
{
Iterator
iter
=
excludes
().
iterator
();
while
(
iter
.
hasNext
())
{
String
pattern
=
(
String
)
iter
.
next
();
for
(
String
pattern
:
excludes
())
{
request
.
addClassExclusionFilter
(
pattern
);
}
}
...
...
@@ -175,10 +167,10 @@ class Env {
try
{
String
fileName
=
location
.
sourceName
();
Iterator
iter
=
sourceCache
.
iterator
();
Iterator
<
SourceCode
>
iter
=
sourceCache
.
iterator
();
SourceCode
code
=
null
;
while
(
iter
.
hasNext
())
{
SourceCode
candidate
=
(
SourceCode
)
iter
.
next
();
SourceCode
candidate
=
iter
.
next
();
if
(
candidate
.
fileName
().
equals
(
fileName
))
{
code
=
candidate
;
iter
.
remove
();
...
...
@@ -269,10 +261,7 @@ class Env {
// loaded class whose name matches this limited regular
// expression is selected.
idToken
=
idToken
.
substring
(
1
);
List
classes
=
Env
.
vm
().
allClasses
();
Iterator
iter
=
classes
.
iterator
();
while
(
iter
.
hasNext
())
{
ReferenceType
type
=
((
ReferenceType
)
iter
.
next
());
for
(
ReferenceType
type
:
Env
.
vm
().
allClasses
())
{
if
(
type
.
name
().
endsWith
(
idToken
))
{
cls
=
type
;
break
;
...
...
@@ -280,21 +269,21 @@ class Env {
}
}
else
{
// It's a class name
List
classes
=
Env
.
vm
().
classesByName
(
idToken
);
List
<
ReferenceType
>
classes
=
Env
.
vm
().
classesByName
(
idToken
);
if
(
classes
.
size
()
>
0
)
{
// TO DO: handle multiples
cls
=
(
ReferenceType
)
classes
.
get
(
0
);
cls
=
classes
.
get
(
0
);
}
}
return
cls
;
}
static
Set
getSaveKeys
()
{
static
Set
<
String
>
getSaveKeys
()
{
return
savedValues
.
keySet
();
}
static
Value
getSavedValue
(
String
key
)
{
return
(
Value
)
savedValues
.
get
(
key
);
return
savedValues
.
get
(
key
);
}
static
void
setSavedValue
(
String
key
,
Value
value
)
{
...
...
@@ -327,7 +316,7 @@ class Env {
if
(
index
>=
sourceLines
.
size
())
{
return
null
;
}
else
{
return
(
String
)
sourceLines
.
get
(
index
);
return
sourceLines
.
get
(
index
);
}
}
}
...
...
src/share/classes/com/sun/tools/example/debug/tty/EventHandler.java
浏览文件 @
ab1229d1
...
...
@@ -150,7 +150,7 @@ public class EventHandler implements Runnable {
EventSet
eventSet
=
queue
.
remove
();
EventIterator
iter
=
eventSet
.
eventIterator
();
while
(
iter
.
hasNext
())
{
handleExitEvent
(
(
Event
)
iter
.
next
());
handleExitEvent
(
iter
.
next
());
}
}
catch
(
InterruptedException
exc
)
{
// ignore
...
...
@@ -183,7 +183,7 @@ public class EventHandler implements Runnable {
* If any event in the set has a thread associated with it,
* they all will, so just grab the first one.
*/
Event
event
=
(
Event
)
set
.
iterator
().
next
();
// Is there a better way?
Event
event
=
set
.
iterator
().
next
();
// Is there a better way?
thread
=
eventThread
(
event
);
}
else
{
thread
=
null
;
...
...
src/share/classes/com/sun/tools/example/debug/tty/EventRequestSpec.java
浏览文件 @
ab1229d1
...
...
@@ -101,10 +101,8 @@ abstract class EventRequestSpec {
* so that is all we need to examine.
*/
ArrayList
<
ExceptionRequest
>
deleteList
=
new
ArrayList
<
ExceptionRequest
>();
Iterator
iter
=
Env
.
vm
().
eventRequestManager
().
exceptionRequests
().
iterator
();
while
(
iter
.
hasNext
())
{
ExceptionRequest
er
=
(
ExceptionRequest
)
iter
.
next
();
for
(
ExceptionRequest
er
:
Env
.
vm
().
eventRequestManager
().
exceptionRequests
())
{
if
(
prs
.
matches
(
er
.
exception
()))
{
deleteList
.
add
(
er
);
}
...
...
@@ -115,9 +113,7 @@ abstract class EventRequestSpec {
}
private
EventRequest
resolveAgainstPreparedClasses
()
throws
Exception
{
Iterator
iter
=
Env
.
vm
().
allClasses
().
iterator
();
while
(
iter
.
hasNext
())
{
ReferenceType
refType
=
(
ReferenceType
)
iter
.
next
();
for
(
ReferenceType
refType
:
Env
.
vm
().
allClasses
())
{
if
(
refType
.
isPrepared
()
&&
refSpec
.
matches
(
refType
))
{
resolved
=
resolveEventRequest
(
refType
);
}
...
...
src/share/classes/com/sun/tools/example/debug/tty/EventRequestSpecList.java
浏览文件 @
ab1229d1
...
...
@@ -55,9 +55,7 @@ class EventRequestSpecList {
boolean
resolve
(
ClassPrepareEvent
event
)
{
boolean
failure
=
false
;
synchronized
(
eventRequestSpecs
)
{
Iterator
iter
=
eventRequestSpecs
.
iterator
();
while
(
iter
.
hasNext
())
{
EventRequestSpec
spec
=
(
EventRequestSpec
)
iter
.
next
();
for
(
EventRequestSpec
spec
:
eventRequestSpecs
)
{
if
(!
spec
.
isResolved
())
{
try
{
EventRequest
eventRequest
=
spec
.
resolve
(
event
);
...
...
@@ -77,9 +75,7 @@ class EventRequestSpecList {
}
void
resolveAll
()
{
Iterator
iter
=
eventRequestSpecs
.
iterator
();
while
(
iter
.
hasNext
())
{
EventRequestSpec
spec
=
(
EventRequestSpec
)
iter
.
next
();
for
(
EventRequestSpec
spec
:
eventRequestSpecs
)
{
try
{
EventRequest
eventRequest
=
spec
.
resolveEagerly
();
if
(
eventRequest
!=
null
)
{
...
...
@@ -106,16 +102,16 @@ class EventRequestSpecList {
}
}
EventRequestSpec
createBreakpoint
(
String
classPattern
,
int
line
)
throws
ClassNotFoundException
{
BreakpointSpec
createBreakpoint
(
String
classPattern
,
int
line
)
throws
ClassNotFoundException
{
ReferenceTypeSpec
refSpec
=
new
PatternReferenceTypeSpec
(
classPattern
);
return
new
BreakpointSpec
(
refSpec
,
line
);
}
EventReques
tSpec
createBreakpoint
(
String
classPattern
,
Breakpoin
tSpec
createBreakpoint
(
String
classPattern
,
String
methodId
,
List
methodArgs
)
List
<
String
>
methodArgs
)
throws
MalformedMemberNameException
,
ClassNotFoundException
{
ReferenceTypeSpec
refSpec
=
...
...
@@ -132,7 +128,7 @@ class EventRequestSpecList {
return
new
ExceptionSpec
(
refSpec
,
notifyCaught
,
notifyUncaught
);
}
EventReques
tSpec
createAccessWatchpoint
(
String
classPattern
,
Watchpoin
tSpec
createAccessWatchpoint
(
String
classPattern
,
String
fieldId
)
throws
MalformedMemberNameException
,
ClassNotFoundException
{
...
...
@@ -141,7 +137,7 @@ class EventRequestSpecList {
return
new
AccessWatchpointSpec
(
refSpec
,
fieldId
);
}
EventReques
tSpec
createModificationWatchpoint
(
String
classPattern
,
Watchpoin
tSpec
createModificationWatchpoint
(
String
classPattern
,
String
fieldId
)
throws
MalformedMemberNameException
,
ClassNotFoundException
{
...
...
@@ -154,7 +150,7 @@ class EventRequestSpecList {
synchronized
(
eventRequestSpecs
)
{
int
inx
=
eventRequestSpecs
.
indexOf
(
proto
);
if
(
inx
!=
-
1
)
{
EventRequestSpec
spec
=
(
EventRequestSpec
)
eventRequestSpecs
.
get
(
inx
);
EventRequestSpec
spec
=
eventRequestSpecs
.
get
(
inx
);
spec
.
remove
();
eventRequestSpecs
.
remove
(
inx
);
return
true
;
...
...
src/share/classes/com/sun/tools/example/debug/tty/SourceMapper.java
浏览文件 @
ab1229d1
...
...
@@ -39,15 +39,13 @@ class SourceMapper {
private
final
String
[]
dirs
;
SourceMapper
(
List
sourcepath
)
{
SourceMapper
(
List
<
String
>
sourcepath
)
{
/*
* sourcepath can arrive from the debugee as a List.
* (via PathSearchingVirtualMachine.classPath())
*/
List
<
String
>
dirList
=
new
ArrayList
<
String
>();
Iterator
iter
=
sourcepath
.
iterator
();
while
(
iter
.
hasNext
())
{
String
element
=
(
String
)
iter
.
next
();
for
(
String
element
:
sourcepath
)
{
//XXX remove .jar and .zip files; we want only directories on
//the source path. (Bug ID 4186582)
if
(
!
(
element
.
endsWith
(
".jar"
)
||
...
...
@@ -55,7 +53,7 @@ class SourceMapper {
dirList
.
add
(
element
);
}
}
dirs
=
(
String
[])
dirList
.
toArray
(
new
String
[
0
]);
dirs
=
dirList
.
toArray
(
new
String
[
0
]);
}
SourceMapper
(
String
sourcepath
)
{
...
...
@@ -79,7 +77,7 @@ class SourceMapper {
dirList
.
add
(
s
);
}
}
dirs
=
(
String
[])
dirList
.
toArray
(
new
String
[
0
]);
dirs
=
dirList
.
toArray
(
new
String
[
0
]);
}
/*
...
...
src/share/classes/com/sun/tools/example/debug/tty/TTY.java
浏览文件 @
ab1229d1
...
...
@@ -160,9 +160,7 @@ public class TTY implements EventNotifier {
// here the next time.
Env
.
setAtExitMethod
(
null
);
EventRequestManager
erm
=
Env
.
vm
().
eventRequestManager
();
Iterator
it
=
erm
.
methodExitRequests
().
iterator
();
while
(
it
.
hasNext
())
{
EventRequest
eReq
=
(
EventRequest
)
it
.
next
();
for
(
EventRequest
eReq
:
erm
.
methodExitRequests
())
{
if
(
eReq
.
equals
(
me
.
request
()))
{
eReq
.
disable
();
}
...
...
@@ -178,9 +176,8 @@ public class TTY implements EventNotifier {
public
void
vmInterrupted
()
{
Thread
.
yield
();
// fetch output
printCurrentLocation
();
Iterator
it
=
monitorCommands
.
iterator
();
while
(
it
.
hasNext
())
{
StringTokenizer
t
=
new
StringTokenizer
((
String
)
it
.
next
());
for
(
String
cmd
:
monitorCommands
)
{
StringTokenizer
t
=
new
StringTokenizer
(
cmd
);
t
.
nextToken
();
// get rid of monitor number
executeCommand
(
t
);
}
...
...
@@ -563,9 +560,8 @@ public class TTY implements EventNotifier {
++
monitorCount
;
monitorCommands
.
add
(
monitorCount
+
": "
+
t
.
nextToken
(
""
));
}
else
{
Iterator
it
=
monitorCommands
.
iterator
();
while
(
it
.
hasNext
())
{
MessageOutput
.
printDirectln
((
String
)
it
.
next
());
// Special case: use printDirectln()
for
(
String
cmd
:
monitorCommands
)
{
MessageOutput
.
printDirectln
(
cmd
);
// Special case: use printDirectln()
}
}
}
...
...
@@ -581,9 +577,7 @@ public class TTY implements EventNotifier {
return
;
}
String
monStr
=
monTok
+
":"
;
Iterator
it
=
monitorCommands
.
iterator
();
while
(
it
.
hasNext
())
{
String
cmd
=
(
String
)
it
.
next
();
for
(
String
cmd
:
monitorCommands
)
{
StringTokenizer
ct
=
new
StringTokenizer
(
cmd
);
if
(
ct
.
nextToken
().
equals
(
monStr
))
{
monitorCommands
.
remove
(
cmd
);
...
...
@@ -768,10 +762,8 @@ public class TTY implements EventNotifier {
}
private
static
boolean
supportsSharedMemory
()
{
List
connectors
=
Bootstrap
.
virtualMachineManager
().
allConnectors
();
Iterator
iter
=
connectors
.
iterator
();
while
(
iter
.
hasNext
())
{
Connector
connector
=
(
Connector
)
iter
.
next
();
for
(
Connector
connector
:
Bootstrap
.
virtualMachineManager
().
allConnectors
())
{
if
(
connector
.
transport
()
==
null
)
{
continue
;
}
...
...
src/share/classes/com/sun/tools/example/debug/tty/ThreadGroupIterator.java
浏览文件 @
ab1229d1
...
...
@@ -36,7 +36,7 @@ import java.util.Iterator;
* Descend the tree of thread groups.
* @author Robert G. Field
*/
class
ThreadGroupIterator
implements
Iterator
{
class
ThreadGroupIterator
implements
Iterator
<
ThreadGroupReference
>
{
private
final
Stack
<
Iterator
<
ThreadGroupReference
>>
stack
=
new
Stack
<
Iterator
<
ThreadGroupReference
>>();
ThreadGroupIterator
(
List
<
ThreadGroupReference
>
tgl
)
{
...
...
@@ -53,8 +53,8 @@ class ThreadGroupIterator implements Iterator {
this
(
Env
.
vm
().
topLevelThreadGroups
());
}
private
Iterator
top
()
{
return
(
Iterator
)
stack
.
peek
();
private
Iterator
<
ThreadGroupReference
>
top
()
{
return
stack
.
peek
();
}
/**
...
...
@@ -74,12 +74,12 @@ class ThreadGroupIterator implements Iterator {
return
!
stack
.
isEmpty
();
}
public
Object
next
()
{
public
ThreadGroupReference
next
()
{
return
nextThreadGroup
();
}
public
ThreadGroupReference
nextThreadGroup
()
{
ThreadGroupReference
tg
=
(
ThreadGroupReference
)
top
().
next
();
ThreadGroupReference
tg
=
top
().
next
();
push
(
tg
.
threadGroups
());
return
tg
;
}
...
...
src/share/classes/com/sun/tools/example/debug/tty/ThreadInfo.java
浏览文件 @
ab1229d1
...
...
@@ -56,9 +56,7 @@ class ThreadInfo {
private
static
void
initThreads
()
{
if
(!
gotInitialThreads
)
{
Iterator
iter
=
Env
.
vm
().
allThreads
().
iterator
();
while
(
iter
.
hasNext
())
{
ThreadReference
thread
=
(
ThreadReference
)
iter
.
next
();
for
(
ThreadReference
thread
:
Env
.
vm
().
allThreads
())
{
threads
.
add
(
new
ThreadInfo
(
thread
));
}
gotInitialThreads
=
true
;
...
...
@@ -113,9 +111,7 @@ class ThreadInfo {
current
=
null
;
group
=
null
;
synchronized
(
threads
)
{
Iterator
iter
=
threads
().
iterator
();
while
(
iter
.
hasNext
())
{
ThreadInfo
ti
=
(
ThreadInfo
)
iter
.
next
();
for
(
ThreadInfo
ti
:
threads
())
{
ti
.
invalidate
();
}
}
...
...
@@ -163,8 +159,7 @@ class ThreadInfo {
if
(
group
==
null
)
{
// Current thread group defaults to the first top level
// thread group.
setThreadGroup
((
ThreadGroupReference
)
Env
.
vm
().
topLevelThreadGroups
().
get
(
0
));
setThreadGroup
(
Env
.
vm
().
topLevelThreadGroups
().
get
(
0
));
}
return
group
;
}
...
...
@@ -173,9 +168,7 @@ class ThreadInfo {
ThreadInfo
retInfo
=
null
;
synchronized
(
threads
)
{
Iterator
iter
=
threads
().
iterator
();
while
(
iter
.
hasNext
())
{
ThreadInfo
ti
=
(
ThreadInfo
)
iter
.
next
();
for
(
ThreadInfo
ti
:
threads
())
{
if
(
ti
.
thread
.
uniqueID
()
==
id
)
{
retInfo
=
ti
;
break
;
...
...
@@ -208,7 +201,7 @@ class ThreadInfo {
*
* @return a <code>List</code> of the stack frames.
*/
List
getStack
()
throws
IncompatibleThreadStateException
{
List
<
StackFrame
>
getStack
()
throws
IncompatibleThreadStateException
{
return
thread
.
frames
();
}
...
...
src/share/classes/com/sun/tools/example/debug/tty/ThreadIterator.java
浏览文件 @
ab1229d1
...
...
@@ -30,8 +30,8 @@ import com.sun.jdi.ThreadReference;
import
java.util.List
;
import
java.util.Iterator
;
class
ThreadIterator
implements
Iterator
{
Iterator
it
=
null
;
class
ThreadIterator
implements
Iterator
<
ThreadReference
>
{
Iterator
<
ThreadReference
>
it
=
null
;
ThreadGroupIterator
tgi
;
ThreadIterator
(
ThreadGroupReference
tg
)
{
...
...
@@ -56,12 +56,12 @@ class ThreadIterator implements Iterator {
return
true
;
}
public
Object
next
()
{
public
ThreadReference
next
()
{
return
it
.
next
();
}
public
ThreadReference
nextThread
()
{
return
(
ThreadReference
)
next
();
return
next
();
}
public
void
remove
()
{
...
...
src/share/classes/com/sun/tools/example/debug/tty/VMConnection.java
浏览文件 @
ab1229d1
...
...
@@ -61,10 +61,8 @@ class VMConnection {
}
private
Connector
findConnector
(
String
name
)
{
List
connectors
=
Bootstrap
.
virtualMachineManager
().
allConnectors
();
Iterator
iter
=
connectors
.
iterator
();
while
(
iter
.
hasNext
())
{
Connector
connector
=
(
Connector
)
iter
.
next
();
for
(
Connector
connector
:
Bootstrap
.
virtualMachineManager
().
allConnectors
())
{
if
(
connector
.
name
().
equals
(
name
))
{
return
connector
;
}
...
...
@@ -108,7 +106,7 @@ class VMConnection {
String
value
=
token
.
substring
(
index
+
1
,
token
.
length
()
-
1
);
// Remove comma delimiter
Connector
.
Argument
argument
=
(
Connector
.
Argument
)
arguments
.
get
(
name
);
Connector
.
Argument
argument
=
arguments
.
get
(
name
);
if
(
argument
==
null
)
{
throw
new
IllegalArgumentException
(
MessageOutput
.
format
(
"Argument is not defined for connector:"
,
...
...
@@ -195,7 +193,7 @@ class VMConnection {
return
false
;
}
Connector
.
Argument
argument
=
(
Connector
.
Argument
)
connectorArgs
.
get
(
name
);
Connector
.
Argument
argument
=
connectorArgs
.
get
(
name
);
if
(
argument
==
null
)
{
return
false
;
}
...
...
@@ -204,7 +202,7 @@ class VMConnection {
}
String
connectorArg
(
String
name
)
{
Connector
.
Argument
argument
=
(
Connector
.
Argument
)
connectorArgs
.
get
(
name
);
Connector
.
Argument
argument
=
connectorArgs
.
get
(
name
);
if
(
argument
==
null
)
{
return
""
;
}
...
...
src/share/classes/com/sun/tools/hat/internal/server/ClassQuery.java
浏览文件 @
ab1229d1
...
...
@@ -99,8 +99,7 @@ class ClassQuery extends QueryHandler {
}
out
.
println
(
"<h2>Instance Data Members:</h2>"
);
JavaField
[]
ff
=
clazz
.
getFields
();
ff
=
(
JavaField
[])
ff
.
clone
();
JavaField
[]
ff
=
clazz
.
getFields
().
clone
();
ArraySorter
.
sort
(
ff
,
new
Comparer
()
{
public
int
compare
(
Object
lhs
,
Object
rhs
)
{
JavaField
left
=
(
JavaField
)
lhs
;
...
...
src/share/classes/com/sun/tools/hat/internal/server/PlatformClasses.java
浏览文件 @
ab1229d1
...
...
@@ -90,9 +90,7 @@ public class PlatformClasses {
// is the right thing to do anyway.
}
}
int
num
=
list
.
size
();
names
=
new
String
[
num
];
names
=
(
String
[])
list
.
toArray
(
names
);
names
=
list
.
toArray
(
new
String
[
list
.
size
()]);
}
return
names
;
}
...
...
src/share/classes/com/sun/tools/jdi/AbstractLauncher.java
浏览文件 @
ab1229d1
...
...
@@ -119,7 +119,7 @@ abstract class AbstractLauncher extends ConnectorImpl implements LaunchingConnec
String
[]
tokenArray
=
new
String
[
tokenList
.
size
()];
for
(
int
i
=
0
;
i
<
tokenList
.
size
();
i
++)
{
tokenArray
[
i
]
=
(
String
)
tokenList
.
get
(
i
);
tokenArray
[
i
]
=
tokenList
.
get
(
i
);
}
return
tokenArray
;
}
...
...
src/share/classes/com/sun/tools/jdi/ClassTypeImpl.java
浏览文件 @
ab1229d1
...
...
@@ -95,11 +95,8 @@ public class ClassTypeImpl extends ReferenceTypeImpl
}
public
List
<
ClassType
>
subclasses
()
{
List
<
ReferenceType
>
all
=
vm
.
allClasses
();
List
<
ClassType
>
subs
=
new
ArrayList
<
ClassType
>();
Iterator
iter
=
all
.
iterator
();
while
(
iter
.
hasNext
())
{
ReferenceType
refType
=
(
ReferenceType
)
iter
.
next
();
for
(
ReferenceType
refType
:
vm
.
allClasses
())
{
if
(
refType
instanceof
ClassType
)
{
ClassType
clazz
=
(
ClassType
)
refType
;
ClassType
superclass
=
clazz
.
superclass
();
...
...
@@ -223,7 +220,7 @@ public class ClassTypeImpl extends ReferenceTypeImpl
List
<?
extends
Value
>
arguments
=
method
.
validateAndPrepareArgumentsForInvoke
(
origArguments
);
ValueImpl
[]
args
=
(
ValueImpl
[])
arguments
.
toArray
(
new
ValueImpl
[
0
]);
ValueImpl
[]
args
=
arguments
.
toArray
(
new
ValueImpl
[
0
]);
JDWP
.
ClassType
.
InvokeMethod
ret
;
try
{
PacketStream
stream
=
...
...
@@ -271,7 +268,7 @@ public class ClassTypeImpl extends ReferenceTypeImpl
List
<
Value
>
arguments
=
method
.
validateAndPrepareArgumentsForInvoke
(
origArguments
);
ValueImpl
[]
args
=
(
ValueImpl
[])
arguments
.
toArray
(
new
ValueImpl
[
0
]);
ValueImpl
[]
args
=
arguments
.
toArray
(
new
ValueImpl
[
0
]);
JDWP
.
ClassType
.
NewInstance
ret
=
null
;
try
{
PacketStream
stream
=
...
...
@@ -301,11 +298,8 @@ public class ClassTypeImpl extends ReferenceTypeImpl
}
public
Method
concreteMethodByName
(
String
name
,
String
signature
)
{
List
methods
=
visibleMethods
();
Method
method
=
null
;
Iterator
iter
=
methods
.
iterator
();
while
(
iter
.
hasNext
())
{
Method
candidate
=
(
Method
)
iter
.
next
();
for
(
Method
candidate
:
visibleMethods
())
{
if
(
candidate
.
name
().
equals
(
name
)
&&
candidate
.
signature
().
equals
(
signature
)
&&
!
candidate
.
isAbstract
())
{
...
...
@@ -330,9 +324,7 @@ public class ClassTypeImpl extends ReferenceTypeImpl
* Avoid duplicate checking on each method by iterating through
* duplicate-free allInterfaces() rather than recursing
*/
Iterator
iter
=
allInterfaces
().
iterator
();
while
(
iter
.
hasNext
())
{
InterfaceType
interfaze
=
(
InterfaceType
)
iter
.
next
();
for
(
InterfaceType
interfaze
:
allInterfaces
())
{
list
.
addAll
(
interfaze
.
methods
());
}
...
...
src/share/classes/com/sun/tools/jdi/ConcreteMethodImpl.java
浏览文件 @
ab1229d1
...
...
@@ -247,7 +247,7 @@ public class ConcreteMethodImpl extends MethodImpl {
public
byte
[]
bytecodes
()
{
byte
[]
bytecodes
=
(
bytecodesRef
==
null
)
?
null
:
(
byte
[])
bytecodesRef
.
get
();
bytecodesRef
.
get
();
if
(
bytecodes
==
null
)
{
try
{
bytecodes
=
JDWP
.
Method
.
Bytecodes
.
...
...
@@ -262,7 +262,7 @@ public class ConcreteMethodImpl extends MethodImpl {
* to return the cached bytecodes directly; instead, we
* make a clone at the cost of using more memory.
*/
return
(
byte
[])
bytecodes
.
clone
();
return
bytecodes
.
clone
();
}
int
argSlotCount
()
throws
AbsentInformationException
{
...
...
@@ -279,7 +279,7 @@ public class ConcreteMethodImpl extends MethodImpl {
String
stratumID
=
stratum
.
id
();
SoftLocationXRefs
info
=
(
softOtherLocationXRefsRef
==
null
)
?
null
:
(
SoftLocationXRefs
)
softOtherLocationXRefsRef
.
get
();
softOtherLocationXRefsRef
.
get
();
if
(
info
!=
null
&&
info
.
stratumID
.
equals
(
stratumID
))
{
return
info
;
}
...
...
@@ -348,7 +348,7 @@ public class ConcreteMethodImpl extends MethodImpl {
private
SoftLocationXRefs
getBaseLocations
()
{
SoftLocationXRefs
info
=
(
softBaseLocationXRefsRef
==
null
)
?
null
:
(
SoftLocationXRefs
)
softBaseLocationXRefsRef
.
get
();
softBaseLocationXRefsRef
.
get
();
if
(
info
!=
null
)
{
return
info
;
}
...
...
src/share/classes/com/sun/tools/jdi/EventSetImpl.java
浏览文件 @
ab1229d1
...
...
@@ -56,10 +56,8 @@ public class EventSetImpl extends ArrayList<Event> implements EventSet {
public
String
toString
()
{
String
string
=
"event set, policy:"
+
suspendPolicy
+
", count:"
+
this
.
size
()
+
" = {"
;
Iterator
iter
=
this
.
iterator
();
boolean
first
=
true
;
while
(
iter
.
hasNext
())
{
Event
event
=
(
Event
)
iter
.
next
();
for
(
Event
event
:
this
)
{
if
(!
first
)
{
string
+=
", "
;
}
...
...
@@ -787,9 +785,7 @@ public class EventSetImpl extends ArrayList<Event> implements EventSet {
}
private
ThreadReference
eventThread
()
{
Iterator
iter
=
this
.
iterator
();
while
(
iter
.
hasNext
())
{
Event
event
=
(
Event
)
iter
.
next
();
for
(
Event
event
:
this
)
{
if
(
event
instanceof
ThreadedEventImpl
)
{
return
((
ThreadedEventImpl
)
event
).
thread
();
}
...
...
@@ -846,7 +842,7 @@ public class EventSetImpl extends ArrayList<Event> implements EventSet {
}
public
Event
nextEvent
()
{
return
(
Event
)
next
();
return
next
();
}
public
void
remove
()
{
...
...
src/share/classes/com/sun/tools/jdi/JNITypeParser.java
浏览文件 @
ab1229d1
...
...
@@ -82,7 +82,7 @@ public class JNITypeParser {
}
String
typeName
()
{
return
(
String
)
typeNameList
().
get
(
typeNameList
().
size
()-
1
);
return
typeNameList
().
get
(
typeNameList
().
size
()-
1
);
}
List
<
String
>
argumentTypeNames
()
{
...
...
@@ -90,7 +90,7 @@ public class JNITypeParser {
}
String
signature
()
{
return
(
String
)
signatureList
().
get
(
signatureList
().
size
()-
1
);
return
signatureList
().
get
(
signatureList
().
size
()-
1
);
}
List
<
String
>
argumentSignatures
()
{
...
...
src/share/classes/com/sun/tools/jdi/MethodImpl.java
浏览文件 @
ab1229d1
...
...
@@ -158,7 +158,7 @@ public abstract class MethodImpl extends TypeComponentImpl
Type
argumentType
(
int
index
)
throws
ClassNotLoadedException
{
ReferenceTypeImpl
enclosing
=
(
ReferenceTypeImpl
)
declaringType
();
String
signature
=
(
String
)
argumentSignatures
().
get
(
index
);
String
signature
=
argumentSignatures
().
get
(
index
);
return
enclosing
.
findType
(
signature
);
}
...
...
@@ -263,10 +263,10 @@ public abstract class MethodImpl extends TypeComponentImpl
return
argumentType
(
index
);
}
public
String
typeName
(){
return
(
String
)
argumentTypeNames
().
get
(
index
);
return
argumentTypeNames
().
get
(
index
);
}
public
String
signature
()
{
return
(
String
)
argumentSignatures
().
get
(
index
);
return
argumentSignatures
().
get
(
index
);
}
public
Type
findType
(
String
signature
)
throws
ClassNotLoadedException
{
return
MethodImpl
.
this
.
findType
(
signature
);
...
...
@@ -307,7 +307,7 @@ public abstract class MethodImpl extends TypeComponentImpl
arguments
.
add
(
argArray
);
return
;
}
Value
nthArgValue
=
(
Value
)
arguments
.
get
(
paramCount
-
1
);
Value
nthArgValue
=
arguments
.
get
(
paramCount
-
1
);
if
(
nthArgValue
==
null
)
{
return
;
}
...
...
@@ -371,7 +371,7 @@ public abstract class MethodImpl extends TypeComponentImpl
}
for
(
int
i
=
0
;
i
<
argSize
;
i
++)
{
Value
value
=
(
Value
)
arguments
.
get
(
i
);
Value
value
=
arguments
.
get
(
i
);
value
=
ValueImpl
.
prepareForAssignment
(
value
,
new
ArgumentContainer
(
i
));
arguments
.
set
(
i
,
value
);
...
...
@@ -386,11 +386,11 @@ public abstract class MethodImpl extends TypeComponentImpl
sb
.
append
(
name
());
sb
.
append
(
"("
);
boolean
first
=
true
;
for
(
Iterator
it
=
argumentTypeNames
().
iterator
();
it
.
hasNext
();
)
{
for
(
String
name
:
argumentTypeNames
()
)
{
if
(!
first
)
{
sb
.
append
(
", "
);
}
sb
.
append
(
(
String
)
it
.
next
()
);
sb
.
append
(
name
);
first
=
false
;
}
sb
.
append
(
")"
);
...
...
src/share/classes/com/sun/tools/jdi/ObjectReferenceImpl.java
浏览文件 @
ab1229d1
...
...
@@ -383,7 +383,7 @@ public class ObjectReferenceImpl extends ValueImpl
List
<
Value
>
arguments
=
method
.
validateAndPrepareArgumentsForInvoke
(
origArguments
);
ValueImpl
[]
args
=
(
ValueImpl
[])
arguments
.
toArray
(
new
ValueImpl
[
0
]);
ValueImpl
[]
args
=
arguments
.
toArray
(
new
ValueImpl
[
0
]);
JDWP
.
ObjectReference
.
InvokeMethod
ret
;
try
{
PacketStream
stream
=
...
...
@@ -583,7 +583,7 @@ public class ObjectReferenceImpl extends ValueImpl
// Validate assignment
ReferenceType
destType
=
(
ReferenceTypeImpl
)
destination
.
type
();
ReferenceTypeImpl
myType
=
(
ReferenceTypeImpl
)
referenceType
();
if
(!
myType
.
isAssignableTo
(
(
ReferenceType
)
destType
))
{
if
(!
myType
.
isAssignableTo
(
destType
))
{
JNITypeParser
parser
=
new
JNITypeParser
(
destType
.
signature
());
String
destTypeName
=
parser
.
typeName
();
throw
new
InvalidTypeException
(
"Can't assign "
+
...
...
src/share/classes/com/sun/tools/jdi/PacketStream.java
浏览文件 @
ab1229d1
...
...
@@ -485,7 +485,7 @@ class PacketStream {
* Read field represented as vm specific byte sequence.
*/
Field
readField
()
{
ReferenceTypeImpl
refType
=
(
ReferenceTypeImpl
)
readReferenceType
();
ReferenceTypeImpl
refType
=
readReferenceType
();
long
fieldRef
=
readFieldRef
();
return
refType
.
getFieldMirror
(
fieldRef
);
}
...
...
src/share/classes/com/sun/tools/jdi/ReferenceTypeImpl.java
浏览文件 @
ab1229d1
...
...
@@ -59,7 +59,7 @@ implements ReferenceType {
private
boolean
constantPoolInfoGotten
=
false
;
private
int
constanPoolCount
;
private
byte
[]
constantPoolBytes
;
private
SoftReference
constantPoolBytesRef
=
null
;
private
SoftReference
<
byte
[]>
constantPoolBytesRef
=
null
;
/* to mark a SourceFile request that returned a genuine JDWP.Error.ABSENT_INFORMATION */
private
static
final
String
ABSENT_BASE_SOURCE_NAME
=
"**ABSENT_BASE_SOURCE_NAME**"
;
...
...
@@ -352,13 +352,10 @@ implements ReferenceType {
abstract
List
<?
extends
ReferenceType
>
inheritedTypes
();
void
addVisibleFields
(
List
<
Field
>
visibleList
,
Map
<
String
,
Field
>
visibleTable
,
List
<
String
>
ambiguousNames
)
{
List
<
Field
>
list
=
visibleFields
();
Iterator
iter
=
list
.
iterator
();
while
(
iter
.
hasNext
())
{
Field
field
=
(
Field
)
iter
.
next
();
for
(
Field
field
:
visibleFields
())
{
String
name
=
field
.
name
();
if
(!
ambiguousNames
.
contains
(
name
))
{
Field
duplicate
=
(
Field
)
visibleTable
.
get
(
name
);
Field
duplicate
=
visibleTable
.
get
(
name
);
if
(
duplicate
==
null
)
{
visibleList
.
add
(
field
);
visibleTable
.
put
(
name
,
field
);
...
...
@@ -402,10 +399,8 @@ implements ReferenceType {
* hide.
*/
List
<
Field
>
retList
=
new
ArrayList
<
Field
>(
fields
());
iter
=
retList
.
iterator
();
while
(
iter
.
hasNext
())
{
Field
field
=
(
Field
)
iter
.
next
();
Field
hidden
=
(
Field
)
visibleTable
.
get
(
field
.
name
());
for
(
Field
field
:
retList
)
{
Field
hidden
=
visibleTable
.
get
(
field
.
name
());
if
(
hidden
!=
null
)
{
visibleList
.
remove
(
hidden
);
}
...
...
@@ -515,12 +510,9 @@ implements ReferenceType {
* methods.
*/
void
addToMethodMap
(
Map
<
String
,
Method
>
methodMap
,
List
<
Method
>
methodList
)
{
Iterator
iter
=
methodList
.
iterator
();
while
(
iter
.
hasNext
())
{
Method
method
=
(
Method
)
iter
.
next
();
for
(
Method
method
:
methodList
)
methodMap
.
put
(
method
.
name
().
concat
(
method
.
signature
()),
method
);
}
}
abstract
void
addVisibleMethods
(
Map
<
String
,
Method
>
methodMap
);
...
...
@@ -549,9 +541,7 @@ implements ReferenceType {
public
List
<
Method
>
methodsByName
(
String
name
)
{
List
<
Method
>
methods
=
visibleMethods
();
ArrayList
<
Method
>
retList
=
new
ArrayList
<
Method
>(
methods
.
size
());
Iterator
iter
=
methods
.
iterator
();
while
(
iter
.
hasNext
())
{
Method
candidate
=
(
Method
)
iter
.
next
();
for
(
Method
candidate
:
methods
)
{
if
(
candidate
.
name
().
equals
(
name
))
{
retList
.
add
(
candidate
);
}
...
...
@@ -563,9 +553,7 @@ implements ReferenceType {
public
List
<
Method
>
methodsByName
(
String
name
,
String
signature
)
{
List
<
Method
>
methods
=
visibleMethods
();
ArrayList
<
Method
>
retList
=
new
ArrayList
<
Method
>(
methods
.
size
());
Iterator
iter
=
methods
.
iterator
();
while
(
iter
.
hasNext
())
{
Method
candidate
=
(
Method
)
iter
.
next
();
for
(
Method
candidate
:
methods
)
{
if
(
candidate
.
name
().
equals
(
name
)
&&
candidate
.
signature
().
equals
(
signature
))
{
retList
.
add
(
candidate
);
...
...
@@ -706,7 +694,7 @@ implements ReferenceType {
}
public
String
sourceName
()
throws
AbsentInformationException
{
return
(
String
)(
sourceNames
(
vm
.
getDefaultStratum
()).
get
(
0
)
);
return
sourceNames
(
vm
.
getDefaultStratum
()).
get
(
0
);
}
public
List
<
String
>
sourceNames
(
String
stratumID
)
...
...
@@ -796,7 +784,7 @@ implements ReferenceType {
if
(!
vm
.
canGetSourceDebugExtension
())
{
return
NO_SDE_INFO_MARK
;
}
SDE
sde
=
(
sdeRef
==
null
)
?
null
:
(
SDE
)
sdeRef
.
get
();
SDE
sde
=
(
sdeRef
==
null
)
?
null
:
sdeRef
.
get
();
if
(
sde
==
null
)
{
String
extension
=
null
;
try
{
...
...
@@ -1034,13 +1022,13 @@ implements ReferenceType {
throw
exc
;
}
if
(
constantPoolBytesRef
!=
null
)
{
byte
[]
cpbytes
=
(
byte
[])
constantPoolBytesRef
.
get
();
byte
[]
cpbytes
=
constantPoolBytesRef
.
get
();
/*
* Arrays are always modifiable, so it is a little unsafe
* to return the cached bytecodes directly; instead, we
* make a clone at the cost of using more memory.
*/
return
(
byte
[])
cpbytes
.
clone
();
return
cpbytes
.
clone
();
}
else
{
return
null
;
}
...
...
src/share/classes/com/sun/tools/jdi/SDE.java
浏览文件 @
ab1229d1
...
...
@@ -327,7 +327,7 @@ class SDE {
ignoreWhite
();
while
(((
ch
=
sdeRead
())
!=
'\n'
)
&&
(
ch
!=
'\r'
))
{
sb
.
append
(
(
char
)
ch
);
sb
.
append
(
ch
);
}
// check for CR LF
if
((
ch
==
'\r'
)
&&
(
sdePeek
()
==
'\n'
))
{
...
...
src/share/classes/com/sun/tools/jdi/StackFrameImpl.java
浏览文件 @
ab1229d1
...
...
@@ -162,7 +162,7 @@ public class StackFrameImpl extends MirrorImpl
for
(
LocalVariable
variable
:
allVariables
)
{
String
name
=
variable
.
name
();
if
(
variable
.
isVisible
(
this
))
{
LocalVariable
existing
=
(
LocalVariable
)
map
.
get
(
name
);
LocalVariable
existing
=
map
.
get
(
name
);
if
((
existing
==
null
)
||
((
LocalVariableImpl
)
variable
).
hides
(
existing
))
{
map
.
put
(
name
,
variable
);
...
...
@@ -330,7 +330,7 @@ public class StackFrameImpl extends MirrorImpl
slot
=
1
;
}
for
(
int
ii
=
0
;
ii
<
count
;
++
ii
)
{
char
sigChar
=
(
char
)
argSigs
.
get
(
ii
).
charAt
(
0
);
char
sigChar
=
argSigs
.
get
(
ii
).
charAt
(
0
);
slots
[
ii
]
=
new
JDWP
.
StackFrame
.
GetValues
.
SlotInfo
(
slot
++,(
byte
)
sigChar
);
if
(
sigChar
==
'J'
||
sigChar
==
'D'
)
{
slot
++;
...
...
src/share/classes/com/sun/tools/jdi/TargetVM.java
浏览文件 @
ab1229d1
...
...
@@ -148,7 +148,7 @@ public class TargetVM implements Runnable {
idString
=
String
.
valueOf
(
p
.
id
);
synchronized
(
waitingQueue
)
{
p2
=
(
Packet
)
waitingQueue
.
get
(
idString
);
p2
=
waitingQueue
.
get
(
idString
);
if
(
p2
!=
null
)
waitingQueue
.
remove
(
idString
);
...
...
src/share/classes/com/sun/tools/jdi/ThreadGroupReferenceImpl.java
浏览文件 @
ab1229d1
...
...
@@ -86,30 +86,22 @@ public class ThreadGroupReferenceImpl extends ObjectReferenceImpl
}
public
void
suspend
()
{
List
threads
=
threads
();
Iterator
iter
=
threads
.
iterator
();
while
(
iter
.
hasNext
())
{
((
ThreadReference
)
iter
.
next
()).
suspend
();
for
(
ThreadReference
thread
:
threads
())
{
thread
.
suspend
();
}
List
groups
=
threadGroups
();
iter
=
groups
.
iterator
();
while
(
iter
.
hasNext
())
{
((
ThreadGroupReference
)
iter
.
next
()).
suspend
();
for
(
ThreadGroupReference
threadGroup
:
threadGroups
())
{
threadGroup
.
suspend
();
}
}
public
void
resume
()
{
List
threads
=
threads
();
Iterator
iter
=
threads
.
iterator
();
while
(
iter
.
hasNext
())
{
((
ThreadReference
)
iter
.
next
()).
resume
();
for
(
ThreadReference
thread
:
threads
())
{
thread
.
resume
();
}
List
groups
=
threadGroups
();
iter
=
groups
.
iterator
();
while
(
iter
.
hasNext
())
{
((
ThreadGroupReference
)
iter
.
next
()).
resume
();
for
(
ThreadGroupReference
threadGroup
:
threadGroups
())
{
threadGroup
.
resume
();
}
}
...
...
src/share/classes/com/sun/tools/jdi/VirtualMachineImpl.java
浏览文件 @
ab1229d1
...
...
@@ -1191,8 +1191,7 @@ class VirtualMachineImpl extends MirrorImpl
}
requests
=
new
JDWP
.
VirtualMachine
.
DisposeObjects
.
Request
[
size
];
for
(
int
i
=
0
;
i
<
requests
.
length
;
i
++)
{
SoftObjectReference
ref
=
(
SoftObjectReference
)
batchedDisposeRequests
.
get
(
i
);
SoftObjectReference
ref
=
batchedDisposeRequests
.
get
(
i
);
if
((
traceFlags
&
TRACE_OBJREFS
)
!=
0
)
{
printTrace
(
"Disposing object "
+
ref
.
key
().
longValue
()
+
" (ref count = "
+
ref
.
count
()
+
")"
);
...
...
@@ -1436,7 +1435,7 @@ class VirtualMachineImpl extends MirrorImpl
}
ObjectReferenceImpl
object
()
{
return
(
ObjectReferenceImpl
)
get
();
return
get
();
}
}
}
src/share/classes/com/sun/tools/jdi/VirtualMachineManagerImpl.java
浏览文件 @
ab1229d1
...
...
@@ -92,7 +92,7 @@ public class VirtualMachineManagerImpl implements VirtualMachineManagerService {
Connector
connector
;
try
{
connector
=
(
Connector
)
connectors
.
next
();
connector
=
connectors
.
next
();
}
catch
(
ThreadDeath
x
)
{
throw
x
;
}
catch
(
Exception
x
)
{
...
...
@@ -121,7 +121,7 @@ public class VirtualMachineManagerImpl implements VirtualMachineManagerService {
TransportService
transportService
;
try
{
transportService
=
(
TransportService
)
transportServices
.
next
();
transportService
=
transportServices
.
next
();
}
catch
(
ThreadDeath
x
)
{
throw
x
;
}
catch
(
Exception
x
)
{
...
...
src/share/classes/java/io/ObjectInputStream.java
浏览文件 @
ab1229d1
...
...
@@ -212,7 +212,8 @@ public class ObjectInputStream
private
static
final
Object
unsharedMarker
=
new
Object
();
/** table mapping primitive type names to corresponding class objects */
private
static
final
HashMap
primClasses
=
new
HashMap
(
8
,
1.0
F
);
private
static
final
HashMap
<
String
,
Class
<?>>
primClasses
=
new
HashMap
<
String
,
Class
<?>>(
8
,
1.0
F
);
static
{
primClasses
.
put
(
"boolean"
,
boolean
.
class
);
primClasses
.
put
(
"byte"
,
byte
.
class
);
...
...
@@ -620,7 +621,7 @@ public class ObjectInputStream
try
{
return
Class
.
forName
(
name
,
false
,
latestUserDefinedLoader
());
}
catch
(
ClassNotFoundException
ex
)
{
Class
cl
=
(
Class
)
primClasses
.
get
(
name
);
Class
<?>
cl
=
primClasses
.
get
(
name
);
if
(
cl
!=
null
)
{
return
cl
;
}
else
{
...
...
@@ -1254,11 +1255,11 @@ public class ObjectInputStream
* override security-sensitive non-final methods. Returns true if subclass
* is "safe", false otherwise.
*/
private
static
boolean
auditSubclass
(
final
Class
subcl
)
{
private
static
boolean
auditSubclass
(
final
Class
<?>
subcl
)
{
Boolean
result
=
AccessController
.
doPrivileged
(
new
PrivilegedAction
<
Boolean
>()
{
public
Boolean
run
()
{
for
(
Class
cl
=
subcl
;
for
(
Class
<?>
cl
=
subcl
;
cl
!=
ObjectInputStream
.
class
;
cl
=
cl
.
getSuperclass
())
{
...
...
@@ -2217,9 +2218,9 @@ public class ObjectInputStream
try
{
while
(
list
!=
null
)
{
AccessController
.
doPrivileged
(
new
PrivilegedExceptionAction
()
new
PrivilegedExceptionAction
<
Void
>
()
{
public
Object
run
()
throws
InvalidObjectException
{
public
Void
run
()
throws
InvalidObjectException
{
list
.
obj
.
validateObject
();
return
null
;
}
...
...
src/share/classes/java/io/ObjectStreamClass.java
浏览文件 @
ab1229d1
...
...
@@ -77,7 +77,7 @@ public class ObjectStreamClass implements Serializable {
NO_FIELDS
;
/** reflection factory for obtaining serialization constructors */
private
static
final
ReflectionFactory
reflFactory
=
(
ReflectionFactory
)
private
static
final
ReflectionFactory
reflFactory
=
AccessController
.
doPrivileged
(
new
ReflectionFactory
.
GetReflectionFactoryAction
());
...
...
@@ -216,10 +216,10 @@ public class ObjectStreamClass implements Serializable {
public
long
getSerialVersionUID
()
{
// REMIND: synchronize instead of relying on volatile?
if
(
suid
==
null
)
{
suid
=
(
Long
)
AccessController
.
doPrivileged
(
new
PrivilegedAction
()
{
public
Object
run
()
{
return
Long
.
valueOf
(
computeDefaultSUID
(
cl
)
);
suid
=
AccessController
.
doPrivileged
(
new
PrivilegedAction
<
Long
>
()
{
public
Long
run
()
{
return
computeDefaultSUID
(
cl
);
}
}
);
...
...
@@ -392,8 +392,8 @@ public class ObjectStreamClass implements Serializable {
}
if
(
interrupted
)
{
AccessController
.
doPrivileged
(
new
PrivilegedAction
()
{
public
Object
run
()
{
new
PrivilegedAction
<
Void
>
()
{
public
Void
run
()
{
Thread
.
currentThread
().
interrupt
();
return
null
;
}
...
...
@@ -427,8 +427,8 @@ public class ObjectStreamClass implements Serializable {
localDesc
=
this
;
if
(
serializable
)
{
AccessController
.
doPrivileged
(
new
PrivilegedAction
()
{
public
Object
run
()
{
AccessController
.
doPrivileged
(
new
PrivilegedAction
<
Void
>
()
{
public
Void
run
()
{
if
(
isEnum
)
{
suid
=
Long
.
valueOf
(
0
);
fields
=
NO_FIELDS
;
...
...
@@ -802,7 +802,7 @@ public class ObjectStreamClass implements Serializable {
* non-primitive types, and any other non-null type matches assignable
* types only. Returns matching field, or null if no match found.
*/
ObjectStreamField
getField
(
String
name
,
Class
type
)
{
ObjectStreamField
getField
(
String
name
,
Class
<?>
type
)
{
for
(
int
i
=
0
;
i
<
fields
.
length
;
i
++)
{
ObjectStreamField
f
=
fields
[
i
];
if
(
f
.
getName
().
equals
(
name
))
{
...
...
@@ -811,7 +811,7 @@ public class ObjectStreamClass implements Serializable {
{
return
f
;
}
Class
ftype
=
f
.
getType
();
Class
<?>
ftype
=
f
.
getType
();
if
(
ftype
!=
null
&&
type
.
isAssignableFrom
(
ftype
))
{
return
f
;
}
...
...
@@ -1130,7 +1130,7 @@ public class ObjectStreamClass implements Serializable {
private
ClassDataSlot
[]
getClassDataLayout0
()
throws
InvalidClassException
{
ArrayList
slots
=
new
ArrayList
();
ArrayList
<
ClassDataSlot
>
slots
=
new
ArrayList
<
ClassDataSlot
>
();
Class
start
=
cl
,
end
=
cl
;
// locate closest non-serializable superclass
...
...
@@ -1171,8 +1171,7 @@ public class ObjectStreamClass implements Serializable {
// order slots from superclass -> subclass
Collections
.
reverse
(
slots
);
return
(
ClassDataSlot
[])
slots
.
toArray
(
new
ClassDataSlot
[
slots
.
size
()]);
return
slots
.
toArray
(
new
ClassDataSlot
[
slots
.
size
()]);
}
/**
...
...
@@ -1309,9 +1308,9 @@ public class ObjectStreamClass implements Serializable {
* Access checks are disabled on the returned constructor (if any), since
* the defining class may still be non-public.
*/
private
static
Constructor
getExternalizableConstructor
(
Class
cl
)
{
private
static
Constructor
getExternalizableConstructor
(
Class
<?>
cl
)
{
try
{
Constructor
cons
=
cl
.
getDeclaredConstructor
((
Class
[])
null
);
Constructor
cons
=
cl
.
getDeclaredConstructor
((
Class
<?>
[])
null
);
cons
.
setAccessible
(
true
);
return
((
cons
.
getModifiers
()
&
Modifier
.
PUBLIC
)
!=
0
)
?
cons
:
null
;
...
...
@@ -1325,15 +1324,15 @@ public class ObjectStreamClass implements Serializable {
* superclass, or null if none found. Access checks are disabled on the
* returned constructor (if any).
*/
private
static
Constructor
getSerializableConstructor
(
Class
cl
)
{
Class
initCl
=
cl
;
private
static
Constructor
getSerializableConstructor
(
Class
<?>
cl
)
{
Class
<?>
initCl
=
cl
;
while
(
Serializable
.
class
.
isAssignableFrom
(
initCl
))
{
if
((
initCl
=
initCl
.
getSuperclass
())
==
null
)
{
return
null
;
}
}
try
{
Constructor
cons
=
initCl
.
getDeclaredConstructor
((
Class
[])
null
);
Constructor
cons
=
initCl
.
getDeclaredConstructor
((
Class
<?>
[])
null
);
int
mods
=
cons
.
getModifiers
();
if
((
mods
&
Modifier
.
PRIVATE
)
!=
0
||
((
mods
&
(
Modifier
.
PUBLIC
|
Modifier
.
PROTECTED
))
==
0
&&
...
...
@@ -1355,12 +1354,12 @@ public class ObjectStreamClass implements Serializable {
* null if no match found. Access checks are disabled on the returned
* method (if any).
*/
private
static
Method
getInheritableMethod
(
Class
cl
,
String
name
,
private
static
Method
getInheritableMethod
(
Class
<?>
cl
,
String
name
,
Class
[]
argTypes
,
Class
returnType
)
{
Method
meth
=
null
;
Class
defCl
=
cl
;
Class
<?>
defCl
=
cl
;
while
(
defCl
!=
null
)
{
try
{
meth
=
defCl
.
getDeclaredMethod
(
name
,
argTypes
);
...
...
@@ -1391,9 +1390,9 @@ public class ObjectStreamClass implements Serializable {
* class, or null if none found. Access checks are disabled on the
* returned method (if any).
*/
private
static
Method
getPrivateMethod
(
Class
cl
,
String
name
,
Class
[]
argTypes
,
Class
returnType
)
private
static
Method
getPrivateMethod
(
Class
<?>
cl
,
String
name
,
Class
<?>
[]
argTypes
,
Class
<?>
returnType
)
{
try
{
Method
meth
=
cl
.
getDeclaredMethod
(
name
,
argTypes
);
...
...
@@ -1567,7 +1566,7 @@ public class ObjectStreamClass implements Serializable {
ObjectStreamField
[]
boundFields
=
new
ObjectStreamField
[
serialPersistentFields
.
length
];
Set
fieldNames
=
new
HashSet
(
serialPersistentFields
.
length
);
Set
<
String
>
fieldNames
=
new
HashSet
<
String
>
(
serialPersistentFields
.
length
);
for
(
int
i
=
0
;
i
<
serialPersistentFields
.
length
;
i
++)
{
ObjectStreamField
spf
=
serialPersistentFields
[
i
];
...
...
@@ -1605,7 +1604,7 @@ public class ObjectStreamClass implements Serializable {
*/
private
static
ObjectStreamField
[]
getDefaultSerialFields
(
Class
cl
)
{
Field
[]
clFields
=
cl
.
getDeclaredFields
();
ArrayList
list
=
new
ArrayList
();
ArrayList
<
ObjectStreamField
>
list
=
new
ArrayList
<
ObjectStreamField
>
();
int
mask
=
Modifier
.
STATIC
|
Modifier
.
TRANSIENT
;
for
(
int
i
=
0
;
i
<
clFields
.
length
;
i
++)
{
...
...
@@ -1615,7 +1614,7 @@ public class ObjectStreamClass implements Serializable {
}
int
size
=
list
.
size
();
return
(
size
==
0
)
?
NO_FIELDS
:
(
ObjectStreamField
[])
list
.
toArray
(
new
ObjectStreamField
[
size
]);
list
.
toArray
(
new
ObjectStreamField
[
size
]);
}
/**
...
...
@@ -1688,11 +1687,9 @@ public class ObjectStreamClass implements Serializable {
for
(
int
i
=
0
;
i
<
fields
.
length
;
i
++)
{
fieldSigs
[
i
]
=
new
MemberSignature
(
fields
[
i
]);
}
Arrays
.
sort
(
fieldSigs
,
new
Comparator
()
{
public
int
compare
(
Object
o1
,
Object
o2
)
{
String
name1
=
((
MemberSignature
)
o1
).
name
;
String
name2
=
((
MemberSignature
)
o2
).
name
;
return
name1
.
compareTo
(
name2
);
Arrays
.
sort
(
fieldSigs
,
new
Comparator
<
MemberSignature
>()
{
public
int
compare
(
MemberSignature
ms1
,
MemberSignature
ms2
)
{
return
ms1
.
name
.
compareTo
(
ms2
.
name
);
}
});
for
(
int
i
=
0
;
i
<
fieldSigs
.
length
;
i
++)
{
...
...
@@ -1721,11 +1718,9 @@ public class ObjectStreamClass implements Serializable {
for
(
int
i
=
0
;
i
<
cons
.
length
;
i
++)
{
consSigs
[
i
]
=
new
MemberSignature
(
cons
[
i
]);
}
Arrays
.
sort
(
consSigs
,
new
Comparator
()
{
public
int
compare
(
Object
o1
,
Object
o2
)
{
String
sig1
=
((
MemberSignature
)
o1
).
signature
;
String
sig2
=
((
MemberSignature
)
o2
).
signature
;
return
sig1
.
compareTo
(
sig2
);
Arrays
.
sort
(
consSigs
,
new
Comparator
<
MemberSignature
>()
{
public
int
compare
(
MemberSignature
ms1
,
MemberSignature
ms2
)
{
return
ms1
.
signature
.
compareTo
(
ms2
.
signature
);
}
});
for
(
int
i
=
0
;
i
<
consSigs
.
length
;
i
++)
{
...
...
@@ -1746,10 +1741,8 @@ public class ObjectStreamClass implements Serializable {
for
(
int
i
=
0
;
i
<
methods
.
length
;
i
++)
{
methSigs
[
i
]
=
new
MemberSignature
(
methods
[
i
]);
}
Arrays
.
sort
(
methSigs
,
new
Comparator
()
{
public
int
compare
(
Object
o1
,
Object
o2
)
{
MemberSignature
ms1
=
(
MemberSignature
)
o1
;
MemberSignature
ms2
=
(
MemberSignature
)
o2
;
Arrays
.
sort
(
methSigs
,
new
Comparator
<
MemberSignature
>()
{
public
int
compare
(
MemberSignature
ms1
,
MemberSignature
ms2
)
{
int
comp
=
ms1
.
name
.
compareTo
(
ms2
.
name
);
if
(
comp
==
0
)
{
comp
=
ms1
.
signature
.
compareTo
(
ms2
.
signature
);
...
...
@@ -1859,7 +1852,7 @@ public class ObjectStreamClass implements Serializable {
keys
=
new
long
[
nfields
];
offsets
=
new
int
[
nfields
];
typeCodes
=
new
char
[
nfields
];
ArrayList
typeList
=
new
ArrayList
();
ArrayList
<
Class
<?>>
typeList
=
new
ArrayList
<
Class
<?>>
();
for
(
int
i
=
0
;
i
<
nfields
;
i
++)
{
ObjectStreamField
f
=
fields
[
i
];
...
...
@@ -1873,7 +1866,7 @@ public class ObjectStreamClass implements Serializable {
}
}
types
=
(
Class
[])
typeList
.
toArray
(
new
Class
[
typeList
.
size
()]);
types
=
typeList
.
toArray
(
new
Class
<?>
[
typeList
.
size
()]);
numPrimFields
=
nfields
-
types
.
length
;
}
...
...
src/share/classes/java/lang/Class.java
浏览文件 @
ab1229d1
...
...
@@ -345,9 +345,9 @@ public final
// since we have to do the security check here anyway
// (the stack depth is wrong for the Constructor's
// security check to work)
java
.
security
.
AccessController
.
doPrivileged
(
new
java
.
security
.
PrivilegedAction
()
{
public
Object
run
()
{
java
.
security
.
AccessController
.
doPrivileged
(
new
java
.
security
.
PrivilegedAction
<
Void
>
()
{
public
Void
run
()
{
c
.
setAccessible
(
true
);
return
null
;
}
...
...
@@ -1302,10 +1302,10 @@ public final
// out anything other than public members and (2) public member access
// has already been ok'd by the SecurityManager.
Class
[]
result
=
(
Class
[])
java
.
security
.
AccessController
.
doPrivileged
(
new
java
.
security
.
PrivilegedAction
()
{
public
Object
run
()
{
java
.
util
.
List
<
Class
>
list
=
new
java
.
util
.
ArrayList
();
return
java
.
security
.
AccessController
.
doPrivileged
(
new
java
.
security
.
PrivilegedAction
<
Class
[]>
()
{
public
Class
[]
run
()
{
List
<
Class
>
list
=
new
ArrayList
<
Class
>
();
Class
currentClass
=
Class
.
this
;
while
(
currentClass
!=
null
)
{
Class
[]
members
=
currentClass
.
getDeclaredClasses
();
...
...
@@ -1316,12 +1316,9 @@ public final
}
currentClass
=
currentClass
.
getSuperclass
();
}
Class
[]
empty
=
{};
return
list
.
toArray
(
empty
);
return
list
.
toArray
(
new
Class
[
0
]);
}
});
return
result
;
}
...
...
@@ -2215,15 +2212,15 @@ public final
// Caches for certain reflective results
private
static
boolean
useCaches
=
true
;
private
volatile
transient
SoftReference
declaredFields
;
private
volatile
transient
SoftReference
publicFields
;
private
volatile
transient
SoftReference
declaredMethods
;
private
volatile
transient
SoftReference
publicMethods
;
private
volatile
transient
SoftReference
declaredConstructors
;
private
volatile
transient
SoftReference
publicConstructors
;
private
volatile
transient
SoftReference
<
Field
[]>
declaredFields
;
private
volatile
transient
SoftReference
<
Field
[]>
publicFields
;
private
volatile
transient
SoftReference
<
Method
[]>
declaredMethods
;
private
volatile
transient
SoftReference
<
Method
[]>
publicMethods
;
private
volatile
transient
SoftReference
<
Constructor
<
T
>[]>
declaredConstructors
;
private
volatile
transient
SoftReference
<
Constructor
<
T
>[]>
publicConstructors
;
// Intermediate results for getFields and getMethods
private
volatile
transient
SoftReference
declaredPublicFields
;
private
volatile
transient
SoftReference
declaredPublicMethods
;
private
volatile
transient
SoftReference
<
Field
[]>
declaredPublicFields
;
private
volatile
transient
SoftReference
<
Method
[]>
declaredPublicMethods
;
// Incremented by the VM on each call to JVM TI RedefineClasses()
// that redefines this class or a superclass.
...
...
@@ -2295,11 +2292,11 @@ public final
clearCachesOnClassRedefinition
();
if
(
publicOnly
)
{
if
(
declaredPublicFields
!=
null
)
{
res
=
(
Field
[])
declaredPublicFields
.
get
();
res
=
declaredPublicFields
.
get
();
}
}
else
{
if
(
declaredFields
!=
null
)
{
res
=
(
Field
[])
declaredFields
.
get
();
res
=
declaredFields
.
get
();
}
}
if
(
res
!=
null
)
return
res
;
...
...
@@ -2308,9 +2305,9 @@ public final
res
=
Reflection
.
filterFields
(
this
,
getDeclaredFields0
(
publicOnly
));
if
(
useCaches
)
{
if
(
publicOnly
)
{
declaredPublicFields
=
new
SoftReference
(
res
);
declaredPublicFields
=
new
SoftReference
<
Field
[]>
(
res
);
}
else
{
declaredFields
=
new
SoftReference
(
res
);
declaredFields
=
new
SoftReference
<
Field
[]>
(
res
);
}
}
return
res
;
...
...
@@ -2319,22 +2316,22 @@ public final
// Returns an array of "root" fields. These Field objects must NOT
// be propagated to the outside world, but must instead be copied
// via ReflectionFactory.copyField.
private
Field
[]
privateGetPublicFields
(
Set
traversedInterfaces
)
{
private
Field
[]
privateGetPublicFields
(
Set
<
Class
<?>>
traversedInterfaces
)
{
checkInitted
();
Field
[]
res
=
null
;
if
(
useCaches
)
{
clearCachesOnClassRedefinition
();
if
(
publicFields
!=
null
)
{
res
=
(
Field
[])
publicFields
.
get
();
res
=
publicFields
.
get
();
}
if
(
res
!=
null
)
return
res
;
}
// No cached value available; compute value recursively.
// Traverse in correct order for getField().
List
fields
=
new
ArrayList
();
List
<
Field
>
fields
=
new
ArrayList
<
Field
>
();
if
(
traversedInterfaces
==
null
)
{
traversedInterfaces
=
new
HashSet
();
traversedInterfaces
=
new
HashSet
<
Class
<?>>
();
}
// Local fields
...
...
@@ -2342,9 +2339,7 @@ public final
addAll
(
fields
,
tmp
);
// Direct superinterfaces, recursively
Class
[]
interfaces
=
getInterfaces
();
for
(
int
i
=
0
;
i
<
interfaces
.
length
;
i
++)
{
Class
c
=
interfaces
[
i
];
for
(
Class
<?>
c
:
getInterfaces
())
{
if
(!
traversedInterfaces
.
contains
(
c
))
{
traversedInterfaces
.
add
(
c
);
addAll
(
fields
,
c
.
privateGetPublicFields
(
traversedInterfaces
));
...
...
@@ -2353,7 +2348,7 @@ public final
// Direct superclass, recursively
if
(!
isInterface
())
{
Class
c
=
getSuperclass
();
Class
<?>
c
=
getSuperclass
();
if
(
c
!=
null
)
{
addAll
(
fields
,
c
.
privateGetPublicFields
(
traversedInterfaces
));
}
...
...
@@ -2362,12 +2357,12 @@ public final
res
=
new
Field
[
fields
.
size
()];
fields
.
toArray
(
res
);
if
(
useCaches
)
{
publicFields
=
new
SoftReference
(
res
);
publicFields
=
new
SoftReference
<
Field
[]>
(
res
);
}
return
res
;
}
private
static
void
addAll
(
Collection
c
,
Field
[]
o
)
{
private
static
void
addAll
(
Collection
<
Field
>
c
,
Field
[]
o
)
{
for
(
int
i
=
0
;
i
<
o
.
length
;
i
++)
{
c
.
add
(
o
[
i
]);
}
...
...
@@ -2383,18 +2378,18 @@ public final
// Returns an array of "root" constructors. These Constructor
// objects must NOT be propagated to the outside world, but must
// instead be copied via ReflectionFactory.copyConstructor.
private
Constructor
[]
privateGetDeclaredConstructors
(
boolean
publicOnly
)
{
private
Constructor
<
T
>
[]
privateGetDeclaredConstructors
(
boolean
publicOnly
)
{
checkInitted
();
Constructor
[]
res
=
null
;
Constructor
<
T
>
[]
res
=
null
;
if
(
useCaches
)
{
clearCachesOnClassRedefinition
();
if
(
publicOnly
)
{
if
(
publicConstructors
!=
null
)
{
res
=
(
Constructor
[])
publicConstructors
.
get
();
res
=
publicConstructors
.
get
();
}
}
else
{
if
(
declaredConstructors
!=
null
)
{
res
=
(
Constructor
[])
declaredConstructors
.
get
();
res
=
declaredConstructors
.
get
();
}
}
if
(
res
!=
null
)
return
res
;
...
...
@@ -2407,9 +2402,9 @@ public final
}
if
(
useCaches
)
{
if
(
publicOnly
)
{
publicConstructors
=
new
SoftReference
(
res
);
publicConstructors
=
new
SoftReference
<
Constructor
<
T
>[]>
(
res
);
}
else
{
declaredConstructors
=
new
SoftReference
(
res
);
declaredConstructors
=
new
SoftReference
<
Constructor
<
T
>[]>
(
res
);
}
}
return
res
;
...
...
@@ -2431,11 +2426,11 @@ public final
clearCachesOnClassRedefinition
();
if
(
publicOnly
)
{
if
(
declaredPublicMethods
!=
null
)
{
res
=
(
Method
[])
declaredPublicMethods
.
get
();
res
=
declaredPublicMethods
.
get
();
}
}
else
{
if
(
declaredMethods
!=
null
)
{
res
=
(
Method
[])
declaredMethods
.
get
();
res
=
declaredMethods
.
get
();
}
}
if
(
res
!=
null
)
return
res
;
...
...
@@ -2444,9 +2439,9 @@ public final
res
=
Reflection
.
filterMethods
(
this
,
getDeclaredMethods0
(
publicOnly
));
if
(
useCaches
)
{
if
(
publicOnly
)
{
declaredPublicMethods
=
new
SoftReference
(
res
);
declaredPublicMethods
=
new
SoftReference
<
Method
[]>
(
res
);
}
else
{
declaredMethods
=
new
SoftReference
(
res
);
declaredMethods
=
new
SoftReference
<
Method
[]>
(
res
);
}
}
return
res
;
...
...
@@ -2552,7 +2547,7 @@ public final
if
(
useCaches
)
{
clearCachesOnClassRedefinition
();
if
(
publicMethods
!=
null
)
{
res
=
(
Method
[])
publicMethods
.
get
();
res
=
publicMethods
.
get
();
}
if
(
res
!=
null
)
return
res
;
}
...
...
@@ -2602,7 +2597,7 @@ public final
methods
.
compactAndTrim
();
res
=
methods
.
getArray
();
if
(
useCaches
)
{
publicMethods
=
new
SoftReference
(
res
);
publicMethods
=
new
SoftReference
<
Method
[]>
(
res
);
}
return
res
;
}
...
...
@@ -2713,11 +2708,11 @@ public final
private
Constructor
<
T
>
getConstructor0
(
Class
[]
parameterTypes
,
int
which
)
throws
NoSuchMethodException
{
Constructor
[]
constructors
=
privateGetDeclaredConstructors
((
which
==
Member
.
PUBLIC
));
for
(
int
i
=
0
;
i
<
constructors
.
length
;
i
++
)
{
Constructor
<
T
>
[]
constructors
=
privateGetDeclaredConstructors
((
which
==
Member
.
PUBLIC
));
for
(
Constructor
<
T
>
constructor
:
constructors
)
{
if
(
arrayContentsEq
(
parameterTypes
,
constructor
s
[
i
]
.
getParameterTypes
()))
{
return
getReflectionFactory
().
copyConstructor
(
constructor
s
[
i
]
);
constructor
.
getParameterTypes
()))
{
return
getReflectionFactory
().
copyConstructor
(
constructor
);
}
}
throw
new
NoSuchMethodException
(
getName
()
+
".<init>"
+
argumentTypesToString
(
parameterTypes
));
...
...
@@ -2767,18 +2762,18 @@ public final
return
out
;
}
private
static
Constructor
[]
copyConstructors
(
Constructor
[]
arg
)
{
Constructor
[]
out
=
new
Constructor
[
arg
.
length
]
;
private
static
<
U
>
Constructor
<
U
>[]
copyConstructors
(
Constructor
<
U
>
[]
arg
)
{
Constructor
<
U
>[]
out
=
arg
.
clone
()
;
ReflectionFactory
fact
=
getReflectionFactory
();
for
(
int
i
=
0
;
i
<
arg
.
length
;
i
++)
{
out
[
i
]
=
fact
.
copyConstructor
(
arg
[
i
]);
for
(
int
i
=
0
;
i
<
out
.
length
;
i
++)
{
out
[
i
]
=
fact
.
copyConstructor
(
out
[
i
]);
}
return
out
;
}
private
native
Field
[]
getDeclaredFields0
(
boolean
publicOnly
);
private
native
Method
[]
getDeclaredMethods0
(
boolean
publicOnly
);
private
native
Constructor
[]
getDeclaredConstructors0
(
boolean
publicOnly
);
private
native
Constructor
<
T
>
[]
getDeclaredConstructors0
(
boolean
publicOnly
);
private
native
Class
[]
getDeclaredClasses0
();
private
static
String
argumentTypesToString
(
Class
[]
argTypes
)
{
...
...
@@ -2883,7 +2878,7 @@ public final
// Fetches the factory for reflective objects
private
static
ReflectionFactory
getReflectionFactory
()
{
if
(
reflectionFactory
==
null
)
{
reflectionFactory
=
(
ReflectionFactory
)
reflectionFactory
=
java
.
security
.
AccessController
.
doPrivileged
(
new
sun
.
reflect
.
ReflectionFactory
.
GetReflectionFactoryAction
());
}
...
...
@@ -2895,8 +2890,8 @@ public final
private
static
boolean
initted
=
false
;
private
static
void
checkInitted
()
{
if
(
initted
)
return
;
AccessController
.
doPrivileged
(
new
PrivilegedAction
()
{
public
Object
run
()
{
AccessController
.
doPrivileged
(
new
PrivilegedAction
<
Void
>
()
{
public
Void
run
()
{
// Tests to ensure the system properties table is fully
// initialized. This is needed because reflection code is
// called very early in the initialization process (before
...
...
@@ -2941,17 +2936,17 @@ public final
/**
* Returns the elements of this enum class or null if this
* Class object does not represent an enum type;
* identical to getEnumConstants
Shared except that
*
the result is
uncloned, cached, and shared by all callers.
* identical to getEnumConstants
except that the result is
* uncloned, cached, and shared by all callers.
*/
T
[]
getEnumConstantsShared
()
{
if
(
enumConstants
==
null
)
{
if
(!
isEnum
())
return
null
;
try
{
final
Method
values
=
getMethod
(
"values"
);
java
.
security
.
AccessController
.
doPrivileged
(
new
java
.
security
.
PrivilegedAction
()
{
public
Object
run
()
{
java
.
security
.
AccessController
.
doPrivileged
(
new
java
.
security
.
PrivilegedAction
<
Void
>
()
{
public
Void
run
()
{
values
.
setAccessible
(
true
);
return
null
;
}
...
...
src/share/classes/java/lang/ClassLoader.java
浏览文件 @
ab1229d1
...
...
@@ -39,6 +39,7 @@ import java.security.PrivilegedAction;
import
java.security.PrivilegedActionException
;
import
java.security.PrivilegedExceptionAction
;
import
java.security.ProtectionDomain
;
import
java.security.cert.Certificate
;
import
java.util.Enumeration
;
import
java.util.Hashtable
;
import
java.util.HashMap
;
...
...
@@ -172,17 +173,18 @@ public abstract class ClassLoader {
private
ClassLoader
parent
;
// Hashtable that maps packages to certs
private
Hashtable
package2certs
=
new
Hashtable
(
11
);
private
Hashtable
<
String
,
Certificate
[]>
package2certs
=
new
Hashtable
<
String
,
Certificate
[]>(
11
);
// Shared among all packages with unsigned classes
java
.
security
.
cert
.
Certificate
[]
nocerts
;
Certificate
[]
nocerts
;
// The classes loaded by this class loader. The only purpose of this table
// is to keep the classes from being GC'ed until the loader is GC'ed.
private
Vector
classes
=
new
Vector
();
private
Vector
<
Class
<?>>
classes
=
new
Vector
<
Class
<?>>
();
// The initiating protection domains for all classes loaded by this loader
private
Set
domains
=
new
HashSet
();
private
Set
<
ProtectionDomain
>
domains
=
new
HashSet
<
ProtectionDomain
>
();
// Invoked by the VM to record every loaded class with this loader.
void
addClass
(
Class
c
)
{
...
...
@@ -191,7 +193,7 @@ public abstract class ClassLoader {
// The packages defined in this class loader. Each package name is mapped
// to its corresponding Package object.
private
HashMap
packages
=
new
HashMap
();
private
HashMap
<
String
,
Package
>
packages
=
new
HashMap
<
String
,
Package
>
();
/**
* Creates a new class loader using the specified parent class loader for
...
...
@@ -342,8 +344,8 @@ public abstract class ClassLoader {
final
String
name
=
cls
.
getName
();
final
int
i
=
name
.
lastIndexOf
(
'.'
);
if
(
i
!=
-
1
)
{
AccessController
.
doPrivileged
(
new
PrivilegedAction
()
{
public
Object
run
()
{
AccessController
.
doPrivileged
(
new
PrivilegedAction
<
Void
>
()
{
public
Void
run
()
{
sm
.
checkPackageAccess
(
name
.
substring
(
0
,
i
));
return
null
;
}
...
...
@@ -524,17 +526,20 @@ public abstract class ClassLoader {
// Class format error - try to transform the bytecode and
// define the class again
//
Object
[]
transformers
=
ClassFileTransformer
.
getTransformers
();
ClassFileTransformer
[]
transformers
=
ClassFileTransformer
.
getTransformers
();
Class
c
=
null
;
for
(
int
i
=
0
;
transformers
!=
null
&&
i
<
transformers
.
length
;
i
++)
{
try
{
// Transform byte code using transformer
byte
[]
tb
=
((
ClassFileTransformer
)
transformers
[
i
]).
transform
(
b
,
off
,
len
);
c
=
defineClass1
(
name
,
tb
,
0
,
tb
.
length
,
protectionDomain
,
source
);
break
;
}
catch
(
ClassFormatError
cfe2
)
{
// If ClassFormatError occurs, try next transformer
if
(
transformers
!=
null
)
{
for
(
ClassFileTransformer
transformer
:
transformers
)
{
try
{
// Transform byte code using transformer
byte
[]
tb
=
transformer
.
transform
(
b
,
off
,
len
);
c
=
defineClass1
(
name
,
tb
,
0
,
tb
.
length
,
protectionDomain
,
source
);
break
;
}
catch
(
ClassFormatError
cfe2
)
{
// If ClassFormatError occurs, try next transformer
}
}
}
...
...
@@ -550,7 +555,7 @@ public abstract class ClassLoader {
private
void
postDefineClass
(
Class
c
,
ProtectionDomain
protectionDomain
)
{
if
(
protectionDomain
.
getCodeSource
()
!=
null
)
{
java
.
security
.
cert
.
Certificate
certs
[]
=
Certificate
certs
[]
=
protectionDomain
.
getCodeSource
().
getCertificates
();
if
(
certs
!=
null
)
setSigners
(
c
,
certs
);
...
...
@@ -767,8 +772,7 @@ public abstract class ClassLoader {
private
synchronized
void
checkCerts
(
String
name
,
CodeSource
cs
)
{
int
i
=
name
.
lastIndexOf
(
'.'
);
String
pname
=
(
i
==
-
1
)
?
""
:
name
.
substring
(
0
,
i
);
java
.
security
.
cert
.
Certificate
[]
pcerts
=
(
java
.
security
.
cert
.
Certificate
[])
package2certs
.
get
(
pname
);
Certificate
[]
pcerts
=
package2certs
.
get
(
pname
);
if
(
pcerts
==
null
)
{
// first class in this package gets to define which
// certificates must be the same for all other classes
...
...
@@ -778,12 +782,12 @@ public abstract class ClassLoader {
}
if
(
pcerts
==
null
)
{
if
(
nocerts
==
null
)
nocerts
=
new
java
.
security
.
cert
.
Certificate
[
0
];
nocerts
=
new
Certificate
[
0
];
pcerts
=
nocerts
;
}
package2certs
.
put
(
pname
,
pcerts
);
}
else
{
java
.
security
.
cert
.
Certificate
[]
certs
=
null
;
Certificate
[]
certs
=
null
;
if
(
cs
!=
null
)
{
certs
=
cs
.
getCertificates
();
}
...
...
@@ -799,8 +803,8 @@ public abstract class ClassLoader {
* check to make sure the certs for the new class (certs) are the same as
* the certs for the first class inserted in the package (pcerts)
*/
private
boolean
compareCerts
(
java
.
security
.
cert
.
Certificate
[]
pcerts
,
java
.
security
.
cert
.
Certificate
[]
certs
)
private
boolean
compareCerts
(
Certificate
[]
pcerts
,
Certificate
[]
certs
)
{
// certs can be null, indicating no certs.
if
((
certs
==
null
)
||
(
certs
.
length
==
0
))
{
...
...
@@ -1031,7 +1035,7 @@ public abstract class ClassLoader {
}
tmp
[
1
]
=
findResources
(
name
);
return
new
CompoundEnumeration
(
tmp
);
return
new
CompoundEnumeration
<
URL
>
(
tmp
);
}
/**
...
...
@@ -1068,7 +1072,7 @@ public abstract class ClassLoader {
* @since 1.2
*/
protected
Enumeration
<
URL
>
findResources
(
String
name
)
throws
IOException
{
return
new
CompoundEnumeration
(
new
Enumeration
[
0
]
);
return
java
.
util
.
Collections
.
emptyEnumeration
(
);
}
/**
...
...
@@ -1134,13 +1138,13 @@ public abstract class ClassLoader {
/**
* Find resources from the VM's built-in classloader.
*/
private
static
Enumeration
getBootstrapResources
(
String
name
)
private
static
Enumeration
<
URL
>
getBootstrapResources
(
String
name
)
throws
IOException
{
final
Enumeration
e
=
getBootstrapClassPath
().
getResources
(
name
);
return
new
Enumeration
()
{
public
Object
nextElement
()
{
return
((
Resource
)
e
.
nextElement
()
).
getURL
();
final
Enumeration
<
Resource
>
e
=
getBootstrapClassPath
().
getResources
(
name
);
return
new
Enumeration
<
URL
>
()
{
public
URL
nextElement
()
{
return
e
.
nextElement
(
).
getURL
();
}
public
boolean
hasMoreElements
()
{
return
e
.
hasMoreElements
();
...
...
@@ -1323,9 +1327,8 @@ public abstract class ClassLoader {
Throwable
oops
=
null
;
scl
=
l
.
getClassLoader
();
try
{
PrivilegedExceptionAction
a
;
a
=
new
SystemClassLoaderAction
(
scl
);
scl
=
(
ClassLoader
)
AccessController
.
doPrivileged
(
a
);
scl
=
AccessController
.
doPrivileged
(
new
SystemClassLoaderAction
(
scl
));
}
catch
(
PrivilegedActionException
pae
)
{
oops
=
pae
.
getCause
();
if
(
oops
instanceof
InvocationTargetException
)
{
...
...
@@ -1456,7 +1459,7 @@ public abstract class ClassLoader {
*/
protected
Package
getPackage
(
String
name
)
{
synchronized
(
packages
)
{
Package
pkg
=
(
Package
)
packages
.
get
(
name
);
Package
pkg
=
packages
.
get
(
name
);
if
(
pkg
==
null
)
{
if
(
parent
!=
null
)
{
pkg
=
parent
.
getPackage
(
name
);
...
...
@@ -1481,9 +1484,9 @@ public abstract class ClassLoader {
* @since 1.2
*/
protected
Package
[]
getPackages
()
{
Map
map
;
Map
<
String
,
Package
>
map
;
synchronized
(
packages
)
{
map
=
(
Map
)
packages
.
clone
(
);
map
=
new
HashMap
<
String
,
Package
>(
packages
);
}
Package
[]
pkgs
;
if
(
parent
!=
null
)
{
...
...
@@ -1499,7 +1502,7 @@ public abstract class ClassLoader {
}
}
}
return
(
Package
[])
map
.
values
().
toArray
(
new
Package
[
map
.
size
()]);
return
map
.
values
().
toArray
(
new
Package
[
map
.
size
()]);
}
...
...
@@ -1585,8 +1588,7 @@ public abstract class ClassLoader {
// Invoked in the VM to determine the context class in
// JNI_Load/JNI_Unload
static
Class
getFromClass
()
{
return
((
NativeLibrary
)
(
ClassLoader
.
nativeLibraryContext
.
peek
())).
fromClass
;
return
ClassLoader
.
nativeLibraryContext
.
peek
().
fromClass
;
}
}
...
...
@@ -1597,22 +1599,27 @@ public abstract class ClassLoader {
// Returns (and initializes) the default domain.
private
synchronized
ProtectionDomain
getDefaultDomain
()
{
if
(
defaultDomain
==
null
)
{
CodeSource
cs
=
new
CodeSource
(
null
,
(
java
.
security
.
cert
.
Certificate
[])
null
);
CodeSource
cs
=
new
CodeSource
(
null
,
(
Certificate
[])
null
);
defaultDomain
=
new
ProtectionDomain
(
cs
,
null
,
this
,
null
);
}
return
defaultDomain
;
}
// All native library names we've loaded.
private
static
Vector
loadedLibraryNames
=
new
Vector
();
private
static
Vector
<
String
>
loadedLibraryNames
=
new
Vector
<
String
>();
// Native libraries belonging to system classes.
private
static
Vector
systemNativeLibraries
=
new
Vector
();
private
static
Vector
<
NativeLibrary
>
systemNativeLibraries
=
new
Vector
<
NativeLibrary
>();
// Native libraries associated with the class loader.
private
Vector
nativeLibraries
=
new
Vector
();
private
Vector
<
NativeLibrary
>
nativeLibraries
=
new
Vector
<
NativeLibrary
>();
// native libraries being loaded/unloaded.
private
static
Stack
nativeLibraryContext
=
new
Stack
();
private
static
Stack
<
NativeLibrary
>
nativeLibraryContext
=
new
Stack
<
NativeLibrary
>();
// The paths searched for libraries
static
private
String
usr_paths
[];
...
...
@@ -1699,13 +1706,13 @@ public abstract class ClassLoader {
}
private
static
boolean
loadLibrary0
(
Class
fromClass
,
final
File
file
)
{
Boolean
exists
=
(
Boolean
)
AccessController
.
doPrivileged
(
new
PrivilegedAction
()
{
boolean
exists
=
AccessController
.
doPrivileged
(
new
PrivilegedAction
<
Object
>
()
{
public
Object
run
()
{
return
new
Boolean
(
file
.
exists
())
;
}
})
;
if
(!
exists
.
booleanValue
()
)
{
return
file
.
exists
()
?
Boolean
.
TRUE
:
null
;
}
})
!=
null
;
if
(!
exists
)
{
return
false
;
}
String
name
;
...
...
@@ -1716,12 +1723,12 @@ public abstract class ClassLoader {
}
ClassLoader
loader
=
(
fromClass
==
null
)
?
null
:
fromClass
.
getClassLoader
();
Vector
libs
=
Vector
<
NativeLibrary
>
libs
=
loader
!=
null
?
loader
.
nativeLibraries
:
systemNativeLibraries
;
synchronized
(
libs
)
{
int
size
=
libs
.
size
();
for
(
int
i
=
0
;
i
<
size
;
i
++)
{
NativeLibrary
lib
=
(
NativeLibrary
)
libs
.
elementAt
(
i
);
NativeLibrary
lib
=
libs
.
elementAt
(
i
);
if
(
name
.
equals
(
lib
.
name
))
{
return
true
;
}
...
...
@@ -1748,8 +1755,7 @@ public abstract class ClassLoader {
*/
int
n
=
nativeLibraryContext
.
size
();
for
(
int
i
=
0
;
i
<
n
;
i
++)
{
NativeLibrary
lib
=
(
NativeLibrary
)
nativeLibraryContext
.
elementAt
(
i
);
NativeLibrary
lib
=
nativeLibraryContext
.
elementAt
(
i
);
if
(
name
.
equals
(
lib
.
name
))
{
if
(
loader
==
lib
.
fromClass
.
getClassLoader
())
{
return
true
;
...
...
@@ -1780,12 +1786,12 @@ public abstract class ClassLoader {
// Invoked in the VM class linking code.
static
long
findNative
(
ClassLoader
loader
,
String
name
)
{
Vector
libs
=
Vector
<
NativeLibrary
>
libs
=
loader
!=
null
?
loader
.
nativeLibraries
:
systemNativeLibraries
;
synchronized
(
libs
)
{
int
size
=
libs
.
size
();
for
(
int
i
=
0
;
i
<
size
;
i
++)
{
NativeLibrary
lib
=
(
NativeLibrary
)
libs
.
elementAt
(
i
);
NativeLibrary
lib
=
libs
.
elementAt
(
i
);
long
entry
=
lib
.
find
(
name
);
if
(
entry
!=
0
)
return
entry
;
...
...
@@ -1805,13 +1811,13 @@ public abstract class ClassLoader {
// is null then we are delegating assertion status queries to the VM, i.e.,
// none of this ClassLoader's assertion status modification methods have
// been invoked.
private
Map
packageAssertionStatus
=
null
;
private
Map
<
String
,
Boolean
>
packageAssertionStatus
=
null
;
// Maps String fullyQualifiedClassName to Boolean assertionStatus If this
// field is null then we are delegating assertion status queries to the VM,
// i.e., none of this ClassLoader's assertion status modification methods
// have been invoked.
Map
classAssertionStatus
=
null
;
Map
<
String
,
Boolean
>
classAssertionStatus
=
null
;
/**
* Sets the default assertion status for this class loader. This setting
...
...
@@ -1878,7 +1884,7 @@ public abstract class ClassLoader {
if
(
packageAssertionStatus
==
null
)
initializeJavaAssertionMaps
();
packageAssertionStatus
.
put
(
packageName
,
Boolean
.
valueOf
(
enabled
)
);
packageAssertionStatus
.
put
(
packageName
,
enabled
);
}
/**
...
...
@@ -1909,7 +1915,7 @@ public abstract class ClassLoader {
if
(
classAssertionStatus
==
null
)
initializeJavaAssertionMaps
();
classAssertionStatus
.
put
(
className
,
Boolean
.
valueOf
(
enabled
)
);
classAssertionStatus
.
put
(
className
,
enabled
);
}
/**
...
...
@@ -1927,8 +1933,8 @@ public abstract class ClassLoader {
* Whether or not "Java assertion maps" are initialized, set
* them to empty maps, effectively ignoring any present settings.
*/
classAssertionStatus
=
new
HashMap
();
packageAssertionStatus
=
new
HashMap
();
classAssertionStatus
=
new
HashMap
<
String
,
Boolean
>
();
packageAssertionStatus
=
new
HashMap
<
String
,
Boolean
>
();
defaultAssertionStatus
=
false
;
}
...
...
@@ -1962,20 +1968,20 @@ public abstract class ClassLoader {
// assert packageAssertionStatus != null;
// Check for a class entry
result
=
(
Boolean
)
classAssertionStatus
.
get
(
className
);
result
=
classAssertionStatus
.
get
(
className
);
if
(
result
!=
null
)
return
result
.
booleanValue
();
// Check for most specific package entry
int
dotIndex
=
className
.
lastIndexOf
(
"."
);
if
(
dotIndex
<
0
)
{
// default package
result
=
(
Boolean
)
packageAssertionStatus
.
get
(
null
);
result
=
packageAssertionStatus
.
get
(
null
);
if
(
result
!=
null
)
return
result
.
booleanValue
();
}
while
(
dotIndex
>
0
)
{
className
=
className
.
substring
(
0
,
dotIndex
);
result
=
(
Boolean
)
packageAssertionStatus
.
get
(
className
);
result
=
packageAssertionStatus
.
get
(
className
);
if
(
result
!=
null
)
return
result
.
booleanValue
();
dotIndex
=
className
.
lastIndexOf
(
"."
,
dotIndex
-
1
);
...
...
@@ -1989,17 +1995,17 @@ public abstract class ClassLoader {
private
void
initializeJavaAssertionMaps
()
{
// assert Thread.holdsLock(this);
classAssertionStatus
=
new
HashMap
();
packageAssertionStatus
=
new
HashMap
();
classAssertionStatus
=
new
HashMap
<
String
,
Boolean
>
();
packageAssertionStatus
=
new
HashMap
<
String
,
Boolean
>
();
AssertionStatusDirectives
directives
=
retrieveDirectives
();
for
(
int
i
=
0
;
i
<
directives
.
classes
.
length
;
i
++)
classAssertionStatus
.
put
(
directives
.
classes
[
i
],
Boolean
.
valueOf
(
directives
.
classEnabled
[
i
])
);
directives
.
classEnabled
[
i
]
);
for
(
int
i
=
0
;
i
<
directives
.
packages
.
length
;
i
++)
packageAssertionStatus
.
put
(
directives
.
packages
[
i
],
Boolean
.
valueOf
(
directives
.
packageEnabled
[
i
])
);
directives
.
packageEnabled
[
i
]
);
defaultAssertionStatus
=
directives
.
deflt
;
}
...
...
@@ -2009,28 +2015,24 @@ public abstract class ClassLoader {
}
class
SystemClassLoaderAction
implements
PrivilegedExceptionAction
{
class
SystemClassLoaderAction
implements
PrivilegedExceptionAction
<
ClassLoader
>
{
private
ClassLoader
parent
;
SystemClassLoaderAction
(
ClassLoader
parent
)
{
this
.
parent
=
parent
;
}
public
Object
run
()
throws
Exception
{
ClassLoader
sys
;
Constructor
ctor
;
Class
c
;
Class
cp
[]
=
{
ClassLoader
.
class
};
Object
params
[]
=
{
parent
};
public
ClassLoader
run
()
throws
Exception
{
String
cls
=
System
.
getProperty
(
"java.system.class.loader"
);
if
(
cls
==
null
)
{
return
parent
;
}
c
=
Class
.
forName
(
cls
,
true
,
parent
);
ctor
=
c
.
getDeclaredConstructor
(
cp
);
sys
=
(
ClassLoader
)
ctor
.
newInstance
(
params
);
Constructor
ctor
=
Class
.
forName
(
cls
,
true
,
parent
)
.
getDeclaredConstructor
(
new
Class
[]
{
ClassLoader
.
class
});
ClassLoader
sys
=
(
ClassLoader
)
ctor
.
newInstance
(
new
Object
[]
{
parent
});
Thread
.
currentThread
().
setContextClassLoader
(
sys
);
return
sys
;
}
...
...
src/share/classes/java/lang/Compiler.java
浏览文件 @
ab1229d1
...
...
@@ -53,9 +53,9 @@ public final class Compiler {
static
{
registerNatives
();
java
.
security
.
AccessController
.
doPrivileged
(
new
java
.
security
.
PrivilegedAction
()
{
public
Object
run
()
{
java
.
security
.
AccessController
.
doPrivileged
(
new
java
.
security
.
PrivilegedAction
<
Void
>
()
{
public
Void
run
()
{
boolean
loaded
=
false
;
String
jit
=
System
.
getProperty
(
"java.compiler"
);
if
((
jit
!=
null
)
&&
(!
jit
.
equals
(
"NONE"
))
&&
...
...
src/share/classes/java/lang/Long.java
浏览文件 @
ab1229d1
...
...
@@ -650,7 +650,7 @@ public final class Long extends Number implements Comparable<Long> {
try
{
result
=
Long
.
valueOf
(
nm
.
substring
(
index
),
radix
);
result
=
negative
?
new
Long
(
(
long
)
-
result
.
longValue
())
:
result
;
result
=
negative
?
new
Long
(-
result
.
longValue
())
:
result
;
}
catch
(
NumberFormatException
e
)
{
// If number is Long.MIN_VALUE, we'll end up here. The next line
// handles this case, and causes any genuine format error to be
...
...
src/share/classes/java/lang/Package.java
浏览文件 @
ab1229d1
...
...
@@ -507,7 +507,7 @@ public class Package implements java.lang.reflect.AnnotatedElement {
*/
static
Package
getSystemPackage
(
String
name
)
{
synchronized
(
pkgs
)
{
Package
pkg
=
(
Package
)
pkgs
.
get
(
name
);
Package
pkg
=
pkgs
.
get
(
name
);
if
(
pkg
==
null
)
{
name
=
name
.
replace
(
'.'
,
'/'
).
concat
(
"/"
);
String
fn
=
getSystemPackage0
(
name
);
...
...
@@ -529,18 +529,18 @@ public class Package implements java.lang.reflect.AnnotatedElement {
for
(
int
i
=
0
;
i
<
names
.
length
;
i
++)
{
defineSystemPackage
(
names
[
i
],
getSystemPackage0
(
names
[
i
]));
}
return
(
Package
[])
pkgs
.
values
().
toArray
(
new
Package
[
pkgs
.
size
()]);
return
pkgs
.
values
().
toArray
(
new
Package
[
pkgs
.
size
()]);
}
}
private
static
Package
defineSystemPackage
(
final
String
iname
,
final
String
fn
)
{
return
(
Package
)
AccessController
.
doPrivileged
(
new
PrivilegedAction
()
{
public
Object
run
()
{
return
AccessController
.
doPrivileged
(
new
PrivilegedAction
<
Package
>
()
{
public
Package
run
()
{
String
name
=
iname
;
// Get the cached code source url for the file name
URL
url
=
(
URL
)
urls
.
get
(
fn
);
URL
url
=
urls
.
get
(
fn
);
if
(
url
==
null
)
{
// URL not found, so create one
File
file
=
new
File
(
fn
);
...
...
@@ -559,7 +559,7 @@ public class Package implements java.lang.reflect.AnnotatedElement {
// Convert to "."-separated package name
name
=
name
.
substring
(
0
,
name
.
length
()
-
1
).
replace
(
'/'
,
'.'
);
Package
pkg
;
Manifest
man
=
(
Manifest
)
mans
.
get
(
fn
);
Manifest
man
=
mans
.
get
(
fn
);
if
(
man
!=
null
)
{
pkg
=
new
Package
(
name
,
man
,
url
,
null
);
}
else
{
...
...
@@ -588,13 +588,16 @@ public class Package implements java.lang.reflect.AnnotatedElement {
}
// The map of loaded system packages
private
static
Map
pkgs
=
new
HashMap
(
31
);
private
static
Map
<
String
,
Package
>
pkgs
=
new
HashMap
<
String
,
Package
>(
31
);
// Maps each directory or zip file name to its corresponding url
private
static
Map
urls
=
new
HashMap
(
10
);
private
static
Map
<
String
,
URL
>
urls
=
new
HashMap
<
String
,
URL
>(
10
);
// Maps each code source url for a jar file to its manifest
private
static
Map
mans
=
new
HashMap
(
10
);
private
static
Map
<
String
,
Manifest
>
mans
=
new
HashMap
<
String
,
Manifest
>(
10
);
private
static
native
String
getSystemPackage0
(
String
name
);
private
static
native
String
[]
getSystemPackages0
();
...
...
src/share/classes/java/lang/ref/Finalizer.java
浏览文件 @
ab1229d1
...
...
@@ -121,8 +121,9 @@ final class Finalizer extends FinalReference { /* Package-private; must be in
invokers of these methods from a stalled or deadlocked finalizer thread.
*/
private
static
void
forkSecondaryFinalizer
(
final
Runnable
proc
)
{
PrivilegedAction
pa
=
new
PrivilegedAction
()
{
public
Object
run
()
{
AccessController
.
doPrivileged
(
new
PrivilegedAction
<
Void
>()
{
public
Void
run
()
{
ThreadGroup
tg
=
Thread
.
currentThread
().
getThreadGroup
();
for
(
ThreadGroup
tgn
=
tg
;
tgn
!=
null
;
...
...
@@ -135,8 +136,7 @@ final class Finalizer extends FinalReference { /* Package-private; must be in
/* Ignore */
}
return
null
;
}};
AccessController
.
doPrivileged
(
pa
);
}});
}
/* Called by Runtime.runFinalization() */
...
...
src/share/classes/java/lang/reflect/AccessibleObject.java
浏览文件 @
ab1229d1
...
...
@@ -165,9 +165,9 @@ public class AccessibleObject implements AnnotatedElement {
// Reflection factory used by subclasses for creating field,
// method, and constructor accessors. Note that this is called
// very early in the bootstrapping process.
static
final
ReflectionFactory
reflectionFactory
=
(
ReflectionFactory
)
AccessController
.
doPrivileged
(
new
sun
.
reflect
.
ReflectionFactory
.
GetReflectionFactoryAction
());
static
final
ReflectionFactory
reflectionFactory
=
AccessController
.
doPrivileged
(
new
sun
.
reflect
.
ReflectionFactory
.
GetReflectionFactoryAction
());
/**
* @throws NullPointerException {@inheritDoc}
...
...
src/share/classes/java/lang/reflect/Modifier.java
浏览文件 @
ab1229d1
...
...
@@ -58,9 +58,8 @@ class Modifier {
*/
static
{
sun
.
reflect
.
ReflectionFactory
factory
=
(
sun
.
reflect
.
ReflectionFactory
)
AccessController
.
doPrivileged
(
new
ReflectionFactory
.
GetReflectionFactoryAction
()
);
AccessController
.
doPrivileged
(
new
ReflectionFactory
.
GetReflectionFactoryAction
());
factory
.
setLangReflectAccess
(
new
java
.
lang
.
reflect
.
ReflectAccess
());
}
...
...
src/share/classes/java/lang/reflect/Proxy.java
浏览文件 @
ab1229d1
...
...
@@ -33,6 +33,7 @@ import java.util.HashMap;
import
java.util.HashSet
;
import
java.util.Map
;
import
java.util.Set
;
import
java.util.List
;
import
java.util.WeakHashMap
;
import
sun.misc.ProxyGenerator
;
...
...
@@ -230,7 +231,8 @@ public class Proxy implements java.io.Serializable {
{
InvocationHandler
.
class
};
/** maps a class loader to the proxy class cache for that loader */
private
static
Map
loaderToCache
=
new
WeakHashMap
();
private
static
Map
<
ClassLoader
,
Map
<
List
<
String
>,
Object
>>
loaderToCache
=
new
WeakHashMap
<
ClassLoader
,
Map
<
List
<
String
>,
Object
>>();
/** marks that a particular proxy class is currently being generated */
private
static
Object
pendingGenerationMarker
=
new
Object
();
...
...
@@ -240,8 +242,8 @@ public class Proxy implements java.io.Serializable {
private
static
Object
nextUniqueNumberLock
=
new
Object
();
/** set of all generated proxy classes, for isProxyClass implementation */
private
static
Map
proxyClasses
=
Collections
.
synchronizedMap
(
new
WeakHashMap
());
private
static
Map
<
Class
<?>,
Void
>
proxyClasses
=
Collections
.
synchronizedMap
(
new
WeakHashMap
<
Class
<?>,
Void
>
());
/**
* the invocation handler for this proxy instance.
...
...
@@ -353,7 +355,8 @@ public class Proxy implements java.io.Serializable {
/* collect interface names to use as key for proxy class cache */
String
[]
interfaceNames
=
new
String
[
interfaces
.
length
];
Set
interfaceSet
=
new
HashSet
();
// for detecting duplicates
// for detecting duplicates
Set
<
Class
<?>>
interfaceSet
=
new
HashSet
<
Class
<?>>();
for
(
int
i
=
0
;
i
<
interfaces
.
length
;
i
++)
{
/*
...
...
@@ -401,16 +404,16 @@ public class Proxy implements java.io.Serializable {
* representation of a class makes for an implicit weak
* reference to the class.
*/
Object
key
=
Arrays
.
asList
(
interfaceNames
);
List
<
String
>
key
=
Arrays
.
asList
(
interfaceNames
);
/*
* Find or create the proxy class cache for the class loader.
*/
Map
cache
;
Map
<
List
<
String
>,
Object
>
cache
;
synchronized
(
loaderToCache
)
{
cache
=
(
Map
)
loaderToCache
.
get
(
loader
);
cache
=
loaderToCache
.
get
(
loader
);
if
(
cache
==
null
)
{
cache
=
new
HashMap
();
cache
=
new
HashMap
<
List
<
String
>,
Object
>
();
loaderToCache
.
put
(
loader
,
cache
);
}
/*
...
...
@@ -442,7 +445,7 @@ public class Proxy implements java.io.Serializable {
do
{
Object
value
=
cache
.
get
(
key
);
if
(
value
instanceof
Reference
)
{
proxyClass
=
(
Class
)
((
Reference
)
value
).
get
();
proxyClass
=
(
Class
<?>
)
((
Reference
)
value
).
get
();
}
if
(
proxyClass
!=
null
)
{
// proxy class already generated: return it
...
...
@@ -544,7 +547,7 @@ public class Proxy implements java.io.Serializable {
*/
synchronized
(
cache
)
{
if
(
proxyClass
!=
null
)
{
cache
.
put
(
key
,
new
WeakReference
(
proxyClass
));
cache
.
put
(
key
,
new
WeakReference
<
Class
<?>>
(
proxyClass
));
}
else
{
cache
.
remove
(
key
);
}
...
...
@@ -595,14 +598,14 @@ public class Proxy implements java.io.Serializable {
/*
* Look up or generate the designated proxy class.
*/
Class
cl
=
getProxyClass
(
loader
,
interfaces
);
Class
<?>
cl
=
getProxyClass
(
loader
,
interfaces
);
/*
* Invoke its constructor with the designated invocation handler.
*/
try
{
Constructor
cons
=
cl
.
getConstructor
(
constructorParams
);
return
(
Object
)
cons
.
newInstance
(
new
Object
[]
{
h
});
return
cons
.
newInstance
(
new
Object
[]
{
h
});
}
catch
(
NoSuchMethodException
e
)
{
throw
new
InternalError
(
e
.
toString
());
}
catch
(
IllegalAccessException
e
)
{
...
...
src/share/classes/java/net/DatagramSocket.java
浏览文件 @
ab1229d1
...
...
@@ -287,8 +287,9 @@ class DatagramSocket implements java.io.Closeable {
// DatagramSocketImpl.peekdata() is a protected method, therefore we need to use
// getDeclaredMethod, therefore we need permission to access the member
try
{
AccessController
.
doPrivileged
(
new
PrivilegedExceptionAction
()
{
public
Object
run
()
throws
NoSuchMethodException
{
AccessController
.
doPrivileged
(
new
PrivilegedExceptionAction
<
Void
>()
{
public
Void
run
()
throws
NoSuchMethodException
{
Class
[]
cl
=
new
Class
[
1
];
cl
[
0
]
=
DatagramPacket
.
class
;
impl
.
getClass
().
getDeclaredMethod
(
"peekData"
,
cl
);
...
...
src/share/classes/java/net/ServerSocket.java
浏览文件 @
ab1229d1
...
...
@@ -247,8 +247,9 @@ class ServerSocket implements java.io.Closeable {
// SocketImpl.connect() is a protected method, therefore we need to use
// getDeclaredMethod, therefore we need permission to access the member
try
{
AccessController
.
doPrivileged
(
new
PrivilegedExceptionAction
()
{
public
Object
run
()
throws
NoSuchMethodException
{
AccessController
.
doPrivileged
(
new
PrivilegedExceptionAction
<
Void
>()
{
public
Void
run
()
throws
NoSuchMethodException
{
Class
[]
cl
=
new
Class
[
2
];
cl
[
0
]
=
SocketAddress
.
class
;
cl
[
1
]
=
Integer
.
TYPE
;
...
...
src/share/classes/java/net/Socket.java
浏览文件 @
ab1229d1
...
...
@@ -847,9 +847,9 @@ class Socket implements java.io.Closeable {
final
Socket
s
=
this
;
InputStream
is
=
null
;
try
{
is
=
(
InputStream
)
AccessController
.
doPrivileged
(
new
PrivilegedExceptionAction
()
{
public
Object
run
()
throws
IOException
{
is
=
AccessController
.
doPrivileged
(
new
PrivilegedExceptionAction
<
InputStream
>
()
{
public
InputStream
run
()
throws
IOException
{
return
impl
.
getInputStream
();
}
});
...
...
@@ -887,9 +887,9 @@ class Socket implements java.io.Closeable {
final
Socket
s
=
this
;
OutputStream
os
=
null
;
try
{
os
=
(
OutputStream
)
AccessController
.
doPrivileged
(
new
PrivilegedExceptionAction
()
{
public
O
bject
run
()
throws
IOException
{
os
=
AccessController
.
doPrivileged
(
new
PrivilegedExceptionAction
<
OutputStream
>
()
{
public
O
utputStream
run
()
throws
IOException
{
return
impl
.
getOutputStream
();
}
});
...
...
src/share/classes/java/net/SocksSocketImpl.java
浏览文件 @
ab1229d1
...
...
@@ -78,8 +78,8 @@ class SocksSocketImpl extends PlainSocketImpl implements SocksConsts {
{
try
{
AccessController
.
doPrivileged
(
new
java
.
security
.
PrivilegedExceptionAction
()
{
public
Object
run
()
throws
IOException
{
new
java
.
security
.
PrivilegedExceptionAction
<
Void
>
()
{
public
Void
run
()
throws
IOException
{
superConnectServer
(
host
,
port
,
timeout
);
cmdIn
=
getInputStream
();
cmdOut
=
getOutputStream
();
...
...
@@ -129,10 +129,10 @@ class SocksSocketImpl extends PlainSocketImpl implements SocksConsts {
String
userName
;
String
password
=
null
;
final
InetAddress
addr
=
InetAddress
.
getByName
(
server
);
PasswordAuthentication
pw
=
(
PasswordAuthentication
)
PasswordAuthentication
pw
=
java
.
security
.
AccessController
.
doPrivileged
(
new
java
.
security
.
PrivilegedAction
()
{
public
Object
run
()
{
new
java
.
security
.
PrivilegedAction
<
PasswordAuthentication
>
()
{
public
PasswordAuthentication
run
()
{
return
Authenticator
.
requestPasswordAuthentication
(
server
,
addr
,
port
,
"SOCKS5"
,
"SOCKS authentication"
,
null
);
}
...
...
@@ -339,10 +339,9 @@ class SocksSocketImpl extends PlainSocketImpl implements SocksConsts {
// This is the general case
// server is not null only when the socket was created with a
// specified proxy in which case it does bypass the ProxySelector
ProxySelector
sel
=
(
ProxySelector
)
java
.
security
.
AccessController
.
doPrivileged
(
new
java
.
security
.
PrivilegedAction
()
{
public
Object
run
()
{
ProxySelector
sel
=
java
.
security
.
AccessController
.
doPrivileged
(
new
java
.
security
.
PrivilegedAction
<
ProxySelector
>()
{
public
ProxySelector
run
()
{
return
ProxySelector
.
getDefault
();
}
});
...
...
@@ -652,10 +651,9 @@ class SocksSocketImpl extends PlainSocketImpl implements SocksConsts {
// This is the general case
// server is not null only when the socket was created with a
// specified proxy in which case it does bypass the ProxySelector
ProxySelector
sel
=
(
ProxySelector
)
java
.
security
.
AccessController
.
doPrivileged
(
new
java
.
security
.
PrivilegedAction
()
{
public
Object
run
()
{
ProxySelector
sel
=
java
.
security
.
AccessController
.
doPrivileged
(
new
java
.
security
.
PrivilegedAction
<
ProxySelector
>()
{
public
ProxySelector
run
()
{
return
ProxySelector
.
getDefault
();
}
});
...
...
@@ -701,8 +699,9 @@ class SocksSocketImpl extends PlainSocketImpl implements SocksConsts {
// Connects to the SOCKS server
try
{
AccessController
.
doPrivileged
(
new
PrivilegedExceptionAction
()
{
public
Object
run
()
throws
Exception
{
AccessController
.
doPrivileged
(
new
PrivilegedExceptionAction
<
Void
>()
{
public
Void
run
()
throws
Exception
{
cmdsock
=
new
Socket
(
new
PlainSocketImpl
());
cmdsock
.
connect
(
new
InetSocketAddress
(
server
,
port
));
cmdIn
=
cmdsock
.
getInputStream
();
...
...
@@ -731,8 +730,9 @@ class SocksSocketImpl extends PlainSocketImpl implements SocksConsts {
}
}
else
{
try
{
AccessController
.
doPrivileged
(
new
PrivilegedExceptionAction
()
{
public
Object
run
()
throws
Exception
{
AccessController
.
doPrivileged
(
new
PrivilegedExceptionAction
<
Void
>()
{
public
Void
run
()
throws
Exception
{
cmdsock
=
new
Socket
(
new
PlainSocketImpl
());
cmdsock
.
connect
(
new
InetSocketAddress
(
server
,
port
));
cmdIn
=
cmdsock
.
getInputStream
();
...
...
src/share/classes/java/net/URLClassLoader.java
浏览文件 @
ab1229d1
...
...
@@ -205,9 +205,9 @@ public class URLClassLoader extends SecureClassLoader {
throws
ClassNotFoundException
{
try
{
return
(
Class
)
AccessController
.
doPrivileged
(
new
PrivilegedExceptionAction
()
{
public
Object
run
()
throws
ClassNotFoundException
{
return
AccessController
.
doPrivileged
(
new
PrivilegedExceptionAction
<
Class
>
()
{
public
Class
run
()
throws
ClassNotFoundException
{
String
path
=
name
.
replace
(
'.'
,
'/'
).
concat
(
".class"
);
Resource
res
=
ucp
.
getResource
(
path
,
false
);
if
(
res
!=
null
)
{
...
...
@@ -376,9 +376,9 @@ public class URLClassLoader extends SecureClassLoader {
/*
* The same restriction to finding classes applies to resources
*/
URL
url
=
(
URL
)
AccessController
.
doPrivileged
(
new
PrivilegedAction
()
{
public
Object
run
()
{
URL
url
=
AccessController
.
doPrivileged
(
new
PrivilegedAction
<
URL
>
()
{
public
URL
run
()
{
return
ucp
.
findResource
(
name
,
true
);
}
},
acc
);
...
...
@@ -397,7 +397,7 @@ public class URLClassLoader extends SecureClassLoader {
public
Enumeration
<
URL
>
findResources
(
final
String
name
)
throws
IOException
{
final
Enumeration
e
=
ucp
.
findResources
(
name
,
true
);
final
Enumeration
<
URL
>
e
=
ucp
.
findResources
(
name
,
true
);
return
new
Enumeration
<
URL
>()
{
private
URL
url
=
null
;
...
...
@@ -407,9 +407,9 @@ public class URLClassLoader extends SecureClassLoader {
return
true
;
}
do
{
URL
u
=
(
URL
)
AccessController
.
doPrivileged
(
new
PrivilegedAction
()
{
public
Object
run
()
{
URL
u
=
AccessController
.
doPrivileged
(
new
PrivilegedAction
<
URL
>
()
{
public
URL
run
()
{
if
(!
e
.
hasMoreElements
())
return
null
;
return
e
.
nextElement
();
...
...
@@ -515,8 +515,8 @@ public class URLClassLoader extends SecureClassLoader {
final
SecurityManager
sm
=
System
.
getSecurityManager
();
if
(
sm
!=
null
)
{
final
Permission
fp
=
p
;
AccessController
.
doPrivileged
(
new
PrivilegedAction
()
{
public
Object
run
()
throws
SecurityException
{
AccessController
.
doPrivileged
(
new
PrivilegedAction
<
Void
>
()
{
public
Void
run
()
throws
SecurityException
{
sm
.
checkPermission
(
fp
);
return
null
;
}
...
...
@@ -544,9 +544,9 @@ public class URLClassLoader extends SecureClassLoader {
// Save the caller's context
AccessControlContext
acc
=
AccessController
.
getContext
();
// Need a privileged block to create the class loader
URLClassLoader
ucl
=
(
URLClassLoader
)
AccessController
.
doPrivileged
(
new
PrivilegedAction
()
{
public
Object
run
()
{
URLClassLoader
ucl
=
AccessController
.
doPrivileged
(
new
PrivilegedAction
<
URLClassLoader
>
()
{
public
URLClassLoader
run
()
{
return
new
FactoryURLClassLoader
(
urls
,
parent
);
}
});
...
...
@@ -571,9 +571,9 @@ public class URLClassLoader extends SecureClassLoader {
// Save the caller's context
AccessControlContext
acc
=
AccessController
.
getContext
();
// Need a privileged block to create the class loader
URLClassLoader
ucl
=
(
URLClassLoader
)
AccessController
.
doPrivileged
(
new
PrivilegedAction
()
{
public
Object
run
()
{
URLClassLoader
ucl
=
AccessController
.
doPrivileged
(
new
PrivilegedAction
<
URLClassLoader
>
()
{
public
URLClassLoader
run
()
{
return
new
FactoryURLClassLoader
(
urls
);
}
});
...
...
src/share/classes/java/nio/channels/spi/SelectorProvider.java
浏览文件 @
ab1229d1
...
...
@@ -167,9 +167,9 @@ public abstract class SelectorProvider {
synchronized
(
lock
)
{
if
(
provider
!=
null
)
return
provider
;
return
(
SelectorProvider
)
AccessController
.
doPrivileged
(
new
PrivilegedAction
()
{
public
Object
run
()
{
return
AccessController
.
doPrivileged
(
new
PrivilegedAction
<
SelectorProvider
>
()
{
public
SelectorProvider
run
()
{
if
(
loadProviderFromProperty
())
return
provider
;
if
(
loadProviderAsService
())
...
...
src/share/classes/java/rmi/activation/ActivationGroupDesc.java
浏览文件 @
ab1229d1
...
...
@@ -263,7 +263,7 @@ public final class ActivationGroupDesc implements Serializable {
* @since 1.2
*/
public
String
[]
getCommandOptions
()
{
return
(
String
[])
options
.
clone
();
return
options
.
clone
();
}
/**
...
...
src/share/classes/java/rmi/dgc/VMID.java
浏览文件 @
ab1229d1
...
...
@@ -136,9 +136,9 @@ public final class VMID implements java.io.Serializable {
/*
* Get the local host's IP address.
*/
byte
[]
addr
=
(
byte
[])
java
.
security
.
AccessController
.
doPrivileged
(
new
PrivilegedAction
()
{
public
Object
run
()
{
byte
[]
addr
=
java
.
security
.
AccessController
.
doPrivileged
(
new
PrivilegedAction
<
byte
[]>
()
{
public
byte
[]
run
()
{
try
{
return
InetAddress
.
getLocalHost
().
getAddress
();
}
catch
(
Exception
e
)
{
...
...
src/share/classes/java/security/cert/TrustAnchor.java
浏览文件 @
ab1229d1
...
...
@@ -275,7 +275,7 @@ public class TrustAnchor {
ncBytes
=
null
;
nc
=
null
;
}
else
{
ncBytes
=
(
byte
[])
bytes
.
clone
();
ncBytes
=
bytes
.
clone
();
// validate DER encoding
try
{
nc
=
new
NameConstraintsExtension
(
Boolean
.
FALSE
,
bytes
);
...
...
@@ -309,7 +309,7 @@ public class TrustAnchor {
* or <code>null</code> if not set.
*/
public
final
byte
[]
getNameConstraints
()
{
return
(
ncBytes
==
null
?
null
:
(
byte
[])
ncBytes
.
clone
()
);
return
ncBytes
==
null
?
null
:
ncBytes
.
clone
(
);
}
/**
...
...
src/share/classes/java/security/cert/X509CertSelector.java
浏览文件 @
ab1229d1
...
...
@@ -381,7 +381,7 @@ public class X509CertSelector implements CertSelector {
if
(
subjectKeyID
==
null
)
{
this
.
subjectKeyID
=
null
;
}
else
{
this
.
subjectKeyID
=
(
byte
[])
subjectKeyID
.
clone
();
this
.
subjectKeyID
=
subjectKeyID
.
clone
();
}
}
...
...
@@ -442,7 +442,7 @@ public class X509CertSelector implements CertSelector {
if
(
authorityKeyID
==
null
)
{
this
.
authorityKeyID
=
null
;
}
else
{
this
.
authorityKeyID
=
(
byte
[])
authorityKeyID
.
clone
();
this
.
authorityKeyID
=
authorityKeyID
.
clone
();
}
}
...
...
@@ -566,7 +566,7 @@ public class X509CertSelector implements CertSelector {
subjectPublicKey
=
null
;
subjectPublicKeyBytes
=
null
;
}
else
{
subjectPublicKeyBytes
=
(
byte
[])
key
.
clone
();
subjectPublicKeyBytes
=
key
.
clone
();
subjectPublicKey
=
X509Key
.
parse
(
new
DerValue
(
subjectPublicKeyBytes
));
}
}
...
...
@@ -590,7 +590,7 @@ public class X509CertSelector implements CertSelector {
if
(
keyUsage
==
null
)
{
this
.
keyUsage
=
null
;
}
else
{
this
.
keyUsage
=
(
boolean
[])
keyUsage
.
clone
();
this
.
keyUsage
=
keyUsage
.
clone
();
}
}
...
...
@@ -1041,7 +1041,7 @@ public class X509CertSelector implements CertSelector {
ncBytes
=
null
;
nc
=
null
;
}
else
{
ncBytes
=
(
byte
[])
bytes
.
clone
();
ncBytes
=
bytes
.
clone
();
nc
=
new
NameConstraintsExtension
(
FALSE
,
bytes
);
}
}
...
...
@@ -1438,7 +1438,7 @@ public class X509CertSelector implements CertSelector {
if
(
subjectKeyID
==
null
)
{
return
null
;
}
return
(
byte
[])
subjectKeyID
.
clone
();
return
subjectKeyID
.
clone
();
}
/**
...
...
@@ -1457,7 +1457,7 @@ public class X509CertSelector implements CertSelector {
if
(
authorityKeyID
==
null
)
{
return
null
;
}
return
(
byte
[])
authorityKeyID
.
clone
();
return
authorityKeyID
.
clone
();
}
/**
...
...
@@ -1546,7 +1546,7 @@ public class X509CertSelector implements CertSelector {
if
(
keyUsage
==
null
)
{
return
null
;
}
return
(
boolean
[])
keyUsage
.
clone
();
return
keyUsage
.
clone
();
}
/**
...
...
@@ -1736,7 +1736,7 @@ public class X509CertSelector implements CertSelector {
if
(
ncBytes
==
null
)
{
return
null
;
}
else
{
return
(
byte
[])
ncBytes
.
clone
();
return
ncBytes
.
clone
();
}
}
...
...
src/share/classes/java/util/ArrayList.java
浏览文件 @
ab1229d1
...
...
@@ -892,7 +892,7 @@ public class ArrayList<E> extends AbstractList<E>
private
final
AbstractList
<
E
>
parent
;
private
final
int
parentOffset
;
private
final
int
offset
;
private
int
size
;
int
size
;
SubList
(
AbstractList
<
E
>
parent
,
int
offset
,
int
fromIndex
,
int
toIndex
)
{
...
...
@@ -971,6 +971,7 @@ public class ArrayList<E> extends AbstractList<E>
public
ListIterator
<
E
>
listIterator
(
final
int
index
)
{
checkForComodification
();
rangeCheckForAdd
(
index
);
final
int
offset
=
this
.
offset
;
return
new
ListIterator
<
E
>()
{
int
cursor
=
index
;
...
...
src/share/classes/java/util/Arrays.java
浏览文件 @
ab1229d1
...
...
@@ -1088,7 +1088,7 @@ public class Arrays {
* <i>mutually comparable</i> (for example, strings and integers).
*/
public
static
void
sort
(
Object
[]
a
)
{
Object
[]
aux
=
(
Object
[])
a
.
clone
();
Object
[]
aux
=
a
.
clone
();
mergeSort
(
aux
,
a
,
0
,
a
.
length
,
0
);
}
...
...
@@ -1216,7 +1216,7 @@ public class Arrays {
* not <i>mutually comparable</i> using the specified comparator.
*/
public
static
<
T
>
void
sort
(
T
[]
a
,
Comparator
<?
super
T
>
c
)
{
T
[]
aux
=
(
T
[])
a
.
clone
();
T
[]
aux
=
a
.
clone
();
if
(
c
==
null
)
mergeSort
(
aux
,
a
,
0
,
a
.
length
,
0
);
else
...
...
@@ -1257,7 +1257,7 @@ public class Arrays {
public
static
<
T
>
void
sort
(
T
[]
a
,
int
fromIndex
,
int
toIndex
,
Comparator
<?
super
T
>
c
)
{
rangeCheck
(
a
.
length
,
fromIndex
,
toIndex
);
T
[]
aux
=
(
T
[])
copyOfRange
(
a
,
fromIndex
,
toIndex
);
T
[]
aux
=
copyOfRange
(
a
,
fromIndex
,
toIndex
);
if
(
c
==
null
)
mergeSort
(
aux
,
a
,
fromIndex
,
toIndex
,
-
fromIndex
);
else
...
...
@@ -4128,7 +4128,7 @@ public class Arrays {
if
(
a
.
length
!=
0
&&
bufLen
<=
0
)
bufLen
=
Integer
.
MAX_VALUE
;
StringBuilder
buf
=
new
StringBuilder
(
bufLen
);
deepToString
(
a
,
buf
,
new
HashSet
());
deepToString
(
a
,
buf
,
new
HashSet
<
Object
[]>
());
return
buf
.
toString
();
}
...
...
src/share/classes/java/util/EnumMap.java
浏览文件 @
ab1229d1
...
...
@@ -140,7 +140,7 @@ public class EnumMap<K extends Enum<K>, V> extends AbstractMap<K, V>
public
EnumMap
(
EnumMap
<
K
,
?
extends
V
>
m
)
{
keyType
=
m
.
keyType
;
keyUniverse
=
m
.
keyUniverse
;
vals
=
(
Object
[])
m
.
vals
.
clone
();
vals
=
m
.
vals
.
clone
();
size
=
m
.
size
;
}
...
...
@@ -161,7 +161,7 @@ public class EnumMap<K extends Enum<K>, V> extends AbstractMap<K, V>
EnumMap
<
K
,
?
extends
V
>
em
=
(
EnumMap
<
K
,
?
extends
V
>)
m
;
keyType
=
em
.
keyType
;
keyUniverse
=
em
.
keyUniverse
;
vals
=
(
Object
[])
em
.
vals
.
clone
();
vals
=
em
.
vals
.
clone
();
size
=
em
.
size
;
}
else
{
if
(
m
.
isEmpty
())
...
...
@@ -257,7 +257,7 @@ public class EnumMap<K extends Enum<K>, V> extends AbstractMap<K, V>
public
V
put
(
K
key
,
V
value
)
{
typeCheck
(
key
);
int
index
=
((
Enum
)
key
)
.
ordinal
();
int
index
=
key
.
ordinal
();
Object
oldValue
=
vals
[
index
];
vals
[
index
]
=
maskNull
(
value
);
if
(
oldValue
==
null
)
...
...
@@ -662,7 +662,7 @@ public class EnumMap<K extends Enum<K>, V> extends AbstractMap<K, V>
}
catch
(
CloneNotSupportedException
e
)
{
throw
new
AssertionError
();
}
result
.
vals
=
(
Object
[])
result
.
vals
.
clone
();
result
.
vals
=
result
.
vals
.
clone
();
return
result
;
}
...
...
src/share/classes/java/util/IdentityHashMap.java
浏览文件 @
ab1229d1
...
...
@@ -701,7 +701,7 @@ public class IdentityHashMap<K,V>
try
{
IdentityHashMap
<
K
,
V
>
m
=
(
IdentityHashMap
<
K
,
V
>)
super
.
clone
();
m
.
entrySet
=
null
;
m
.
table
=
(
Object
[])
table
.
clone
();
m
.
table
=
table
.
clone
();
return
m
;
}
catch
(
CloneNotSupportedException
e
)
{
throw
new
InternalError
();
...
...
@@ -975,7 +975,7 @@ public class IdentityHashMap<K,V>
*/
public
boolean
removeAll
(
Collection
<?>
c
)
{
boolean
modified
=
false
;
for
(
Iterator
i
=
iterator
();
i
.
hasNext
();
)
{
for
(
Iterator
<
K
>
i
=
iterator
();
i
.
hasNext
();
)
{
if
(
c
.
contains
(
i
.
next
()))
{
i
.
remove
();
modified
=
true
;
...
...
@@ -1033,7 +1033,7 @@ public class IdentityHashMap<K,V>
return
containsValue
(
o
);
}
public
boolean
remove
(
Object
o
)
{
for
(
Iterator
i
=
iterator
();
i
.
hasNext
();
)
{
for
(
Iterator
<
V
>
i
=
iterator
();
i
.
hasNext
();
)
{
if
(
i
.
next
()
==
o
)
{
i
.
remove
();
return
true
;
...
...
@@ -1121,7 +1121,7 @@ public class IdentityHashMap<K,V>
*/
public
boolean
removeAll
(
Collection
<?>
c
)
{
boolean
modified
=
false
;
for
(
Iterator
i
=
iterator
();
i
.
hasNext
();
)
{
for
(
Iterator
<
Map
.
Entry
<
K
,
V
>>
i
=
iterator
();
i
.
hasNext
();
)
{
if
(
c
.
contains
(
i
.
next
()))
{
i
.
remove
();
modified
=
true
;
...
...
src/share/classes/java/util/JumboEnumSet.java
浏览文件 @
ab1229d1
...
...
@@ -364,7 +364,7 @@ class JumboEnumSet<E extends Enum<E>> extends EnumSet<E> {
public
EnumSet
<
E
>
clone
()
{
JumboEnumSet
<
E
>
result
=
(
JumboEnumSet
<
E
>)
super
.
clone
();
result
.
elements
=
(
long
[])
result
.
elements
.
clone
();
result
.
elements
=
result
.
elements
.
clone
();
return
result
;
}
}
src/share/classes/java/util/Random.java
浏览文件 @
ab1229d1
...
...
@@ -504,7 +504,7 @@ class Random implements java.io.Serializable {
// The seed is read in as {@code long} for
// historical reasons, but it is converted to an AtomicLong.
long
seedVal
=
(
long
)
fields
.
get
(
"seed"
,
-
1L
);
long
seedVal
=
fields
.
get
(
"seed"
,
-
1L
);
if
(
seedVal
<
0
)
throw
new
java
.
io
.
StreamCorruptedException
(
"Random: invalid seed"
);
...
...
src/share/classes/java/util/TreeSet.java
浏览文件 @
ab1229d1
...
...
@@ -195,7 +195,7 @@ public class TreeSet<E> extends AbstractSet<E>
* @since 1.6
*/
public
NavigableSet
<
E
>
descendingSet
()
{
return
new
TreeSet
(
m
.
descendingMap
());
return
new
TreeSet
<
E
>
(
m
.
descendingMap
());
}
/**
...
...
@@ -505,8 +505,8 @@ public class TreeSet<E> extends AbstractSet<E>
s
.
writeInt
(
m
.
size
());
// Write out all elements in the proper order.
for
(
Iterator
i
=
m
.
keySet
().
iterator
();
i
.
hasNext
();
)
s
.
writeObject
(
i
.
next
()
);
for
(
E
e
:
m
.
keySet
()
)
s
.
writeObject
(
e
);
}
/**
...
...
src/share/classes/java/util/prefs/AbstractPreferences.java
浏览文件 @
ab1229d1
...
...
@@ -155,7 +155,8 @@ public abstract class AbstractPreferences extends Preferences {
* All known unremoved children of this node. (This "cache" is consulted
* prior to calling childSpi() or getChild().
*/
private
Map
kidCache
=
new
HashMap
();
private
Map
<
String
,
AbstractPreferences
>
kidCache
=
new
HashMap
<
String
,
AbstractPreferences
>();
/**
* This field is used to keep track of whether or not this node has
...
...
@@ -712,11 +713,10 @@ public abstract class AbstractPreferences extends Preferences {
if
(
removed
)
throw
new
IllegalStateException
(
"Node has been removed."
);
Set
s
=
new
TreeSet
(
kidCache
.
keySet
());
String
[]
kids
=
childrenNamesSpi
();
for
(
int
i
=
0
;
i
<
kids
.
length
;
i
++)
s
.
add
(
kids
[
i
]);
return
(
String
[])
s
.
toArray
(
EMPTY_STRING_ARRAY
);
Set
<
String
>
s
=
new
TreeSet
<
String
>(
kidCache
.
keySet
());
for
(
String
kid
:
childrenNamesSpi
())
s
.
add
(
kid
);
return
s
.
toArray
(
EMPTY_STRING_ARRAY
);
}
}
...
...
@@ -728,8 +728,7 @@ public abstract class AbstractPreferences extends Preferences {
* @return all known unremoved children of this node.
*/
protected
final
AbstractPreferences
[]
cachedChildren
()
{
return
(
AbstractPreferences
[])
kidCache
.
values
().
toArray
(
EMPTY_ABSTRACT_PREFS_ARRAY
);
return
kidCache
.
values
().
toArray
(
EMPTY_ABSTRACT_PREFS_ARRAY
);
}
private
static
final
AbstractPreferences
[]
EMPTY_ABSTRACT_PREFS_ARRAY
...
...
@@ -825,7 +824,7 @@ public abstract class AbstractPreferences extends Preferences {
if
(
token
.
equals
(
"/"
))
// Check for consecutive slashes
throw
new
IllegalArgumentException
(
"Consecutive slashes in path"
);
synchronized
(
lock
)
{
AbstractPreferences
child
=(
AbstractPreferences
)
kidCache
.
get
(
token
);
AbstractPreferences
child
=
kidCache
.
get
(
token
);
if
(
child
==
null
)
{
if
(
token
.
length
()
>
MAX_NAME_LENGTH
)
throw
new
IllegalArgumentException
(
...
...
@@ -893,7 +892,7 @@ public abstract class AbstractPreferences extends Preferences {
if
(
token
.
equals
(
"/"
))
// Check for consecutive slashes
throw
new
IllegalArgumentException
(
"Consecutive slashes in path"
);
synchronized
(
lock
)
{
AbstractPreferences
child
=(
AbstractPreferences
)
kidCache
.
get
(
token
);
AbstractPreferences
child
=
kidCache
.
get
(
token
);
if
(
child
==
null
)
child
=
getChild
(
token
);
if
(
child
==
null
)
...
...
@@ -964,9 +963,10 @@ public abstract class AbstractPreferences extends Preferences {
kidCache
.
put
(
kidNames
[
i
],
childSpi
(
kidNames
[
i
]));
// Recursively remove all cached children
for
(
Iterator
i
=
kidCache
.
values
().
iterator
();
i
.
hasNext
();)
{
for
(
Iterator
<
AbstractPreferences
>
i
=
kidCache
.
values
().
iterator
();
i
.
hasNext
();)
{
try
{
((
AbstractPreferences
)
i
.
next
()
).
removeNode2
();
i
.
next
(
).
removeNode2
();
i
.
remove
();
}
catch
(
BackingStoreException
x
)
{
}
}
...
...
@@ -1020,13 +1020,12 @@ public abstract class AbstractPreferences extends Preferences {
* preference tree.
*/
public
boolean
isUserNode
()
{
Boolean
result
=
(
Boolean
)
AccessController
.
doPrivileged
(
new
PrivilegedAction
()
{
public
Object
run
()
{
return
Boolean
.
valueOf
(
root
==
Preferences
.
userRoot
()
);
return
AccessController
.
doPrivileged
(
new
PrivilegedAction
<
Boolean
>
()
{
public
Boolean
run
()
{
return
root
==
Preferences
.
userRoot
(
);
}
});
return
result
.
booleanValue
();
}).
booleanValue
();
}
public
void
addPreferenceChangeListener
(
PreferenceChangeListener
pcl
)
{
...
...
@@ -1443,7 +1442,8 @@ public abstract class AbstractPreferences extends Preferences {
* event delivery from preference activity, greatly simplifying
* locking and reducing opportunity for deadlock.
*/
private
static
final
List
eventQueue
=
new
LinkedList
();
private
static
final
List
<
EventObject
>
eventQueue
=
new
LinkedList
<
EventObject
>();
/**
* These two classes are used to distinguish NodeChangeEvents on
...
...
@@ -1476,7 +1476,7 @@ public abstract class AbstractPreferences extends Preferences {
try
{
while
(
eventQueue
.
isEmpty
())
eventQueue
.
wait
();
event
=
(
EventObject
)
eventQueue
.
remove
(
0
);
event
=
eventQueue
.
remove
(
0
);
}
catch
(
InterruptedException
e
)
{
// XXX Log "Event dispatch thread interrupted. Exiting"
return
;
...
...
src/share/classes/java/util/regex/Matcher.java
浏览文件 @
ab1229d1
...
...
@@ -249,7 +249,7 @@ public final class Matcher implements MatchResult {
Matcher
result
=
new
Matcher
(
this
.
parentPattern
,
text
.
toString
());
result
.
first
=
this
.
first
;
result
.
last
=
this
.
last
;
result
.
groups
=
(
int
[])(
this
.
groups
.
clone
()
);
result
.
groups
=
this
.
groups
.
clone
(
);
return
result
;
}
...
...
src/share/classes/javax/rmi/ssl/SslRMIClientSocketFactory.java
浏览文件 @
ab1229d1
...
...
@@ -121,7 +121,7 @@ public class SslRMIClientSocketFactory
sslSocketFactory
.
createSocket
(
host
,
port
);
// Set the SSLSocket Enabled Cipher Suites
//
final
String
enabledCipherSuites
=
(
String
)
final
String
enabledCipherSuites
=
System
.
getProperty
(
"javax.rmi.ssl.client.enabledCipherSuites"
);
if
(
enabledCipherSuites
!=
null
)
{
StringTokenizer
st
=
new
StringTokenizer
(
enabledCipherSuites
,
","
);
...
...
@@ -139,7 +139,7 @@ public class SslRMIClientSocketFactory
}
// Set the SSLSocket Enabled Protocols
//
final
String
enabledProtocols
=
(
String
)
final
String
enabledProtocols
=
System
.
getProperty
(
"javax.rmi.ssl.client.enabledProtocols"
);
if
(
enabledProtocols
!=
null
)
{
StringTokenizer
st
=
new
StringTokenizer
(
enabledProtocols
,
","
);
...
...
src/share/classes/javax/rmi/ssl/SslRMIServerSocketFactory.java
浏览文件 @
ab1229d1
...
...
@@ -165,9 +165,9 @@ public class SslRMIServerSocketFactory implements RMIServerSocketFactory {
// Initialize the configuration parameters.
//
this
.
enabledCipherSuites
=
enabledCipherSuites
==
null
?
null
:
(
String
[])
enabledCipherSuites
.
clone
();
null
:
enabledCipherSuites
.
clone
();
this
.
enabledProtocols
=
enabledProtocols
==
null
?
null
:
(
String
[])
enabledProtocols
.
clone
();
null
:
enabledProtocols
.
clone
();
this
.
needClientAuth
=
needClientAuth
;
// Force the initialization of the default at construction time,
...
...
@@ -196,13 +196,11 @@ public class SslRMIServerSocketFactory implements RMIServerSocketFactory {
//
if
(
this
.
enabledCipherSuites
!=
null
)
{
sslSocket
.
setEnabledCipherSuites
(
this
.
enabledCipherSuites
);
enabledCipherSuitesList
=
Arrays
.
asList
((
String
[])
this
.
enabledCipherSuites
);
enabledCipherSuitesList
=
Arrays
.
asList
(
this
.
enabledCipherSuites
);
}
if
(
this
.
enabledProtocols
!=
null
)
{
sslSocket
.
setEnabledProtocols
(
this
.
enabledProtocols
);
enabledProtocolsList
=
Arrays
.
asList
((
String
[])
this
.
enabledProtocols
);
enabledProtocolsList
=
Arrays
.
asList
(
this
.
enabledProtocols
);
}
}
...
...
@@ -218,7 +216,7 @@ public class SslRMIServerSocketFactory implements RMIServerSocketFactory {
*/
public
final
String
[]
getEnabledCipherSuites
()
{
return
enabledCipherSuites
==
null
?
null
:
(
String
[])
enabledCipherSuites
.
clone
();
null
:
enabledCipherSuites
.
clone
();
}
/**
...
...
@@ -234,7 +232,7 @@ public class SslRMIServerSocketFactory implements RMIServerSocketFactory {
*/
public
final
String
[]
getEnabledProtocols
()
{
return
enabledProtocols
==
null
?
null
:
(
String
[])
enabledProtocols
.
clone
();
null
:
enabledProtocols
.
clone
();
}
/**
...
...
@@ -315,8 +313,8 @@ public class SslRMIServerSocketFactory implements RMIServerSocketFactory {
(
enabledCipherSuites
!=
null
&&
that
.
enabledCipherSuites
==
null
))
return
false
;
if
(
enabledCipherSuites
!=
null
&&
that
.
enabledCipherSuites
!=
null
)
{
List
thatEnabledCipherSuitesList
=
Arrays
.
asList
(
(
String
[])
that
.
enabledCipherSuites
);
List
<
String
>
thatEnabledCipherSuitesList
=
Arrays
.
asList
(
that
.
enabledCipherSuites
);
if
(!
enabledCipherSuitesList
.
equals
(
thatEnabledCipherSuitesList
))
return
false
;
}
...
...
@@ -327,8 +325,8 @@ public class SslRMIServerSocketFactory implements RMIServerSocketFactory {
(
enabledProtocols
!=
null
&&
that
.
enabledProtocols
==
null
))
return
false
;
if
(
enabledProtocols
!=
null
&&
that
.
enabledProtocols
!=
null
)
{
List
thatEnabledProtocolsList
=
Arrays
.
asList
(
(
String
[])
that
.
enabledProtocols
);
List
<
String
>
thatEnabledProtocolsList
=
Arrays
.
asList
(
that
.
enabledProtocols
);
if
(!
enabledProtocolsList
.
equals
(
thatEnabledProtocolsList
))
return
false
;
}
...
...
@@ -374,7 +372,7 @@ public class SslRMIServerSocketFactory implements RMIServerSocketFactory {
private
final
String
[]
enabledCipherSuites
;
private
final
String
[]
enabledProtocols
;
private
final
boolean
needClientAuth
;
private
List
enabledCipherSuitesList
;
private
List
enabledProtocolsList
;
private
List
<
String
>
enabledCipherSuitesList
;
private
List
<
String
>
enabledProtocolsList
;
private
SSLContext
context
;
}
src/share/classes/javax/security/auth/kerberos/KerberosTicket.java
浏览文件 @
ab1229d1
...
...
@@ -276,7 +276,7 @@ public class KerberosTicket implements Destroyable, Refreshable,
if
(
flags
!=
null
)
{
if
(
flags
.
length
>=
NUM_FLAGS
)
this
.
flags
=
(
boolean
[])
flags
.
clone
();
this
.
flags
=
flags
.
clone
();
else
{
this
.
flags
=
new
boolean
[
NUM_FLAGS
];
// Fill in whatever we have
...
...
@@ -304,7 +304,7 @@ public class KerberosTicket implements Destroyable, Refreshable,
this
.
endTime
=
endTime
;
if
(
clientAddresses
!=
null
)
this
.
clientAddresses
=
(
InetAddress
[])
clientAddresses
.
clone
();
this
.
clientAddresses
=
clientAddresses
.
clone
();
}
/**
...
...
@@ -430,7 +430,7 @@ public class KerberosTicket implements Destroyable, Refreshable,
* @return the flags associated with this ticket.
*/
public
final
boolean
[]
getFlags
()
{
return
(
flags
==
null
?
null
:
(
boolean
[])
flags
.
clone
());
return
(
flags
==
null
?
null
:
flags
.
clone
());
}
/**
...
...
@@ -479,8 +479,7 @@ public class KerberosTicket implements Destroyable, Refreshable,
* provided.
*/
public
final
java
.
net
.
InetAddress
[]
getClientAddresses
()
{
return
(
clientAddresses
==
null
?
null
:
(
InetAddress
[])
clientAddresses
.
clone
());
return
(
clientAddresses
==
null
)
?
null
:
clientAddresses
.
clone
();
}
/**
...
...
@@ -491,7 +490,7 @@ public class KerberosTicket implements Destroyable, Refreshable,
public
final
byte
[]
getEncoded
()
{
if
(
destroyed
)
throw
new
IllegalStateException
(
"This ticket is no longer valid"
);
return
(
byte
[])
asn1Encoding
.
clone
();
return
asn1Encoding
.
clone
();
}
/** Determines if this ticket is still current. */
...
...
src/share/classes/javax/security/auth/kerberos/KeyImpl.java
浏览文件 @
ab1229d1
...
...
@@ -66,7 +66,7 @@ class KeyImpl implements SecretKey, Destroyable, Serializable {
*/
public
KeyImpl
(
byte
[]
keyBytes
,
int
keyType
)
{
this
.
keyBytes
=
(
byte
[])
keyBytes
.
clone
();
this
.
keyBytes
=
keyBytes
.
clone
();
this
.
keyType
=
keyType
;
}
...
...
@@ -151,7 +151,7 @@ class KeyImpl implements SecretKey, Destroyable, Serializable {
public
final
byte
[]
getEncoded
()
{
if
(
destroyed
)
throw
new
IllegalStateException
(
"This key is no longer valid"
);
return
(
byte
[])
keyBytes
.
clone
();
return
keyBytes
.
clone
();
}
public
void
destroy
()
throws
DestroyFailedException
{
...
...
src/share/classes/sun/misc/ClassFileTransformer.java
浏览文件 @
ab1229d1
...
...
@@ -46,8 +46,10 @@ public abstract class ClassFileTransformer
{
// Singleton of ClassFileTransformer
//
private
static
ArrayList
transformerList
=
new
ArrayList
();
private
static
Object
[]
transformers
=
new
Object
[
0
];
private
static
ArrayList
<
ClassFileTransformer
>
transformerList
=
new
ArrayList
<
ClassFileTransformer
>();
private
static
ClassFileTransformer
[]
transformers
=
new
ClassFileTransformer
[
0
];
/**
* Add the class file transformer object.
...
...
@@ -59,7 +61,7 @@ public abstract class ClassFileTransformer
synchronized
(
transformerList
)
{
transformerList
.
add
(
t
);
transformers
=
transformerList
.
toArray
();
transformers
=
transformerList
.
toArray
(
new
ClassFileTransformer
[
0
]
);
}
}
...
...
@@ -68,7 +70,7 @@ public abstract class ClassFileTransformer
*
* @return ClassFileTransformer object array
*/
public
static
Object
[]
getTransformers
()
public
static
ClassFileTransformer
[]
getTransformers
()
{
// transformers is not intended to be changed frequently,
// so it is okay to not put synchronized block here
...
...
src/share/classes/sun/misc/Cleaner.java
浏览文件 @
ab1229d1
...
...
@@ -141,8 +141,8 @@ public class Cleaner
try
{
thunk
.
run
();
}
catch
(
final
Throwable
x
)
{
AccessController
.
doPrivileged
(
new
PrivilegedAction
()
{
public
Object
run
()
{
AccessController
.
doPrivileged
(
new
PrivilegedAction
<
Void
>
()
{
public
Void
run
()
{
if
(
System
.
err
!=
null
)
new
Error
(
"Cleaner terminated abnormally"
,
x
)
.
printStackTrace
();
...
...
src/share/classes/sun/misc/ExtensionDependency.java
浏览文件 @
ab1229d1
...
...
@@ -284,10 +284,9 @@ public class ExtensionDependency {
// Load the jar file ...
Manifest
man
;
try
{
man
=
(
Manifest
)
AccessController
.
doPrivileged
(
new
PrivilegedExceptionAction
()
{
public
Object
run
()
man
=
AccessController
.
doPrivileged
(
new
PrivilegedExceptionAction
<
Manifest
>()
{
public
Manifest
run
()
throws
IOException
,
FileNotFoundException
{
if
(!
file
.
exists
())
throw
new
FileNotFoundException
(
file
.
getName
());
...
...
@@ -391,9 +390,9 @@ public class ExtensionDependency {
final
String
extName
=
extensionName
;
final
String
[]
fileExt
=
{
".jar"
,
".zip"
};
return
(
File
)
AccessController
.
doPrivileged
(
new
PrivilegedAction
()
{
public
Object
run
()
{
return
AccessController
.
doPrivileged
(
new
PrivilegedAction
<
File
>
()
{
public
File
run
()
{
try
{
File
fExtension
;
File
[]
dirs
=
getExtDirs
();
...
...
@@ -460,7 +459,7 @@ public class ExtensionDependency {
* @return the list of files installed in all the directories
*/
private
static
File
[]
getExtFiles
(
File
[]
dirs
)
throws
IOException
{
Vector
urls
=
new
Vector
();
Vector
<
File
>
urls
=
new
Vector
<
File
>
();
for
(
int
i
=
0
;
i
<
dirs
.
length
;
i
++)
{
String
[]
files
=
dirs
[
i
].
list
(
new
JarFilter
());
if
(
files
!=
null
)
{
...
...
@@ -484,16 +483,15 @@ public class ExtensionDependency {
* </p>
*/
private
File
[]
getInstalledExtensions
()
throws
IOException
{
return
(
File
[])
AccessController
.
doPrivileged
(
new
PrivilegedAction
()
{
public
Object
run
()
{
return
AccessController
.
doPrivileged
(
new
PrivilegedAction
<
File
[]>()
{
public
File
[]
run
()
{
try
{
return
getExtFiles
(
getExtDirs
());
}
catch
(
IOException
e
)
{
debug
(
"Cannot get list of installed extensions"
);
debugException
(
e
);
return
new
URL
[
0
];
return
new
File
[
0
];
}
}
});
...
...
src/share/classes/sun/misc/GC.java
浏览文件 @
ab1229d1
...
...
@@ -128,8 +128,8 @@ public class GC {
/* Create a new daemon thread in the root thread group */
public
static
void
create
()
{
PrivilegedAction
pa
=
new
PrivilegedAction
()
{
public
Object
run
()
{
PrivilegedAction
<
Void
>
pa
=
new
PrivilegedAction
<
Void
>
()
{
public
Void
run
()
{
ThreadGroup
tg
=
Thread
.
currentThread
().
getThreadGroup
();
for
(
ThreadGroup
tgn
=
tg
;
tgn
!=
null
;
...
...
@@ -170,13 +170,14 @@ public class GC {
* method. Given a request, the only interesting operation is that of
* cancellation.
*/
public
static
class
LatencyRequest
implements
Comparable
{
public
static
class
LatencyRequest
implements
Comparable
<
LatencyRequest
>
{
/* Instance counter, used to generate unique identifers */
private
static
long
counter
=
0
;
/* Sorted set of active latency requests */
private
static
SortedSet
requests
=
null
;
private
static
SortedSet
<
LatencyRequest
>
requests
=
null
;
/* Examine the request set and reset the latency target if necessary.
* Must be invoked while holding the lock.
...
...
@@ -187,7 +188,7 @@ public class GC {
setLatencyTarget
(
NO_TARGET
);
}
}
else
{
LatencyRequest
r
=
(
LatencyRequest
)
requests
.
first
();
LatencyRequest
r
=
requests
.
first
();
if
(
r
.
latency
!=
latencyTarget
)
{
setLatencyTarget
(
r
.
latency
);
}
...
...
@@ -211,7 +212,7 @@ public class GC {
synchronized
(
lock
)
{
this
.
id
=
++
counter
;
if
(
requests
==
null
)
{
requests
=
new
TreeSet
();
requests
=
new
TreeSet
<
LatencyRequest
>
();
}
requests
.
add
(
this
);
adjustLatencyIfNeeded
();
...
...
@@ -240,8 +241,7 @@ public class GC {
}
}
public
int
compareTo
(
Object
o
)
{
LatencyRequest
r
=
(
LatencyRequest
)
o
;
public
int
compareTo
(
LatencyRequest
r
)
{
long
d
=
this
.
latency
-
r
.
latency
;
if
(
d
==
0
)
d
=
this
.
id
-
r
.
id
;
return
(
d
<
0
)
?
-
1
:
((
d
>
0
)
?
+
1
:
0
);
...
...
src/share/classes/sun/misc/Launcher.java
浏览文件 @
ab1229d1
...
...
@@ -135,9 +135,9 @@ public class Launcher {
// aa synthesized ACC via a call to the private method
// ExtClassLoader.getContext().
return
(
ExtClassLoader
)
AccessController
.
doPrivileged
(
new
PrivilegedExceptionAction
()
{
public
Object
run
()
throws
IOException
{
return
AccessController
.
doPrivileged
(
new
PrivilegedExceptionAction
<
ExtClassLoader
>
()
{
public
ExtClassLoader
run
()
throws
IOException
{
int
len
=
dirs
.
length
;
for
(
int
i
=
0
;
i
<
len
;
i
++)
{
MetaIndex
.
registerDirectory
(
dirs
[
i
]);
...
...
@@ -180,7 +180,7 @@ public class Launcher {
}
private
static
URL
[]
getExtURLs
(
File
[]
dirs
)
throws
IOException
{
Vector
urls
=
new
Vector
();
Vector
<
URL
>
urls
=
new
Vector
<
URL
>
();
for
(
int
i
=
0
;
i
<
dirs
.
length
;
i
++)
{
String
[]
files
=
dirs
[
i
].
list
();
if
(
files
!=
null
)
{
...
...
@@ -261,9 +261,9 @@ public class Launcher {
// when loading classes. Specifically it prevent
// accessClassInPackage.sun.* grants from being honored.
//
return
(
AppClassLoader
)
AccessController
.
doPrivileged
(
new
PrivilegedAction
()
{
public
Object
run
()
{
return
AccessController
.
doPrivileged
(
new
PrivilegedAction
<
AppClassLoader
>
()
{
public
AppClassLoader
run
()
{
URL
[]
urls
=
(
s
==
null
)
?
new
URL
[
0
]
:
pathToURLs
(
path
);
return
new
AppClassLoader
(
urls
,
extcl
);
...
...
@@ -348,12 +348,12 @@ public class Launcher {
URL
[]
urls
;
if
(
prop
!=
null
)
{
final
String
path
=
prop
;
urls
=
(
URL
[])
AccessController
.
doPrivileged
(
new
PrivilegedAction
()
{
public
Object
run
()
{
urls
=
AccessController
.
doPrivileged
(
new
PrivilegedAction
<
URL
[]>
()
{
public
URL
[]
run
()
{
File
[]
classPath
=
getClassPath
(
path
);
int
len
=
classPath
.
length
;
Set
seenDirs
=
new
HashSet
();
Set
<
File
>
seenDirs
=
new
HashSet
<
File
>
();
for
(
int
i
=
0
;
i
<
len
;
i
++)
{
File
curEntry
=
classPath
[
i
];
// Negative test used to properly handle
...
...
@@ -509,8 +509,8 @@ class PathPermissions extends PermissionCollection {
perms
.
add
(
new
java
.
util
.
PropertyPermission
(
"java.*"
,
SecurityConstants
.
PROPERTY_READ_ACTION
));
AccessController
.
doPrivileged
(
new
PrivilegedAction
()
{
public
Object
run
()
{
AccessController
.
doPrivileged
(
new
PrivilegedAction
<
Void
>
()
{
public
Void
run
()
{
for
(
int
i
=
0
;
i
<
path
.
length
;
i
++)
{
File
f
=
path
[
i
];
String
path
;
...
...
@@ -553,7 +553,7 @@ class PathPermissions extends PermissionCollection {
return
perms
.
implies
(
permission
);
}
public
java
.
util
.
Enumeration
elements
()
{
public
java
.
util
.
Enumeration
<
Permission
>
elements
()
{
if
(
perms
==
null
)
init
();
synchronized
(
perms
)
{
...
...
src/share/classes/sun/misc/PerformanceLogger.java
浏览文件 @
ab1229d1
...
...
@@ -78,7 +78,7 @@ public class PerformanceLogger {
private
static
boolean
perfLoggingOn
=
false
;
private
static
boolean
useNanoTime
=
false
;
private
static
Vector
times
;
private
static
Vector
<
TimeData
>
times
;
private
static
String
logFileName
=
null
;
private
static
Writer
logWriter
=
null
;
...
...
@@ -104,8 +104,8 @@ public class PerformanceLogger {
if
(
logFileName
!=
null
)
{
if
(
logWriter
==
null
)
{
java
.
security
.
AccessController
.
doPrivileged
(
new
java
.
security
.
PrivilegedAction
()
{
public
Object
run
()
{
new
java
.
security
.
PrivilegedAction
<
Void
>
()
{
public
Void
run
()
{
try
{
File
logFile
=
new
File
(
logFileName
);
logFile
.
createNewFile
();
...
...
@@ -124,7 +124,7 @@ public class PerformanceLogger {
logWriter
=
new
OutputStreamWriter
(
System
.
out
);
}
}
times
=
new
Vector
(
10
);
times
=
new
Vector
<
TimeData
>
(
10
);
// Reserve predefined slots
for
(
int
i
=
0
;
i
<=
LAST_RESERVED
;
++
i
)
{
times
.
add
(
new
TimeData
(
"Time "
+
i
+
" not set"
,
0
));
...
...
@@ -207,7 +207,7 @@ public class PerformanceLogger {
*/
public
static
long
getStartTime
()
{
if
(
loggingEnabled
())
{
return
((
TimeData
)
times
.
get
(
START_INDEX
)
).
getTime
();
return
times
.
get
(
START_INDEX
).
getTime
();
}
else
{
return
0
;
}
...
...
@@ -253,7 +253,7 @@ public class PerformanceLogger {
*/
public
static
long
getTimeAtIndex
(
int
index
)
{
if
(
loggingEnabled
())
{
return
((
TimeData
)
times
.
get
(
index
)
).
getTime
();
return
times
.
get
(
index
).
getTime
();
}
else
{
return
0
;
}
...
...
@@ -264,7 +264,7 @@ public class PerformanceLogger {
*/
public
static
String
getMessageAtIndex
(
int
index
)
{
if
(
loggingEnabled
())
{
return
((
TimeData
)
times
.
get
(
index
)
).
getMessage
();
return
times
.
get
(
index
).
getMessage
();
}
else
{
return
null
;
}
...
...
@@ -278,7 +278,7 @@ public class PerformanceLogger {
try
{
synchronized
(
times
)
{
for
(
int
i
=
0
;
i
<
times
.
size
();
++
i
)
{
TimeData
td
=
(
TimeData
)
times
.
get
(
i
);
TimeData
td
=
times
.
get
(
i
);
if
(
td
!=
null
)
{
writer
.
write
(
i
+
" "
+
td
.
getMessage
()
+
": "
+
td
.
getTime
()
+
"\n"
);
...
...
src/share/classes/sun/misc/ProxyGenerator.java
浏览文件 @
ab1229d1
...
...
@@ -324,8 +324,8 @@ public class ProxyGenerator {
if
(
saveGeneratedFiles
)
{
java
.
security
.
AccessController
.
doPrivileged
(
new
java
.
security
.
PrivilegedAction
()
{
public
Object
run
()
{
new
java
.
security
.
PrivilegedAction
<
Void
>
()
{
public
Void
run
()
{
try
{
FileOutputStream
file
=
new
FileOutputStream
(
dotToSlash
(
name
)
+
".class"
);
...
...
@@ -576,7 +576,7 @@ public class ProxyGenerator {
* compatibly with the throws clauses of both
* overridden methods.
*/
List
<
Class
>
legalExceptions
=
new
ArrayList
<
Class
>();
List
<
Class
<?>>
legalExceptions
=
new
ArrayList
<
Class
<?>
>();
collectCompatibleTypes
(
exceptionTypes
,
pm
.
exceptionTypes
,
legalExceptions
);
collectCompatibleTypes
(
...
...
@@ -618,11 +618,11 @@ public class ProxyGenerator {
* List of return types that are not yet known to be
* assignable from ("covered" by) any of the others.
*/
LinkedList
<
Class
>
uncoveredReturnTypes
=
new
LinkedList
<
Class
>();
LinkedList
<
Class
<?>>
uncoveredReturnTypes
=
new
LinkedList
<
Class
<?>
>();
nextNewReturnType:
for
(
ProxyMethod
pm
:
methods
)
{
Class
newReturnType
=
pm
.
returnType
;
Class
<?>
newReturnType
=
pm
.
returnType
;
if
(
newReturnType
.
isPrimitive
())
{
throw
new
IllegalArgumentException
(
"methods with same signature "
+
...
...
@@ -637,9 +637,9 @@ public class ProxyGenerator {
* Compare the new return type to the existing uncovered
* return types.
*/
ListIterator
<
Class
>
liter
=
uncoveredReturnTypes
.
listIterator
();
ListIterator
<
Class
<?>
>
liter
=
uncoveredReturnTypes
.
listIterator
();
while
(
liter
.
hasNext
())
{
Class
uncoveredReturnType
=
liter
.
next
();
Class
<?>
uncoveredReturnType
=
liter
.
next
();
/*
* If an existing uncovered return type is assignable
...
...
@@ -944,10 +944,10 @@ public class ProxyGenerator {
tryEnd
=
pc
=
(
short
)
minfo
.
code
.
size
();
List
<
Class
>
catchList
=
computeUniqueCatchList
(
exceptionTypes
);
List
<
Class
<?>
>
catchList
=
computeUniqueCatchList
(
exceptionTypes
);
if
(
catchList
.
size
()
>
0
)
{
for
(
Class
ex
:
catchList
)
{
for
(
Class
<?>
ex
:
catchList
)
{
minfo
.
exceptionTable
.
add
(
new
ExceptionTableEntry
(
tryBegin
,
tryEnd
,
pc
,
cp
.
getClass
(
dotToSlash
(
ex
.
getName
()))));
...
...
@@ -1521,8 +1521,9 @@ public class ProxyGenerator {
* declared exceptions from duplicate methods inherited from
* different interfaces.
*/
private
static
void
collectCompatibleTypes
(
Class
[]
from
,
Class
[]
with
,
List
<
Class
>
list
)
private
static
void
collectCompatibleTypes
(
Class
<?>[]
from
,
Class
<?>[]
with
,
List
<
Class
<?>>
list
)
{
for
(
int
i
=
0
;
i
<
from
.
length
;
i
++)
{
if
(!
list
.
contains
(
from
[
i
]))
{
...
...
@@ -1557,8 +1558,8 @@ public class ProxyGenerator {
* given list of declared exceptions, indicating that no exceptions
* need to be caught.
*/
private
static
List
<
Class
>
computeUniqueCatchList
(
Class
[]
exceptions
)
{
List
<
Class
>
uniqueList
=
new
ArrayList
<
Class
>();
private
static
List
<
Class
<?>>
computeUniqueCatchList
(
Class
<?>
[]
exceptions
)
{
List
<
Class
<?>>
uniqueList
=
new
ArrayList
<
Class
<?>
>();
// unique exceptions to catch
uniqueList
.
add
(
Error
.
class
);
// always catch/rethrow these
...
...
@@ -1566,7 +1567,7 @@ public class ProxyGenerator {
nextException:
for
(
int
i
=
0
;
i
<
exceptions
.
length
;
i
++)
{
Class
ex
=
exceptions
[
i
];
Class
<?>
ex
=
exceptions
[
i
];
if
(
ex
.
isAssignableFrom
(
Throwable
.
class
))
{
/*
* If Throwable is declared to be thrown by the proxy method,
...
...
@@ -1586,7 +1587,7 @@ public class ProxyGenerator {
* exceptions that need to be caught:
*/
for
(
int
j
=
0
;
j
<
uniqueList
.
size
();)
{
Class
ex2
=
uniqueList
.
get
(
j
);
Class
<?>
ex2
=
uniqueList
.
get
(
j
);
if
(
ex2
.
isAssignableFrom
(
ex
))
{
/*
* if a superclass of this exception is already on
...
...
src/share/classes/sun/misc/URLClassPath.java
浏览文件 @
ab1229d1
...
...
@@ -86,16 +86,16 @@ public class URLClassPath {
}
/* The original search path of URLs. */
private
ArrayList
path
=
new
ArrayList
();
private
ArrayList
<
URL
>
path
=
new
ArrayList
<
URL
>
();
/* The stack of unopened URLs */
Stack
urls
=
new
Stack
();
Stack
<
URL
>
urls
=
new
Stack
<
URL
>
();
/* The resulting search path of Loaders */
ArrayList
loaders
=
new
ArrayList
();
ArrayList
<
Loader
>
loaders
=
new
ArrayList
<
Loader
>
();
/* Map of each URL opened to its corresponding Loader */
HashMap
lmap
=
new
HashMap
();
HashMap
<
URL
,
Loader
>
lmap
=
new
HashMap
<
URL
,
Loader
>
();
/* The jar protocol handler to use when creating new URLs */
private
URLStreamHandler
jarHandler
;
...
...
@@ -146,7 +146,7 @@ public class URLClassPath {
*/
public
URL
[]
getURLs
()
{
synchronized
(
urls
)
{
return
(
URL
[])
path
.
toArray
(
new
URL
[
path
.
size
()]);
return
path
.
toArray
(
new
URL
[
path
.
size
()]);
}
}
...
...
@@ -200,9 +200,9 @@ public class URLClassPath {
* @param name the resource name
* @return an Enumeration of all the urls having the specified name
*/
public
Enumeration
findResources
(
final
String
name
,
public
Enumeration
<
URL
>
findResources
(
final
String
name
,
final
boolean
check
)
{
return
new
Enumeration
()
{
return
new
Enumeration
<
URL
>
()
{
private
int
index
=
0
;
private
URL
url
=
null
;
...
...
@@ -225,7 +225,7 @@ public class URLClassPath {
return
next
();
}
public
Object
nextElement
()
{
public
URL
nextElement
()
{
if
(!
next
())
{
throw
new
NoSuchElementException
();
}
...
...
@@ -247,9 +247,9 @@ public class URLClassPath {
* @param name the resource name
* @return an Enumeration of all the resources having the specified name
*/
public
Enumeration
getResources
(
final
String
name
,
public
Enumeration
<
Resource
>
getResources
(
final
String
name
,
final
boolean
check
)
{
return
new
Enumeration
()
{
return
new
Enumeration
<
Resource
>
()
{
private
int
index
=
0
;
private
Resource
res
=
null
;
...
...
@@ -272,7 +272,7 @@ public class URLClassPath {
return
next
();
}
public
Object
nextElement
()
{
public
Resource
nextElement
()
{
if
(!
next
())
{
throw
new
NoSuchElementException
();
}
...
...
@@ -283,7 +283,7 @@ public class URLClassPath {
};
}
public
Enumeration
getResources
(
final
String
name
)
{
public
Enumeration
<
Resource
>
getResources
(
final
String
name
)
{
return
getResources
(
name
,
true
);
}
...
...
@@ -302,7 +302,7 @@ public class URLClassPath {
if
(
urls
.
empty
())
{
return
null
;
}
else
{
url
=
(
URL
)
urls
.
pop
();
url
=
urls
.
pop
();
}
}
// Skip this URL if it already has a Loader. (Loader
...
...
@@ -329,7 +329,7 @@ public class URLClassPath {
loaders
.
add
(
loader
);
lmap
.
put
(
url
,
loader
);
}
return
(
Loader
)
loaders
.
get
(
index
);
return
loaders
.
get
(
index
);
}
/*
...
...
@@ -337,9 +337,9 @@ public class URLClassPath {
*/
private
Loader
getLoader
(
final
URL
url
)
throws
IOException
{
try
{
return
(
Loader
)
java
.
security
.
AccessController
.
doPrivileged
(
new
java
.
security
.
PrivilegedExceptionAction
()
{
public
Object
run
()
throws
IOException
{
return
java
.
security
.
AccessController
.
doPrivileged
(
new
java
.
security
.
PrivilegedExceptionAction
<
Loader
>
()
{
public
Loader
run
()
throws
IOException
{
String
file
=
url
.
getFile
();
if
(
file
!=
null
&&
file
.
endsWith
(
"/"
))
{
if
(
"file"
.
equals
(
url
.
getProtocol
()))
{
...
...
@@ -561,13 +561,14 @@ public class URLClassPath {
private
JarIndex
index
;
private
MetaIndex
metaIndex
;
private
URLStreamHandler
handler
;
private
HashMap
lmap
;
private
HashMap
<
URL
,
Loader
>
lmap
;
/*
* Creates a new JarLoader for the specified URL referring to
* a JAR file.
*/
JarLoader
(
URL
url
,
URLStreamHandler
jarHandler
,
HashMap
loaderMap
)
JarLoader
(
URL
url
,
URLStreamHandler
jarHandler
,
HashMap
<
URL
,
Loader
>
loaderMap
)
throws
IOException
{
super
(
new
URL
(
"jar"
,
""
,
-
1
,
url
+
"!/"
,
jarHandler
));
...
...
@@ -615,8 +616,8 @@ public class URLClassPath {
if
(
jar
==
null
)
{
try
{
java
.
security
.
AccessController
.
doPrivileged
(
new
java
.
security
.
PrivilegedExceptionAction
()
{
public
Object
run
()
throws
IOException
{
new
java
.
security
.
PrivilegedExceptionAction
<
Void
>
()
{
public
Void
run
()
throws
IOException
{
if
(
DEBUG
)
{
System
.
err
.
println
(
"Opening "
+
csu
);
Thread
.
dumpStack
();
...
...
@@ -732,9 +733,9 @@ public class URLClassPath {
String
entryName
;
ZipEntry
entry
;
Enumeration
enum_
=
jar
.
entries
();
Enumeration
<
JarEntry
>
enum_
=
jar
.
entries
();
while
(
enum_
.
hasMoreElements
())
{
entry
=
(
ZipEntry
)
enum_
.
nextElement
();
entry
=
enum_
.
nextElement
();
entryName
=
entry
.
getName
();
if
((
pos
=
entryName
.
lastIndexOf
(
"/"
))
!=
-
1
)
entryName
=
entryName
.
substring
(
0
,
pos
);
...
...
@@ -778,7 +779,7 @@ public class URLClassPath {
if
(
index
==
null
)
return
null
;
HashSet
visited
=
new
HashSet
();
HashSet
<
URL
>
visited
=
new
HashSet
<
URL
>
();
return
getResource
(
name
,
check
,
visited
);
}
...
...
@@ -790,7 +791,7 @@ public class URLClassPath {
* non-existent resource
*/
Resource
getResource
(
final
String
name
,
boolean
check
,
Set
visited
)
{
Set
<
URL
>
visited
)
{
Resource
res
;
Object
[]
jarFiles
;
...
...
@@ -819,10 +820,9 @@ public class URLClassPath {
/* no loader has been set up for this jar file
* before
*/
newLoader
=
(
JarLoader
)
AccessController
.
doPrivileged
(
new
PrivilegedExceptionAction
()
{
public
Object
run
()
throws
IOException
{
newLoader
=
AccessController
.
doPrivileged
(
new
PrivilegedExceptionAction
<
JarLoader
>()
{
public
JarLoader
run
()
throws
IOException
{
return
new
JarLoader
(
url
,
handler
,
lmap
);
}
...
...
src/share/classes/sun/net/NetProperties.java
浏览文件 @
ab1229d1
...
...
@@ -42,8 +42,8 @@ public class NetProperties {
static
private
Properties
props
=
new
Properties
();
static
{
AccessController
.
doPrivileged
(
new
PrivilegedAction
()
{
public
Object
run
()
{
new
PrivilegedAction
<
Void
>
()
{
public
Void
run
()
{
loadDefaultProperties
();
return
null
;
}});
...
...
src/share/classes/sun/net/NetworkClient.java
浏览文件 @
ab1229d1
...
...
@@ -64,8 +64,8 @@ public class NetworkClient {
final
String
encs
[]
=
{
null
};
AccessController
.
doPrivileged
(
new
PrivilegedAction
()
{
public
Object
run
()
{
new
PrivilegedAction
<
Void
>
()
{
public
Void
run
()
{
vals
[
0
]
=
Integer
.
getInteger
(
"sun.net.client.defaultReadTimeout"
,
0
).
intValue
();
vals
[
1
]
=
Integer
.
getInteger
(
"sun.net.client.defaultConnectTimeout"
,
0
).
intValue
();
encs
[
0
]
=
System
.
getProperty
(
"file.encoding"
,
"ISO8859_1"
);
...
...
@@ -152,9 +152,9 @@ public class NetworkClient {
Socket
s
;
if
(
proxy
!=
null
)
{
if
(
proxy
.
type
()
==
Proxy
.
Type
.
SOCKS
)
{
s
=
(
Socket
)
AccessController
.
doPrivileged
(
new
PrivilegedAction
()
{
public
Objec
t
run
()
{
s
=
AccessController
.
doPrivileged
(
new
PrivilegedAction
<
Socket
>
()
{
public
Socke
t
run
()
{
return
new
Socket
(
proxy
);
}});
}
else
...
...
src/share/classes/sun/net/ftp/FtpClient.java
浏览文件 @
ab1229d1
...
...
@@ -117,8 +117,8 @@ public class FtpClient extends TransferProtocolClient {
public
static
int
getFtpProxyPort
()
{
final
int
result
[]
=
{
80
};
java
.
security
.
AccessController
.
doPrivileged
(
new
java
.
security
.
PrivilegedAction
()
{
public
Object
run
()
{
new
java
.
security
.
PrivilegedAction
<
Void
>
()
{
public
Void
run
()
{
String
tmp
=
System
.
getProperty
(
"ftp.proxyPort"
);
if
(
tmp
==
null
)
{
...
...
@@ -343,9 +343,9 @@ public class FtpClient extends TransferProtocolClient {
Socket
s
;
if
(
proxy
!=
null
)
{
if
(
proxy
.
type
()
==
Proxy
.
Type
.
SOCKS
)
{
s
=
(
Socket
)
AccessController
.
doPrivileged
(
new
PrivilegedAction
()
{
public
Objec
t
run
()
{
s
=
AccessController
.
doPrivileged
(
new
PrivilegedAction
<
Socket
>
()
{
public
Socke
t
run
()
{
return
new
Socket
(
proxy
);
}});
}
else
...
...
src/share/classes/sun/net/spi/DefaultProxySelector.java
浏览文件 @
ab1229d1
...
...
@@ -82,9 +82,9 @@ public class DefaultProxySelector extends ProxySelector {
static
{
final
String
key
=
"java.net.useSystemProxies"
;
Boolean
b
=
(
Boolean
)
AccessController
.
doPrivileged
(
new
PrivilegedAction
()
{
public
Object
run
()
{
Boolean
b
=
AccessController
.
doPrivileged
(
new
PrivilegedAction
<
Boolean
>
()
{
public
Boolean
run
()
{
return
NetProperties
.
getBoolean
(
key
);
}});
if
(
b
!=
null
&&
b
.
booleanValue
())
{
...
...
@@ -197,9 +197,9 @@ public class DefaultProxySelector extends ProxySelector {
* System properties it does help having only 1 call to doPrivileged.
* Be mindful what you do in here though!
*/
Proxy
p
=
(
Proxy
)
AccessController
.
doPrivileged
(
new
PrivilegedAction
()
{
public
Object
run
()
{
Proxy
p
=
AccessController
.
doPrivileged
(
new
PrivilegedAction
<
Proxy
>
()
{
public
Proxy
run
()
{
int
i
,
j
;
String
phost
=
null
;
int
pport
=
0
;
...
...
src/share/classes/sun/net/www/MessageHeader.java
浏览文件 @
ab1229d1
...
...
@@ -138,7 +138,7 @@ class MessageHeader {
return
null
;
}
class
HeaderIterator
implements
Iterator
{
class
HeaderIterator
implements
Iterator
<
String
>
{
int
index
=
0
;
int
next
=
-
1
;
String
key
;
...
...
@@ -165,7 +165,7 @@ class MessageHeader {
return
false
;
}
}
public
Object
next
()
{
public
String
next
()
{
synchronized
(
lock
)
{
if
(
haveNext
)
{
haveNext
=
false
;
...
...
@@ -187,17 +187,17 @@ class MessageHeader {
* return an Iterator that returns all values of a particular
* key in sequence
*/
public
Iterator
multiValueIterator
(
String
k
)
{
public
Iterator
<
String
>
multiValueIterator
(
String
k
)
{
return
new
HeaderIterator
(
k
,
this
);
}
public
synchronized
Map
getHeaders
()
{
public
synchronized
Map
<
String
,
List
<
String
>>
getHeaders
()
{
return
getHeaders
(
null
);
}
public
synchronized
Map
getHeaders
(
String
[]
excludeList
)
{
public
synchronized
Map
<
String
,
List
<
String
>>
getHeaders
(
String
[]
excludeList
)
{
boolean
skipIt
=
false
;
Map
m
=
new
HashMap
();
Map
<
String
,
List
<
String
>>
m
=
new
HashMap
<
String
,
List
<
String
>>
();
for
(
int
i
=
nkeys
;
--
i
>=
0
;)
{
if
(
excludeList
!=
null
)
{
// check if the key is in the excludeList.
...
...
@@ -211,9 +211,9 @@ class MessageHeader {
}
}
if
(!
skipIt
)
{
List
l
=
(
List
)
m
.
get
(
keys
[
i
]);
List
<
String
>
l
=
m
.
get
(
keys
[
i
]);
if
(
l
==
null
)
{
l
=
new
ArrayList
();
l
=
new
ArrayList
<
String
>
();
m
.
put
(
keys
[
i
],
l
);
}
l
.
add
(
values
[
i
]);
...
...
@@ -223,11 +223,8 @@ class MessageHeader {
}
}
Set
keySet
=
m
.
keySet
();
for
(
Iterator
i
=
keySet
.
iterator
();
i
.
hasNext
();)
{
Object
key
=
i
.
next
();
List
l
=
(
List
)
m
.
get
(
key
);
m
.
put
(
key
,
Collections
.
unmodifiableList
(
l
));
for
(
String
key
:
m
.
keySet
())
{
m
.
put
(
key
,
Collections
.
unmodifiableList
(
m
.
get
(
key
)));
}
return
Collections
.
unmodifiableMap
(
m
);
...
...
src/share/classes/sun/net/www/MimeTable.java
浏览文件 @
ab1229d1
此差异已折叠。
点击以展开。
src/share/classes/sun/net/www/http/HttpClient.java
浏览文件 @
ab1229d1
此差异已折叠。
点击以展开。
src/share/classes/sun/net/www/http/KeepAliveCache.java
浏览文件 @
ab1229d1
此差异已折叠。
点击以展开。
src/share/classes/sun/net/www/http/KeepAliveStream.java
浏览文件 @
ab1229d1
此差异已折叠。
点击以展开。
src/share/classes/sun/net/www/http/KeepAliveStreamCleaner.java
浏览文件 @
ab1229d1
此差异已折叠。
点击以展开。
src/share/classes/sun/net/www/protocol/ftp/FtpURLConnection.java
浏览文件 @
ab1229d1
此差异已折叠。
点击以展开。
src/share/classes/sun/net/www/protocol/http/HttpURLConnection.java
浏览文件 @
ab1229d1
此差异已折叠。
点击以展开。
src/share/classes/sun/net/www/protocol/jar/URLJarFile.java
浏览文件 @
ab1229d1
此差异已折叠。
点击以展开。
src/share/classes/sun/nio/ch/Reflect.java
浏览文件 @
ab1229d1
此差异已折叠。
点击以展开。
src/share/classes/sun/nio/ch/SocketAdaptor.java
浏览文件 @
ab1229d1
此差异已折叠。
点击以展开。
src/share/classes/sun/nio/ch/Util.java
浏览文件 @
ab1229d1
此差异已折叠。
点击以展开。
src/share/classes/sun/reflect/ClassDefiner.java
浏览文件 @
ab1229d1
此差异已折叠。
点击以展开。
src/share/classes/sun/reflect/MethodAccessorGenerator.java
浏览文件 @
ab1229d1
此差异已折叠。
点击以展开。
src/share/classes/sun/reflect/ReflectionFactory.java
浏览文件 @
ab1229d1
此差异已折叠。
点击以展开。
src/share/classes/sun/reflect/annotation/AnnotationInvocationHandler.java
浏览文件 @
ab1229d1
此差异已折叠。
点击以展开。
src/share/classes/sun/reflect/misc/MethodUtil.java
浏览文件 @
ab1229d1
此差异已折叠。
点击以展开。
src/share/classes/sun/rmi/log/ReliableLog.java
浏览文件 @
ab1229d1
此差异已折叠。
点击以展开。
src/share/classes/sun/rmi/registry/RegistryImpl.java
浏览文件 @
ab1229d1
此差异已折叠。
点击以展开。
src/share/classes/sun/rmi/rmic/RemoteClass.java
浏览文件 @
ab1229d1
此差异已折叠。
点击以展开。
src/share/classes/sun/rmi/rmic/newrmic/jrmp/RemoteClass.java
浏览文件 @
ab1229d1
此差异已折叠。
点击以展开。
src/share/classes/sun/rmi/runtime/Log.java
浏览文件 @
ab1229d1
此差异已折叠。
点击以展开。
src/share/classes/sun/rmi/server/LoaderHandler.java
浏览文件 @
ab1229d1
此差异已折叠。
点击以展开。
src/share/classes/sun/rmi/server/MarshalInputStream.java
浏览文件 @
ab1229d1
此差异已折叠。
点击以展开。
src/share/classes/sun/rmi/server/MarshalOutputStream.java
浏览文件 @
ab1229d1
此差异已折叠。
点击以展开。
src/share/classes/sun/rmi/server/Util.java
浏览文件 @
ab1229d1
此差异已折叠。
点击以展开。
src/share/classes/sun/rmi/server/WeakClassHashMap.java
浏览文件 @
ab1229d1
此差异已折叠。
点击以展开。
src/share/classes/sun/rmi/transport/DGCClient.java
浏览文件 @
ab1229d1
此差异已折叠。
点击以展开。
src/share/classes/sun/rmi/transport/Target.java
浏览文件 @
ab1229d1
此差异已折叠。
点击以展开。
src/share/classes/sun/rmi/transport/Transport.java
浏览文件 @
ab1229d1
此差异已折叠。
点击以展开。
src/share/classes/sun/rmi/transport/proxy/CGIHandler.java
浏览文件 @
ab1229d1
此差异已折叠。
点击以展开。
src/share/classes/sun/rmi/transport/proxy/HttpSendSocket.java
浏览文件 @
ab1229d1
此差异已折叠。
点击以展开。
src/share/classes/sun/rmi/transport/proxy/RMIMasterSocketFactory.java
浏览文件 @
ab1229d1
此差异已折叠。
点击以展开。
src/share/classes/sun/rmi/transport/tcp/ConnectionMultiplexer.java
浏览文件 @
ab1229d1
此差异已折叠。
点击以展开。
src/share/classes/sun/security/jgss/GSSManagerImpl.java
浏览文件 @
ab1229d1
此差异已折叠。
点击以展开。
src/share/classes/sun/security/jgss/krb5/InitSecContextToken.java
浏览文件 @
ab1229d1
此差异已折叠。
点击以展开。
src/share/classes/sun/security/ssl/CipherSuite.java
浏览文件 @
ab1229d1
此差异已折叠。
点击以展开。
src/share/classes/sun/security/ssl/DHCrypt.java
浏览文件 @
ab1229d1
此差异已折叠。
点击以展开。
src/share/classes/sun/security/ssl/JsseJce.java
浏览文件 @
ab1229d1
此差异已折叠。
点击以展开。
src/share/classes/sun/security/ssl/ProtocolList.java
浏览文件 @
ab1229d1
此差异已折叠。
点击以展开。
src/share/classes/sun/security/ssl/SSLSessionImpl.java
浏览文件 @
ab1229d1
此差异已折叠。
点击以展开。
src/share/classes/sun/security/ssl/SessionId.java
浏览文件 @
ab1229d1
此差异已折叠。
点击以展开。
src/share/classes/sun/security/ssl/SunX509KeyManagerImpl.java
浏览文件 @
ab1229d1
此差异已折叠。
点击以展开。
src/share/classes/sun/security/x509/CertificatePolicySet.java
浏览文件 @
ab1229d1
此差异已折叠。
点击以展开。
src/share/classes/sun/security/x509/X509Cert.java
浏览文件 @
ab1229d1
此差异已折叠。
点击以展开。
src/share/classes/sun/tools/jar/JarVerifierStream.java
浏览文件 @
ab1229d1
此差异已折叠。
点击以展开。
src/share/classes/sun/tools/native2ascii/N2AFilter.java
浏览文件 @
ab1229d1
此差异已折叠。
点击以展开。
src/solaris/classes/java/util/prefs/FileSystemPreferences.java
浏览文件 @
ab1229d1
此差异已折叠。
点击以展开。
src/solaris/classes/sun/nio/ch/DevPollArrayWrapper.java
浏览文件 @
ab1229d1
此差异已折叠。
点击以展开。
src/solaris/classes/sun/security/provider/NativePRNG.java
浏览文件 @
ab1229d1
此差异已折叠。
点击以展开。
src/windows/classes/sun/security/mscapi/SunMSCAPI.java
浏览文件 @
ab1229d1
此差异已折叠。
点击以展开。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录