OpenJDK / jdk / jdk
changeset 1696:aef312419918
Merge
author | tbell |
---|---|
date | Fri, 05 Dec 2008 21:59:09 -0800 |
parents | f5d84a55742b bd4de543a439 |
children | 98a530cd0594 4a382455c04d |
files | |
diffstat | 7 files changed, 122 insertions(+), 48 deletions(-) [+] |
line wrap: on
line diff
--- a/jdk/src/share/classes/com/sun/servicetag/Installer.java Fri Dec 05 09:51:13 2008 -0800 +++ b/jdk/src/share/classes/com/sun/servicetag/Installer.java Fri Dec 05 21:59:09 2008 -0800 @@ -475,7 +475,7 @@ String filename = "/com/sun/servicetag/resources/javase_" + version + "_swordfish.properties"; - InputStream in = Installer.class.getClass().getResourceAsStream(filename); + InputStream in = Installer.class.getResourceAsStream(filename); if (in == null) { return null; } @@ -813,7 +813,7 @@ locale, String.valueOf(version)).toString(); try { - in = Installer.class.getClass().getResourceAsStream(resource + ".html"); + in = Installer.class.getResourceAsStream(resource + ".html"); if (in == null) { // if the resource file is missing if (isVerbose()) { @@ -825,34 +825,39 @@ System.out.println("Generating " + f + " from " + resource + ".html"); } - br = new BufferedReader(new InputStreamReader(in, "UTF-8")); - pw = new PrintWriter(f, "UTF-8"); - String line = null; - while ((line = br.readLine()) != null) { - String output = line; - if (line.contains(JDK_VERSION_KEY)) { - output = line.replace(JDK_VERSION_KEY, jdkVersion); - } else if (line.contains(JDK_HEADER_PNG_KEY)) { - output = line.replace(JDK_HEADER_PNG_KEY, headerImageSrc); - } else if (line.contains(REGISTRATION_URL_KEY)) { - output = line.replace(REGISTRATION_URL_KEY, registerURL); - } else if (line.contains(REGISTRATION_PAYLOAD_KEY)) { - output = line.replace(REGISTRATION_PAYLOAD_KEY, payload.toString()); + try { + br = new BufferedReader(new InputStreamReader(in, "UTF-8")); + pw = new PrintWriter(f, "UTF-8"); + String line = null; + while ((line = br.readLine()) != null) { + String output = line; + if (line.contains(JDK_VERSION_KEY)) { + output = line.replace(JDK_VERSION_KEY, jdkVersion); + } else if (line.contains(JDK_HEADER_PNG_KEY)) { + output = line.replace(JDK_HEADER_PNG_KEY, headerImageSrc); + } else if (line.contains(REGISTRATION_URL_KEY)) { + output = line.replace(REGISTRATION_URL_KEY, registerURL); + } else if (line.contains(REGISTRATION_PAYLOAD_KEY)) { + output = line.replace(REGISTRATION_PAYLOAD_KEY, payload.toString()); + } + pw.println(output); } - pw.println(output); + f.setReadOnly(); + pw.flush(); + } finally { + // It's safe for this finally block to have two close statements + // consecutively as PrintWriter.close doesn't throw IOException. + if (pw != null) { + pw.close(); + } + if (br!= null) { + br.close(); + } } - f.setReadOnly(); - pw.flush(); } finally { - if (pw != null) { - pw.close(); - } if (in != null) { in.close(); } - if (br!= null) { - br.close(); - } } } }
--- a/jdk/src/share/classes/com/sun/servicetag/SolarisSystemEnvironment.java Fri Dec 05 09:51:13 2008 -0800 +++ b/jdk/src/share/classes/com/sun/servicetag/SolarisSystemEnvironment.java Fri Dec 05 21:59:09 2008 -0800 @@ -62,8 +62,8 @@ return "Sun Microsystems, Inc"; } - // if we're here, then we'll try smbios (type 3) - return getSmbiosData("3", "Manufacturer: "); + // if we're here, then we'll try smbios (type 4) + return getSmbiosData("4", "Manufacturer: "); } /**
--- a/jdk/src/share/classes/com/sun/servicetag/SunConnection.java Fri Dec 05 09:51:13 2008 -0800 +++ b/jdk/src/share/classes/com/sun/servicetag/SunConnection.java Fri Dec 05 21:59:09 2008 -0800 @@ -213,10 +213,16 @@ con.setRequestProperty("Content-Type", "text/xml;charset=\"utf-8\""); con.connect(); - OutputStream out = con.getOutputStream(); - registration.storeToXML(out); - out.flush(); - out.close(); + OutputStream out = null; + try { + out = con.getOutputStream(); + registration.storeToXML(out); + out.flush(); + } finally { + if (out != null) { + out.close(); + } + } int returnCode = con.getResponseCode(); if (Util.isVerbose()) {
--- a/jdk/src/share/classes/com/sun/servicetag/Util.java Fri Dec 05 09:51:13 2008 -0800 +++ b/jdk/src/share/classes/com/sun/servicetag/Util.java Fri Dec 05 21:59:09 2008 -0800 @@ -140,11 +140,14 @@ } return e.getMessage(); } finally { - if (r != null) { - r.close(); - } - if (err != null) { - err.close(); + try { + if (r != null) { + r.close(); + } + } finally { + if (err != null) { + err.close(); + } } } }
--- a/jdk/src/share/classes/com/sun/servicetag/WindowsSystemEnvironment.java Fri Dec 05 09:51:13 2008 -0800 +++ b/jdk/src/share/classes/com/sun/servicetag/WindowsSystemEnvironment.java Fri Dec 05 21:59:09 2008 -0800 @@ -107,11 +107,17 @@ Process p = pb.start(); // need this for executing windows commands (at least // needed for executing wmic command) - BufferedWriter bw = new BufferedWriter( - new OutputStreamWriter(p.getOutputStream())); - bw.write(13); - bw.flush(); - bw.close(); + BufferedWriter bw = null; + try { + bw = new BufferedWriter( + new OutputStreamWriter(p.getOutputStream())); + bw.write(13); + bw.flush(); + } finally { + if (bw != null) { + bw.close(); + } + } p.waitFor(); if (p.exitValue() == 0) {
--- a/jdk/src/share/classes/javax/crypto/Cipher.java Fri Dec 05 09:51:13 2008 -0800 +++ b/jdk/src/share/classes/javax/crypto/Cipher.java Fri Dec 05 21:59:09 2008 -0800 @@ -2377,7 +2377,7 @@ * For more information on default key size in JCE jurisdiction * policy files, please see Appendix E in the * <a href= - * "{@docRoot}/../technotes/guides/security/crypto/CryptoSpec.html#AppE"> + * "{@docRoot}/../technotes/guides/security/crypto/CryptoSpec.html#AppC"> * Java Cryptography Architecture Reference Guide</a>. * * @param transformation the cipher transformation.
--- a/jdk/src/share/classes/javax/management/MBeanServerNotification.java Fri Dec 05 09:51:13 2008 -0800 +++ b/jdk/src/share/classes/javax/management/MBeanServerNotification.java Fri Dec 05 21:59:09 2008 -0800 @@ -57,15 +57,55 @@ * what = "Unknown type " + n.getType(); * System.out.println("Received MBean Server notification: " + what + ": " + * mbsn.getMBeanName()); + * } * }; * * ... * mbeanServer.addNotificationListener( * MBeanServerDelegate.DELEGATE_NAME, printListener, null, null); * </pre> - * - * <p>The following code prints a message every time an MBean is registered - * or unregistered in the MBean Server {@code mbeanServer}:</p> + * <p id="group"> + * An MBean which is not an {@link MBeanServerDelegate} may also emit + * MBeanServerNotifications. In particular, a custom subclass of the + * {@link javax.management.namespace.JMXDomain JMXDomain} MBean or a custom + * subclass of the {@link javax.management.namespace.JMXNamespace JMXNamespace} + * MBean may emit an MBeanServerNotification for a group of MBeans.<br> + * An MBeanServerNotification emitted to denote the registration or + * unregistration of a group of MBeans has the following characteristics: + * <ul><li>Its {@linkplain Notification#getType() notification type} is + * {@code "JMX.mbean.registered.group"} or + * {@code "JMX.mbean.unregistered.group"}, which can also be written {@link + * MBeanServerNotification#REGISTRATION_NOTIFICATION}{@code + ".group"} or + * {@link + * MBeanServerNotification#UNREGISTRATION_NOTIFICATION}{@code + ".group"}. + * </li> + * <li>Its {@linkplain #getMBeanName() MBean name} is an ObjectName pattern + * that selects the set (or a superset) of the MBeans being registered + * or unregistered</li> + * <li>Its {@linkplain Notification#getUserData() user data} can optionally + * be set to an array of ObjectNames containing the names of all MBeans + * being registered or unregistered.</li> + * </ul> + * </p> + * <p> + * MBeans which emit these group registration/unregistration notifications will + * declare them in their {@link MBeanInfo#getNotifications() + * MBeanNotificationInfo}. + * </p> + * <P> + * To receive a group MBeanServerNotification, you need to register a listener + * with the MBean that emits it. For instance, assuming that the {@link + * javax.management.namespace.JMXNamespace JMXNamespace} MBean handling + * namespace {@code "foo"} has declared that it emits such a notification, + * you will need to register your notification listener with that MBean, which + * will be named {@link + * javax.management.namespace.JMXNamespaces#getNamespaceObjectName(java.lang.String) + * foo//:type=JMXNamespace}. + * </p> + * <p>The following code prints a message every time a group of MBean is + * registered or unregistered in the namespace {@code "foo"}, assumimg its + * {@link javax.management.namespace.JMXNamespace handler} supports + * group MBeanServerNotifications:</p> * * <pre> * private static final NotificationListener printListener = new NotificationListener() { @@ -76,19 +116,33 @@ * } * MBeanServerNotification mbsn = (MBeanServerNotification) n; * String what; - * if (n.getType().equals(MBeanServerNotification.REGISTRATION_NOTIFICATION)) + * ObjectName[] names = null; + * if (n.getType().equals(MBeanServerNotification.REGISTRATION_NOTIFICATION)) { * what = "MBean registered"; - * else if (n.getType().equals(MBeanServerNotification.UNREGISTRATION_NOTIFICATION)) + * } else if (n.getType().equals(MBeanServerNotification.UNREGISTRATION_NOTIFICATION)) { * what = "MBean unregistered"; - * else + * } else if (n.getType().equals(MBeanServerNotification.REGISTRATION_NOTIFICATION+".group")) { + * what = "Group of MBeans registered matching"; + * if (mbsn.getUserData() instanceof ObjectName[]) + * names = (ObjectName[]) mbsn.getUserData(); + * } else if (n.getType().equals(MBeanServerNotification.UNREGISTRATION_NOTIFICATION+".group")) { + * what = "Group of MBeans unregistered matching"; + * if (mbsn.getUserData() instanceof ObjectName[]) + * names = (ObjectName[]) mbsn.getUserData(); + * } else * what = "Unknown type " + n.getType(); * System.out.println("Received MBean Server notification: " + what + ": " + * mbsn.getMBeanName()); + * if (names != null) { + * for (ObjectName mb : names) + * System.out.println("\t"+mb); + * } + * } * }; * * ... * mbeanServer.addNotificationListener( - * MBeanServerDelegate.DELEGATE_NAME, printListener, null, null); + * JMXNamespaces.getNamespaceObjectName("foo"), printListener, null, null); * </pre> * * @since 1.5