--- a/.hgtags Thu May 15 13:04:31 2008 -0700
+++ b/.hgtags Tue May 27 17:18:01 2008 -0700
@@ -1,3 +1,4 @@ 37a05a11f281b4d238e2f9e7ebb67c63f64d0e77
37a05a11f281b4d238e2f9e7ebb67c63f64d0e77 jdk7-b24
75fca0b0ab83ab1392e615910cea020f66535390 jdk7-b25
fb57027902e04ecafceae31a605e69b436c23d57 jdk7-b26
+3e599d98875ddf919c8ea11cff9b3a99ba631a9b jdk7-b27
--- a/make/com/sun/tracing/Makefile Thu May 15 13:04:31 2008 -0700
+++ b/make/com/sun/tracing/Makefile Tue May 27 17:18:01 2008 -0700
@@ -1,6 +1,26 @@
#
-# Copyright 2007 Sun Microsystems, Inc. All rights reserved.
-# SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+# Copyright 2008 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
#
#
@@ -12,7 +32,7 @@ PRODUCT = sun
PRODUCT = sun
include $(BUILDDIR)/common/Defs.gmk
-SUBDIRS = dtrace
+SUBDIRS = dtrace
all build:
$(SUBDIRS-loop)
clean clobber::
--- a/make/com/sun/tracing/dtrace/Makefile Thu May 15 13:04:31 2008 -0700
+++ b/make/com/sun/tracing/dtrace/Makefile Tue May 27 17:18:01 2008 -0700
@@ -1,6 +1,26 @@
#
-# Copyright 2007 Sun Microsystems, Inc. All rights reserved.
-# SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+# Copyright 2008 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
#
#
--- a/make/sun/tracing/Makefile Thu May 15 13:04:31 2008 -0700
+++ b/make/sun/tracing/Makefile Tue May 27 17:18:01 2008 -0700
@@ -1,6 +1,26 @@
#
-# Copyright 2007 Sun Microsystems, Inc. All rights reserved.
-# SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+# Copyright 2008 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
#
#
@@ -12,7 +32,7 @@ PRODUCT = sun
PRODUCT = sun
include $(BUILDDIR)/common/Defs.gmk
-SUBDIRS = dtrace
+SUBDIRS = dtrace
all build:
$(SUBDIRS-loop)
clean clobber::
--- a/make/sun/tracing/dtrace/Makefile Thu May 15 13:04:31 2008 -0700
+++ b/make/sun/tracing/dtrace/Makefile Tue May 27 17:18:01 2008 -0700
@@ -1,6 +1,26 @@
#
-# Copyright 2007 Sun Microsystems, Inc. All rights reserved.
-# SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+# Copyright 2008 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
#
#
@@ -30,7 +50,7 @@ FILES_java = \
sun/tracing/dtrace/DTraceProvider.java \
sun/tracing/dtrace/DTraceProbe.java \
sun/tracing/dtrace/DTraceProviderFactory.java \
- sun/tracing/dtrace/JVM.java
+ sun/tracing/dtrace/JVM.java
FILES_export = $(FILES_java)
@@ -46,7 +66,7 @@ JAVAHFLAGS += -jni
#
# Don't need to link against -ljava
#
-JAVALIB=
+JAVALIB=
#
# Rules.
--- a/make/sun/tracing/dtrace/mapfile-vers Thu May 15 13:04:31 2008 -0700
+++ b/make/sun/tracing/dtrace/mapfile-vers Tue May 27 17:18:01 2008 -0700
@@ -1,8 +1,26 @@
#
-#ident "@(#)mapfile-vers 1.1 07/08/14"
-#
-# Copyright 2006 Sun Microsystems, Inc. All rights reserved.
-# SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+# Copyright 2008 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
#
# Define library interface.
--- a/src/share/classes/com/sun/jmx/interceptor/DefaultMBeanServerInterceptor.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/com/sun/jmx/interceptor/DefaultMBeanServerInterceptor.java Tue May 27 17:18:01 2008 -0700
@@ -233,7 +233,6 @@ public class DefaultMBeanServerIntercept
MBeanRegistrationException, MBeanException,
NotCompliantMBeanException, InstanceNotFoundException {
- ObjectName logicalName = name;
Class theClass;
if (className == null) {
@@ -519,8 +518,7 @@ public class DefaultMBeanServerIntercept
QueryExp query) {
// Query the MBeans on the repository
//
- Set<NamedObject> list = null;
- list = repository.query(name, query);
+ Set<NamedObject> list = repository.query(name, query);
if (queryByRepo) {
// The repository performs the filtering
@@ -576,8 +574,7 @@ public class DefaultMBeanServerIntercept
private Set<ObjectName> queryNamesImpl(ObjectName name, QueryExp query) {
// Query the MBeans on the repository
//
- Set<NamedObject> list = null;
- list = repository.query(name, query);
+ Set<NamedObject> list = repository.query(name, query);
if (queryByRepo) {
// The repository performs the filtering
@@ -1042,7 +1039,7 @@ public class DefaultMBeanServerIntercept
if (registerFailed && moi instanceof DynamicMBean2)
((DynamicMBean2) moi).registerFailed();
try {
- moi.postRegister(new Boolean(registrationDone));
+ moi.postRegister(registrationDone);
} catch (RuntimeException e) {
throw new RuntimeMBeanException(e,
"RuntimeException thrown in postRegister method");
@@ -1094,8 +1091,7 @@ public class DefaultMBeanServerIntercept
IllegalArgumentException("Object name cannot be null"),
"Exception occurred trying to get an MBean");
}
- DynamicMBean obj = null;
- obj = repository.retrieve(name);
+ DynamicMBean obj = repository.retrieve(name);
if (obj == null) {
if (MBEANSERVER_LOGGER.isLoggable(Level.FINER)) {
MBEANSERVER_LOGGER.logp(Level.FINER,
@@ -1568,7 +1564,6 @@ public class DefaultMBeanServerIntercept
query.setMBeanServer(server);
try {
for (NamedObject no : list) {
- final DynamicMBean obj = no.getObject();
boolean res;
try {
res = query.apply(no.getName());
--- a/src/share/classes/com/sun/jmx/mbeanserver/MBeanInstantiator.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/com/sun/jmx/mbeanserver/MBeanInstantiator.java Tue May 27 17:18:01 2008 -0700
@@ -205,7 +205,7 @@ public class MBeanInstantiator {
*/
public Object instantiate(Class theClass)
throws ReflectionException, MBeanException {
- Object moi = null;
+ Object moi;
// ------------------------------
@@ -265,7 +265,7 @@ public class MBeanInstantiator {
// ------------------------------
// ------------------------------
final Class[] tab;
- Object moi= null;
+ Object moi;
try {
// Build the signature of the method
//
@@ -283,8 +283,7 @@ public class MBeanInstantiator {
}
// Query the metadata service to get the right constructor
- Constructor cons = null;
- cons = findConstructor(theClass, tab);
+ Constructor cons = findConstructor(theClass, tab);
if (cons == null) {
throw new ReflectionException(new
@@ -408,7 +407,7 @@ public class MBeanInstantiator {
throw new RuntimeOperationsException(new
IllegalArgumentException(), "Null className passed in parameter");
}
- Class theClass = null;
+ Class theClass;
if (loaderName == null) {
// Load the class using the agent class loader
theClass = findClass(className, loader);
@@ -621,7 +620,7 @@ public class MBeanInstantiator {
static Class loadClass(String className, ClassLoader loader)
throws ReflectionException {
- Class theClass = null;
+ Class theClass;
if (className == null) {
throw new RuntimeOperationsException(new
IllegalArgumentException("The class name cannot be null"),
--- a/src/share/classes/com/sun/jmx/mbeanserver/Repository.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/com/sun/jmx/mbeanserver/Repository.java Tue May 27 17:18:01 2008 -0700
@@ -89,7 +89,6 @@ public class Repository {
/* This class is used to match an ObjectName against a pattern. */
private final static class ObjectNamePattern {
- private final char[] domain;
private final String[] keys;
private final String[] values;
private final String properties;
@@ -106,8 +105,7 @@ public class Repository {
* @param pattern The ObjectName pattern under examination.
**/
public ObjectNamePattern(ObjectName pattern) {
- this(pattern.getDomain(),
- pattern.isPropertyListPattern(),
+ this(pattern.isPropertyListPattern(),
pattern.isPropertyValuePattern(),
pattern.getCanonicalKeyPropertyListString(),
pattern.getKeyPropertyList(),
@@ -124,13 +122,11 @@ public class Repository {
* @param keyPropertyList pattern.getKeyPropertyList().
* @param pattern The ObjectName pattern under examination.
**/
- ObjectNamePattern(String domain,
- boolean propertyListPattern,
+ ObjectNamePattern(boolean propertyListPattern,
boolean propertyValuePattern,
String canonicalProps,
Map<String,String> keyPropertyList,
ObjectName pattern) {
- this.domain = domain.toCharArray();
this.isPropertyListPattern = propertyListPattern;
this.isPropertyValuePattern = propertyValuePattern;
this.properties = canonicalProps;
@@ -538,7 +534,7 @@ public class Repository {
// "domain:*", "domain:[key=value],*" : names in the specified domain
// Surely one of the most frequent case ... query on the whole world
- ObjectName name = null;
+ ObjectName name;
if (pattern == null ||
pattern.getCanonicalName().length() == 0 ||
pattern.equals(ObjectName.WILDCARD))
@@ -660,7 +656,7 @@ public class Repository {
* @return Number of MBeans.
*/
public Integer getCount() {
- return new Integer(nbElements);
+ return nbElements;
}
/**
@@ -669,7 +665,7 @@ public class Repository {
*
* @return A string giving the name of the default domain name.
*/
- public String getDefaultDomain() {
+ public String getDefaultDomain() {
return domain;
}
--- a/src/share/classes/com/sun/jmx/remote/internal/ClientNotifForwarder.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/com/sun/jmx/remote/internal/ClientNotifForwarder.java Tue May 27 17:18:01 2008 -0700
@@ -435,7 +435,6 @@ public abstract class ClientNotifForward
clientSequenceNumber = nr.getNextSequenceNumber();
- final int size = infoList.size();
listeners = new HashMap<Integer, ClientListenerInfo>();
for (int i = 0 ; i < len ; i++) {
@@ -792,9 +791,6 @@ public abstract class ClientNotifForward
private Thread currentFetchThread;
- // admin stuff
- private boolean inited = false;
-
// state
/**
* This state means that a thread is being created for fetching and forwarding notifications.
--- a/src/share/classes/com/sun/jmx/remote/internal/ServerNotifForwarder.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/com/sun/jmx/remote/internal/ServerNotifForwarder.java Tue May 27 17:18:01 2008 -0700
@@ -269,7 +269,7 @@ public class ServerNotifForwarder {
", the maxNotifications is " + maxNotifications);
}
- NotificationResult nr = null;
+ NotificationResult nr;
final long t = Math.min(connectionTimeout, timeout);
try {
nr = notifBuffer.fetchNotifications(bufferFilter,
@@ -322,7 +322,7 @@ public class ServerNotifForwarder {
private Integer getListenerID() {
synchronized(listenerCounterLock) {
- return new Integer(listenerCounter++);
+ return listenerCounter++;
}
}
@@ -336,7 +336,7 @@ public class ServerNotifForwarder {
SecurityManager sm = System.getSecurityManager();
if (sm != null) {
AccessControlContext acc = AccessController.getContext();
- ObjectInstance oi = null;
+ ObjectInstance oi;
try {
oi = AccessController.doPrivileged(
new PrivilegedExceptionAction<ObjectInstance>() {
--- a/src/share/classes/com/sun/jmx/remote/security/FileLoginModule.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/com/sun/jmx/remote/security/FileLoginModule.java Tue May 27 17:18:01 2008 -0700
@@ -437,7 +437,7 @@ public class FileLoginModule implements
// get the username and password
getUsernamePassword(usePasswdFromSharedState);
- String localPassword = null;
+ String localPassword;
// userCredentials is initialized in login()
if (((localPassword = userCredentials.getProperty(username)) == null) ||
@@ -487,10 +487,14 @@ public class FileLoginModule implements
throw ace;
}
}
- BufferedInputStream bis = new BufferedInputStream(fis);
- userCredentials = new Properties();
- userCredentials.load(bis);
- bis.close();
+ try {
+ BufferedInputStream bis = new BufferedInputStream(fis);
+ userCredentials = new Properties();
+ userCredentials.load(bis);
+ bis.close();
+ } finally {
+ fis.close();
+ }
}
/**
--- a/src/share/classes/com/sun/jmx/remote/security/JMXPluggableAuthenticator.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/com/sun/jmx/remote/security/JMXPluggableAuthenticator.java Tue May 27 17:18:01 2008 -0700
@@ -295,7 +295,7 @@ private static class FileLoginConfig ext
private static class FileLoginConfig extends Configuration {
// The JAAS configuration for file-based authentication
- private static AppConfigurationEntry[] entries;
+ private AppConfigurationEntry[] entries;
// The classname of the login module for file-based authentication
private static final String FILE_LOGIN_MODULE =
--- a/src/share/classes/com/sun/jmx/remote/security/MBeanServerFileAccessController.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/com/sun/jmx/remote/security/MBeanServerFileAccessController.java Tue May 27 17:18:01 2008 -0700
@@ -231,10 +231,13 @@ public class MBeanServerFileAccessContro
private static Properties propertiesFromFile(String fname)
throws IOException {
FileInputStream fin = new FileInputStream(fname);
- Properties p = new Properties();
- p.load(fin);
- fin.close();
- return p;
+ try {
+ Properties p = new Properties();
+ p.load(fin);
+ return p;
+ } finally {
+ fin.close();
+ }
}
private void checkAccessLevel(String accessLevel) {
--- a/src/share/classes/com/sun/security/auth/login/ConfigFile.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/com/sun/security/auth/login/ConfigFile.java Tue May 27 17:18:01 2008 -0700
@@ -620,9 +620,35 @@ public class ConfigFile extends javax.se
* start up time noticeably for the new launcher. -- DAC
*/
private InputStream getInputStream(URL url) throws IOException {
- if ("file".equals(url.getProtocol())) {
- String path = url.getFile().replace('/', File.separatorChar);
- return new FileInputStream(path);
+ if ("file".equalsIgnoreCase(url.getProtocol())) {
+ // Compatibility notes:
+ //
+ // Code changed from
+ // String path = url.getFile().replace('/', File.separatorChar);
+ // return new FileInputStream(path);
+ //
+ // The original implementation would search for "/tmp/a%20b"
+ // when url is "file:///tmp/a%20b". This is incorrect. The
+ // current codes fix this bug and searches for "/tmp/a b".
+ // For compatibility reasons, when the file "/tmp/a b" does
+ // not exist, the file named "/tmp/a%20b" will be tried.
+ //
+ // This also means that if both file exists, the behavior of
+ // this method is changed, and the current codes choose the
+ // correct one.
+ try {
+ return url.openStream();
+ } catch (Exception e) {
+ String file = url.getPath();
+ if (url.getHost().length() > 0) { // For Windows UNC
+ file = "//" + url.getHost() + file;
+ }
+ if (debugConfig != null) {
+ debugConfig.println("cannot read " + url +
+ ", try " + file);
+ }
+ return new FileInputStream(file);
+ }
} else {
return url.openStream();
}
--- a/src/share/classes/com/sun/tracing/Probe.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/com/sun/tracing/Probe.java Tue May 27 17:18:01 2008 -0700
@@ -1,6 +1,26 @@
/*
- * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
*/
package com.sun.tracing;
--- a/src/share/classes/com/sun/tracing/ProbeName.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/com/sun/tracing/ProbeName.java Tue May 27 17:18:01 2008 -0700
@@ -1,6 +1,26 @@
/*
- * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
*/
package com.sun.tracing;
--- a/src/share/classes/com/sun/tracing/Provider.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/com/sun/tracing/Provider.java Tue May 27 17:18:01 2008 -0700
@@ -1,6 +1,26 @@
/*
- * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
*/
package com.sun.tracing;
--- a/src/share/classes/com/sun/tracing/ProviderName.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/com/sun/tracing/ProviderName.java Tue May 27 17:18:01 2008 -0700
@@ -1,6 +1,26 @@
/*
- * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
*/
package com.sun.tracing;
--- a/src/share/classes/com/sun/tracing/dtrace/ArgsAttributes.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/com/sun/tracing/dtrace/ArgsAttributes.java Tue May 27 17:18:01 2008 -0700
@@ -1,6 +1,26 @@
/*
- * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
*/
package com.sun.tracing.dtrace;
--- a/src/share/classes/com/sun/tracing/dtrace/Attributes.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/com/sun/tracing/dtrace/Attributes.java Tue May 27 17:18:01 2008 -0700
@@ -1,6 +1,26 @@
/*
- * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
*/
package com.sun.tracing.dtrace;
--- a/src/share/classes/com/sun/tracing/dtrace/DependencyClass.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/com/sun/tracing/dtrace/DependencyClass.java Tue May 27 17:18:01 2008 -0700
@@ -1,6 +1,26 @@
/*
- * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
*/
package com.sun.tracing.dtrace;
--- a/src/share/classes/com/sun/tracing/dtrace/FunctionAttributes.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/com/sun/tracing/dtrace/FunctionAttributes.java Tue May 27 17:18:01 2008 -0700
@@ -1,6 +1,26 @@
/*
- * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
*/
package com.sun.tracing.dtrace;
--- a/src/share/classes/com/sun/tracing/dtrace/FunctionName.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/com/sun/tracing/dtrace/FunctionName.java Tue May 27 17:18:01 2008 -0700
@@ -1,6 +1,26 @@
/*
- * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
*/
package com.sun.tracing.dtrace;
--- a/src/share/classes/com/sun/tracing/dtrace/ModuleAttributes.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/com/sun/tracing/dtrace/ModuleAttributes.java Tue May 27 17:18:01 2008 -0700
@@ -1,6 +1,26 @@
/*
- * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
*/
package com.sun.tracing.dtrace;
--- a/src/share/classes/com/sun/tracing/dtrace/ModuleName.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/com/sun/tracing/dtrace/ModuleName.java Tue May 27 17:18:01 2008 -0700
@@ -1,6 +1,26 @@
/*
- * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
*/
package com.sun.tracing.dtrace;
--- a/src/share/classes/com/sun/tracing/dtrace/NameAttributes.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/com/sun/tracing/dtrace/NameAttributes.java Tue May 27 17:18:01 2008 -0700
@@ -1,6 +1,26 @@
/*
- * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
*/
package com.sun.tracing.dtrace;
--- a/src/share/classes/com/sun/tracing/dtrace/ProviderAttributes.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/com/sun/tracing/dtrace/ProviderAttributes.java Tue May 27 17:18:01 2008 -0700
@@ -1,6 +1,26 @@
/*
- * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
*/
package com.sun.tracing.dtrace;
--- a/src/share/classes/com/sun/tracing/dtrace/StabilityLevel.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/com/sun/tracing/dtrace/StabilityLevel.java Tue May 27 17:18:01 2008 -0700
@@ -1,6 +1,26 @@
/*
- * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
*/
package com.sun.tracing.dtrace;
--- a/src/share/classes/com/sun/tracing/dtrace/package-info.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/com/sun/tracing/dtrace/package-info.java Tue May 27 17:18:01 2008 -0700
@@ -1,6 +1,26 @@
/*
- * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
*/
/**
--- a/src/share/classes/com/sun/tracing/package-info.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/com/sun/tracing/package-info.java Tue May 27 17:18:01 2008 -0700
@@ -1,6 +1,26 @@
/*
- * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
*/
/**
--- a/src/share/classes/java/net/CookieManager.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/java/net/CookieManager.java Tue May 27 17:18:01 2008 -0700
@@ -205,11 +205,31 @@ public class CookieManager extends Cooki
if (cookieJar == null)
return Collections.unmodifiableMap(cookieMap);
+ boolean secureLink = "https".equalsIgnoreCase(uri.getScheme());
List<HttpCookie> cookies = new java.util.ArrayList<HttpCookie>();
+ String path = uri.getPath();
+ if (path == null || path.isEmpty()) {
+ path = "/";
+ }
for (HttpCookie cookie : cookieJar.get(uri)) {
// apply path-matches rule (RFC 2965 sec. 3.3.4)
- if (pathMatches(uri.getPath(), cookie.getPath())) {
- cookies.add(cookie);
+ // and check for the possible "secure" tag (i.e. don't send
+ // 'secure' cookies over unsecure links)
+ if (pathMatches(path, cookie.getPath()) &&
+ (secureLink || !cookie.getSecure())) {
+ // Let's check the authorize port list if it exists
+ String ports = cookie.getPortlist();
+ if (ports != null && !ports.isEmpty()) {
+ int port = uri.getPort();
+ if (port == -1) {
+ port = "https".equals(uri.getScheme()) ? 443 : 80;
+ }
+ if (isInPortList(ports, port)) {
+ cookies.add(cookie);
+ }
+ } else {
+ cookies.add(cookie);
+ }
}
}
@@ -251,8 +271,46 @@ public class CookieManager extends Cooki
try {
List<HttpCookie> cookies = HttpCookie.parse(headerValue);
for (HttpCookie cookie : cookies) {
- if (shouldAcceptInternal(uri, cookie)) {
- cookieJar.add(uri, cookie);
+ if (cookie.getPath() == null) {
+ // If no path is specified, then by default
+ // the path is the directory of the page/doc
+ String path = uri.getPath();
+ if (!path.endsWith("/")) {
+ int i = path.lastIndexOf("/");
+ if (i > 0) {
+ path = path.substring(0, i + 1);
+ } else {
+ path = "/";
+ }
+ }
+ cookie.setPath(path);
+ }
+ String ports = cookie.getPortlist();
+ if (ports != null) {
+ int port = uri.getPort();
+ if (port == -1) {
+ port = "https".equals(uri.getScheme()) ? 443 : 80;
+ }
+ if (ports.isEmpty()) {
+ // Empty port list means this should be restricted
+ // to the incoming URI port
+ cookie.setPortlist("" + port );
+ if (shouldAcceptInternal(uri, cookie)) {
+ cookieJar.add(uri, cookie);
+ }
+ } else {
+ // Only store cookies with a port list
+ // IF the URI port is in that list, as per
+ // RFC 2965 section 3.3.2
+ if (isInPortList(ports, port) &&
+ shouldAcceptInternal(uri, cookie)) {
+ cookieJar.add(uri, cookie);
+ }
+ }
+ } else {
+ if (shouldAcceptInternal(uri, cookie)) {
+ cookieJar.add(uri, cookie);
+ }
}
}
} catch (IllegalArgumentException e) {
@@ -275,6 +333,32 @@ public class CookieManager extends Cooki
}
}
+
+ static private boolean isInPortList(String lst, int port) {
+ int i = lst.indexOf(",");
+ int val = -1;
+ while (i > 0) {
+ try {
+ val = Integer.parseInt(lst.substring(0, i));
+ if (val == port) {
+ return true;
+ }
+ } catch (NumberFormatException numberFormatException) {
+ }
+ lst = lst.substring(i+1);
+ i = lst.indexOf(",");
+ }
+ if (!lst.isEmpty()) {
+ try {
+ val = Integer.parseInt(lst);
+ if (val == port) {
+ return true;
+ }
+ } catch (NumberFormatException numberFormatException) {
+ }
+ }
+ return false;
+ }
/*
* path-matches algorithm, as defined by RFC 2965
--- a/src/share/classes/java/net/HttpCookie.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/java/net/HttpCookie.java Tue May 27 17:18:01 2008 -0700
@@ -92,9 +92,14 @@ public final class HttpCookie implements
//
- // date format used by Netscape's cookie draft
- //
- private final static String NETSCAPE_COOKIE_DATE_FORMAT = "EEE',' dd-MMM-yyyy HH:mm:ss 'GMT'";
+ // date formats used by Netscape's cookie draft
+ // as well as formats seen on various sites
+ //
+ private final static String[] COOKIE_DATE_FORMATS = {
+ "EEE',' dd-MMM-yyyy HH:mm:ss 'GMT'",
+ "EEE',' dd MMM yyyy HH:mm:ss 'GMT'",
+ "EEE MMM dd yyyy HH:mm:ss 'GMT'Z"
+ };
//
// constant strings represent set-cookie header token
@@ -148,6 +153,7 @@ public final class HttpCookie implements
secure = false;
whenCreated = System.currentTimeMillis();
+ portlist = null;
}
@@ -505,14 +511,14 @@ public final class HttpCookie implements
/**
- * Indicates to the browser whether the cookie should only be sent
- * using a secure protocol, such as HTTPS or SSL.
+ * Indicates whether the cookie should only be sent using a secure protocol,
+ * such as HTTPS or SSL.
*
* <p>The default value is <code>false</code>.
*
- * @param flag if <code>true</code>, sends the cookie from the browser
- * to the server using only when using a secure protocol;
- * if <code>false</code>, sent on any protocol
+ * @param flag If <code>true</code>, the cookie can only be sent over
+ * a secure protocol like https.
+ * If <code>false</code>, it can be sent over any protocol.
*
* @see #getSecure
*
@@ -526,12 +532,12 @@ public final class HttpCookie implements
/**
- * Returns <code>true</code> if the browser is sending cookies
- * only over a secure protocol, or <code>false</code> if the
- * browser can send cookies using any protocol.
- *
- * @return <code>true</code> if the browser can use
- * any standard protocol; otherwise, <code>false</code>
+ * Returns <code>true</code> if sending this cookie should be
+ * restricted to a secure protocol, or <code>false</code> if the
+ * it can be sent using any protocol.
+ *
+ * @return <code>false</code> if the cookie can be sent over
+ * any standard protocol; otherwise, <code>true</code>
*
* @see #setSecure
*
@@ -748,6 +754,7 @@ public final class HttpCookie implements
*
* @return a string form of the cookie. The string has the defined format
*/
+ @Override
public String toString() {
if (getVersion() > 0) {
return toRFC2965HeaderString();
@@ -768,6 +775,7 @@ public final class HttpCookie implements
* @return <tt>true</tt> if 2 http cookies equal to each other;
* otherwise, <tt>false</tt>
*/
+ @Override
public boolean equals(Object obj) {
if (obj == this)
return true;
@@ -798,6 +806,7 @@ public final class HttpCookie implements
*
* @return this http cookie's hash code
*/
+ @Override
public int hashCode() {
int h1 = name.toLowerCase().hashCode();
int h2 = (domain!=null) ? domain.toLowerCase().hashCode() : 0;
@@ -811,6 +820,7 @@ public final class HttpCookie implements
*
* @return a clone of this http cookie
*/
+ @Override
public Object clone() {
try {
return super.clone();
@@ -978,7 +988,7 @@ public final class HttpCookie implements
});
assignors.put("port", new CookieAttributeAssignor(){
public void assign(HttpCookie cookie, String attrName, String attrValue) {
- if (cookie.getPortlist() == null) cookie.setPortlist(attrValue);
+ if (cookie.getPortlist() == null) cookie.setPortlist(attrValue == null ? "" : attrValue);
}
});
assignors.put("secure", new CookieAttributeAssignor(){
@@ -1050,24 +1060,31 @@ public final class HttpCookie implements
return sb.toString();
}
+ private static SimpleDateFormat[] cDateFormats = null;
+ static {
+ cDateFormats = new SimpleDateFormat[COOKIE_DATE_FORMATS.length];
+ for (int i = 0; i < COOKIE_DATE_FORMATS.length; i++) {
+ cDateFormats[i] = new SimpleDateFormat(COOKIE_DATE_FORMATS[i]);
+ cDateFormats[i].setTimeZone(TimeZone.getTimeZone("GMT"));
+ }
+ }
/*
- * @param dateString a date string in format of
- * "EEE',' dd-MMM-yyyy HH:mm:ss 'GMT'",
- * which defined in Netscape cookie spec
+ * @param dateString a date string in one of the formats
+ * defined in Netscape cookie spec
*
* @return delta seconds between this cookie's creation
* time and the time specified by dateString
*/
private long expiryDate2DeltaSeconds(String dateString) {
- SimpleDateFormat df = new SimpleDateFormat(NETSCAPE_COOKIE_DATE_FORMAT);
- df.setTimeZone(TimeZone.getTimeZone("GMT"));
-
- try {
- Date date = df.parse(dateString);
- return (date.getTime() - whenCreated) / 1000;
- } catch (Exception e) {
- return 0;
- }
+ for (SimpleDateFormat df : cDateFormats) {
+ try {
+ Date date = df.parse(dateString);
+ return (date.getTime() - whenCreated) / 1000;
+ } catch (Exception e) {
+
+ }
+ }
+ return 0;
}
--- a/src/share/classes/java/net/Socket.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/java/net/Socket.java Tue May 27 17:18:01 2008 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright 1995-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1995-2008 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -253,7 +253,8 @@ class Socket implements java.io.Closeabl
*
* @param host the name of the remote host, or <code>null</code> for the loopback address.
* @param port the remote port
- * @param localAddr the local address the socket is bound to
+ * @param localAddr the local address the socket is bound to, or
+ * <code>null</code> for the <code>anyLocal</code> address.
* @param localPort the local port the socket is bound to, or
* <code>zero</code> for a system selected free port.
* @exception IOException if an I/O error occurs when creating the socket.
--- a/src/share/classes/java/security/AccessControlContext.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/java/security/AccessControlContext.java Tue May 27 17:18:01 2008 -0700
@@ -101,13 +101,14 @@ public final class AccessControlContext
}
/**
- * Create an AccessControlContext with the given set of ProtectionDomains.
+ * Create an AccessControlContext with the given array of ProtectionDomains.
* Context must not be null. Duplicate domains will be removed from the
* context.
*
* @param context the ProtectionDomains associated with this context.
* The non-duplicate domains are copied from the array. Subsequent
* changes to the array will not affect this AccessControlContext.
+ * @throws NullPointerException if <code>context</code> is <code>null</code>
*/
public AccessControlContext(ProtectionDomain context[])
{
@@ -125,8 +126,10 @@ public final class AccessControlContext
if ((context[i] != null) && (!v.contains(context[i])))
v.add(context[i]);
}
- this.context = new ProtectionDomain[v.size()];
- this.context = v.toArray(this.context);
+ if (!v.isEmpty()) {
+ this.context = new ProtectionDomain[v.size()];
+ this.context = v.toArray(this.context);
+ }
}
}
--- a/src/share/classes/java/security/BasicPermission.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/java/security/BasicPermission.java Tue May 27 17:18:01 2008 -0700
@@ -27,12 +27,10 @@ package java.security;
import java.security.*;
import java.util.Enumeration;
-import java.util.Iterator;
import java.util.Map;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.Collections;
-import java.util.StringTokenizer;
import java.io.ObjectStreamField;
import java.io.ObjectOutputStream;
import java.io.ObjectInputStream;
@@ -64,13 +62,7 @@ import java.io.IOException;
* @see java.security.Permission
* @see java.security.Permissions
* @see java.security.PermissionCollection
- * @see java.lang.RuntimePermission
- * @see java.security.SecurityPermission
- * @see java.util.PropertyPermission
- * @see java.awt.AWTPermission
- * @see java.net.NetPermission
* @see java.lang.SecurityManager
- *
*
* @author Marianne Mueller
* @author Roland Schemers
@@ -95,7 +87,6 @@ implements java.io.Serializable
* initialize a BasicPermission object. Common to all constructors.
*
*/
-
private void init(String name)
{
if (name == null)
@@ -213,8 +204,8 @@ implements java.io.Serializable
* and has the same name as this object.
* <P>
* @param obj the object we are testing for equality with this object.
- * @return true if <i>obj</i> is a BasicPermission, and has the same name
- * as this BasicPermission object, false otherwise.
+ * @return true if <i>obj</i>'s class is the same as this object's class
+ * and has the same name as this BasicPermission object, false otherwise.
*/
public boolean equals(Object obj) {
if (obj == this)
@@ -237,7 +228,6 @@ implements java.io.Serializable
*
* @return a hash code value for this object.
*/
-
public int hashCode() {
return this.getName().hashCode();
}
@@ -266,7 +256,6 @@ implements java.io.Serializable
* @return a new PermissionCollection object suitable for
* storing BasicPermissions.
*/
-
public PermissionCollection newPermissionCollection() {
return new BasicPermissionCollection(this.getClass());
}
--- a/src/share/classes/java/util/IdentityHashMap.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/java/util/IdentityHashMap.java Tue May 27 17:18:01 2008 -0700
@@ -188,7 +188,6 @@ public class IdentityHashMap<K,V>
/**
* Use NULL_KEY for key if it is null.
*/
-
private static Object maskNull(Object key) {
return (key == null ? NULL_KEY : key);
}
@@ -378,8 +377,8 @@ public class IdentityHashMap<K,V>
*/
public boolean containsValue(Object value) {
Object[] tab = table;
- for (int i = 1; i < tab.length; i+= 2)
- if (tab[i] == value)
+ for (int i = 1; i < tab.length; i += 2)
+ if (tab[i] == value && tab[i - 1] != null)
return true;
return false;
@@ -905,7 +904,6 @@ public class IdentityHashMap<K,V>
* view the first time this view is requested. The view is stateless,
* so there's no reason to create more than one.
*/
-
private transient Set<Map.Entry<K,V>> entrySet = null;
/**
--- a/src/share/classes/java/util/TreeMap.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/java/util/TreeMap.java Tue May 27 17:18:01 2008 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -1021,7 +1021,7 @@ public class TreeMap<K,V>
}
Iterator<K> descendingKeyIterator() {
- return new DescendingKeyIterator(getFirstEntry());
+ return new DescendingKeyIterator(getLastEntry());
}
static final class KeySet<E> extends AbstractSet<E> implements NavigableSet<E> {
--- a/src/share/classes/javax/management/AndQueryExp.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/javax/management/AndQueryExp.java Tue May 27 17:18:01 2008 -0700
@@ -100,12 +100,13 @@ class AndQueryExp extends QueryEval impl
/**
* Returns a string representation of this AndQueryExp
*/
- public String toString() {
- return "(" + exp1 + ") and (" + exp2 + ")";
- }
+ @Override
+ public String toString() {
+ return "(" + exp1 + ") and (" + exp2 + ")";
+ }
- @Override
- String toQueryString() {
+ @Override
+ String toQueryString() {
// Parentheses are only added if needed to disambiguate.
return parens(exp1) + " and " + parens(exp2);
}
--- a/src/share/classes/javax/management/BetweenQueryExp.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/javax/management/BetweenQueryExp.java Tue May 27 17:18:01 2008 -0700
@@ -135,6 +135,7 @@ class BetweenQueryExp extends QueryEval
/**
* Returns the string representing the object.
*/
+ @Override
public String toString() {
return "(" + exp1 + ") between (" + exp2 + ") and (" + exp3 + ")";
}
--- a/src/share/classes/javax/management/BinaryRelQueryExp.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/javax/management/BinaryRelQueryExp.java Tue May 27 17:18:01 2008 -0700
@@ -187,11 +187,11 @@ class BinaryRelQueryExp extends QueryEva
/**
* Returns the string representing the object.
*/
+ @Override
public String toString() {
return "(" + exp1 + ") " + relOpString() + " (" + exp2 + ")";
}
- @Override
String toQueryString() {
return exp1 + " " + relOpString() + " " + exp2;
}
--- a/src/share/classes/javax/management/NotQueryExp.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/javax/management/NotQueryExp.java Tue May 27 17:18:01 2008 -0700
@@ -91,7 +91,6 @@ class NotQueryExp extends QueryEval impl
return "not (" + exp + ")";
}
- @Override
String toQueryString() {
return "not (" + Query.toString(exp) + ")";
}
--- a/src/share/classes/javax/management/NumericValueExp.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/javax/management/NumericValueExp.java Tue May 27 17:18:01 2008 -0700
@@ -83,7 +83,7 @@ class NumericValueExp extends QueryEval
* <p>The <b>serialVersionUID</b> of this class is <code>-4679739485102359104L</code>.
*/
private static final ObjectStreamField[] serialPersistentFields;
- private Number val = new Double(0);
+ private Number val = 0.0;
private static boolean compat = false;
static {
@@ -213,11 +213,11 @@ class NumericValueExp extends QueryEval
}
if (isLong)
{
- this.val = new Long(longVal);
+ this.val = longVal;
}
else
{
- this.val = new Double(doubleVal);
+ this.val = doubleVal;
}
}
else
--- a/src/share/classes/javax/management/ObjectName.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/javax/management/ObjectName.java Tue May 27 17:18:01 2008 -0700
@@ -223,8 +223,7 @@ import javax.management.QueryExp;
* @since 1.5
*/
@SuppressWarnings("serial") // don't complain serialVersionUID not constant
-public class ObjectName extends ToQueryString
- implements Comparable<ObjectName>, QueryExp {
+public class ObjectName implements Comparable<ObjectName>, QueryExp {
/**
* A structure recording property structure and
@@ -450,7 +449,7 @@ public class ObjectName extends ToQueryS
// parses domain part
domain_parsing:
while (index < len) {
- switch (c = name_chars[index]) {
+ switch (name_chars[index]) {
case ':' :
_domain_length = index++;
break domain_parsing;
@@ -620,7 +619,7 @@ public class ObjectName extends ToQueryS
case '\n' :
final String ichar = ((c1=='\n')?"\\n":""+c1);
throw new MalformedObjectNameException(
- "Invalid character '" + c1 +
+ "Invalid character '" + ichar +
"' in value part of property");
default :
in_index++;
@@ -1781,7 +1780,6 @@ public class ObjectName extends ToQueryS
return getSerializedNameString();
}
- @Override
String toQueryString() {
return "LIKE " + Query.value(toString());
}
--- a/src/share/classes/javax/management/OrQueryExp.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/javax/management/OrQueryExp.java Tue May 27 17:18:01 2008 -0700
@@ -100,6 +100,7 @@ class OrQueryExp extends QueryEval imple
/**
* Returns a string representation of this OrQueryExp
*/
+ @Override
public String toString() {
return "(" + exp1 + ") or (" + exp2 + ")";
}
--- a/src/share/classes/javax/management/Query.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/javax/management/Query.java Tue May 27 17:18:01 2008 -0700
@@ -979,8 +979,18 @@ package javax.management;
if (query == null)
return null;
- if (query instanceof ToQueryString)
- return ((ToQueryString) query).toQueryString();
+ // This is ugly. At one stage we had a non-public class called
+ // ToQueryString with the toQueryString() method, and every class
+ // mentioned here inherited from that class. But that interfered
+ // with serialization of custom subclasses of e.g. QueryEval. Even
+ // though we could make it work by adding a public constructor to this
+ // non-public class, that seemed fragile because according to the
+ // serialization spec it shouldn't work. If only non-public interfaces
+ // could have non-public methods.
+ if (query instanceof ObjectName)
+ return ((ObjectName) query).toQueryString();
+ if (query instanceof QueryEval)
+ return ((QueryEval) query).toQueryString();
return query.toString();
}
--- a/src/share/classes/javax/management/QueryEval.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/javax/management/QueryEval.java Tue May 27 17:18:01 2008 -0700
@@ -25,20 +25,15 @@
package javax.management;
-
// java import
import java.io.Serializable;
-
-// RI import
-import javax.management.MBeanServer;
-
/**
* Allows a query to be performed in the context of a specific MBean server.
*
* @since 1.5
*/
-public abstract class QueryEval extends ToQueryString implements Serializable {
+public abstract class QueryEval implements Serializable {
/* Serial version */
private static final long serialVersionUID = 2675899265640874796L;
@@ -80,4 +75,10 @@ public abstract class QueryEval extends
public static MBeanServer getMBeanServer() {
return server.get();
}
+
+ // Subclasses in this package can override this method to return a different
+ // string.
+ String toQueryString() {
+ return toString();
+ }
}
--- a/src/share/classes/javax/management/StandardMBean.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/javax/management/StandardMBean.java Tue May 27 17:18:01 2008 -0700
@@ -750,7 +750,7 @@ public class StandardMBean implements Dy
* @return the Descriptor for the new MBeanInfo.
*/
Descriptor getDescriptor(MBeanInfo info, boolean immutableInfo) {
- ImmutableDescriptor desc = null;
+ ImmutableDescriptor desc;
if (info == null ||
info.getDescriptor() == null ||
info.getDescriptor().getFieldNames().length == 0) {
--- a/src/share/classes/javax/management/loading/MLet.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/javax/management/loading/MLet.java Tue May 27 17:18:01 2008 -0700
@@ -591,8 +591,8 @@ public class MLet extends java.net.URLCl
// Instantiate the class specified in the
// CODE or OBJECT section of the MLet tag
//
- Object o = null;
- ObjectInstance objInst = null;
+ Object o;
+ ObjectInstance objInst;
if (code != null && serName != null) {
final String msg =
@@ -1131,11 +1131,17 @@ public class MLet extends java.net.URLCl
return null;
} finally {
// Cleanup ...
- if (tmpFile!=null) try {
- tmpFile.delete();
- } catch (Exception x) {
- MLET_LOGGER.logp(Level.FINEST, MLet.class.getName(),
- "getTmpDir", "Failed to delete temporary file", x);
+ if (tmpFile!=null) {
+ try {
+ boolean deleted = tmpFile.delete();
+ if (!deleted) {
+ MLET_LOGGER.logp(Level.FINEST, MLet.class.getName(),
+ "getTmpDir", "Failed to delete temp file");
+ }
+ } catch (Exception x) {
+ MLET_LOGGER.logp(Level.FINEST, MLet.class.getName(),
+ "getTmpDir", "Failed to delete temporary file", x);
+ }
}
}
}
@@ -1178,25 +1184,8 @@ public class MLet extends java.net.URLCl
* Removes any white space from a string. This is used to
* convert strings such as "Windows NT" to "WindowsNT".
*/
- private String removeSpace(String s) {
- s = s.trim();
- int j = s.indexOf(' ');
- if (j == -1) {
- return s;
- }
- String temp = "";
- int k = 0;
- while (j != -1) {
- s = s.substring(k);
- j = s.indexOf(' ');
- if (j != -1) {
- temp = temp + s.substring(0, j);
- } else {
- temp = temp + s.substring(0);
- }
- k = j + 1;
- }
- return temp;
+ private static String removeSpace(String s) {
+ return s.trim().replace(" ", "");
}
/**
--- a/src/share/classes/javax/management/loading/MLetParser.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/javax/management/loading/MLetParser.java Tue May 27 17:18:01 2008 -0700
@@ -240,14 +240,12 @@ class MLetParser {
MLET_LOGGER.logp(Level.FINER,
MLetParser.class.getName(),
mth, requiresCodeWarning);
- atts = null;
throw new IOException(requiresCodeWarning);
}
if (atts.get("archive") == null) {
MLET_LOGGER.logp(Level.FINER,
MLetParser.class.getName(),
mth, requiresJarsWarning);
- atts = null;
throw new IOException(requiresJarsWarning);
}
}
@@ -265,7 +263,7 @@ class MLetParser {
public List<MLetContent> parseURL(String urlname) throws IOException {
// Parse the document
//
- URL url = null;
+ URL url;
if (urlname.indexOf(':') <= 1) {
String userDir = System.getProperty("user.dir");
String prot;
--- a/src/share/classes/javax/management/modelmbean/DescriptorSupport.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/javax/management/modelmbean/DescriptorSupport.java Tue May 27 17:18:01 2008 -0700
@@ -591,8 +591,6 @@ public class DescriptorSupport
Set returnedSet = descriptorMap.entrySet();
int i = 0;
- Object currValue = null;
- Map.Entry currElement = null;
if (MODELMBEAN_LOGGER.isLoggable(Level.FINEST)) {
MODELMBEAN_LOGGER.logp(Level.FINEST,
@@ -600,7 +598,7 @@ public class DescriptorSupport
"getFields()", "Returning " + numberOfEntries + " fields");
}
for (Iterator iter = returnedSet.iterator(); iter.hasNext(); i++) {
- currElement = (Map.Entry) iter.next();
+ Map.Entry currElement = (Map.Entry) iter.next();
if (currElement == null) {
if (MODELMBEAN_LOGGER.isLoggable(Level.FINEST)) {
@@ -609,7 +607,7 @@ public class DescriptorSupport
"getFields()", "Element is null");
}
} else {
- currValue = currElement.getValue();
+ Object currValue = currElement.getValue();
if (currValue == null) {
responseFields[i] = currElement.getKey() + "=";
} else {
@@ -1127,7 +1125,7 @@ public class DescriptorSupport
final char c = entities[i].charAt(0);
final String entity = entities[i].substring(1);
charToEntityMap[c] = entity;
- entityToCharMap.put(entity, new Character(c));
+ entityToCharMap.put(entity, c);
}
}
@@ -1325,13 +1323,11 @@ public class DescriptorSupport
// utility to convert to int, returns -2 if bogus.
private long toNumeric(String inStr) {
- long result = -2;
try {
- result = java.lang.Long.parseLong(inStr);
+ return java.lang.Long.parseLong(inStr);
} catch (Exception e) {
return -2;
}
- return result;
}
--- a/src/share/classes/javax/management/modelmbean/ModelMBeanAttributeInfo.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/javax/management/modelmbean/ModelMBeanAttributeInfo.java Tue May 27 17:18:01 2008 -0700
@@ -432,7 +432,7 @@ public class ModelMBeanAttributeInfo
*/
private Descriptor validDescriptor(final Descriptor in) throws RuntimeOperationsException {
- Descriptor clone = null;
+ Descriptor clone;
if (in == null) {
clone = new DescriptorSupport();
MODELMBEAN_LOGGER.finer("Null Descriptor, creating new.");
--- a/src/share/classes/javax/management/modelmbean/ModelMBeanConstructorInfo.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/javax/management/modelmbean/ModelMBeanConstructorInfo.java Tue May 27 17:18:01 2008 -0700
@@ -393,7 +393,7 @@ public class ModelMBeanConstructorInfo
* @exception RuntimeOperationsException if Descriptor is invalid
*/
private Descriptor validDescriptor(final Descriptor in) throws RuntimeOperationsException {
- Descriptor clone = null;
+ Descriptor clone;
if (in == null) {
clone = new DescriptorSupport();
MODELMBEAN_LOGGER.finer("Null Descriptor, creating new.");
--- a/src/share/classes/javax/management/modelmbean/ModelMBeanInfoSupport.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/javax/management/modelmbean/ModelMBeanInfoSupport.java Tue May 27 17:18:01 2008 -0700
@@ -944,7 +944,7 @@ public class ModelMBeanInfoSupport exten
* @exception RuntimeOperationsException if Descriptor is invalid
*/
private Descriptor validDescriptor(final Descriptor in) throws RuntimeOperationsException {
- Descriptor clone = null;
+ Descriptor clone;
if (in == null) {
clone = new DescriptorSupport();
MODELMBEAN_LOGGER.finer("Null Descriptor, creating new.");
--- a/src/share/classes/javax/management/modelmbean/ModelMBeanNotificationInfo.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/javax/management/modelmbean/ModelMBeanNotificationInfo.java Tue May 27 17:18:01 2008 -0700
@@ -328,7 +328,7 @@ public class ModelMBeanNotificationInfo
* @exception RuntimeOperationsException if Descriptor is invalid
*/
private Descriptor validDescriptor(final Descriptor in) throws RuntimeOperationsException {
- Descriptor clone = null;
+ Descriptor clone;
if (in == null) {
clone = new DescriptorSupport();
MODELMBEAN_LOGGER.finer("Null Descriptor, creating new.");
--- a/src/share/classes/javax/management/modelmbean/ModelMBeanOperationInfo.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/javax/management/modelmbean/ModelMBeanOperationInfo.java Tue May 27 17:18:01 2008 -0700
@@ -424,7 +424,7 @@ public class ModelMBeanOperationInfo ext
*/
private Descriptor validDescriptor(final Descriptor in)
throws RuntimeOperationsException {
- Descriptor clone = null;
+ Descriptor clone;
if (in == null) {
clone = new DescriptorSupport();
MODELMBEAN_LOGGER.finer("Null Descriptor, creating new.");
--- a/src/share/classes/javax/management/modelmbean/RequiredModelMBean.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/javax/management/modelmbean/RequiredModelMBean.java Tue May 27 17:18:01 2008 -0700
@@ -1425,9 +1425,7 @@ public class RequiredModelMBean
}
/* Check attributeDescriptor for getMethod */
- ModelMBeanAttributeInfo attrInfo=null;
- Descriptor attrDescr=null;
- Object response = null;
+ Object response;
try {
if (modelMBeanInfo == null)
@@ -1435,14 +1433,14 @@ public class RequiredModelMBean
"getAttribute failed: ModelMBeanInfo not found for "+
attrName);
- attrInfo = modelMBeanInfo.getAttribute(attrName);
+ ModelMBeanAttributeInfo attrInfo = modelMBeanInfo.getAttribute(attrName);
Descriptor mmbDesc = modelMBeanInfo.getMBeanDescriptor();
if (attrInfo == null)
throw new AttributeNotFoundException("getAttribute failed:"+
" ModelMBeanAttributeInfo not found for " + attrName);
- attrDescr = attrInfo.getDescriptor();
+ Descriptor attrDescr = attrInfo.getDescriptor();
if (attrDescr != null) {
if (!attrInfo.isReadable())
throw new AttributeNotFoundException(
@@ -1684,14 +1682,13 @@ public class RequiredModelMBean
"getAttributes(String[])","Entry");
}
- AttributeList responseList = null;
if (attrNames == null)
throw new RuntimeOperationsException(new
IllegalArgumentException("attributeNames must not be null"),
"Exception occurred trying to get attributes of a "+
"RequiredModelMBean");
- responseList = new AttributeList();
+ AttributeList responseList = new AttributeList();
for (int i = 0; i < attrNames.length; i++) {
try {
responseList.add(new Attribute(attrNames[i],
@@ -1833,8 +1830,6 @@ public class RequiredModelMBean
throw new AttributeNotFoundException("setAttribute failed: "
+ attrName + " is not writable ");
- Object setResponse = null;
-
String attrSetMethod = (String)
(attrDescr.getFieldValue("setMethod"));
String attrGetMethod = (String)
@@ -1873,9 +1868,9 @@ public class RequiredModelMBean
}
updateDescriptor = true;
} else {
- setResponse = invoke(attrSetMethod,
- (new Object[] {attrValue}),
- (new String[] {attrType}) );
+ invoke(attrSetMethod,
+ (new Object[] {attrValue}),
+ (new String[] {attrType}) );
}
/* change cached value */
@@ -2023,8 +2018,6 @@ public class RequiredModelMBean
private synchronized void writeToLog(String logFileName,
String logEntry) throws Exception {
- PrintStream logOut = null;
- FileOutputStream fos = null;
if (MODELMBEAN_LOGGER.isLoggable(Level.FINER)) {
MODELMBEAN_LOGGER.logp(Level.FINER,
RequiredModelMBean.class.getName(),
@@ -2041,9 +2034,9 @@ public class RequiredModelMBean
return;
}
+ FileOutputStream fos = new FileOutputStream(logFileName, true);
try {
- fos = new FileOutputStream(logFileName, true);
- logOut = new PrintStream(fos);
+ PrintStream logOut = new PrintStream(fos);
logOut.println(logEntry);
logOut.close();
if (MODELMBEAN_LOGGER.isLoggable(Level.FINER)) {
@@ -2062,6 +2055,8 @@ public class RequiredModelMBean
logFileName);
}
throw e;
+ } finally {
+ fos.close();
}
}
--- a/src/share/classes/javax/management/monitor/CounterMonitor.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/javax/management/monitor/CounterMonitor.java Tue May 27 17:18:01 2008 -0700
@@ -740,16 +740,16 @@ public class CounterMonitor extends Moni
//
switch (o.getType()) {
case INTEGER:
- o.setThreshold(new Integer((int)threshold_value));
+ o.setThreshold(Integer.valueOf((int)threshold_value));
break;
case BYTE:
- o.setThreshold(new Byte((byte)threshold_value));
+ o.setThreshold(Byte.valueOf((byte)threshold_value));
break;
case SHORT:
- o.setThreshold(new Short((short)threshold_value));
+ o.setThreshold(Short.valueOf((short)threshold_value));
break;
case LONG:
- o.setThreshold(new Long(threshold_value));
+ o.setThreshold(Long.valueOf(threshold_value));
break;
default:
// Should never occur...
@@ -810,10 +810,10 @@ public class CounterMonitor extends Moni
derived += modulus.longValue();
switch (o.getType()) {
- case INTEGER: o.setDerivedGauge(new Integer((int) derived)); break;
- case BYTE: o.setDerivedGauge(new Byte((byte) derived)); break;
- case SHORT: o.setDerivedGauge(new Short((short) derived)); break;
- case LONG: o.setDerivedGauge(new Long(derived)); break;
+ case INTEGER: o.setDerivedGauge(Integer.valueOf((int) derived)); break;
+ case BYTE: o.setDerivedGauge(Byte.valueOf((byte) derived)); break;
+ case SHORT: o.setDerivedGauge(Short.valueOf((short) derived)); break;
+ case LONG: o.setDerivedGauge(Long.valueOf(derived)); break;
default:
// Should never occur...
MONITOR_LOGGER.logp(Level.FINEST, CounterMonitor.class.getName(),
--- a/src/share/classes/javax/management/monitor/GaugeMonitor.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/javax/management/monitor/GaugeMonitor.java Tue May 27 17:18:01 2008 -0700
@@ -636,28 +636,28 @@ public class GaugeMonitor extends Monito
Number der;
switch (o.getType()) {
case INTEGER:
- der = new Integer(((Integer)scanGauge).intValue() -
- ((Integer)prev).intValue());
+ der = Integer.valueOf(((Integer)scanGauge).intValue() -
+ ((Integer)prev).intValue());
break;
case BYTE:
- der = new Byte((byte)(((Byte)scanGauge).byteValue() -
- ((Byte)prev).byteValue()));
+ der = Byte.valueOf((byte)(((Byte)scanGauge).byteValue() -
+ ((Byte)prev).byteValue()));
break;
case SHORT:
- der = new Short((short)(((Short)scanGauge).shortValue() -
- ((Short)prev).shortValue()));
+ der = Short.valueOf((short)(((Short)scanGauge).shortValue() -
+ ((Short)prev).shortValue()));
break;
case LONG:
- der = new Long(((Long)scanGauge).longValue() -
- ((Long)prev).longValue());
+ der = Long.valueOf(((Long)scanGauge).longValue() -
+ ((Long)prev).longValue());
break;
case FLOAT:
- der = new Float(((Float)scanGauge).floatValue() -
- ((Float)prev).floatValue());
+ der = Float.valueOf(((Float)scanGauge).floatValue() -
+ ((Float)prev).floatValue());
break;
case DOUBLE:
- der = new Double(((Double)scanGauge).doubleValue() -
- ((Double)prev).doubleValue());
+ der = Double.valueOf(((Double)scanGauge).doubleValue() -
+ ((Double)prev).doubleValue());
break;
default:
// Should never occur...
--- a/src/share/classes/javax/management/monitor/Monitor.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/javax/management/monitor/Monitor.java Tue May 27 17:18:01 2008 -0700
@@ -367,7 +367,7 @@ public abstract class Monitor
/**
* Constant used to initialize all the numeric values.
*/
- static final Integer INTEGER_ZERO = new Integer(0);
+ static final Integer INTEGER_ZERO = 0;
/*
@@ -1122,12 +1122,12 @@ public abstract class Monitor
*/
private void monitor(ObservedObject o, int index, int an[]) {
- String attribute = null;
+ String attribute;
String notifType = null;
String msg = null;
Object derGauge = null;
Object trigger = null;
- ObjectName object = null;
+ ObjectName object;
Comparable<?> value = null;
MonitorNotification alarm = null;
@@ -1565,7 +1565,7 @@ public abstract class Monitor
final ThreadGroup group;
final AtomicInteger threadNumber = new AtomicInteger(1);
final String namePrefix;
- final String nameSuffix = "]";
+ static final String nameSuffix = "]";
public DaemonThreadFactory(String poolName) {
SecurityManager s = System.getSecurityManager();
--- a/src/share/classes/javax/management/openmbean/ArrayType.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/javax/management/openmbean/ArrayType.java Tue May 27 17:18:01 2008 -0700
@@ -726,7 +726,7 @@ public class ArrayType<T> extends OpenTy
value += dimension;
value += elementType.hashCode();
value += Boolean.valueOf(primitiveArray).hashCode();
- myHashCode = new Integer(value);
+ myHashCode = Integer.valueOf(value);
}
// return always the same hash code for this instance (immutable)
--- a/src/share/classes/javax/management/openmbean/CompositeType.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/javax/management/openmbean/CompositeType.java Tue May 27 17:18:01 2008 -0700
@@ -426,7 +426,7 @@ public class CompositeType extends OpenT
value += key.hashCode();
value += this.nameToType.get(key).hashCode();
}
- myHashCode = new Integer(value);
+ myHashCode = Integer.valueOf(value);
}
// return always the same hash code for this instance (immutable)
--- a/src/share/classes/javax/management/openmbean/OpenMBeanAttributeInfoSupport.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/javax/management/openmbean/OpenMBeanAttributeInfoSupport.java Tue May 27 17:18:01 2008 -0700
@@ -769,7 +769,6 @@ public class OpenMBeanAttributeInfoSuppo
"array with same dimensions";
throw new IllegalArgumentException(msg);
}
- Class<?> targetComponentClass = targetArrayClass.getComponentType();
OpenType<?> componentOpenType;
if (dim == 1)
componentOpenType = baseType;
--- a/src/share/classes/javax/management/openmbean/OpenMBeanConstructorInfoSupport.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/javax/management/openmbean/OpenMBeanConstructorInfoSupport.java Tue May 27 17:18:01 2008 -0700
@@ -252,7 +252,7 @@ public class OpenMBeanConstructorInfoSup
int value = 0;
value += this.getName().hashCode();
value += Arrays.asList(this.getSignature()).hashCode();
- myHashCode = new Integer(value);
+ myHashCode = Integer.valueOf(value);
}
// return always the same hash code for this instance (immutable)
--- a/src/share/classes/javax/management/openmbean/OpenMBeanInfoSupport.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/javax/management/openmbean/OpenMBeanInfoSupport.java Tue May 27 17:18:01 2008 -0700
@@ -347,7 +347,7 @@ public class OpenMBeanInfoSupport
value += arraySetHash(this.getConstructors());
value += arraySetHash(this.getOperations());
value += arraySetHash(this.getNotifications());
- myHashCode = new Integer(value);
+ myHashCode = Integer.valueOf(value);
}
// return always the same hash code for this instance (immutable)
--- a/src/share/classes/javax/management/openmbean/OpenMBeanOperationInfoSupport.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/javax/management/openmbean/OpenMBeanOperationInfoSupport.java Tue May 27 17:18:01 2008 -0700
@@ -352,7 +352,7 @@ public class OpenMBeanOperationInfoSuppo
value += Arrays.asList(this.getSignature()).hashCode();
value += this.getReturnOpenType().hashCode();
value += this.getImpact();
- myHashCode = new Integer(value);
+ myHashCode = Integer.valueOf(value);
}
// return always the same hash code for this instance (immutable)
--- a/src/share/classes/javax/management/openmbean/SimpleType.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/javax/management/openmbean/SimpleType.java Tue May 27 17:18:01 2008 -0700
@@ -257,7 +257,7 @@ public final class SimpleType<T> extends
// Calculate the hash code value if it has not yet been done (ie 1st call to hashCode())
//
if (myHashCode == null) {
- myHashCode = new Integer(this.getClassName().hashCode());
+ myHashCode = Integer.valueOf(this.getClassName().hashCode());
}
// return always the same hash code for this instance (immutable)
--- a/src/share/classes/javax/management/openmbean/TabularType.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/javax/management/openmbean/TabularType.java Tue May 27 17:18:01 2008 -0700
@@ -332,7 +332,7 @@ public class TabularType extends OpenTyp
for (Iterator k = indexNames.iterator(); k.hasNext(); ) {
value += k.next().hashCode();
}
- myHashCode = new Integer(value);
+ myHashCode = Integer.valueOf(value);
}
// return always the same hash code for this instance (immutable)
--- a/src/share/classes/javax/management/relation/RelationNotification.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/javax/management/relation/RelationNotification.java Tue May 27 17:18:01 2008 -0700
@@ -369,7 +369,7 @@ public class RelationNotification extend
* @return a {@link List} of {@link ObjectName}.
*/
public List<ObjectName> getMBeansToUnregister() {
- List<ObjectName> result = null;
+ List<ObjectName> result;
if (unregisterMBeanList != null) {
result = new ArrayList<ObjectName>(unregisterMBeanList);
} else {
@@ -397,7 +397,7 @@ public class RelationNotification extend
* @return the old value of the updated role.
*/
public List<ObjectName> getOldRoleValue() {
- List<ObjectName> result = null;
+ List<ObjectName> result;
if (oldRoleValue != null) {
result = new ArrayList<ObjectName>(oldRoleValue);
} else {
@@ -412,7 +412,7 @@ public class RelationNotification extend
* @return the new value of the updated role.
*/
public List<ObjectName> getNewRoleValue() {
- List<ObjectName> result = null;
+ List<ObjectName> result;
if (newRoleValue != null) {
result = new ArrayList<ObjectName>(newRoleValue);
} else {
--- a/src/share/classes/javax/management/relation/RelationService.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/javax/management/relation/RelationService.java Tue May 27 17:18:01 2008 -0700
@@ -35,6 +35,7 @@ import java.util.List;
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.concurrent.atomic.AtomicLong;
import java.util.logging.Level;
import javax.management.Attribute;
@@ -122,7 +123,7 @@ public class RelationService extends Not
// Internal counter to provide sequence numbers for notifications sent by:
// - the Relation Service
// - a relation handled by the Relation Service
- private Long myNtfSeqNbrCounter = new Long(0);
+ private final AtomicLong atomicSeqNo = new AtomicLong();
// ObjectName used to register the Relation Service in the MBean Server
private ObjectName myObjName = null;
@@ -254,19 +255,6 @@ public class RelationService extends Not
myPurgeFlag = purgeFlag;
return;
- }
-
- // Returns internal counter to be used for Sequence Numbers of
- // notifications to be raised by:
- // - a relation handled by this Relation Service (when updated)
- // - the Relation Service
- private Long getNotificationSequenceNumber() {
- Long result = null;
- synchronized(myNtfSeqNbrCounter) {
- result = new Long(myNtfSeqNbrCounter.longValue() + 1);
- myNtfSeqNbrCounter = new Long(result.longValue());
- }
- return result;
}
//
@@ -369,7 +357,7 @@ public class RelationService extends Not
* @return ArrayList of relation type names (Strings)
*/
public List<String> getAllRelationTypeNames() {
- ArrayList<String> result = null;
+ ArrayList<String> result;
synchronized(myRelType2ObjMap) {
result = new ArrayList<String>(myRelType2ObjMap.keySet());
}
@@ -684,7 +672,7 @@ public class RelationService extends Not
// Can throw InstanceNotFoundException (but detected above)
// No MBeanException as no exception raised by this method, and no
// ReflectionException
- String relId = null;
+ String relId;
try {
relId = (String)(myMBeanServer.getAttribute(relationObjectName,
"RelationId"));
@@ -707,7 +695,7 @@ public class RelationService extends Not
// Can throw InstanceNotFoundException (but detected above)
// No MBeanException as no exception raised by this method, no
// ReflectionException
- ObjectName relServObjName = null;
+ ObjectName relServObjName;
try {
relServObjName = (ObjectName)
(myMBeanServer.getAttribute(relationObjectName,
@@ -737,7 +725,7 @@ public class RelationService extends Not
// Can throw InstanceNotFoundException (but detected above)
// No MBeanException as no exception raised by this method, no
// ReflectionException
- String relTypeName = null;
+ String relTypeName;
try {
relTypeName = (String)(myMBeanServer.getAttribute(relationObjectName,
"RelationTypeName"));
@@ -758,7 +746,7 @@ public class RelationService extends Not
// Can throw InstanceNotFoundException (but detected above)
// No MBeanException as no exception raised by this method, no
// ReflectionException
- RoleList roleList = null;
+ RoleList roleList;
try {
roleList = (RoleList)(myMBeanServer.invoke(relationObjectName,
"retrieveAllRoles",
@@ -912,7 +900,7 @@ public class RelationService extends Not
* @return ArrayList of String
*/
public List<String> getAllRelationIds() {
- List<String> result = null;
+ List<String> result;
synchronized(myRelId2ObjMap) {
result = new ArrayList<String>(myRelId2ObjMap.keySet());
}
@@ -948,7 +936,7 @@ public class RelationService extends Not
RELATION_LOGGER.entering(RelationService.class.getName(),
"checkRoleReading", new Object[] {roleName, relationTypeName});
- Integer result = null;
+ Integer result;
// Can throw a RelationTypeNotFoundException
RelationType relType = getRelationType(relationTypeName);
@@ -965,7 +953,7 @@ public class RelationService extends Not
false);
} catch (RoleInfoNotFoundException exc) {
- result = new Integer(RoleStatus.NO_ROLE_WITH_NAME);
+ result = Integer.valueOf(RoleStatus.NO_ROLE_WITH_NAME);
}
RELATION_LOGGER.exiting(RelationService.class.getName(),
@@ -1021,13 +1009,13 @@ public class RelationService extends Not
writeChkFlag = false;
}
- RoleInfo roleInfo = null;
+ RoleInfo roleInfo;
try {
roleInfo = relType.getRoleInfo(roleName);
} catch (RoleInfoNotFoundException exc) {
RELATION_LOGGER.exiting(RelationService.class.getName(),
"checkRoleWriting");
- return new Integer(RoleStatus.NO_ROLE_WITH_NAME);
+ return Integer.valueOf(RoleStatus.NO_ROLE_WITH_NAME);
}
Integer result = checkRoleInt(2,
@@ -1436,7 +1424,7 @@ public class RelationService extends Not
// Relation id to relation type name map
// First retrieves the relation type name
- String relTypeName = null;
+ String relTypeName;
synchronized(myRelId2RelTypeMap) {
relTypeName = myRelId2RelTypeMap.get(relationId);
myRelId2RelTypeMap.remove(relationId);
@@ -1641,7 +1629,7 @@ public class RelationService extends Not
// List of relation ids of interest regarding the selected
// relation type
- List<String> relIdList = null;
+ List<String> relIdList;
if (relationTypeName == null) {
// Considers all relations
relIdList = new ArrayList<String>(allRelIdSet);
@@ -1655,7 +1643,7 @@ public class RelationService extends Not
for (String currRelId : allRelIdSet) {
// Retrieves its relation type
- String currRelTypeName = null;
+ String currRelTypeName;
synchronized(myRelId2RelTypeMap) {
currRelTypeName =
myRelId2RelTypeMap.get(currRelId);
@@ -1952,7 +1940,7 @@ public class RelationService extends Not
// Can throw a RelationNotFoundException
Object relObj = getRelation(relationId);
- RoleResult result = null;
+ RoleResult result;
if (relObj instanceof RelationSupport) {
// Internal relation
@@ -2022,7 +2010,7 @@ public class RelationService extends Not
// Can throw a RelationNotFoundException
Object relObj = getRelation(relationId);
- RoleResult result = null;
+ RoleResult result;
if (relObj instanceof RelationSupport) {
// Internal relation
@@ -2073,7 +2061,7 @@ public class RelationService extends Not
// Can throw a RelationNotFoundException
Object relObj = getRelation(relationId);
- Integer result = null;
+ Integer result;
if (relObj instanceof RelationSupport) {
// Internal relation
@@ -2268,7 +2256,7 @@ public class RelationService extends Not
// Can throw a RelationNotFoundException
Object relObj = getRelation(relationId);
- RoleResult result = null;
+ RoleResult result;
if (relObj instanceof RelationSupport) {
// Internal relation
@@ -2390,7 +2378,7 @@ public class RelationService extends Not
// Can throw a RelationNotFoundException
Object relObj = getRelation(relationId);
- String result = null;
+ String result;
if (relObj instanceof RelationSupport) {
// Internal relation
@@ -2473,7 +2461,7 @@ public class RelationService extends Not
// Note: do both tests as a relation can be an MBean and be
// itself referenced in another relation :)
- String relId = null;
+ String relId;
synchronized(myRelMBeanObjName2RelIdMap){
relId = myRelMBeanObjName2RelIdMap.get(mbeanName);
}
@@ -2511,9 +2499,6 @@ public class RelationService extends Not
RELATION_LOGGER.entering(RelationService.class.getName(),
"getNotificationInfo");
- MBeanNotificationInfo[] ntfInfoArray =
- new MBeanNotificationInfo[1];
-
String ntfClass = "javax.management.relation.RelationNotification";
String[] ntfTypes = new String[] {
@@ -2615,7 +2600,7 @@ public class RelationService extends Not
"getRelationType", relationTypeName);
// No null relation type accepted, so can use get()
- RelationType relType = null;
+ RelationType relType;
synchronized(myRelType2ObjMap) {
relType = (myRelType2ObjMap.get(relationTypeName));
}
@@ -2659,7 +2644,7 @@ public class RelationService extends Not
"getRelation", relationId);
// No null relation accepted, so can use get()
- Object rel = null;
+ Object rel;
synchronized(myRelId2ObjMap) {
rel = myRelId2ObjMap.get(relationId);
}
@@ -3077,7 +3062,7 @@ public class RelationService extends Not
// Retrieves corresponding role info
// Can throw a RoleInfoNotFoundException to be converted into a
// RoleNotFoundException
- RoleInfo roleInfo = null;
+ RoleInfo roleInfo;
try {
roleInfo = relType.getRoleInfo(currRoleName);
} catch (RoleInfoNotFoundException exc) {
@@ -3227,7 +3212,7 @@ public class RelationService extends Not
if (!(roleName.equals(expName))) {
RELATION_LOGGER.exiting(RelationService.class.getName(),
"checkRoleInt");
- return new Integer(RoleStatus.NO_ROLE_WITH_NAME);
+ return Integer.valueOf(RoleStatus.NO_ROLE_WITH_NAME);
}
// Checks read access if required
@@ -3236,7 +3221,7 @@ public class RelationService extends Not
if (!isReadable) {
RELATION_LOGGER.exiting(RelationService.class.getName(),
"checkRoleInt");
- return new Integer(RoleStatus.ROLE_NOT_READABLE);
+ return Integer.valueOf(RoleStatus.ROLE_NOT_READABLE);
} else {
// End of check :)
RELATION_LOGGER.exiting(RelationService.class.getName(),
@@ -3572,7 +3557,7 @@ public class RelationService extends Not
// Relation type name
// Note: do not use getRelationTypeName() as if it is a relation MBean
// it is already unregistered.
- String relTypeName = null;
+ String relTypeName;
synchronized(myRelId2RelTypeMap) {
relTypeName = (myRelId2RelTypeMap.get(relationId));
}
@@ -3609,7 +3594,7 @@ public class RelationService extends Not
}
// Sequence number
- Long seqNbr = getNotificationSequenceNumber();
+ Long seqNo = atomicSeqNo.incrementAndGet();
// Timestamp
Date currDate = new Date();
@@ -3625,7 +3610,7 @@ public class RelationService extends Not
// Creation or removal
ntf = new RelationNotification(ntfType,
this,
- seqNbr.longValue(),
+ seqNo.longValue(),
timeStamp,
message,
relationId,
@@ -3640,7 +3625,7 @@ public class RelationService extends Not
// Update
ntf = new RelationNotification(ntfType,
this,
- seqNbr.longValue(),
+ seqNo.longValue(),
timeStamp,
message,
relationId,
@@ -3732,7 +3717,7 @@ public class RelationService extends Not
//
// Shall not throw RelationTypeNotFoundException or
// RoleInfoNotFoundException
- RoleInfo currRoleInfo = null;
+ RoleInfo currRoleInfo;
try {
currRoleInfo = getRoleInfo(currRelTypeName,
currRoleName);
--- a/src/share/classes/javax/management/relation/RelationSupport.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/javax/management/relation/RelationSupport.java Tue May 27 17:18:01 2008 -0700
@@ -34,6 +34,7 @@ import java.util.Map;
import java.util.Map;
import java.util.List;
+import java.util.concurrent.atomic.AtomicBoolean;
import static com.sun.jmx.defaults.JmxProperties.RELATION_LOGGER;
import static com.sun.jmx.mbeanserver.Util.cast;
import javax.management.InstanceNotFoundException;
@@ -110,7 +111,7 @@ public class RelationSupport
private Map<String,Role> myRoleName2ValueMap = new HashMap<String,Role>();
// Flag to indicate if the object has been added in the Relation Service
- private Boolean myInRelServFlg = null;
+ private final AtomicBoolean myInRelServFlg = new AtomicBoolean();
//
// Constructors
@@ -403,7 +404,7 @@ public class RelationSupport
"getRoleCardinality", roleName);
// Try to retrieve the role
- Role role = null;
+ Role role;
synchronized(myRoleName2ValueMap) {
// No null Role is allowed, so direct use of get()
role = (myRoleName2ValueMap.get(roleName));
@@ -427,7 +428,7 @@ public class RelationSupport
RELATION_LOGGER.exiting(RelationSupport.class.getName(),
"getRoleCardinality");
- return new Integer(roleValue.size());
+ return roleValue.size();
}
/**
@@ -701,11 +702,7 @@ public class RelationSupport
* the Relation Service.
*/
public Boolean isInRelationService() {
- Boolean result = null;
- synchronized(myInRelServFlg) {
- result = Boolean.valueOf(myInRelServFlg.booleanValue());
- }
- return result;
+ return myInRelServFlg.get();
}
public void setRelationServiceManagementFlag(Boolean flag)
@@ -715,10 +712,7 @@ public class RelationSupport
String excMsg = "Invalid parameter.";
throw new IllegalArgumentException(excMsg);
}
- synchronized(myInRelServFlg) {
- myInRelServFlg = Boolean.valueOf(flag.booleanValue());
- }
- return;
+ myInRelServFlg.set(flag);
}
//
@@ -790,7 +784,7 @@ public class RelationSupport
int pbType = 0;
- Role role = null;
+ Role role;
synchronized(myRoleName2ValueMap) {
// No null Role is allowed, so direct use of get()
role = (myRoleName2ValueMap.get(roleName));
@@ -801,7 +795,7 @@ public class RelationSupport
} else {
// Checks if the role is readable
- Integer status = null;
+ Integer status;
if (relationServCallFlg) {
@@ -851,7 +845,7 @@ public class RelationSupport
pbType = status.intValue();
}
- Object result = null;
+ Object result;
if (pbType == 0) {
// Role can be retrieved
@@ -937,7 +931,7 @@ public class RelationSupport
for (int i = 0; i < roleNameArray.length; i++) {
String currRoleName = roleNameArray[i];
- Object currResult = null;
+ Object currResult;
// Can throw RelationServiceNotRegisteredException
//
@@ -1102,13 +1096,13 @@ public class RelationSupport
// handle initialization of role when creating the relation
// (roles provided in the RoleList parameter are directly set but
// roles automatically initialized are set using setRole())
- Role role = null;
+ Role role;
synchronized(myRoleName2ValueMap) {
role = (myRoleName2ValueMap.get(roleName));
}
List<ObjectName> oldRoleValue;
- Boolean initFlg = null;
+ Boolean initFlg;
if (role == null) {
initFlg = true;
@@ -1122,7 +1116,7 @@ public class RelationSupport
// Checks if the role can be set: is writable (except if
// initialization) and correct value
try {
- Integer status = null;
+ Integer status;
if (relationServCallFlg) {
@@ -1314,7 +1308,7 @@ public class RelationSupport
Object[] params = new Object[3];
params[0] = myRelId;
params[1] = newRole;
- params[2] = ((ArrayList)oldRoleValue);
+ params[2] = oldRoleValue;
String[] signature = new String[3];
signature[0] = "java.lang.String";
signature[1] = "javax.management.relation.Role";
@@ -1598,7 +1592,6 @@ public class RelationSupport
myRelTypeName = relationTypeName;
// Can throw InvalidRoleValueException
initRoleMap(list);
- myInRelServFlg = Boolean.FALSE;
RELATION_LOGGER.exiting(RelationSupport.class.getName(), "initMembers");
return;
@@ -1710,7 +1703,7 @@ public class RelationSupport
roleName, relationServCallFlg, relationServ});
// Retrieves current role value
- Role role = null;
+ Role role;
synchronized(myRoleName2ValueMap) {
role = (myRoleName2ValueMap.get(roleName));
}
--- a/src/share/classes/javax/management/remote/JMXConnectorFactory.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/javax/management/remote/JMXConnectorFactory.java Tue May 27 17:18:01 2008 -0700
@@ -435,7 +435,7 @@ public class JMXConnectorFactory {
Iterator<JMXConnectorProvider> providers =
getProviderIterator(JMXConnectorProvider.class, loader);
- JMXConnector connection = null;
+ JMXConnector connection;
IOException exception = null;
while(providers.hasNext()) {
try {
@@ -450,7 +450,7 @@ public class JMXConnectorFactory {
"] Service provider exception: " + e);
if (!(e instanceof MalformedURLException)) {
if (exception == null) {
- if (exception instanceof IOException) {
+ if (e instanceof IOException) {
exception = (IOException) e;
} else {
exception = EnvHelp.initCause(
--- a/src/share/classes/javax/management/remote/JMXConnectorServerFactory.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/javax/management/remote/JMXConnectorServerFactory.java Tue May 27 17:18:01 2008 -0700
@@ -215,12 +215,10 @@ public class JMXConnectorServerFactory {
JMXConnectorFactory.
getProviderIterator(JMXConnectorServerProvider.class, loader);
- JMXConnectorServer connection = null;
IOException exception = null;
while (providers.hasNext()) {
try {
- connection = providers.next().newJMXConnectorServer(url, map, mbs);
- return connection;
+ return providers.next().newJMXConnectorServer(url, map, mbs);
} catch (JMXProviderException e) {
throw e;
} catch (Exception e) {
@@ -230,7 +228,7 @@ public class JMXConnectorServerFactory {
"] Service provider exception: " + e);
if (!(e instanceof MalformedURLException)) {
if (exception == null) {
- if (exception instanceof IOException) {
+ if (e instanceof IOException) {
exception = (IOException) e;
} else {
exception = EnvHelp.initCause(
--- a/src/share/classes/javax/management/remote/JMXServiceURL.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/javax/management/remote/JMXServiceURL.java Tue May 27 17:18:01 2008 -0700
@@ -161,8 +161,6 @@ public class JMXServiceURL implements Se
throw new MalformedURLException("Service URL must start with " +
requiredPrefix);
}
-
- int[] ptr = new int[1];
// Parse the protocol name
final int protoStart = requiredPrefixLength;
@@ -664,11 +662,6 @@ public class JMXServiceURL implements Se
hostNameBitSet.set('.');
}
- private static void addCharsToBitSet(BitSet set, String chars) {
- for (int i = 0; i < chars.length(); i++)
- set.set(chars.charAt(i));
- }
-
/**
* The value returned by {@link #getProtocol()}.
*/
--- a/src/share/classes/javax/management/remote/rmi/RMIConnector.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/javax/management/remote/rmi/RMIConnector.java Tue May 27 17:18:01 2008 -0700
@@ -1376,12 +1376,12 @@ public class RMIConnector implements JMX
protected Integer addListenerForMBeanRemovedNotif()
throws IOException, InstanceNotFoundException {
- MarshalledObject<NotificationFilter> sFilter = null;
NotificationFilterSupport clientFilter =
new NotificationFilterSupport();
clientFilter.enableType(
MBeanServerNotification.UNREGISTRATION_NOTIFICATION);
- sFilter = new MarshalledObject<NotificationFilter>(clientFilter);
+ MarshalledObject<NotificationFilter> sFilter =
+ new MarshalledObject<NotificationFilter>(clientFilter);
Integer[] listenerIDs;
final ObjectName[] names =
@@ -1434,7 +1434,7 @@ public class RMIConnector implements JMX
connectionId,
clientNotifCounter++,
message,
- new Long(number));
+ Long.valueOf(number));
sendNotification(n);
}
}
@@ -1593,7 +1593,7 @@ public class RMIConnector implements JMX
protected void doStart() throws IOException {
// Get RMIServer stub from directory or URL encoding if needed.
- RMIServer stub = null;
+ RMIServer stub;
try {
stub = (rmiServer!=null)?rmiServer:
findRMIServer(jmxServiceURL, env);
@@ -2532,7 +2532,7 @@ public class RMIConnector implements JMX
* A static WeakReference to an {@link org.omg.CORBA.ORB ORB} to
* connect unconnected stubs.
**/
- private static WeakReference<ORB> orb = null;
+ private static volatile WeakReference<ORB> orb = null;
// TRACES & DEBUG
//---------------
--- a/src/share/classes/javax/management/remote/rmi/RMIConnectorServer.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/javax/management/remote/rmi/RMIConnectorServer.java Tue May 27 17:18:01 2008 -0700
@@ -365,7 +365,7 @@ public class RMIConnectorServer extends
// Access file property specified, create an instance
// of the MBeanServerFileAccessController class
//
- MBeanServerForwarder mbsf = null;
+ MBeanServerForwarder mbsf;
try {
mbsf = new MBeanServerFileAccessController(accessFile);
} catch (IOException e) {
--- a/src/share/classes/javax/management/timer/Timer.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/javax/management/timer/Timer.java Tue May 27 17:18:01 2008 -0700
@@ -344,13 +344,11 @@ public class Timer extends NotificationB
//
if (isActive == true) {
- TimerAlarmClock alarmClock;
-
for (Object[] obj : timerTable.values()) {
// Stop all the TimerAlarmClock.
//
- alarmClock = (TimerAlarmClock)obj[ALARM_CLOCK_INDEX];
+ TimerAlarmClock alarmClock = (TimerAlarmClock)obj[ALARM_CLOCK_INDEX];
if (alarmClock != null) {
// alarmClock.interrupt();
// try {
@@ -364,7 +362,6 @@ public class Timer extends NotificationB
// //
alarmClock.cancel();
- alarmClock = null;
}
}
@@ -458,8 +455,7 @@ public class Timer extends NotificationB
// Create and add the timer notification into the timer table.
//
- Integer notifID = null;
- notifID = new Integer(++counterID);
+ Integer notifID = Integer.valueOf(++counterID);
// The sequenceNumber and the timeStamp attributes are updated
// when the notification is emitted by the timer.
@@ -486,8 +482,8 @@ public class Timer extends NotificationB
obj[TIMER_NOTIF_INDEX] = (Object)notif;
obj[TIMER_DATE_INDEX] = (Object)d;
- obj[TIMER_PERIOD_INDEX] = (Object) new Long(period);
- obj[TIMER_NB_OCCUR_INDEX] = (Object) new Long(nbOccurences);
+ obj[TIMER_PERIOD_INDEX] = (Object) period;
+ obj[TIMER_NB_OCCUR_INDEX] = (Object) nbOccurences;
obj[ALARM_CLOCK_INDEX] = (Object)alarmClock;
obj[FIXED_RATE_INDEX] = Boolean.valueOf(fixedRate);
@@ -678,7 +674,6 @@ public class Timer extends NotificationB
// // Remove the reference on the TimerAlarmClock.
// //
alarmClock.cancel();
- alarmClock = null;
}
// Remove the timer notification from the timer table.
@@ -755,7 +750,6 @@ public class Timer extends NotificationB
//
// }
alarmClock.cancel();
- alarmClock = null;
}
// Remove all the timer notifications from the timer table.
@@ -906,8 +900,7 @@ public class Timer extends NotificationB
Object[] obj = timerTable.get(id);
if (obj != null) {
- Long period = (Long)obj[TIMER_PERIOD_INDEX];
- return (new Long(period.longValue()));
+ return (Long)obj[TIMER_PERIOD_INDEX];
}
return null;
}
@@ -924,8 +917,7 @@ public class Timer extends NotificationB
Object[] obj = timerTable.get(id);
if (obj != null) {
- Long nbOccurences = (Long)obj[TIMER_NB_OCCUR_INDEX];
- return (new Long(nbOccurences.longValue()));
+ return (Long)obj[TIMER_NB_OCCUR_INDEX];
}
return null;
}
@@ -1096,7 +1088,7 @@ public class Timer extends NotificationB
if ((nbOccurences.longValue() == 0) || (nbOccurences.longValue() > 1)) {
date.setTime(date.getTime() + period.longValue());
- obj[TIMER_NB_OCCUR_INDEX] = new Long(java.lang.Math.max(0L, (nbOccurences.longValue() - 1)));
+ obj[TIMER_NB_OCCUR_INDEX] = Long.valueOf(java.lang.Math.max(0L, (nbOccurences.longValue() - 1)));
nbOccurences = (Long)obj[TIMER_NB_OCCUR_INDEX];
if (isActive == true) {
@@ -1146,9 +1138,6 @@ public class Timer extends NotificationB
// // Ignore...
// }
alarmClock.cancel();
- // Remove the reference on the TimerAlarmClock.
- //
- alarmClock = null;
}
timerTable.remove(notifID);
}
@@ -1165,10 +1154,6 @@ public class Timer extends NotificationB
// }
alarmClock.cancel();
-
- // Remove the reference on the TimerAlarmClock.
- //
- alarmClock = null;
}
timerTable.remove(notifID);
}
--- a/src/share/classes/javax/net/ssl/SSLContext.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/javax/net/ssl/SSLContext.java Tue May 27 17:18:01 2008 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright 1999-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -134,6 +134,7 @@ public class SSLContext {
* @exception NoSuchAlgorithmException if no Provider supports a
* TrustManagerFactorySpi implementation for the
* specified protocol.
+ * @exception NullPointerException if protocol is null.
*
* @see java.security.Provider
*/
@@ -175,6 +176,7 @@ public class SSLContext {
* registered in the security provider list.
*
* @throws IllegalArgumentException if the provider name is null or empty.
+ * @throws NullPointerException if protocol is null.
*
* @see java.security.Provider
*/
@@ -210,6 +212,7 @@ public class SSLContext {
* from the specified Provider object.
*
* @throws IllegalArgumentException if the provider name is null.
+ * @throws NullPointerException if protocol is null.
*
* @see java.security.Provider
*/
--- a/src/share/classes/javax/net/ssl/SSLSocket.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/javax/net/ssl/SSLSocket.java Tue May 27 17:18:01 2008 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -212,8 +212,10 @@ public abstract class SSLSocket extends
* @param host name of the host with which to connect, or
* <code>null</code> for the loopback address.
* @param port number of the server's port
- * @param clientAddress the client's host
- * @param clientPort number of the client's port
+ * @param clientAddress the client's address the socket is bound to, or
+ * <code>null</code> for the <code>anyLocal</code> address.
+ * @param clientPort the client's port the socket is bound to, or
+ * <code>zero</code> for a system selected free port.
* @throws IOException if an I/O error occurs when creating the socket
* @throws SecurityException if a security manager exists and its
* <code>checkConnect</code> method doesn't allow the operation.
@@ -241,8 +243,10 @@ public abstract class SSLSocket extends
*
* @param address the server's host
* @param port its port
- * @param clientAddress the client's host
- * @param clientPort number of the client's port
+ * @param clientAddress the client's address the socket is bound to, or
+ * <code>null</code> for the <code>anyLocal</code> address.
+ * @param clientPort the client's port the socket is bound to, or
+ * <code>zero</code> for a system selected free port.
* @throws IOException if an I/O error occurs when creating the socket
* @throws SecurityException if a security manager exists and its
* <code>checkConnect</code> method doesn't allow the operation.
--- a/src/share/classes/javax/net/ssl/TrustManagerFactory.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/javax/net/ssl/TrustManagerFactory.java Tue May 27 17:18:01 2008 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright 1999-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -129,6 +129,7 @@ public class TrustManagerFactory {
* @exception NoSuchAlgorithmException if no Provider supports a
* TrustManagerFactorySpi implementation for the
* specified algorithm.
+ * @exception NullPointerException if algorithm is null.
*
* @see java.security.Provider
*/
@@ -171,6 +172,7 @@ public class TrustManagerFactory {
* registered in the security provider list.
*
* @throws IllegalArgumentException if the provider name is null or empty.
+ * @throws NullPointerException if algorithm is null.
*
* @see java.security.Provider
*/
@@ -208,6 +210,7 @@ public class TrustManagerFactory {
* from the specified Provider object.
*
* @throws IllegalArgumentException if the provider is null.
+ * @throws NullPointerException if algorithm is null.
*
* @see java.security.Provider
*/
@@ -274,6 +277,8 @@ public class TrustManagerFactory {
/**
* Returns one trust manager for each type of trust material.
*
+ * @throws IllegalStateException if the factory is not initialized.
+ *
* @return the trust managers
*/
public final TrustManager[] getTrustManagers() {
--- a/src/share/classes/javax/net/ssl/TrustManagerFactorySpi.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/javax/net/ssl/TrustManagerFactorySpi.java Tue May 27 17:18:01 2008 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright 1999-2001 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -74,6 +74,8 @@ public abstract class TrustManagerFactor
/**
* Returns one trust manager for each type of trust material.
*
+ * @throws IllegalStateException if the factory is not initialized.
+ *
* @return the trust managers
*/
protected abstract TrustManager[] engineGetTrustManagers();
--- a/src/share/classes/javax/security/auth/kerberos/KerberosTicket.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/javax/security/auth/kerberos/KerberosTicket.java Tue May 27 17:18:01 2008 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -253,7 +253,24 @@ public class KerberosTicket implements D
Date endTime,
Date renewTill,
InetAddress[] clientAddresses) {
-
+ if (sessionKey == null)
+ throw new IllegalArgumentException("Session key for ticket"
+ + " cannot be null");
+ init(asn1Encoding, client, server,
+ new KeyImpl(sessionKey, keyType), flags, authTime,
+ startTime, endTime, renewTill, clientAddresses);
+ }
+
+ private void init(byte[] asn1Encoding,
+ KerberosPrincipal client,
+ KerberosPrincipal server,
+ KeyImpl sessionKey,
+ boolean[] flags,
+ Date authTime,
+ Date startTime,
+ Date endTime,
+ Date renewTill,
+ InetAddress[] clientAddresses) {
if (asn1Encoding == null)
throw new IllegalArgumentException("ASN.1 encoding of ticket"
+ " cannot be null");
@@ -269,10 +286,8 @@ public class KerberosTicket implements D
+ " cannot be null");
this.server = server;
- if (sessionKey == null)
- throw new IllegalArgumentException("Session key for ticket"
- + " cannot be null");
- this.sessionKey = new KeyImpl(sessionKey, keyType);
+ // Caller needs to make sure `sessionKey` will not be null
+ this.sessionKey = sessionKey;
if (flags != null) {
if (flags.length >= NUM_FLAGS)
@@ -291,17 +306,22 @@ public class KerberosTicket implements D
throw new IllegalArgumentException("The renewable period "
+ "end time cannot be null for renewable tickets.");
- this.renewTill = renewTill;
- }
-
- this.authTime = authTime;
-
- this.startTime = (startTime != null? startTime: authTime);
+ this.renewTill = new Date(renewTill.getTime());
+ }
+
+ if (authTime != null) {
+ this.authTime = new Date(authTime.getTime());
+ }
+ if (startTime != null) {
+ this.startTime = new Date(startTime.getTime());
+ } else {
+ this.startTime = this.authTime;
+ }
if (endTime == null)
throw new IllegalArgumentException("End time for ticket validity"
+ " cannot be null");
- this.endTime = endTime;
+ this.endTime = new Date(endTime.getTime());
if (clientAddresses != null)
this.clientAddresses = clientAddresses.clone();
@@ -440,7 +460,7 @@ public class KerberosTicket implements D
* or null if not set.
*/
public final java.util.Date getAuthTime() {
- return (authTime == null) ? null : new Date(authTime.getTime());
+ return (authTime == null) ? null : (Date)authTime.clone();
}
/**
@@ -450,7 +470,7 @@ public class KerberosTicket implements D
* or null if not set.
*/
public final java.util.Date getStartTime() {
- return (startTime == null) ? null : new Date(startTime.getTime());
+ return (startTime == null) ? null : (Date)startTime.clone();
}
/**
@@ -459,7 +479,7 @@ public class KerberosTicket implements D
* @return the expiration time for this ticket's validity period.
*/
public final java.util.Date getEndTime() {
- return endTime;
+ return (Date) endTime.clone();
}
/**
@@ -469,7 +489,7 @@ public class KerberosTicket implements D
* @return the latest expiration time for this ticket.
*/
public final java.util.Date getRenewTill() {
- return (renewTill == null) ? null: new Date(renewTill.getTime());
+ return (renewTill == null) ? null: (Date)renewTill.clone();
}
/**
@@ -745,4 +765,20 @@ public class KerberosTicket implements D
return true;
}
+
+ private void readObject(ObjectInputStream s)
+ throws IOException, ClassNotFoundException {
+ s.defaultReadObject();
+ if (sessionKey == null) {
+ throw new InvalidObjectException("Session key cannot be null");
+ }
+ try {
+ init(asn1Encoding, client, server, sessionKey,
+ flags, authTime, startTime, endTime,
+ renewTill, clientAddresses);
+ } catch (IllegalArgumentException iae) {
+ throw (InvalidObjectException)
+ new InvalidObjectException(iae.getMessage()).initCause(iae);
+ }
+ }
}
--- a/src/share/classes/sun/misc/URLClassPath.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/sun/misc/URLClassPath.java Tue May 27 17:18:01 2008 -0700
@@ -961,6 +961,7 @@ public class URLClassPath {
* from a file URL that refers to a directory.
*/
private static class FileLoader extends Loader {
+ /* Canonicalized File */
private File dir;
FileLoader(URL url) throws IOException {
@@ -970,7 +971,7 @@ public class URLClassPath {
}
String path = url.getFile().replace('/', File.separatorChar);
path = ParseUtil.decode(path);
- dir = new File(path);
+ dir = (new File(path)).getCanonicalFile();
}
/*
@@ -997,8 +998,19 @@ public class URLClassPath {
if (check)
URLClassPath.check(url);
- final File file =
- new File(dir, name.replace('/', File.separatorChar));
+
+ final File file;
+ if (name.indexOf("..") != -1) {
+ file = (new File(dir, name.replace('/', File.separatorChar)))
+ .getCanonicalFile();
+ if ( !((file.getPath()).startsWith(dir.getPath())) ) {
+ /* outside of base dir */
+ return null;
+ }
+ } else {
+ file = new File(dir, name.replace('/', File.separatorChar));
+ }
+
if (file.exists()) {
return new Resource() {
public String getName() { return name; };
--- a/src/share/classes/sun/net/www/protocol/http/DigestAuthentication.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/sun/net/www/protocol/http/DigestAuthentication.java Tue May 27 17:18:01 2008 -0700
@@ -36,6 +36,7 @@ import sun.net.www.HeaderParser;
import sun.net.www.HeaderParser;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
+import static sun.net.www.protocol.http.HttpURLConnection.HTTP_CONNECT;
/**
@@ -210,10 +211,38 @@ class DigestAuthentication extends Authe
/**
* Reclaculates the request-digest and returns it.
+ *
+ * <P> Used in the common case where the requestURI is simply the
+ * abs_path.
+ *
+ * @param url
+ * the URL
+ *
+ * @param method
+ * the HTTP method
+ *
* @return the value of the HTTP header this authentication wants set
*/
String getHeaderValue(URL url, String method) {
- return getHeaderValueImpl (url.getFile(), method);
+ return getHeaderValueImpl(url.getFile(), method);
+ }
+
+ /**
+ * Reclaculates the request-digest and returns it.
+ *
+ * <P> Used when the requestURI is not the abs_path. The exact
+ * requestURI can be passed as a String.
+ *
+ * @param requestURI
+ * the Request-URI from the HTTP request line
+ *
+ * @param method
+ * the HTTP method
+ *
+ * @return the value of the HTTP header this authentication wants set
+ */
+ String getHeaderValue(String requestURI, String method) {
+ return getHeaderValueImpl(requestURI, method);
}
/**
@@ -249,7 +278,16 @@ class DigestAuthentication extends Authe
params.setOpaque (p.findValue("opaque"));
params.setQop (p.findValue("qop"));
- String uri = conn.getURL().getFile();
+ String uri;
+ String method;
+ if (type == PROXY_AUTHENTICATION &&
+ conn.tunnelState() == HttpURLConnection.TunnelState.SETUP) {
+ uri = HttpURLConnection.connectRequestURI(conn.getURL());
+ method = HTTP_CONNECT;
+ } else {
+ uri = conn.getURL().getFile();
+ method = conn.getMethod();
+ }
if (params.nonce == null || authMethod == null || pw == null || realm == null) {
return false;
@@ -275,7 +313,7 @@ class DigestAuthentication extends Authe
params.setNewCnonce();
}
- String value = getHeaderValueImpl (uri, conn.getMethod());
+ String value = getHeaderValueImpl (uri, method);
if (value != null) {
conn.setAuthenticationProperty(getHeaderName(), value);
return true;
--- a/src/share/classes/sun/net/www/protocol/http/HttpURLConnection.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/sun/net/www/protocol/http/HttpURLConnection.java Tue May 27 17:18:01 2008 -0700
@@ -75,6 +75,8 @@ public class HttpURLConnection extends j
private static Logger logger = Logger.getLogger("sun.net.www.protocol.http.HttpURLConnection");
+ static String HTTP_CONNECT = "CONNECT";
+
static final String version;
public static final String userAgent;
@@ -266,6 +268,20 @@ public class HttpURLConnection extends j
/* If we decide we want to reuse a client, we put it here */
private HttpClient reuseClient = null;
+ /* Tunnel states */
+ enum TunnelState {
+ /* No tunnel */
+ NONE,
+
+ /* Setting up a tunnel */
+ SETUP,
+
+ /* Tunnel has been successfully setup */
+ TUNNELING
+ }
+
+ private TunnelState tunnelState = TunnelState.NONE;
+
/* Redefine timeouts from java.net.URLConnection as we nee -1 to mean
* not set. This is to ensure backward compatibility.
*/
@@ -338,7 +354,7 @@ public class HttpURLConnection extends j
* others that have been set
*/
// send any pre-emptive authentication
- if (http.usingProxy) {
+ if (http.usingProxy && tunnelState() != TunnelState.TUNNELING) {
setPreemptiveProxyAuthentication(requests);
}
if (!setRequests) {
@@ -1404,11 +1420,17 @@ public class HttpURLConnection extends j
String raw = auth.raw();
if (proxyAuthentication.isAuthorizationStale (raw)) {
/* we can retry with the current credentials */
- requests.set (proxyAuthentication.getHeaderName(),
- proxyAuthentication.getHeaderValue(
- url, method));
+ String value;
+ if (tunnelState() == TunnelState.SETUP &&
+ proxyAuthentication instanceof DigestAuthentication) {
+ value = ((DigestAuthentication)proxyAuthentication)
+ .getHeaderValue(connectRequestURI(url), HTTP_CONNECT);
+ } else {
+ value = proxyAuthentication.getHeaderValue(url, method);
+ }
+ requests.set(proxyAuthentication.getHeaderName(), value);
currentProxyCredentials = proxyAuthentication;
- return proxyAuthentication;
+ return proxyAuthentication;
} else {
proxyAuthentication.removeFromCache();
}
@@ -1416,6 +1438,24 @@ public class HttpURLConnection extends j
proxyAuthentication = getHttpProxyAuthentication(auth);
currentProxyCredentials = proxyAuthentication;
return proxyAuthentication;
+ }
+
+ /**
+ * Returns the tunnel state.
+ *
+ * @return the state
+ */
+ TunnelState tunnelState() {
+ return tunnelState;
+ }
+
+ /**
+ * Set the tunneling status.
+ *
+ * @param the state
+ */
+ void setTunnelState(TunnelState tunnelState) {
+ this.tunnelState = tunnelState;
}
/**
@@ -1437,6 +1477,9 @@ public class HttpURLConnection extends j
boolean inNegotiateProxy = false;
try {
+ /* Actively setting up a tunnel */
+ setTunnelState(TunnelState.SETUP);
+
do {
if (!checkReuseConnection()) {
proxiedConnect(url, proxyHost, proxyPort, false);
@@ -1449,6 +1492,9 @@ public class HttpURLConnection extends j
// There is no need to track progress in HTTP Tunneling,
// so ProgressSource is null.
http.parseHTTP(responses, null, this);
+
+ /* Log the response to the CONNECT */
+ logger.fine(responses.toString());
statusLine = responses.getValue(0);
StringTokenizer st = new StringTokenizer(statusLine);
@@ -1509,11 +1555,13 @@ public class HttpURLConnection extends j
}
if (respCode == HTTP_OK) {
+ setTunnelState(TunnelState.TUNNELING);
break;
}
// we don't know how to deal with other response code
// so disconnect and report error
disconnectInternal();
+ setTunnelState(TunnelState.NONE);
break;
} while (retryTunnel < maxRedirects);
@@ -1533,6 +1581,14 @@ public class HttpURLConnection extends j
// reset responses
responses.reset();
+ }
+
+ static String connectRequestURI(URL url) {
+ String host = url.getHost();
+ int port = url.getPort();
+ port = port != -1 ? port : url.getDefaultPort();
+
+ return host + ":" + port;
}
/**
@@ -1548,8 +1604,7 @@ public class HttpURLConnection extends j
// otherwise, there may have 2 http methods in headers
if (setRequests) requests.set(0, null, null);
- requests.prepend("CONNECT " + url.getHost() + ":"
- + (port != -1 ? port : url.getDefaultPort())
+ requests.prepend(HTTP_CONNECT + " " + connectRequestURI(url)
+ " " + httpVersion, null);
requests.setIfNotSet("User-Agent", userAgent);
@@ -1563,6 +1618,10 @@ public class HttpURLConnection extends j
requests.setIfNotSet("Accept", acceptString);
setPreemptiveProxyAuthentication(requests);
+
+ /* Log the CONNECT request */
+ logger.fine(requests.toString());
+
http.writeRequests(requests, null);
// remove CONNECT header
requests.set(0, null, null);
@@ -1576,9 +1635,17 @@ public class HttpURLConnection extends j
= AuthenticationInfo.getProxyAuth(http.getProxyHostUsed(),
http.getProxyPortUsed());
if (pauth != null && pauth.supportsPreemptiveAuthorization()) {
+ String value;
+ if (tunnelState() == TunnelState.SETUP &&
+ pauth instanceof DigestAuthentication) {
+ value = ((DigestAuthentication)pauth)
+ .getHeaderValue(connectRequestURI(url), HTTP_CONNECT);
+ } else {
+ value = pauth.getHeaderValue(url, method);
+ }
+
// Sets "Proxy-authorization"
- requests.set(pauth.getHeaderName(),
- pauth.getHeaderValue(url,method));
+ requests.set(pauth.getHeaderName(), value);
currentProxyCredentials = pauth;
}
}
--- a/src/share/classes/sun/net/www/protocol/http/InMemoryCookieStore.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/sun/net/www/protocol/http/InMemoryCookieStore.java Tue May 27 17:18:01 2008 -0700
@@ -35,7 +35,6 @@ import java.util.HashMap;
import java.util.HashMap;
import java.util.Collections;
import java.util.Iterator;
-import java.util.Comparator;
import java.util.concurrent.locks.ReentrantLock;
/**
@@ -89,7 +88,9 @@ public class InMemoryCookieStore impleme
if (cookie.getMaxAge() != 0) {
cookieJar.add(cookie);
// and add it to domain index
- addIndex(domainIndex, cookie.getDomain(), cookie);
+ if (cookie.getDomain() != null) {
+ addIndex(domainIndex, cookie.getDomain(), cookie);
+ }
// add it to uri index, too
addIndex(uriIndex, getEffectiveURI(uri), cookie);
}
@@ -113,12 +114,13 @@ public class InMemoryCookieStore impleme
}
List<HttpCookie> cookies = new ArrayList<HttpCookie>();
+ boolean secureLink = "https".equalsIgnoreCase(uri.getScheme());
lock.lock();
try {
// check domainIndex first
- getInternal(cookies, domainIndex, new DomainComparator(uri.getHost()));
+ getInternal1(cookies, domainIndex, uri.getHost(), secureLink);
// check uriIndex then
- getInternal(cookies, uriIndex, getEffectiveURI(uri));
+ getInternal2(cookies, uriIndex, getEffectiveURI(uri), secureLink);
} finally {
lock.unlock();
}
@@ -217,19 +219,96 @@ public class InMemoryCookieStore impleme
/* ---------------- Private operations -------------- */
- static class DomainComparator implements Comparable<String> {
- String host = null;
-
- public DomainComparator(String host) {
- this.host = host;
- }
-
- public int compareTo(String domain) {
- if (HttpCookie.domainMatches(domain, host)) {
- return 0;
- } else {
- return -1;
- }
+ /*
+ * This is almost the same as HttpCookie.domainMatches except for
+ * one difference: It won't reject cookies when the 'H' part of the
+ * domain contains a dot ('.').
+ * I.E.: RFC 2965 section 3.3.2 says that if host is x.y.domain.com
+ * and the cookie domain is .domain.com, then it should be rejected.
+ * However that's not how the real world works. Browsers don't reject and
+ * some sites, like yahoo.com do actually expect these cookies to be
+ * passed along.
+ * And should be used for 'old' style cookies (aka Netscape type of cookies)
+ */
+ private boolean netscapeDomainMatches(String domain, String host)
+ {
+ if (domain == null || host == null) {
+ return false;
+ }
+
+ // if there's no embedded dot in domain and domain is not .local
+ boolean isLocalDomain = ".local".equalsIgnoreCase(domain);
+ int embeddedDotInDomain = domain.indexOf('.');
+ if (embeddedDotInDomain == 0) {
+ embeddedDotInDomain = domain.indexOf('.', 1);
+ }
+ if (!isLocalDomain && (embeddedDotInDomain == -1 || embeddedDotInDomain == domain.length() - 1)) {
+ return false;
+ }
+
+ // if the host name contains no dot and the domain name is .local
+ int firstDotInHost = host.indexOf('.');
+ if (firstDotInHost == -1 && isLocalDomain) {
+ return true;
+ }
+
+ int domainLength = domain.length();
+ int lengthDiff = host.length() - domainLength;
+ if (lengthDiff == 0) {
+ // if the host name and the domain name are just string-compare euqal
+ return host.equalsIgnoreCase(domain);
+ } else if (lengthDiff > 0) {
+ // need to check H & D component
+ String H = host.substring(0, lengthDiff);
+ String D = host.substring(lengthDiff);
+
+ return (D.equalsIgnoreCase(domain));
+ } else if (lengthDiff == -1) {
+ // if domain is actually .host
+ return (domain.charAt(0) == '.' &&
+ host.equalsIgnoreCase(domain.substring(1)));
+ }
+
+ return false;
+ }
+
+ private void getInternal1(List<HttpCookie> cookies, Map<String, List<HttpCookie>> cookieIndex,
+ String host, boolean secureLink) {
+ // Use a separate list to handle cookies that need to be removed so
+ // that there is no conflict with iterators.
+ ArrayList<HttpCookie> toRemove = new ArrayList<HttpCookie>();
+ for (Map.Entry<String, List<HttpCookie>> entry : cookieIndex.entrySet()) {
+ String domain = entry.getKey();
+ List<HttpCookie> lst = entry.getValue();
+ for (HttpCookie c : lst) {
+ if ((c.getVersion() == 0 && netscapeDomainMatches(domain, host)) ||
+ (c.getVersion() == 1 && HttpCookie.domainMatches(domain, host))) {
+ if ((cookieJar.indexOf(c) != -1)) {
+ // the cookie still in main cookie store
+ if (!c.hasExpired()) {
+ // don't add twice and make sure it's the proper
+ // security level
+ if ((secureLink || !c.getSecure()) &&
+ !cookies.contains(c)) {
+ cookies.add(c);
+ }
+ } else {
+ toRemove.add(c);
+ }
+ } else {
+ // the cookie has beed removed from main store,
+ // so also remove it from domain indexed store
+ toRemove.add(c);
+ }
+ }
+ }
+ // Clear up the cookies that need to be removed
+ for (HttpCookie c : toRemove) {
+ lst.remove(c);
+ cookieJar.remove(c);
+
+ }
+ toRemove.clear();
}
}
@@ -237,9 +316,9 @@ public class InMemoryCookieStore impleme
// @param cookieIndex the index
// @param comparator the prediction to decide whether or not
// a cookie in index should be returned
- private <T> void getInternal(List<HttpCookie> cookies,
+ private <T> void getInternal2(List<HttpCookie> cookies,
Map<T, List<HttpCookie>> cookieIndex,
- Comparable<T> comparator)
+ Comparable<T> comparator, boolean secureLink)
{
for (T index : cookieIndex.keySet()) {
if (comparator.compareTo(index) == 0) {
@@ -253,7 +332,8 @@ public class InMemoryCookieStore impleme
// the cookie still in main cookie store
if (!ck.hasExpired()) {
// don't add twice
- if (!cookies.contains(ck))
+ if ((secureLink || !ck.getSecure()) &&
+ !cookies.contains(ck))
cookies.add(ck);
} else {
it.remove();
@@ -292,14 +372,14 @@ public class InMemoryCookieStore impleme
//
- // for cookie purpose, the effective uri should only be scheme://authority
+ // for cookie purpose, the effective uri should only be http://host
// the path will be taken into account when path-match algorithm applied
//
private URI getEffectiveURI(URI uri) {
URI effectiveURI = null;
try {
- effectiveURI = new URI(uri.getScheme(),
- uri.getAuthority(),
+ effectiveURI = new URI("http",
+ uri.getHost(),
null, // path component
null, // query component
null // fragment component
--- a/src/share/classes/sun/nio/cs/UTF_8.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/sun/nio/cs/UTF_8.java Tue May 27 17:18:01 2008 -0700
@@ -326,7 +326,7 @@ class UTF_8 extends Unicode
case 12: case 13:
// 6 bytes, 31 bits
- if (src.remaining() < 4)
+ if (src.remaining() < 5)
return CoderResult.UNDERFLOW;
if (!isContinuation(b2 = src.get()))
return CoderResult.malformedForLength(1);
--- a/src/share/classes/sun/security/pkcs11/SunPKCS11.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/sun/security/pkcs11/SunPKCS11.java Tue May 27 17:18:01 2008 -0700
@@ -720,9 +720,13 @@ public final class SunPKCS11 extends Aut
}
private boolean hasValidToken() {
+ /* Commented out to work with Solaris softtoken impl which
+ returns 0-value flags, e.g. both REMOVABLE_DEVICE and
+ TOKEN_PRESENT are false, when it can't access the token.
if (removable == false) {
return true;
}
+ */
Token token = this.token;
return (token != null) && token.isValid();
}
@@ -752,7 +756,7 @@ public final class SunPKCS11 extends Aut
if (slotInfo == null) {
slotInfo = p11.C_GetSlotInfo(slotID);
}
- if ((slotInfo.flags & CKF_TOKEN_PRESENT) == 0) {
+ if (removable && (slotInfo.flags & CKF_TOKEN_PRESENT) == 0) {
createPoller();
return;
}
--- a/src/share/classes/sun/tracing/MultiplexProviderFactory.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/sun/tracing/MultiplexProviderFactory.java Tue May 27 17:18:01 2008 -0700
@@ -1,6 +1,26 @@
/*
- * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
*/
package sun.tracing;
--- a/src/share/classes/sun/tracing/NullProviderFactory.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/sun/tracing/NullProviderFactory.java Tue May 27 17:18:01 2008 -0700
@@ -1,6 +1,26 @@
/*
- * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
*/
package sun.tracing;
--- a/src/share/classes/sun/tracing/PrintStreamProviderFactory.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/sun/tracing/PrintStreamProviderFactory.java Tue May 27 17:18:01 2008 -0700
@@ -1,6 +1,26 @@
/*
- * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
*/
package sun.tracing;
--- a/src/share/classes/sun/tracing/ProbeSkeleton.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/sun/tracing/ProbeSkeleton.java Tue May 27 17:18:01 2008 -0700
@@ -1,6 +1,26 @@
/*
- * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
*/
package sun.tracing;
--- a/src/share/classes/sun/tracing/ProviderSkeleton.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/sun/tracing/ProviderSkeleton.java Tue May 27 17:18:01 2008 -0700
@@ -1,6 +1,26 @@
/*
- * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
*/
package sun.tracing;
--- a/src/share/classes/sun/tracing/dtrace/Activation.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/sun/tracing/dtrace/Activation.java Tue May 27 17:18:01 2008 -0700
@@ -1,6 +1,26 @@
/*
- * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
*/
package sun.tracing.dtrace;
--- a/src/share/classes/sun/tracing/dtrace/DTraceProbe.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/sun/tracing/dtrace/DTraceProbe.java Tue May 27 17:18:01 2008 -0700
@@ -1,6 +1,26 @@
/*
- * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
*/
package sun.tracing.dtrace;
--- a/src/share/classes/sun/tracing/dtrace/DTraceProvider.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/sun/tracing/dtrace/DTraceProvider.java Tue May 27 17:18:01 2008 -0700
@@ -1,6 +1,26 @@
/*
- * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
*/
package sun.tracing.dtrace;
--- a/src/share/classes/sun/tracing/dtrace/DTraceProviderFactory.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/sun/tracing/dtrace/DTraceProviderFactory.java Tue May 27 17:18:01 2008 -0700
@@ -1,6 +1,26 @@
/*
- * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
*/
package sun.tracing.dtrace;
--- a/src/share/classes/sun/tracing/dtrace/JVM.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/sun/tracing/dtrace/JVM.java Tue May 27 17:18:01 2008 -0700
@@ -1,6 +1,26 @@
/*
- * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
*/
package sun.tracing.dtrace;
--- a/src/share/classes/sun/tracing/package-info.java Thu May 15 13:04:31 2008 -0700
+++ b/src/share/classes/sun/tracing/package-info.java Tue May 27 17:18:01 2008 -0700
@@ -1,6 +1,26 @@
/*
- * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
*/
/**
--- a/src/share/native/java/net/net_util.c Thu May 15 13:04:31 2008 -0700
+++ b/src/share/native/java/net/net_util.c Tue May 27 17:18:01 2008 -0700
@@ -112,6 +112,7 @@ NET_SockaddrToInetAddress(JNIEnv *env, s
(*env)->SetIntField(env, iaObj, ia_familyID, IPv4);
} else {
static jclass inet6Cls = 0;
+ jint scope;
if (inet6Cls == 0) {
jclass c = (*env)->FindClass(env, "java/net/Inet6Address");
CHECK_NULL_RETURN(c, NULL);
@@ -129,7 +130,10 @@ NET_SockaddrToInetAddress(JNIEnv *env, s
(*env)->SetObjectField(env, iaObj, ia6_ipaddressID, ipaddress);
(*env)->SetIntField(env, iaObj, ia_familyID, IPv6);
- (*env)->SetIntField(env, iaObj, ia6_scopeidID, getScopeID(him));
+ scope = getScopeID(him);
+ (*env)->SetIntField(env, iaObj, ia6_scopeidID, scope);
+ if (scope > 0)
+ (*env)->SetBooleanField(env, iaObj, ia6_scopeidsetID, JNI_TRUE);
}
*port = ntohs(him6->sin6_port);
} else
--- a/src/share/native/sun/tracing/dtrace/JVM.c Thu May 15 13:04:31 2008 -0700
+++ b/src/share/native/sun/tracing/dtrace/JVM.c Tue May 27 17:18:01 2008 -0700
@@ -1,6 +1,26 @@
/*
- * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
*/
#include <stdlib.h>
--- a/src/share/native/sun/tracing/dtrace/jvm_symbols.h Thu May 15 13:04:31 2008 -0700
+++ b/src/share/native/sun/tracing/dtrace/jvm_symbols.h Tue May 27 17:18:01 2008 -0700
@@ -1,6 +1,26 @@
/*
- * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
*/
#ifndef _JVM_SYMBOLS_H
--- a/src/solaris/native/sun/tracing/dtrace/jvm_symbols_md.c Thu May 15 13:04:31 2008 -0700
+++ b/src/solaris/native/sun/tracing/dtrace/jvm_symbols_md.c Tue May 27 17:18:01 2008 -0700
@@ -1,6 +1,26 @@
/*
- * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
*/
#include <dlfcn.h>
--- a/src/windows/native/sun/tracing/dtrace/jvm_symbols_md.c Thu May 15 13:04:31 2008 -0700
+++ b/src/windows/native/sun/tracing/dtrace/jvm_symbols_md.c Tue May 27 17:18:01 2008 -0700
@@ -1,6 +1,26 @@
/*
- * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
*/
#include <windows.h>
--- a/test/java/util/Collection/MOAT.java Thu May 15 13:04:31 2008 -0700
+++ b/test/java/util/Collection/MOAT.java Tue May 27 17:18:01 2008 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright 2005-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -25,7 +25,7 @@
* @test
* @bug 6207984 6272521 6192552 6269713 6197726 6260652 5073546 4137464
* 4155650 4216399 4294891 6282555 6318622 6355327 6383475 6420753
- * 6431845 4802633 6570566 6570575 6570631 6570924
+ * 6431845 4802633 6570566 6570575 6570631 6570924 6691185 6691215
* @summary Run many tests on many Collection and Map implementations
* @author Martin Buchholz
*/
@@ -155,7 +155,7 @@ public class MOAT {
check(c.containsAll(new ArrayList<Integer>()));
}
- private static void testEmptyCollection(Collection<?> c) {
+ private static <T> void testEmptyCollection(Collection<T> c) {
check(c.isEmpty());
equal(c.size(), 0);
equal(c.toString(),"[]");
@@ -165,6 +165,23 @@ public class MOAT {
Object[] a = new Object[1]; a[0] = Boolean.TRUE;
equal(c.toArray(a), a);
equal(a[0], null);
+ testEmptyIterator(c.iterator());
+ }
+
+ static <T> void testEmptyIterator(final Iterator<T> it) {
+ if (rnd.nextBoolean())
+ check(! it.hasNext());
+
+ THROWS(NoSuchElementException.class,
+ new Fun(){void f(){ it.next(); }});
+
+ try { it.remove(); }
+ catch (IllegalStateException _) { pass(); }
+ catch (UnsupportedOperationException _) { pass(); }
+ catch (Throwable t) { unexpected(t); }
+
+ if (rnd.nextBoolean())
+ check(! it.hasNext());
}
private static void testEmptyList(List<?> c) {
@@ -173,10 +190,12 @@ public class MOAT {
equal2(c, Collections.<Integer>emptyList());
}
- private static void testEmptySet(Set<?> c) {
+ private static <T> void testEmptySet(Set<T> c) {
testEmptyCollection(c);
equal(c.hashCode(), 0);
equal2(c, Collections.<Integer>emptySet());
+ if (c instanceof NavigableSet<?>)
+ testEmptyIterator(((NavigableSet<T>)c).descendingIterator());
}
private static void testImmutableCollection(final Collection<Integer> c) {
@@ -221,13 +240,20 @@ public class MOAT {
testEmptyCollection(c);
}
- private static void testEmptyMap(final Map<?,?> m) {
+ private static <K,V> void testEmptyMap(final Map<K,V> m) {
check(m.isEmpty());
equal(m.size(), 0);
equal(m.toString(),"{}");
testEmptySet(m.keySet());
testEmptySet(m.entrySet());
testEmptyCollection(m.values());
+
+ try { check(! m.containsValue(null)); }
+ catch (NullPointerException _) { /* OK */ }
+ try { check(! m.containsKey(null)); }
+ catch (NullPointerException _) { /* OK */ }
+ check(! m.containsValue(1));
+ check(! m.containsKey(1));
}
private static void testImmutableMap(final Map<Integer,Integer> m) {
@@ -433,8 +459,18 @@ public class MOAT {
if (! supportsAdd(c)) return;
//System.out.println("add() supported");
- if (c instanceof NavigableSet)
- testNavigableSet((NavigableSet<Integer>)c);
+ if (c instanceof NavigableSet) {
+ System.out.println("NavigableSet tests...");
+
+ NavigableSet<Integer> ns = (NavigableSet<Integer>)c;
+ testNavigableSet(ns);
+ testNavigableSet(ns.headSet(6, false));
+ testNavigableSet(ns.headSet(5, true));
+ testNavigableSet(ns.tailSet(0, false));
+ testNavigableSet(ns.tailSet(1, true));
+ testNavigableSet(ns.subSet(0, false, 5, true));
+ testNavigableSet(ns.subSet(1, true, 6, false));
+ }
if (c instanceof Queue)
testQueue((Queue<Integer>)c);
@@ -514,8 +550,19 @@ public class MOAT {
if (m instanceof ConcurrentMap)
testConcurrentMap((ConcurrentMap<Integer,Integer>) m);
- if (m instanceof NavigableMap)
- testNavigableMap((NavigableMap<Integer,Integer>) m);
+ if (m instanceof NavigableMap) {
+ System.out.println("NavigableMap tests...");
+
+ NavigableMap<Integer,Integer> nm =
+ (NavigableMap<Integer,Integer>) m;
+ testNavigableMap(nm);
+ testNavigableMap(nm.headMap(6, false));
+ testNavigableMap(nm.headMap(5, true));
+ testNavigableMap(nm.tailMap(0, false));
+ testNavigableMap(nm.tailMap(1, true));
+ testNavigableMap(nm.subMap(1, true, 6, false));
+ testNavigableMap(nm.subMap(0, false, 5, true));
+ }
checkFunctionalInvariants(m);
@@ -697,8 +744,6 @@ public class MOAT {
private static void testNavigableMap(NavigableMap<Integer,Integer> m)
{
- System.out.println("NavigableMap tests...");
-
clear(m);
checkNavigableMapKeys(m, 1, null, null, null, null);
@@ -717,9 +762,11 @@ public class MOAT {
checkNavigableMapKeys(m, 5, 3, 5, 5, null);
checkNavigableMapKeys(m, 6, 5, 5, null, null);
- {
- final Iterator<Integer> it
- = m.descendingKeySet().iterator();
+ for (final Iterator<Integer> it :
+ (Iterator<Integer>[])
+ new Iterator<?>[] {
+ m.descendingKeySet().iterator(),
+ m.navigableKeySet().descendingIterator()}) {
equalNext(it, 5);
equalNext(it, 3);
equalNext(it, 1);
@@ -742,8 +789,6 @@ public class MOAT {
private static void testNavigableSet(NavigableSet<Integer> s) {
- System.out.println("NavigableSet tests...");
-
clear(s);
checkNavigableSetKeys(s, 1, null, null, null, null);
@@ -762,8 +807,11 @@ public class MOAT {
checkNavigableSetKeys(s, 5, 3, 5, 5, null);
checkNavigableSetKeys(s, 6, 5, 5, null, null);
- {
- final Iterator<Integer> it = s.descendingIterator();
+ for (final Iterator<Integer> it :
+ (Iterator<Integer>[])
+ new Iterator<?>[] {
+ s.descendingIterator(),
+ s.descendingSet().iterator()}) {
equalNext(it, 5);
equalNext(it, 3);
equalNext(it, 1);
--- a/test/java/util/NavigableMap/LockStep.java Thu May 15 13:04:31 2008 -0700
+++ b/test/java/util/NavigableMap/LockStep.java Tue May 27 17:18:01 2008 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright 2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2006-2008 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,7 +23,7 @@
/*
* @test
- * @bug 6420753 6242436
+ * @bug 6420753 6242436 6691185
* @summary Compare NavigableMap implementations for identical behavior
* @author Martin Buchholz
*/
@@ -159,6 +159,7 @@ public class LockStep {
Object[] a = new Object[1]; a[0] = Boolean.TRUE;
equal(c.toArray(a), a);
equal(a[0], null);
+ check(! c.iterator().hasNext());
}
static void testEmptySet(Set<?> c) {
@@ -262,6 +263,16 @@ public class LockStep {
}
}
+ static void equalIterators(final Iterator<?> it1,
+ final Iterator<?> it2) {
+ while (it1.hasNext()) {
+ if (maybe(2))
+ check(it2.hasNext());
+ equal(it1.next(), it2.next());
+ }
+ check(! it2.hasNext());
+ }
+
static void equalNavigableSetsLeaf(final NavigableSet s1,
final NavigableSet s2) {
equal2(s1, s2);
@@ -273,6 +284,8 @@ public class LockStep {
equal(s1.first(), s2.first());
equal(s1.last(), s2.last());
}
+ equalIterators(s1.iterator(), s2.iterator());
+ equalIterators(s1.descendingIterator(), s2.descendingIterator());
checkNavigableSet(s1);
checkNavigableSet(s2);
}
@@ -493,30 +506,23 @@ public class LockStep {
static MapFrobber randomAdder(NavigableMap m) {
final Integer k = unusedKey(m);
- MapFrobber f;
- switch (rnd.nextInt(4)) {
- case 0: f = new MapFrobber() {void frob(NavigableMap m) {
- equal(m.put(k, k+1), null);
- equal(m.get(k), k+1);
- if (maybe(4)) {
- equal(m.put(k, k+1), k+1);
- equal(m.get(k), k+1);}}};
- break;
- case 1: f = new MapFrobber() {void frob(NavigableMap m) {
- m.descendingMap().put(k, k+1);
- equal(m.get(k), k+1);}};
- break;
- case 2: f = new MapFrobber() {void frob(NavigableMap m) {
- m.tailMap(k,true).headMap(k,true).put(k,k+1);}};
- break;
- case 3: f = new MapFrobber() {void frob(NavigableMap m) {
- m.tailMap(k,true).headMap(k,true).descendingMap().put(k,k+1);}};
- break;
- default: throw new Error();
- }
- final MapFrobber ff = f;
+ final MapFrobber[] randomAdders = {
+ new MapFrobber() {void frob(NavigableMap m) {
+ equal(m.put(k, k+1), null);
+ equal(m.get(k), k+1);
+ if (maybe(4)) {
+ equal(m.put(k, k+1), k+1);
+ equal(m.get(k), k+1);}}},
+ new MapFrobber() {void frob(NavigableMap m) {
+ m.descendingMap().put(k, k+1);
+ equal(m.get(k), k+1);}},
+ new MapFrobber() {void frob(NavigableMap m) {
+ m.tailMap(k,true).headMap(k,true).put(k,k+1);}},
+ new MapFrobber() {void frob(NavigableMap m) {
+ m.tailMap(k,true).headMap(k,true).descendingMap().put(k,k+1);}}
+ };
return new MapFrobber() {void frob(NavigableMap m) {
- ff.frob(m);
+ randomAdders[rnd.nextInt(randomAdders.length)].frob(m);
if (maybe(2)) equal(m.get(k), k+1);
if (maybe(4)) {
equal(m.put(k, k+1), k+1);
@@ -525,26 +531,19 @@ public class LockStep {
static SetFrobber randomAdder(NavigableSet s) {
final Integer e = unusedElt(s);
- SetFrobber f;
- switch (rnd.nextInt(4)) {
- case 0: f = new SetFrobber() {void frob(NavigableSet s) {
- check(s.add(e));}};
- break;
- case 1: f = new SetFrobber() {void frob(NavigableSet s) {
- s.descendingSet().add(e);}};
- break;
- case 2: f = new SetFrobber() {void frob(NavigableSet s) {
- s.tailSet(e,true).headSet(e,true).add(e);}};
- break;
- case 3: f = new SetFrobber() {void frob(NavigableSet s) {
- s.descendingSet().tailSet(e,true).headSet(e,true).add(e);}};
- break;
- default: throw new Error();
- }
- final SetFrobber ff = f;
+ final SetFrobber[] randomAdders = {
+ new SetFrobber() {void frob(NavigableSet s) {
+ check(s.add(e));}},
+ new SetFrobber() {void frob(NavigableSet s) {
+ s.descendingSet().add(e);}},
+ new SetFrobber() {void frob(NavigableSet s) {
+ s.tailSet(e,true).headSet(e,true).add(e);}},
+ new SetFrobber() {void frob(NavigableSet s) {
+ s.descendingSet().tailSet(e,true).headSet(e,true).add(e);}}
+ };
return new SetFrobber() {void frob(NavigableSet s) {
if (maybe(2)) check(! s.contains(e));
- ff.frob(s);
+ randomAdders[rnd.nextInt(randomAdders.length)].frob(s);
if (maybe(2)) check(! s.add(e));
if (maybe(2)) check(s.contains(e));}};
}
@@ -605,89 +604,112 @@ public class LockStep {
static MapFrobber randomRemover(NavigableMap m) {
final Integer k = usedKey(m);
- switch (rnd.nextInt(7)) {
- default: throw new Error();
- case 0: return new MapFrobber() {void frob(NavigableMap m) {
- Map.Entry e = m.firstEntry();
- equal(m.pollFirstEntry(), e);
- checkUnusedKey(m, e.getKey());}};
- case 1: return new MapFrobber() {void frob(NavigableMap m) {
- Map.Entry e = m.lastEntry();
- equal(m.pollLastEntry(), e);
- checkUnusedKey(m, e.getKey());}};
- case 2: return new MapFrobber() {void frob(NavigableMap m) {
- check(m.remove(k) != null);
- checkUnusedKey(m, k);}};
- case 3: return new MapFrobber() {void frob(NavigableMap m) {
- m.subMap(k, true, k, true).clear();
- checkUnusedKey(m, k);}};
- case 4: return new MapFrobber() {void frob(NavigableMap m) {
- m.descendingMap().subMap(k, true, k, true).clear();
- checkUnusedKey(m, k);}};
- case 5: return new MapFrobber() {void frob(NavigableMap m) {
- final Iterator it = m.keySet().iterator();
- while (it.hasNext())
- if (it.next().equals(k)) {
- it.remove();
- if (maybe(2))
- THROWS(IllegalStateException.class,
- new Fun(){void f(){ it.remove(); }});
- }
- checkUnusedKey(m, k);}};
- case 6: return new MapFrobber() {void frob(NavigableMap m) {
- final Iterator<Map.Entry> it = m.entrySet().iterator();
- while (it.hasNext())
- if (it.next().getKey().equals(k)) {
- it.remove();
- if (maybe(2))
- THROWS(IllegalStateException.class, remover(it));
- }
- checkUnusedKey(m, k);}};
- }
+ final MapFrobber[] randomRemovers = {
+ new MapFrobber() {void frob(NavigableMap m) {
+ Map.Entry e = m.firstEntry();
+ equal(m.pollFirstEntry(), e);
+ checkUnusedKey(m, e.getKey());}},
+ new MapFrobber() {void frob(NavigableMap m) {
+ Map.Entry e = m.lastEntry();
+ equal(m.pollLastEntry(), e);
+ checkUnusedKey(m, e.getKey());}},
+ new MapFrobber() {void frob(NavigableMap m) {
+ check(m.remove(k) != null);
+ checkUnusedKey(m, k);}},
+ new MapFrobber() {void frob(NavigableMap m) {
+ m.subMap(k, true, k, true).clear();
+ checkUnusedKey(m, k);}},
+ new MapFrobber() {void frob(NavigableMap m) {
+ m.descendingMap().subMap(k, true, k, true).clear();
+ checkUnusedKey(m, k);}},
+ new MapFrobber() {void frob(NavigableMap m) {
+ final Iterator it = m.keySet().iterator();
+ while (it.hasNext())
+ if (it.next().equals(k)) {
+ it.remove();
+ if (maybe(2))
+ THROWS(IllegalStateException.class,
+ new Fun(){void f(){ it.remove(); }});
+ }
+ checkUnusedKey(m, k);}},
+ new MapFrobber() {void frob(NavigableMap m) {
+ final Iterator it = m.navigableKeySet().descendingIterator();
+ while (it.hasNext())
+ if (it.next().equals(k)) {
+ it.remove();
+ if (maybe(2))
+ THROWS(IllegalStateException.class,
+ new Fun(){void f(){ it.remove(); }});
+ }
+ checkUnusedKey(m, k);}},
+ new MapFrobber() {void frob(NavigableMap m) {
+ final Iterator<Map.Entry> it = m.entrySet().iterator();
+ while (it.hasNext())
+ if (it.next().getKey().equals(k)) {
+ it.remove();
+ if (maybe(2))
+ THROWS(IllegalStateException.class, remover(it));
+ }
+ checkUnusedKey(m, k);}},
+ };
+
+ return randomRemovers[rnd.nextInt(randomRemovers.length)];
}
static SetFrobber randomRemover(NavigableSet s) {
final Integer e = usedElt(s);
- switch (rnd.nextInt(7)) {
- default: throw new Error();
- case 0: return new SetFrobber() {void frob(NavigableSet s) {
- Object e = s.first();
- equal(s.pollFirst(), e);
- checkUnusedElt(s, e);}};
- case 1: return new SetFrobber() {void frob(NavigableSet s) {
- Object e = s.last();
- equal(s.pollLast(), e);
- checkUnusedElt(s, e);}};
- case 2: return new SetFrobber() {void frob(NavigableSet s) {
- check(s.remove(e));
- checkUnusedElt(s, e);}};
- case 3: return new SetFrobber() {void frob(NavigableSet s) {
- s.subSet(e, true, e, true).clear();
- checkUnusedElt(s, e);}};
- case 4: return new SetFrobber() {void frob(NavigableSet s) {
- s.descendingSet().subSet(e, true, e, true).clear();
- checkUnusedElt(s, e);}};
- case 5: return new SetFrobber() {void frob(NavigableSet s) {
- final Iterator it = s.iterator();
- while (it.hasNext())
- if (it.next().equals(e)) {
- it.remove();
- if (maybe(2))
- THROWS(IllegalStateException.class,
- new Fun(){void f(){ it.remove(); }});
- }
- checkUnusedElt(s, e);}};
- case 6: return new SetFrobber() {void frob(NavigableSet s) {
- final Iterator it = s.descendingSet().iterator();
- while (it.hasNext())
- if (it.next().equals(e)) {
- it.remove();
- if (maybe(2))
- THROWS(IllegalStateException.class,
- new Fun(){void f(){ it.remove(); }});
- }
- checkUnusedElt(s, e);}};
- }
+
+ final SetFrobber[] randomRemovers = {
+ new SetFrobber() {void frob(NavigableSet s) {
+ Object e = s.first();
+ equal(s.pollFirst(), e);
+ checkUnusedElt(s, e);}},
+ new SetFrobber() {void frob(NavigableSet s) {
+ Object e = s.last();
+ equal(s.pollLast(), e);
+ checkUnusedElt(s, e);}},
+ new SetFrobber() {void frob(NavigableSet s) {
+ check(s.remove(e));
+ checkUnusedElt(s, e);}},
+ new SetFrobber() {void frob(NavigableSet s) {
+ s.subSet(e, true, e, true).clear();
+ checkUnusedElt(s, e);}},
+ new SetFrobber() {void frob(NavigableSet s) {
+ s.descendingSet().subSet(e, true, e, true).clear();
+ checkUnusedElt(s, e);}},
+ new SetFrobber() {void frob(NavigableSet s) {
+ final Iterator it = s.iterator();
+ while (it.hasNext())
+ if (it.next().equals(e)) {
+ it.remove();
+ if (maybe(2))
+ THROWS(IllegalStateException.class,
+ new Fun(){void f(){ it.remove(); }});
+ }
+ checkUnusedElt(s, e);}},
+ new SetFrobber() {void frob(NavigableSet s) {
+ final Iterator it = s.descendingSet().iterator();
+ while (it.hasNext())
+ if (it.next().equals(e)) {
+ it.remove();
+ if (maybe(2))
+ THROWS(IllegalStateException.class,
+ new Fun(){void f(){ it.remove(); }});
+ }
+ checkUnusedElt(s, e);}},
+ new SetFrobber() {void frob(NavigableSet s) {
+ final Iterator it = s.descendingIterator();
+ while (it.hasNext())
+ if (it.next().equals(e)) {
+ it.remove();
+ if (maybe(2))
+ THROWS(IllegalStateException.class,
+ new Fun(){void f(){ it.remove(); }});
+ }
+ checkUnusedElt(s, e);}}
+ };
+
+ return randomRemovers[rnd.nextInt(randomRemovers.length)];
}
static void lockStep(NavigableMap m1,
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/com/sun/security/auth/login/ConfigFile/IllegalURL.java Tue May 27 17:18:01 2008 -0700
@@ -0,0 +1,54 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ * @test
+ * @bug 6689000
+ * @summary Changes in 6675606 causing regression test failures on windows-i586
+ */
+
+import com.sun.security.auth.login.*;
+import java.io.*;
+import java.net.URL;
+
+public class IllegalURL {
+ public static void main(String[] args) throws Exception {
+ FileOutputStream fos = new FileOutputStream("x.conf");
+ fos.close();
+ use("file:" + System.getProperty("user.dir") + "/x.conf");
+ use("file:x.conf");
+ System.out.println("Test passed");
+ }
+
+ static void use(String f) throws Exception {
+ System.out.println("Testing " + f + "...");
+ System.setProperty("java.security.auth.login.config", f);
+ try {
+ new FileInputStream(new URL(f).getFile().replace('/', File.separatorChar));
+ } catch (Exception e) {
+ System.out.println("Even old implementation does not support it. Ignored.");
+ return;
+ }
+ new ConfigFile();
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/java/net/CookieHandler/B6644726.java Tue May 27 17:18:01 2008 -0700
@@ -0,0 +1,189 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ * @test
+ * @bug 6644726
+ * @summary Cookie management issues
+ */
+
+import java.net.*;
+import java.util.*;
+
+public class B6644726 {
+ public static void main(String[] args) throws Exception {
+ testCookieStore();
+ }
+
+ private static void testCookieStore() throws Exception {
+ CookieManager cm = new CookieManager();
+ CookieStore cs = cm.getCookieStore();
+ URI uri = new URI("http://www.s1.sun.com/dir/foo/doc.html");
+ URI suri = new URI("https://www.s1.sun.com/dir/foo/index.html");
+ cm.setCookiePolicy(CookiePolicy.ACCEPT_ALL);
+
+ ArrayList<String> lst = new ArrayList<String>();
+ // Let's test the default path
+ lst.add("myCookie1=foo");
+ // Then some alternate expires format
+ lst.add("myCookie2=bar; path=/dir; expires=Tue, 19 Aug 2025 16:00:00 GMT");
+ lst.add("myCookie3=test; path=/dir; expires=Tue Aug 19 2025 16:00:00 GMT-0100");
+ // Then Netscape draft cookies and domains
+ lst.add("myCookie4=test; domain=.sun.com; path=/dir/foo");
+ HashMap<String, List<String>> map = new HashMap<String, List<String>>();
+ map.put("Set-Cookie", lst);
+ cm.put(uri, map);
+ map.clear();
+ lst.clear();
+ // Test for secure tag
+ lst.add("myCookie5=test; secure");
+ // Test for passing cookies between http and https
+ map.put("Set-Cookie", lst);
+ cm.put(suri, map);
+
+ List<HttpCookie> cookies = cs.getCookies();
+ // There should be 5 cookies if all dates parsed correctly
+ if (cookies.size() != 5) {
+ fail("Should have 5 cookies. Got only "+ cookies.size() + ", expires probably didn't parse correctly");
+ }
+ // Check Path for first Cookie
+ for (HttpCookie c : cookies) {
+ if (c.getName().equals("myCookie1")) {
+ if (!"/dir/foo/".equals(c.getPath())) {
+ fail("Default path for myCookie1 is " + c.getPath());
+ }
+ }
+ }
+
+ HashMap<String, List<String>> emptyMap = new HashMap<String, List<String>>();
+ // We should get 1 Cookie: MyCookie4, because of the domain
+ Map<String, List<String>>m = cm.get(new URI("http://www.s2.sun.com/dir/foo/doc2.html"),
+ emptyMap);
+ List<String> clst = m.get("Cookie");
+ if (clst.size() != 1) {
+ fail("We should have only 1 cookie, not " + clst.size());
+ } else {
+ if (!clst.get(0).startsWith("myCookie4")) {
+ fail("The cookie should be myCookie4, not " + clst.get(0));
+ }
+ }
+ // We should get 4 cookies for non secure URI, and 5 for the secure one
+ m = cm.get(suri, emptyMap);
+ clst = m.get("Cookie");
+ if (clst.size() != 5) {
+ fail("Cookies didn't cross from http to https. Got only " + clst.size());
+ }
+
+ m = cm.get(uri, emptyMap);
+ clst = m.get("Cookie");
+ if (clst.size() != 4) {
+ fail("We should have gotten only 4 cookies over http (non secure), got " +
+ clst.size());
+ }
+ if (isIn(clst, "myCookie5=")) {
+ // myCookie5 (the secure one) shouldn't be here
+ fail("Got the secure cookie over a non secure link");
+ }
+
+ // Let's check that empty path is treated correctly
+ uri = new URI("http://www.sun.com/");
+ lst.clear();
+ lst.add("myCookie6=foo");
+ map.clear();
+ map.put("Set-Cookie", lst);
+ cm.put(uri, map);
+ uri = new URI("http://www.sun.com");
+ m = cm.get(uri, emptyMap);
+ clst = m.get("Cookie");
+ if (clst.size() != 1) {
+ fail("Missing a cookie when using an empty path");
+ }
+
+ // And now, the other way around:
+
+ uri = new URI("http://www.sun.com");
+ lst.clear();
+ lst.add("myCookie7=foo");
+ map.clear();
+ map.put("Set-Cookie", lst);
+ cm.put(uri, map);
+ uri = new URI("http://www.sun.com/");
+ m = cm.get(uri, emptyMap);
+ clst = m.get("Cookie");
+ if (!isIn(clst, "myCookie7=")) {
+ fail("Missing a cookie when using an empty path");
+ }
+
+ // Let's make sure the 'Port' optional attributes is enforced
+
+ lst.clear();
+ lst.add("myCookie8=porttest; port");
+ lst.add("myCookie9=porttest; port=\"80,8000\"");
+ lst.add("myCookie10=porttest; port=\"8000\"");
+ map.clear();
+ map.put("Set-Cookie", lst);
+ uri = new URI("http://www.sun.com/");
+ cm.put(uri, map);
+
+ // myCookie10 should have been rejected
+ cookies = cs.getCookies();
+ for (HttpCookie c : cookies) {
+ if (c.getName().equals("myCookie10")) {
+ fail("A cookie with an invalid port list was accepted");
+ }
+ }
+
+ uri = new URI("http://www.sun.com:80/");
+ m = cm.get(uri, emptyMap);
+ clst = m.get("Cookie");
+ // We should find both myCookie8 and myCookie9 but not myCookie10
+ if (!isIn(clst, "myCookie8=") || !isIn(clst, "myCookie9=")) {
+ fail("Missing a cookie on port 80");
+ }
+ uri = new URI("http://www.sun.com:8000/");
+ m = cm.get(uri, emptyMap);
+ clst = m.get("Cookie");
+ // We should find only myCookie9
+ if (!isIn(clst, "myCookie9=")) {
+ fail("Missing a cookie on port 80");
+ }
+ if (isIn(clst, "myCookie8=")) {
+ fail("A cookie with an invalid port list was returned");
+ }
+ }
+
+ private static boolean isIn(List<String> lst, String cookie) {
+ if (lst == null || lst.isEmpty()) {
+ return false;
+ }
+ for (String s : lst) {
+ if (s.startsWith(cookie))
+ return true;
+ }
+ return false;
+ }
+
+ private static void fail(String msg) throws Exception {
+ throw new RuntimeException(msg);
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/java/net/Inet6Address/B6558853.java Tue May 27 17:18:01 2008 -0700
@@ -0,0 +1,86 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/**
+ * @test
+ * @bug 6558853
+ * @summary getHostAddress() on connections using IPv6 link-local addrs should have zone id
+ */
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.*;
+import java.util.Enumeration;
+
+public class B6558853 implements Runnable {
+ private InetAddress addr = null;
+ private int port = 0;
+
+ public static void main(String[] args) throws Exception {
+ ServerSocket ss = new ServerSocket(0);
+ int port = ss.getLocalPort();
+ Enumeration<NetworkInterface> l = NetworkInterface.getNetworkInterfaces();
+ InetAddress dest = null;
+ while (l.hasMoreElements() && dest == null) {
+ NetworkInterface nif = l.nextElement();
+ for (InterfaceAddress a : nif.getInterfaceAddresses()) {
+ if (a.getAddress() instanceof Inet6Address) {
+ Inet6Address a6 = (Inet6Address) a.getAddress();
+ if (a6.isLinkLocalAddress()) {
+ dest = a6;
+ }
+ break;
+ }
+ }
+ }
+ if (dest != null) {
+ B6558853 test = new B6558853(dest, port);
+ Thread thread = new Thread(test);
+ thread.start();
+ Socket s = ss.accept();
+ InetAddress a = s.getInetAddress();
+ OutputStream out = s.getOutputStream();
+ out.write(1);
+ out.close();
+ if (!(a instanceof Inet6Address) || a.getHostAddress().indexOf("%") == -1) {
+ // No Scope found in the address String
+ throw new RuntimeException("Wrong address: " + a.getHostAddress());
+ }
+ }
+ }
+
+ public B6558853(InetAddress a, int port) {
+ addr = a;
+ this.port = port;
+ }
+
+ public void run() {
+ try {
+ Socket s = new Socket(addr, port);
+ InputStream in = s.getInputStream();
+ int i = in.read();
+ in.close();
+ } catch (IOException iOException) {
+ }
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/java/security/AccessControlContext/CheckCtor.java Tue May 27 17:18:01 2008 -0700
@@ -0,0 +1,70 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ * @test
+ * @bug 6631361
+ * @summary Test constructor when PD array is null or contains all null contexts
+ */
+
+import java.security.AccessControlContext;
+import java.security.ProtectionDomain;
+
+public class CheckCtor {
+
+ public static void main(String[] args) throws Exception {
+
+ // check that null PD array throws NPE
+ try {
+ new AccessControlContext(null);
+ throw new Exception("Expected NullPointerException not thrown");
+ } catch (Exception e) {
+ if (!(e instanceof NullPointerException)) {
+ throw new Exception("Expected NullPointerException not thrown");
+ }
+ }
+
+ // check that empty PD array equals PD array of one or more nulls
+ ProtectionDomain zero[] = {};
+ ProtectionDomain null1[] = {null};
+ ProtectionDomain null2[] = {null, null};
+
+ AccessControlContext accZero = new AccessControlContext(zero);
+ AccessControlContext accNull1 = new AccessControlContext(null1);
+ AccessControlContext accNull2 = new AccessControlContext(null2);
+
+ testEquals(accZero, accNull1);
+ testEquals(accZero, accNull2);
+ testEquals(accNull1, accNull2);
+ testEquals(accNull1, accZero);
+ testEquals(accNull2, accZero);
+ testEquals(accNull2, accNull1);
+ }
+
+ private static void testEquals(AccessControlContext acc1,
+ AccessControlContext acc2) throws Exception {
+ if (!acc1.equals(acc2)) {
+ throw new Exception("AccessControlContexts should be equal");
+ }
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/management/query/CustomQueryTest.java Tue May 27 17:18:01 2008 -0700
@@ -0,0 +1,116 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ * @test
+ * @bug 6692027
+ * @summary Check that custom subclasses of QueryEval can be serialized.
+ * @author Eamonn McManus
+ */
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.lang.management.ManagementFactory;
+import java.util.Set;
+import java.util.concurrent.atomic.AtomicInteger;
+import javax.management.MBeanServer;
+import javax.management.MalformedObjectNameException;
+import javax.management.ObjectName;
+import javax.management.QueryEval;
+import javax.management.QueryExp;
+
+public class CustomQueryTest {
+ public static interface CountMBean {
+ public int getCount();
+ public void increment();
+ }
+
+ public static class Count implements CountMBean {
+ private AtomicInteger count = new AtomicInteger();
+
+ public int getCount() {
+ return count.get();
+ }
+
+ public void increment() {
+ count.incrementAndGet();
+ }
+
+ }
+
+ public static final ObjectName countName;
+ static {
+ try {
+ countName = new ObjectName("d:type=Count");
+ } catch (MalformedObjectNameException e) {
+ throw new AssertionError(e);
+ }
+ }
+
+ /* A query that calls the increment method of the Count MBean every time
+ * it is evaluated. If there is no ObjectName filter, the query will be
+ * evaluated for every MBean in the MBean Server, so the count will be
+ * incremented by the number of MBeans.
+ */
+ public static class IncrQuery extends QueryEval implements QueryExp {
+ public boolean apply(ObjectName name) {
+ try {
+ getMBeanServer().invoke(countName, "increment", null, null);
+ return true;
+ } catch (Throwable t) {
+ t.printStackTrace();
+ System.exit(1);
+ throw new AssertionError(); // not reached
+ }
+ }
+ }
+
+ public static void main(String[] args) throws Exception {
+ MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
+ mbs.registerMBean(new Count(), countName);
+ int mbeanCount = mbs.getMBeanCount();
+ QueryExp query = new IncrQuery();
+ Set<ObjectName> names = mbs.queryNames(null, query);
+ assertEquals(mbeanCount, names.size());
+ assertEquals(mbeanCount, mbs.getAttribute(countName, "Count"));
+ ByteArrayOutputStream bout = new ByteArrayOutputStream();
+ ObjectOutputStream oout = new ObjectOutputStream(bout);
+ oout.writeObject(query);
+ oout.close();
+ ByteArrayInputStream bin = new ByteArrayInputStream(bout.toByteArray());
+ ObjectInputStream oin = new ObjectInputStream(bin);
+ query = (QueryExp) oin.readObject();
+ names = mbs.queryNames(null, query);
+ assertEquals(mbeanCount * 2, mbs.getAttribute(countName, "Count"));
+ }
+
+ private static void assertEquals(Object expected, Object actual)
+ throws Exception {
+ if (!expected.equals(actual)) {
+ String failure = "FAILED: expected " + expected + ", got " + actual;
+ throw new Exception(failure);
+ }
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/management/relation/RelationNotificationSeqNoTest.java Tue May 27 17:18:01 2008 -0700
@@ -0,0 +1,112 @@
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ * @test
+ * @bug 6701459
+ * @summary Test sequence numbers in RelationService notifications.
+ * @author Eamonn McManus
+ */
+
+/*
+ * Bug 6701459 is for a synchronization problem that is very unlikely to occur
+ * in practice and it would be very hard to test it. Instead we just check that
+ * the fix has not introduced any obviously-wrong behavior in the sequence
+ * numbers.
+ */
+
+import java.util.Arrays;
+import java.util.concurrent.ArrayBlockingQueue;
+import java.util.concurrent.BlockingQueue;
+import javax.management.JMX;
+import javax.management.MBeanServer;
+import javax.management.MBeanServerFactory;
+import javax.management.Notification;
+import javax.management.NotificationListener;
+import javax.management.ObjectName;
+import javax.management.relation.RelationServiceMBean;
+import javax.management.relation.Role;
+import javax.management.relation.RoleInfo;
+import javax.management.relation.RoleList;
+
+public class RelationNotificationSeqNoTest {
+ public static void main(String[] args) throws Exception {
+ MBeanServer mbs = MBeanServerFactory.newMBeanServer();
+ ObjectName relSvcName = new ObjectName("a:type=relationService");
+ RelationServiceMBean relSvc =
+ JMX.newMBeanProxy(mbs, relSvcName, RelationServiceMBean.class);
+ mbs.createMBean("javax.management.relation.RelationService",
+ relSvcName,
+ new Object[] {Boolean.TRUE},
+ new String[] {"boolean"});
+
+ final BlockingQueue<Notification> q =
+ new ArrayBlockingQueue<Notification>(100);
+ NotificationListener qListener = new NotificationListener() {
+ public void handleNotification(Notification notification,
+ Object handback) {
+ q.add(notification);
+ }
+ };
+ mbs.addNotificationListener(relSvcName, qListener, null, null);
+
+ RoleInfo leftInfo =
+ new RoleInfo("left", "javax.management.timer.TimerMBean");
+ RoleInfo rightInfo =
+ new RoleInfo("right", "javax.management.timer.Timer");
+ relSvc.createRelationType("typeName", new RoleInfo[] {leftInfo, rightInfo});
+ ObjectName timer1 = new ObjectName("a:type=timer,number=1");
+ ObjectName timer2 = new ObjectName("a:type=timer,number=2");
+ mbs.createMBean("javax.management.timer.Timer", timer1);
+ mbs.createMBean("javax.management.timer.Timer", timer2);
+
+ Role leftRole =
+ new Role("left", Arrays.asList(new ObjectName[] {timer1}));
+ Role rightRole =
+ new Role("right", Arrays.asList(new ObjectName[] {timer2}));
+ RoleList roles =
+ new RoleList(Arrays.asList(new Role[] {leftRole, rightRole}));
+
+ final int NREPEAT = 10;
+
+ for (int i = 0; i < NREPEAT; i++) {
+ relSvc.createRelation("relationName", "typeName", roles);
+ relSvc.removeRelation("relationName");
+ }
+
+ Notification firstNotif = q.remove();
+ long seqNo = firstNotif.getSequenceNumber();
+ for (int i = 0; i < NREPEAT * 2 - 1; i++) {
+ Notification n = q.remove();
+ long nSeqNo = n.getSequenceNumber();
+ if (nSeqNo != seqNo + 1) {
+ throw new Exception(
+ "TEST FAILED: expected seqNo " + (seqNo + 1) + "; got " +
+ nSeqNo);
+ }
+ seqNo++;
+ }
+ System.out.println("TEST PASSED: got " + (NREPEAT * 2) + " notifications " +
+ "with contiguous sequence numbers");
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/security/auth/kerberos/KerberosTixDateTest.java Tue May 27 17:18:01 2008 -0700
@@ -0,0 +1,140 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ * @test
+ * @bug 6659990
+ * @summary test the immutability of the Date fields in KerberosTicket class.
+ * @ignore Must set up KDC and setup Kerberos configuration file
+ */
+
+import java.net.InetAddress;
+import java.util.Date;
+import java.io.*;
+import javax.security.auth.kerberos.KerberosKey;
+import javax.security.auth.kerberos.KerberosPrincipal;
+import javax.security.auth.kerberos.KerberosTicket;
+import sun.misc.BASE64Decoder;
+
+public class KerberosTixDateTest {
+
+ // Serialized KerberosTicket from JDK6 (encoded in BASE64)
+ // Note: the KerberosTicket object is created using the same values as
+ // the KerberosTicket 't' in main(). Deserialization should succeed
+ // and the deserialized object should equal to 't'.
+ static String serializedKerberosTix =
+"rO0ABXNyACtqYXZheC5zZWN1cml0eS5hdXRoLmtlcmJlcm9zLktlcmJlcm9zVGlja2V0ZqGBbXB3" +
+"w7sCAApbAAxhc24xRW5jb2Rpbmd0AAJbQkwACGF1dGhUaW1ldAAQTGphdmEvdXRpbC9EYXRlO0wA" +
+"BmNsaWVudHQAMExqYXZheC9zZWN1cml0eS9hdXRoL2tlcmJlcm9zL0tlcmJlcm9zUHJpbmNpcGFs" +
+"O1sAD2NsaWVudEFkZHJlc3Nlc3QAF1tMamF2YS9uZXQvSW5ldEFkZHJlc3M7TAAHZW5kVGltZXEA" +
+"fgACWwAFZmxhZ3N0AAJbWkwACXJlbmV3VGlsbHEAfgACTAAGc2VydmVycQB+AANMAApzZXNzaW9u" +
+"S2V5dAAmTGphdmF4L3NlY3VyaXR5L2F1dGgva2VyYmVyb3MvS2V5SW1wbDtMAAlzdGFydFRpbWVx" +
+"AH4AAnhwdXIAAltCrPMX+AYIVOACAAB4cAAAAARhc24xc3IADmphdmEudXRpbC5EYXRlaGqBAUtZ" +
+"dBkDAAB4cHcIAAAAAAC8YU54c3IALmphdmF4LnNlY3VyaXR5LmF1dGgua2VyYmVyb3MuS2VyYmVy" +
+"b3NQcmluY2lwYWyZp31dDx4zKQMAAHhwdXEAfgAIAAAAEzARoAMCAQGhCjAIGwZjbGllbnR1cQB+" +
+"AAgAAAAVGxNKTEFCUy5TRkJBWS5TVU4uQ09NeHBxAH4AC3VyAAJbWlePIDkUuF3iAgAAeHAAAAAg" +
+"AAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABxAH4AC3NxAH4ADHVxAH4ACAAAABMwEaAD" +
+"AgEBoQowCBsGc2VydmVydXEAfgAIAAAAFRsTSkxBQlMuU0ZCQVkuU1VOLkNPTXhzcgAkamF2YXgu" +
+"c2VjdXJpdHkuYXV0aC5rZXJiZXJvcy5LZXlJbXBskoOG6DyvS9cDAAB4cHVxAH4ACAAAABUwE6AD" +
+ "AgEBoQwECnNlc3Npb25LZXl4cQB+AAs=";
+
+ public static void main(String[] args) throws Exception {
+ byte[] asn1Bytes = "asn1".getBytes();
+ KerberosPrincipal client = new KerberosPrincipal("client");
+ KerberosPrincipal server = new KerberosPrincipal("server");
+ byte[] keyBytes = "sessionKey".getBytes();
+ long originalTime = 12345678L;
+ Date inDate = new Date(originalTime);
+ boolean[] flags = new boolean[9];
+ flags[8] = true; // renewable
+ KerberosTicket t = new KerberosTicket(asn1Bytes, client, server,
+ keyBytes, 1 /*keyType*/, flags, inDate /*authTime*/,
+ inDate /*startTime*/, inDate /*endTime*/,
+ inDate /*renewTill*/, null /*clientAddresses*/);
+ inDate.setTime(0); // for testing the constructor
+
+ testDateImmutability(t, originalTime);
+ testS11nCompatibility(t); // S11n: Serialization
+ }
+
+ private static void checkTime(KerberosTicket kt, long timeValue) {
+ if (kt.getAuthTime().getTime() != timeValue) {
+ throw new RuntimeException("authTime check fails!");
+ }
+ if (kt.getStartTime().getTime() != timeValue) {
+ throw new RuntimeException("startTime check fails!");
+ }
+ if (kt.getEndTime().getTime() != timeValue) {
+ throw new RuntimeException("endTime check fails!");
+ }
+ if (kt.getRenewTill().getTime() != timeValue) {
+ throw new RuntimeException("renewTill check fails!");
+ }
+ }
+
+ private static void testDateImmutability(KerberosTicket t, long origTime)
+ throws Exception {
+ // test the constructor
+ System.out.println("Testing constructor...");
+ checkTime(t, origTime);
+
+ // test the getAuth/Start/EndTime() & getRenewTill() methods
+ System.out.println("Testing getAuth/Start/EndTime() & getRenewTill()...");
+ t.getAuthTime().setTime(0);
+ t.getStartTime().setTime(0);
+ t.getEndTime().setTime(0);
+ t.getRenewTill().setTime(0);
+ checkTime(t, origTime);
+
+ System.out.println("DateImmutability Test Passed");
+ }
+
+ private static void checkEqualsAndHashCode(byte[] bytes, KerberosTicket t)
+ throws IOException, ClassNotFoundException {
+ ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
+ KerberosTicket deserializedTicket = (KerberosTicket)
+ (new ObjectInputStream(bais).readObject());
+ if (!deserializedTicket.equals(t)) {
+ throw new RuntimeException("equals() check fails!");
+ }
+ if (deserializedTicket.hashCode() != t.hashCode()) {
+ throw new RuntimeException("hashCode() check fails!");
+ }
+ }
+
+ private static void testS11nCompatibility(KerberosTicket t)
+ throws Exception {
+
+ System.out.println("Testing against KerberosTicket from JDK6...");
+ byte[] serializedBytes =
+ new BASE64Decoder().decodeBuffer(serializedKerberosTix);
+ checkEqualsAndHashCode(serializedBytes, t);
+
+ System.out.println("Testing against KerberosTicket from current rel...");
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ new ObjectOutputStream(baos).writeObject(t);
+ checkEqualsAndHashCode(baos.toByteArray(), t);
+
+ System.out.println("S11nCompatibility Test Passed");
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/security/auth/login/Configuration/ConfigFileWithBlank.java Tue May 27 17:18:01 2008 -0700
@@ -0,0 +1,50 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ * @test
+ * @bug 6675606
+ * @summary javax.security.auth.login.Configuration does not recognize path with spaces
+ */
+
+import java.io.File;
+import java.io.FileOutputStream;
+import javax.security.auth.login.*;
+
+import java.net.URI;
+import java.security.URIParameter;
+
+public class ConfigFileWithBlank {
+ public static void main(String[] args) throws Exception {
+ File f = new File("a b c");
+ FileOutputStream fos = new FileOutputStream(f);
+ fos.write("".getBytes());
+ fos.close();
+ System.err.println(f.toURI());
+ try {
+ Configuration.getInstance("JavaLoginConfig", new URIParameter(f.toURI()));
+ } finally {
+ f.delete();
+ }
+ }
+}