You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by Jörg Schaible <jo...@gmx.de> on 2010/05/28 14:13:01 UTC

Fwd: svn commit: r949140 [2/3] - in /commons/proper/lang/trunk/src: main/java/org/apache/commons/lang3/SystemUtils.java test/java/org/apache/commons/lang3/SystemUtilsTest.java

Gary,

can you please stop with this code reformatting? How should anyone can have 
a look at the changes if it is hidden between 95% unrelated stuff ???

- Jörg



--------------- Forwarded Message

Betreff: svn commit: r949140 [2/3] - in /commons/proper/lang/trunk/src: 
main/java/org/apache/commons/lang3/SystemUtils.java 
test/java/org/apache/commons/lang3/SystemUtilsTest.java
Absender: ggregory@apache.org
Datum: Fri, 28 May 2010 10:12:04 +0000
Newsgruppe: gmane.comp.jakarta.commons.scm


Modified: 
commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/SystemUtils.java
URL: 
http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/SystemUtils.java?rev=949140&r1=949139&r2=949140&view=diff
==============================================================================
--- 
commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/SystemUtils.java 
(original)
+++ 
commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/SystemUtils.java 
Fri May 28 10:12:04 2010
@@ -17,15 +17,22 @@
 package org.apache.commons.lang3;
 
 import java.io.File;
+import java.util.regex.Pattern;
 
 /**
- * <p>Helpers for <code>java.lang.System</code>.</p>
+ * <p>
+ * Helpers for <code>java.lang.System</code>.
+ * </p>
+ * 
+ * <p>
+ * If a system property cannot be read due to security restrictions, the 
corresponding field in this class will be set to <code>null</code>
+ * and a message will be written to <code>System.err</code>.
+ * </p>
+ * 
+ * <p>
+ * #ThreadSafe#
+ * </p>
  * 
- * <p>If a system property cannot be read due to security restrictions, 
- * the corresponding field in this class will be set to <code>null</code>
- * and a message will be written to <code>System.err</code>.</p>
- *
- * <p>#ThreadSafe#</p>
  * @author Apache Software Foundation
  * @author Based on code from Avalon Excalibur
  * @author Based on code from Lucene
@@ -40,15 +47,17 @@ import java.io.File;
  */
 public class SystemUtils {
 
+    private static final int JAVA_VERSION_TRIM_SIZE = 3;
+
     /**
      * The prefix String for all Windows OS.
      */
     private static final String OS_NAME_WINDOWS_PREFIX = "Windows";
-    
+
     // System property constants
-    
//-----------------------------------------------------------------------
+    // 
-----------------------------------------------------------------------
     // These MUST be declared first. Other constants depend on this.
-    
+
     /**
      * The System property key for the user home directory.
      */
@@ -58,29 +67,36 @@ public class SystemUtils {
      * The System property key for the user directory.
      */
     private static final String USER_DIR_KEY = "user.dir";
-    
+
     /**
      * The System property key for the Java IO temporary directory.
      */
     private static final String JAVA_IO_TMPDIR_KEY = "java.io.tmpdir";
-    
+
     /**
      * The System property key for the Java home directory.
      */
     private static final String JAVA_HOME_KEY = "java.home";
-    
+
     /**
-     * <p>The <code>awt.toolkit</code> System Property.</p>
-     * <p>Holds a class name, on Windows XP this is 
<code>sun.awt.windows.WToolkit</code>.</p>
-     * <p><b>On platforms without a GUI, this value is 
<code>null</code>.</b></p>
+     * <p>
+     * The <code>awt.toolkit</code> System Property.
+     * </p>
+     * <p>
+     * Holds a class name, on Windows XP this is 
<code>sun.awt.windows.WToolkit</code>.
+     * </p>
+     * <p>
+     * <b>On platforms without a GUI, this value is <code>null</code>.</b>
+     * </p>
      * 
-     * <p>Defaults to <code>null</code> if the runtime does not have
-     * security access to read this property or the property does not 
exist.</p>
+     * <p>
+     * Defaults to <code>null</code> if the runtime does not have security 
access to read this property or the property does not exist.
+     * </p>
      * 
      * <p>
-     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)}
-     * or {@link System#setProperties(java.util.Properties)} is called 
after this class is loaded, the value
-     * will be out of sync with that System property.
+     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)} or
+     * {@link System#setProperties(java.util.Properties)} is called after 
this class is loaded, the value will be out of sync with that
+     * System property.
      * </p>
      * 
      * @since 2.1
@@ -88,16 +104,21 @@ public class SystemUtils {
     public static final String AWT_TOOLKIT = 
getSystemProperty("awt.toolkit");
 
     /**
-     * <p>The <code>file.encoding</code> System Property.</p>
-     * <p>File encoding, such as <code>Cp1252</code>.</p>
+     * <p>
+     * The <code>file.encoding</code> System Property.
+     * </p>
+     * <p>
+     * File encoding, such as <code>Cp1252</code>.
+     * </p>
      * 
-     * <p>Defaults to <code>null</code> if the runtime does not have
-     * security access to read this property or the property does not 
exist.</p>
+     * <p>
+     * Defaults to <code>null</code> if the runtime does not have security 
access to read this property or the property does not exist.
+     * </p>
      * 
      * <p>
-     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)}
-     * or {@link System#setProperties(java.util.Properties)} is called 
after this class is loaded, the value
-     * will be out of sync with that System property.
+     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)} or
+     * {@link System#setProperties(java.util.Properties)} is called after 
this class is loaded, the value will be out of sync with that
+     * System property.
      * </p>
      * 
      * @since 2.0
@@ -106,16 +127,18 @@ public class SystemUtils {
     public static final String FILE_ENCODING = 
getSystemProperty("file.encoding");
 
     /**
-     * <p>The <code>file.separator</code> System Property.
-     * File separator (<code>&quot;/&quot;</code> on UNIX).</p>
-     *
-     * <p>Defaults to <code>null</code> if the runtime does not have
-     * security access to read this property or the property does not 
exist.</p>
+     * <p>
+     * The <code>file.separator</code> System Property. File separator 
(<code>&quot;/&quot;</code> on UNIX).
+     * </p>
      * 
      * <p>
-     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)}
-     * or {@link System#setProperties(java.util.Properties)} is called 
after this class is loaded, the value
-     * will be out of sync with that System property.
+     * Defaults to <code>null</code> if the runtime does not have security 
access to read this property or the property does not exist.
+     * </p>
+     * 
+     * <p>
+     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)} or
+     * {@link System#setProperties(java.util.Properties)} is called after 
this class is loaded, the value will be out of sync with that
+     * System property.
      * </p>
      * 
      * @since Java 1.1
@@ -123,15 +146,18 @@ public class SystemUtils {
     public static final String FILE_SEPARATOR = 
getSystemProperty("file.separator");
 
     /**
-     * <p>The <code>java.awt.fonts</code> System Property.</p>
-     *
-     * <p>Defaults to <code>null</code> if the runtime does not have
-     * security access to read this property or the property does not 
exist.</p>
+     * <p>
+     * The <code>java.awt.fonts</code> System Property.
+     * </p>
+     * 
+     * <p>
+     * Defaults to <code>null</code> if the runtime does not have security 
access to read this property or the property does not exist.
+     * </p>
      * 
      * <p>
-     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)}
-     * or {@link System#setProperties(java.util.Properties)} is called 
after this class is loaded, the value
-     * will be out of sync with that System property.
+     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)} or
+     * {@link System#setProperties(java.util.Properties)} is called after 
this class is loaded, the value will be out of sync with that
+     * System property.
      * </p>
      * 
      * @since 2.1
@@ -139,15 +165,18 @@ public class SystemUtils {
     public static final String JAVA_AWT_FONTS = 
getSystemProperty("java.awt.fonts");
 
     /**
-     * <p>The <code>java.awt.graphicsenv</code> System Property.</p>
-     *
-     * <p>Defaults to <code>null</code> if the runtime does not have
-     * security access to read this property or the property does not 
exist.</p>
+     * <p>
+     * The <code>java.awt.graphicsenv</code> System Property.
+     * </p>
+     * 
+     * <p>
+     * Defaults to <code>null</code> if the runtime does not have security 
access to read this property or the property does not exist.
+     * </p>
      * 
      * <p>
-     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)}
-     * or {@link System#setProperties(java.util.Properties)} is called 
after this class is loaded, the value
-     * will be out of sync with that System property.
+     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)} or
+     * {@link System#setProperties(java.util.Properties)} is called after 
this class is loaded, the value will be out of sync with that
+     * System property.
      * </p>
      * 
      * @since 2.1
@@ -156,17 +185,18 @@ public class SystemUtils {
 
     /**
      * <p>
-     * The <code>java.awt.headless</code> System Property.
-     * The value of this property is the String <code>"true"</code> or 
<code>"false"</code>. 
+     * The <code>java.awt.headless</code> System Property. The value of 
this property is the String <code>"true"</code> or
+     * <code>"false"</code>.
+     * </p>
+     * 
+     * <p>
+     * Defaults to <code>null</code> if the runtime does not have security 
access to read this property or the property does not exist.
      * </p>
-     *
-     * <p>Defaults to <code>null</code> if the runtime does not have
-     * security access to read this property or the property does not 
exist.</p>
      * 
      * <p>
-     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)}
-     * or {@link System#setProperties(java.util.Properties)} is called 
after this class is loaded, the value
-     * will be out of sync with that System property.
+     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)} or
+     * {@link System#setProperties(java.util.Properties)} is called after 
this class is loaded, the value will be out of sync with that
+     * System property.
      * </p>
      * 
      * @see #isJavaAwtHeadless()
@@ -176,15 +206,18 @@ public class SystemUtils {
     public static final String JAVA_AWT_HEADLESS = 
getSystemProperty("java.awt.headless");
 
     /**
-     * <p>The <code>java.awt.printerjob</code> System Property.</p>
-     *
-     * <p>Defaults to <code>null</code> if the runtime does not have
-     * security access to read this property or the property does not 
exist.</p>
+     * <p>
+     * The <code>java.awt.printerjob</code> System Property.
+     * </p>
+     * 
+     * <p>
+     * Defaults to <code>null</code> if the runtime does not have security 
access to read this property or the property does not exist.
+     * </p>
      * 
      * <p>
-     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)}
-     * or {@link System#setProperties(java.util.Properties)} is called 
after this class is loaded, the value
-     * will be out of sync with that System property.
+     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)} or
+     * {@link System#setProperties(java.util.Properties)} is called after 
this class is loaded, the value will be out of sync with that
+     * System property.
      * </p>
      * 
      * @since 2.1
@@ -192,15 +225,18 @@ public class SystemUtils {
     public static final String JAVA_AWT_PRINTERJOB = 
getSystemProperty("java.awt.printerjob");
 
     /**
-     * <p>The <code>java.class.path</code> System Property. Java class 
path.</p>
-     *
-     * <p>Defaults to <code>null</code> if the runtime does not have
-     * security access to read this property or the property does not 
exist.</p>
+     * <p>
+     * The <code>java.class.path</code> System Property. Java class path.
+     * </p>
+     * 
+     * <p>
+     * Defaults to <code>null</code> if the runtime does not have security 
access to read this property or the property does not exist.
+     * </p>
      * 
      * <p>
-     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)}
-     * or {@link System#setProperties(java.util.Properties)} is called 
after this class is loaded, the value
-     * will be out of sync with that System property.
+     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)} or
+     * {@link System#setProperties(java.util.Properties)} is called after 
this class is loaded, the value will be out of sync with that
+     * System property.
      * </p>
      * 
      * @since Java 1.1
@@ -208,16 +244,18 @@ public class SystemUtils {
     public static final String JAVA_CLASS_PATH = 
getSystemProperty("java.class.path");
 
     /**
-     * <p>The <code>java.class.version</code> System Property.
-     * Java class format version number.</p>
-     *
-     * <p>Defaults to <code>null</code> if the runtime does not have
-     * security access to read this property or the property does not 
exist.</p>
+     * <p>
+     * The <code>java.class.version</code> System Property. Java class 
format version number.
+     * </p>
      * 
      * <p>
-     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)}
-     * or {@link System#setProperties(java.util.Properties)} is called 
after this class is loaded, the value
-     * will be out of sync with that System property.
+     * Defaults to <code>null</code> if the runtime does not have security 
access to read this property or the property does not exist.
+     * </p>
+     * 
+     * <p>
+     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)} or
+     * {@link System#setProperties(java.util.Properties)} is called after 
this class is loaded, the value will be out of sync with that
+     * System property.
      * </p>
      * 
      * @since Java 1.1
@@ -225,16 +263,19 @@ public class SystemUtils {
     public static final String JAVA_CLASS_VERSION = 
getSystemProperty("java.class.version");
 
     /**
-     * <p>The <code>java.compiler</code> System Property. Name of JIT 
compiler to use.
-     * First in JDK version 1.2. Not used in Sun JDKs after 1.2.</p>
-     *
-     * <p>Defaults to <code>null</code> if the runtime does not have
-     * security access to read this property or the property does not 
exist.</p>
+     * <p>
+     * The <code>java.compiler</code> System Property. Name of JIT compiler 
to use. First in JDK version 1.2. Not used in Sun JDKs after
+     * 1.2.
+     * </p>
+     * 
+     * <p>
+     * Defaults to <code>null</code> if the runtime does not have security 
access to read this property or the property does not exist.
+     * </p>
      * 
      * <p>
-     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)}
-     * or {@link System#setProperties(java.util.Properties)} is called 
after this class is loaded, the value
-     * will be out of sync with that System property.
+     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)} or
+     * {@link System#setProperties(java.util.Properties)} is called after 
this class is loaded, the value will be out of sync with that
+     * System property.
      * </p>
      * 
      * @since Java 1.2. Not used in Sun versions after 1.2.
@@ -242,16 +283,18 @@ public class SystemUtils {
     public static final String JAVA_COMPILER = 
getSystemProperty("java.compiler");
 
     /**
-     * <p>The <code>java.endorsed.dirs</code> System Property. Path of 
endorsed directory
-     * or directories.</p>
-     *
-     * <p>Defaults to <code>null</code> if the runtime does not have
-     * security access to read this property or the property does not 
exist.</p>
+     * <p>
+     * The <code>java.endorsed.dirs</code> System Property. Path of 
endorsed directory or directories.
+     * </p>
+     * 
+     * <p>
+     * Defaults to <code>null</code> if the runtime does not have security 
access to read this property or the property does not exist.
+     * </p>
      * 
      * <p>
-     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)}
-     * or {@link System#setProperties(java.util.Properties)} is called 
after this class is loaded, the value
-     * will be out of sync with that System property.
+     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)} or
+     * {@link System#setProperties(java.util.Properties)} is called after 
this class is loaded, the value will be out of sync with that
+     * System property.
      * </p>
      * 
      * @since Java 1.4
@@ -259,16 +302,18 @@ public class SystemUtils {
     public static final String JAVA_ENDORSED_DIRS = 
getSystemProperty("java.endorsed.dirs");
 
     /**
-     * <p>The <code>java.ext.dirs</code> System Property. Path of extension 
directory
-     * or directories.</p>
-     *
-     * <p>Defaults to <code>null</code> if the runtime does not have
-     * security access to read this property or the property does not 
exist.</p>
+     * <p>
+     * The <code>java.ext.dirs</code> System Property. Path of extension 
directory or directories.
+     * </p>
+     * 
+     * <p>
+     * Defaults to <code>null</code> if the runtime does not have security 
access to read this property or the property does not exist.
+     * </p>
      * 
      * <p>
-     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)}
-     * or {@link System#setProperties(java.util.Properties)} is called 
after this class is loaded, the value
-     * will be out of sync with that System property.
+     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)} or
+     * {@link System#setProperties(java.util.Properties)} is called after 
this class is loaded, the value will be out of sync with that
+     * System property.
      * </p>
      * 
      * @since Java 1.3
@@ -276,15 +321,18 @@ public class SystemUtils {
     public static final String JAVA_EXT_DIRS = 
getSystemProperty("java.ext.dirs");
 
     /**
-     * <p>The <code>java.home</code> System Property. Java installation 
directory.</p>
-     *
-     * <p>Defaults to <code>null</code> if the runtime does not have
-     * security access to read this property or the property does not 
exist.</p>
+     * <p>
+     * The <code>java.home</code> System Property. Java installation 
directory.
+     * </p>
      * 
      * <p>
-     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)}
-     * or {@link System#setProperties(java.util.Properties)} is called 
after this class is loaded, the value
-     * will be out of sync with that System property.
+     * Defaults to <code>null</code> if the runtime does not have security 
access to read this property or the property does not exist.
+     * </p>
+     * 
+     * <p>
+     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)} or
+     * {@link System#setProperties(java.util.Properties)} is called after 
this class is loaded, the value will be out of sync with that
+     * System property.
      * </p>
      * 
      * @since Java 1.1
@@ -292,15 +340,18 @@ public class SystemUtils {
     public static final String JAVA_HOME = 
getSystemProperty(JAVA_HOME_KEY);
 
     /**
-     * <p>The <code>java.io.tmpdir</code> System Property. Default temp 
file path.</p>
-     *
-     * <p>Defaults to <code>null</code> if the runtime does not have
-     * security access to read this property or the property does not 
exist.</p>
+     * <p>
+     * The <code>java.io.tmpdir</code> System Property. Default temp file 
path.
+     * </p>
+     * 
+     * <p>
+     * Defaults to <code>null</code> if the runtime does not have security 
access to read this property or the property does not exist.
+     * </p>
      * 
      * <p>
-     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)}
-     * or {@link System#setProperties(java.util.Properties)} is called 
after this class is loaded, the value
-     * will be out of sync with that System property.
+     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)} or
+     * {@link System#setProperties(java.util.Properties)} is called after 
this class is loaded, the value will be out of sync with that
+     * System property.
      * </p>
      * 
      * @since Java 1.2
@@ -308,16 +359,18 @@ public class SystemUtils {
     public static final String JAVA_IO_TMPDIR = 
getSystemProperty(JAVA_IO_TMPDIR_KEY);
 
     /**
-     * <p>The <code>java.library.path</code> System Property. List of paths 
to search
-     * when loading libraries.</p>
-     *
-     * <p>Defaults to <code>null</code> if the runtime does not have
-     * security access to read this property or the property does not 
exist.</p>
+     * <p>
+     * The <code>java.library.path</code> System Property. List of paths to 
search when loading libraries.
+     * </p>
+     * 
+     * <p>
+     * Defaults to <code>null</code> if the runtime does not have security 
access to read this property or the property does not exist.
+     * </p>
      * 
      * <p>
-     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)}
-     * or {@link System#setProperties(java.util.Properties)} is called 
after this class is loaded, the value
-     * will be out of sync with that System property.
+     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)} or
+     * {@link System#setProperties(java.util.Properties)} is called after 
this class is loaded, the value will be out of sync with that
+     * System property.
      * </p>
      * 
      * @since Java 1.2
@@ -325,16 +378,18 @@ public class SystemUtils {
     public static final String JAVA_LIBRARY_PATH = 
getSystemProperty("java.library.path");
 
     /**
-     * <p>The <code>java.runtime.name</code> System Property. Java Runtime 
Environment
-     * name.</p>
-     *
-     * <p>Defaults to <code>null</code> if the runtime does not have
-     * security access to read this property or the property does not 
exist.</p>
+     * <p>
+     * The <code>java.runtime.name</code> System Property. Java Runtime 
Environment name.
+     * </p>
+     * 
+     * <p>
+     * Defaults to <code>null</code> if the runtime does not have security 
access to read this property or the property does not exist.
+     * </p>
      * 
      * <p>
-     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)}
-     * or {@link System#setProperties(java.util.Properties)} is called 
after this class is loaded, the value
-     * will be out of sync with that System property.
+     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)} or
+     * {@link System#setProperties(java.util.Properties)} is called after 
this class is loaded, the value will be out of sync with that
+     * System property.
      * </p>
      * 
      * @since 2.0
@@ -343,16 +398,18 @@ public class SystemUtils {
     public static final String JAVA_RUNTIME_NAME = 
getSystemProperty("java.runtime.name");
 
     /**
-     * <p>The <code>java.runtime.version</code> System Property. Java 
Runtime Environment
-     * version.</p>
-     *
-     * <p>Defaults to <code>null</code> if the runtime does not have
-     * security access to read this property or the property does not 
exist.</p>
+     * <p>
+     * The <code>java.runtime.version</code> System Property. Java Runtime 
Environment version.
+     * </p>
      * 
      * <p>
-     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)}
-     * or {@link System#setProperties(java.util.Properties)} is called 
after this class is loaded, the value
-     * will be out of sync with that System property.
+     * Defaults to <code>null</code> if the runtime does not have security 
access to read this property or the property does not exist.
+     * </p>
+     * 
+     * <p>
+     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)} or
+     * {@link System#setProperties(java.util.Properties)} is called after 
this class is loaded, the value will be out of sync with that
+     * System property.
      * </p>
      * 
      * @since 2.0
@@ -361,16 +418,18 @@ public class SystemUtils {
     public static final String JAVA_RUNTIME_VERSION = 
getSystemProperty("java.runtime.version");
 
     /**
-     * <p>The <code>java.specification.name</code> System Property. Java 
Runtime Environment
-     * specification name.</p>
-     *
-     * <p>Defaults to <code>null</code> if the runtime does not have
-     * security access to read this property or the property does not 
exist.</p>
+     * <p>
+     * The <code>java.specification.name</code> System Property. Java 
Runtime Environment specification name.
+     * </p>
+     * 
+     * <p>
+     * Defaults to <code>null</code> if the runtime does not have security 
access to read this property or the property does not exist.
+     * </p>
      * 
      * <p>
-     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)}
-     * or {@link System#setProperties(java.util.Properties)} is called 
after this class is loaded, the value
-     * will be out of sync with that System property.
+     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)} or
+     * {@link System#setProperties(java.util.Properties)} is called after 
this class is loaded, the value will be out of sync with that
+     * System property.
      * </p>
      * 
      * @since Java 1.2
@@ -378,16 +437,18 @@ public class SystemUtils {
     public static final String JAVA_SPECIFICATION_NAME = 
getSystemProperty("java.specification.name");
 
     /**
-     * <p>The <code>java.specification.vendor</code> System Property. Java 
Runtime Environment
-     * specification vendor.</p>
-     *
-     * <p>Defaults to <code>null</code> if the runtime does not have
-     * security access to read this property or the property does not 
exist.</p>
+     * <p>
+     * The <code>java.specification.vendor</code> System Property. Java 
Runtime Environment specification vendor.
+     * </p>
+     * 
+     * <p>
+     * Defaults to <code>null</code> if the runtime does not have security 
access to read this property or the property does not exist.
+     * </p>
      * 
      * <p>
-     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)}
-     * or {@link System#setProperties(java.util.Properties)} is called 
after this class is loaded, the value
-     * will be out of sync with that System property.
+     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)} or
+     * {@link System#setProperties(java.util.Properties)} is called after 
this class is loaded, the value will be out of sync with that
+     * System property.
      * </p>
      * 
      * @since Java 1.2
@@ -395,16 +456,18 @@ public class SystemUtils {
     public static final String JAVA_SPECIFICATION_VENDOR = 
getSystemProperty("java.specification.vendor");
 
     /**
-     * <p>The <code>java.specification.version</code> System Property. Java 
Runtime Environment
-     * specification version.</p>
-     *
-     * <p>Defaults to <code>null</code> if the runtime does not have
-     * security access to read this property or the property does not 
exist.</p>
+     * <p>
+     * The <code>java.specification.version</code> System Property. Java 
Runtime Environment specification version.
+     * </p>
+     * 
+     * <p>
+     * Defaults to <code>null</code> if the runtime does not have security 
access to read this property or the property does not exist.
+     * </p>
      * 
      * <p>
-     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)}
-     * or {@link System#setProperties(java.util.Properties)} is called 
after this class is loaded, the value
-     * will be out of sync with that System property.
+     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)} or
+     * {@link System#setProperties(java.util.Properties)} is called after 
this class is loaded, the value will be out of sync with that
+     * System property.
      * </p>
      * 
      * @since Java 1.3
@@ -412,33 +475,38 @@ public class SystemUtils {
     public static final String JAVA_SPECIFICATION_VERSION = 
getSystemProperty("java.specification.version");
 
     /**
-     * <p>The <code>java.util.prefs.PreferencesFactory</code> System 
Property. A class name.</p>
-     *
-     * <p>Defaults to <code>null</code> if the runtime does not have
-     * security access to read this property or the property does not 
exist.</p>
+     * <p>
+     * The <code>java.util.prefs.PreferencesFactory</code> System Property. 
A class name.
+     * </p>
      * 
      * <p>
-     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)}
-     * or {@link System#setProperties(java.util.Properties)} is called 
after this class is loaded, the value
-     * will be out of sync with that System property.
+     * Defaults to <code>null</code> if the runtime does not have security 
access to read this property or the property does not exist.
+     * </p>
+     * 
+     * <p>
+     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)} or
+     * {@link System#setProperties(java.util.Properties)} is called after 
this class is loaded, the value will be out of sync with that
+     * System property.
      * </p>
      * 
      * @since 2.1
      * @since Java 1.4
      */
-    public static final String JAVA_UTIL_PREFS_PREFERENCES_FACTORY = 
-        getSystemProperty("java.util.prefs.PreferencesFactory");
+    public static final String JAVA_UTIL_PREFS_PREFERENCES_FACTORY = 
getSystemProperty("java.util.prefs.PreferencesFactory");
 
     /**
-     * <p>The <code>java.vendor</code> System Property. Java vendor-
specific string.</p>
-     *
-     * <p>Defaults to <code>null</code> if the runtime does not have
-     * security access to read this property or the property does not 
exist.</p>
+     * <p>
+     * The <code>java.vendor</code> System Property. Java vendor-specific 
string.
+     * </p>
+     * 
+     * <p>
+     * Defaults to <code>null</code> if the runtime does not have security 
access to read this property or the property does not exist.
+     * </p>
      * 
      * <p>
-     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)}
-     * or {@link System#setProperties(java.util.Properties)} is called 
after this class is loaded, the value
-     * will be out of sync with that System property.
+     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)} or
+     * {@link System#setProperties(java.util.Properties)} is called after 
this class is loaded, the value will be out of sync with that
+     * System property.
      * </p>
      * 
      * @since Java 1.1
@@ -446,31 +514,37 @@ public class SystemUtils {
     public static final String JAVA_VENDOR = 
getSystemProperty("java.vendor");
 
     /**
-     * <p>The <code>java.vendor.url</code> System Property. Java vendor 
URL.</p>
-     *
-     * <p>Defaults to <code>null</code> if the runtime does not have
-     * security access to read this property or the property does not 
exist.</p>
+     * <p>
+     * The <code>java.vendor.url</code> System Property. Java vendor URL.
+     * </p>
+     * 
+     * <p>
+     * Defaults to <code>null</code> if the runtime does not have security 
access to read this property or the property does not exist.
+     * </p>
      * 
      * <p>
-     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)}
-     * or {@link System#setProperties(java.util.Properties)} is called 
after this class is loaded, the value
-     * will be out of sync with that System property.
+     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)} or
+     * {@link System#setProperties(java.util.Properties)} is called after 
this class is loaded, the value will be out of sync with that
+     * System property.
      * </p>
      * 
      * @since Java 1.1
-    */
+     */
     public static final String JAVA_VENDOR_URL = 
getSystemProperty("java.vendor.url");
 
     /**
-     * <p>The <code>java.version</code> System Property. Java version 
number.</p>
-     *
-     * <p>Defaults to <code>null</code> if the runtime does not have
-     * security access to read this property or the property does not 
exist.</p>
+     * <p>
+     * The <code>java.version</code> System Property. Java version number.
+     * </p>
      * 
      * <p>
-     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)}
-     * or {@link System#setProperties(java.util.Properties)} is called 
after this class is loaded, the value
-     * will be out of sync with that System property.
+     * Defaults to <code>null</code> if the runtime does not have security 
access to read this property or the property does not exist.
+     * </p>
+     * 
+     * <p>
+     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)} or
+     * {@link System#setProperties(java.util.Properties)} is called after 
this class is loaded, the value will be out of sync with that
+     * System property.
      * </p>
      * 
      * @since Java 1.1
@@ -478,16 +552,18 @@ public class SystemUtils {
     public static final String JAVA_VERSION = 
getSystemProperty("java.version");
 
     /**
-     * <p>The <code>java.vm.info</code> System Property. Java Virtual 
Machine implementation
-     * info.</p>
-     *
-     * <p>Defaults to <code>null</code> if the runtime does not have
-     * security access to read this property or the property does not 
exist.</p>
+     * <p>
+     * The <code>java.vm.info</code> System Property. Java Virtual Machine 
implementation info.
+     * </p>
+     * 
+     * <p>
+     * Defaults to <code>null</code> if the runtime does not have security 
access to read this property or the property does not exist.
+     * </p>
      * 
      * <p>
-     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)}
-     * or {@link System#setProperties(java.util.Properties)} is called 
after this class is loaded, the value
-     * will be out of sync with that System property.
+     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)} or
+     * {@link System#setProperties(java.util.Properties)} is called after 
this class is loaded, the value will be out of sync with that
+     * System property.
      * </p>
      * 
      * @since 2.0
@@ -496,16 +572,18 @@ public class SystemUtils {
     public static final String JAVA_VM_INFO = 
getSystemProperty("java.vm.info");
 
     /**
-     * <p>The <code>java.vm.name</code> System Property. Java Virtual 
Machine implementation
-     * name.</p>
-     *
-     * <p>Defaults to <code>null</code> if the runtime does not have
-     * security access to read this property or the property does not 
exist.</p>
+     * <p>
+     * The <code>java.vm.name</code> System Property. Java Virtual Machine 
implementation name.
+     * </p>
+     * 
+     * <p>
+     * Defaults to <code>null</code> if the runtime does not have security 
access to read this property or the property does not exist.
+     * </p>
      * 
      * <p>
-     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)}
-     * or {@link System#setProperties(java.util.Properties)} is called 
after this class is loaded, the value
-     * will be out of sync with that System property.
+     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)} or
+     * {@link System#setProperties(java.util.Properties)} is called after 
this class is loaded, the value will be out of sync with that
+     * System property.
      * </p>
      * 
      * @since Java 1.2
@@ -513,16 +591,18 @@ public class SystemUtils {
     public static final String JAVA_VM_NAME = 
getSystemProperty("java.vm.name");
 
     /**
-     * <p>The <code>java.vm.specification.name</code> System Property. Java 
Virtual Machine
-     * specification name.</p>
-     *
-     * <p>Defaults to <code>null</code> if the runtime does not have
-     * security access to read this property or the property does not 
exist.</p>
+     * <p>
+     * The <code>java.vm.specification.name</code> System Property. Java 
Virtual Machine specification name.
+     * </p>
+     * 
+     * <p>
+     * Defaults to <code>null</code> if the runtime does not have security 
access to read this property or the property does not exist.
+     * </p>
      * 
      * <p>
-     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)}
-     * or {@link System#setProperties(java.util.Properties)} is called 
after this class is loaded, the value
-     * will be out of sync with that System property.
+     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)} or
+     * {@link System#setProperties(java.util.Properties)} is called after 
this class is loaded, the value will be out of sync with that
+     * System property.
      * </p>
      * 
      * @since Java 1.2
@@ -530,16 +610,18 @@ public class SystemUtils {
     public static final String JAVA_VM_SPECIFICATION_NAME = 
getSystemProperty("java.vm.specification.name");
 
     /**
-     * <p>The <code>java.vm.specification.vendor</code> System Property. 
Java Virtual
-     * Machine specification vendor.</p>
-     *
-     * <p>Defaults to <code>null</code> if the runtime does not have
-     * security access to read this property or the property does not 
exist.</p>
+     * <p>
+     * The <code>java.vm.specification.vendor</code> System Property. Java 
Virtual Machine specification vendor.
+     * </p>
      * 
      * <p>
-     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)}
-     * or {@link System#setProperties(java.util.Properties)} is called 
after this class is loaded, the value
-     * will be out of sync with that System property.
+     * Defaults to <code>null</code> if the runtime does not have security 
access to read this property or the property does not exist.
+     * </p>
+     * 
+     * <p>
+     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)} or
+     * {@link System#setProperties(java.util.Properties)} is called after 
this class is loaded, the value will be out of sync with that
+     * System property.
      * </p>
      * 
      * @since Java 1.2
@@ -547,16 +629,18 @@ public class SystemUtils {
     public static final String JAVA_VM_SPECIFICATION_VENDOR = 
getSystemProperty("java.vm.specification.vendor");
 
     /**
-     * <p>The <code>java.vm.specification.version</code> System Property. 
Java Virtual Machine
-     * specification version.</p>
-     *
-     * <p>Defaults to <code>null</code> if the runtime does not have
-     * security access to read this property or the property does not 
exist.</p>
+     * <p>
+     * The <code>java.vm.specification.version</code> System Property. Java 
Virtual Machine specification version.
+     * </p>
+     * 
+     * <p>
+     * Defaults to <code>null</code> if the runtime does not have security 
access to read this property or the property does not exist.
+     * </p>
      * 
      * <p>
-     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)}
-     * or {@link System#setProperties(java.util.Properties)} is called 
after this class is loaded, the value
-     * will be out of sync with that System property.
+     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)} or
+     * {@link System#setProperties(java.util.Properties)} is called after 
this class is loaded, the value will be out of sync with that
+     * System property.
      * </p>
      * 
      * @since Java 1.2
@@ -564,16 +648,18 @@ public class SystemUtils {
     public static final String JAVA_VM_SPECIFICATION_VERSION = 
getSystemProperty("java.vm.specification.version");
 
     /**
-     * <p>The <code>java.vm.vendor</code> System Property. Java Virtual 
Machine implementation
-     * vendor.</p>
-     *
-     * <p>Defaults to <code>null</code> if the runtime does not have
-     * security access to read this property or the property does not 
exist.</p>
+     * <p>
+     * The <code>java.vm.vendor</code> System Property. Java Virtual 
Machine implementation vendor.
+     * </p>
+     * 
+     * <p>
+     * Defaults to <code>null</code> if the runtime does not have security 
access to read this property or the property does not exist.
+     * </p>
      * 
      * <p>
-     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)}
-     * or {@link System#setProperties(java.util.Properties)} is called 
after this class is loaded, the value
-     * will be out of sync with that System property.
+     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)} or
+     * {@link System#setProperties(java.util.Properties)} is called after 
this class is loaded, the value will be out of sync with that
+     * System property.
      * </p>
      * 
      * @since Java 1.2
@@ -581,16 +667,18 @@ public class SystemUtils {
     public static final String JAVA_VM_VENDOR = 
getSystemProperty("java.vm.vendor");
 
     /**
-     * <p>The <code>java.vm.version</code> System Property. Java Virtual 
Machine
-     * implementation version.</p>
-     *
-     * <p>Defaults to <code>null</code> if the runtime does not have
-     * security access to read this property or the property does not 
exist.</p>
+     * <p>
+     * The <code>java.vm.version</code> System Property. Java Virtual 
Machine implementation version.
+     * </p>
+     * 
+     * <p>
+     * Defaults to <code>null</code> if the runtime does not have security 
access to read this property or the property does not exist.
+     * </p>
      * 
      * <p>
-     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)}
-     * or {@link System#setProperties(java.util.Properties)} is called 
after this class is loaded, the value
-     * will be out of sync with that System property.
+     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)} or
+     * {@link System#setProperties(java.util.Properties)} is called after 
this class is loaded, the value will be out of sync with that
+     * System property.
      * </p>
      * 
      * @since Java 1.2
@@ -598,16 +686,18 @@ public class SystemUtils {
     public static final String JAVA_VM_VERSION = 
getSystemProperty("java.vm.version");
 
     /**
-     * <p>The <code>line.separator</code> System Property. Line separator
-     * (<code>&quot;\n&quot;</code> on UNIX).</p>
-     *
-     * <p>Defaults to <code>null</code> if the runtime does not have
-     * security access to read this property or the property does not 
exist.</p>
+     * <p>
+     * The <code>line.separator</code> System Property. Line separator 
(<code>&quot;\n&quot;</code> on UNIX).
+     * </p>
      * 
      * <p>
-     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)}
-     * or {@link System#setProperties(java.util.Properties)} is called 
after this class is loaded, the value
-     * will be out of sync with that System property.
+     * Defaults to <code>null</code> if the runtime does not have security 
access to read this property or the property does not exist.
+     * </p>
+     * 
+     * <p>
+     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)} or
+     * {@link System#setProperties(java.util.Properties)} is called after 
this class is loaded, the value will be out of sync with that
+     * System property.
      * </p>
      * 
      * @since Java 1.1
@@ -615,15 +705,18 @@ public class SystemUtils {
     public static final String LINE_SEPARATOR = 
getSystemProperty("line.separator");
 
     /**
-     * <p>The <code>os.arch</code> System Property. Operating system 
architecture.</p>
-     *
-     * <p>Defaults to <code>null</code> if the runtime does not have
-     * security access to read this property or the property does not 
exist.</p>
+     * <p>
+     * The <code>os.arch</code> System Property. Operating system 
architecture.
+     * </p>
+     * 
+     * <p>
+     * Defaults to <code>null</code> if the runtime does not have security 
access to read this property or the property does not exist.
+     * </p>
      * 
      * <p>
-     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)}
-     * or {@link System#setProperties(java.util.Properties)} is called 
after this class is loaded, the value
-     * will be out of sync with that System property.
+     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)} or
+     * {@link System#setProperties(java.util.Properties)} is called after 
this class is loaded, the value will be out of sync with that
+     * System property.
      * </p>
      * 
      * @since Java 1.1
@@ -631,15 +724,18 @@ public class SystemUtils {
     public static final String OS_ARCH = getSystemProperty("os.arch");
 
     /**
-     * <p>The <code>os.name</code> System Property. Operating system 
name.</p>
-     *
-     * <p>Defaults to <code>null</code> if the runtime does not have
-     * security access to read this property or the property does not 
exist.</p>
+     * <p>
+     * The <code>os.name</code> System Property. Operating system name.
+     * </p>
+     * 
+     * <p>
+     * Defaults to <code>null</code> if the runtime does not have security 
access to read this property or the property does not exist.
+     * </p>
      * 
      * <p>
-     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)}
-     * or {@link System#setProperties(java.util.Properties)} is called 
after this class is loaded, the value
-     * will be out of sync with that System property.
+     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)} or
+     * {@link System#setProperties(java.util.Properties)} is called after 
this class is loaded, the value will be out of sync with that
+     * System property.
      * </p>
      * 
      * @since Java 1.1
@@ -647,15 +743,18 @@ public class SystemUtils {
     public static final String OS_NAME = getSystemProperty("os.name");
 
     /**
-     * <p>The <code>os.version</code> System Property. Operating system 
version.</p>
-     *
-     * <p>Defaults to <code>null</code> if the runtime does not have
-     * security access to read this property or the property does not 
exist.</p>
+     * <p>
+     * The <code>os.version</code> System Property. Operating system 
version.
+     * </p>
+     * 
+     * <p>
+     * Defaults to <code>null</code> if the runtime does not have security 
access to read this property or the property does not exist.
+     * </p>
      * 
      * <p>
-     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)}
-     * or {@link System#setProperties(java.util.Properties)} is called 
after this class is loaded, the value
-     * will be out of sync with that System property.
+     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)} or
+     * {@link System#setProperties(java.util.Properties)} is called after 
this class is loaded, the value will be out of sync with that
+     * System property.
      * </p>
      * 
      * @since Java 1.1
@@ -663,16 +762,18 @@ public class SystemUtils {
     public static final String OS_VERSION = 
getSystemProperty("os.version");
 
     /**
-     * <p>The <code>path.separator</code> System Property. Path separator
-     * (<code>&quot;:&quot;</code> on UNIX).</p>
-     *
-     * <p>Defaults to <code>null</code> if the runtime does not have
-     * security access to read this property or the property does not 
exist.</p>
+     * <p>
+     * The <code>path.separator</code> System Property. Path separator 
(<code>&quot;:&quot;</code> on UNIX).
+     * </p>
      * 
      * <p>
-     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)}
-     * or {@link System#setProperties(java.util.Properties)} is called 
after this class is loaded, the value
-     * will be out of sync with that System property.
+     * Defaults to <code>null</code> if the runtime does not have security 
access to read this property or the property does not exist.
+     * </p>
+     * 
+     * <p>
+     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)} or
+     * {@link System#setProperties(java.util.Properties)} is called after 
this class is loaded, the value will be out of sync with that
+     * System property.
      * </p>
      * 
      * @since Java 1.1
@@ -680,37 +781,40 @@ public class SystemUtils {
     public static final String PATH_SEPARATOR = 
getSystemProperty("path.separator");
 
     /**
-     * <p>The <code>user.country</code> or <code>user.region</code> System 
Property.
-     * User's country code, such as <code>GB</code>. First in JDK version 
1.2 as
-     * <code>user.region</code>. Renamed to <code>user.country</code> in 
1.4</p>
-     *
-     * <p>Defaults to <code>null</code> if the runtime does not have
-     * security access to read this property or the property does not 
exist.</p>
+     * <p>
+     * The <code>user.country</code> or <code>user.region</code> System 
Property. User's country code, such as <code>GB</code>. First in
+     * Java version 1.2 as <code>user.region</code>. Renamed to 
<code>user.country</code> in 1.4
+     * </p>
+     * 
+     * <p>
+     * Defaults to <code>null</code> if the runtime does not have security 
access to read this property or the property does not exist.
+     * </p>
      * 
      * <p>
-     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)}
-     * or {@link System#setProperties(java.util.Properties)} is called 
after this class is loaded, the value
-     * will be out of sync with that System property.
+     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)} or
+     * {@link System#setProperties(java.util.Properties)} is called after 
this class is loaded, the value will be out of sync with that
+     * System property.
      * </p>
      * 
      * @since 2.0
      * @since Java 1.2
      */
-    public static final String USER_COUNTRY = 
-        getSystemProperty("user.country") == null ?
-            getSystemProperty("user.region") : 
getSystemProperty("user.country");
+    public static final String USER_COUNTRY = 
getSystemProperty("user.country") == null ? getSystemProperty("user.region")
+            : getSystemProperty("user.country");
 
     /**
-     * <p>The <code>user.dir</code> System Property. User's current working
-     * directory.</p>
-     *
-     * <p>Defaults to <code>null</code> if the runtime does not have
-     * security access to read this property or the property does not 
exist.</p>
+     * <p>
+     * The <code>user.dir</code> System Property. User's current working 
directory.
+     * </p>
+     * 
+     * <p>
+     * Defaults to <code>null</code> if the runtime does not have security 
access to read this property or the property does not exist.
+     * </p>
      * 
      * <p>
-     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)}
-     * or {@link System#setProperties(java.util.Properties)} is called 
after this class is loaded, the value
-     * will be out of sync with that System property.
+     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)} or
+     * {@link System#setProperties(java.util.Properties)} is called after 
this class is loaded, the value will be out of sync with that
+     * System property.
      * </p>
      * 
      * @since Java 1.1
@@ -718,15 +822,18 @@ public class SystemUtils {
     public static final String USER_DIR = getSystemProperty(USER_DIR_KEY);
 
     /**
-     * <p>The <code>user.home</code> System Property. User's home 
directory.</p>
-     *
-     * <p>Defaults to <code>null</code> if the runtime does not have
-     * security access to read this property or the property does not 
exist.</p>
+     * <p>
+     * The <code>user.home</code> System Property. User's home directory.
+     * </p>
+     * 
+     * <p>
+     * Defaults to <code>null</code> if the runtime does not have security 
access to read this property or the property does not exist.
+     * </p>
      * 
      * <p>
-     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)}
-     * or {@link System#setProperties(java.util.Properties)} is called 
after this class is loaded, the value
-     * will be out of sync with that System property.
+     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)} or
+     * {@link System#setProperties(java.util.Properties)} is called after 
this class is loaded, the value will be out of sync with that
+     * System property.
      * </p>
      * 
      * @since Java 1.1
@@ -734,16 +841,18 @@ public class SystemUtils {
     public static final String USER_HOME = 
getSystemProperty(USER_HOME_KEY);
 
     /**
-     * <p>The <code>user.language</code> System Property. User's language 
code,
-     * such as <code>"en"</code>.</p>
-     *
-     * <p>Defaults to <code>null</code> if the runtime does not have
-     * security access to read this property or the property does not 
exist.</p>
+     * <p>
+     * The <code>user.language</code> System Property. User's language 
code, such as <code>"en"</code>.
+     * </p>
      * 
      * <p>
-     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)}
-     * or {@link System#setProperties(java.util.Properties)} is called 
after this class is loaded, the value
-     * will be out of sync with that System property.
+     * Defaults to <code>null</code> if the runtime does not have security 
access to read this property or the property does not exist.
+     * </p>
+     * 
+     * <p>
+     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)} or
+     * {@link System#setProperties(java.util.Properties)} is called after 
this class is loaded, the value will be out of sync with that
+     * System property.
      * </p>
      * 
      * @since 2.0
@@ -752,15 +861,18 @@ public class SystemUtils {
     public static final String USER_LANGUAGE = 
getSystemProperty("user.language");
 
     /**
-     * <p>The <code>user.name</code> System Property. User's account 
name.</p>
-     *
-     * <p>Defaults to <code>null</code> if the runtime does not have
-     * security access to read this property or the property does not 
exist.</p>
+     * <p>
+     * The <code>user.name</code> System Property. User's account name.
+     * </p>
+     * 
+     * <p>
+     * Defaults to <code>null</code> if the runtime does not have security 
access to read this property or the property does not exist.
+     * </p>
      * 
      * <p>
-     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)}
-     * or {@link System#setProperties(java.util.Properties)} is called 
after this class is loaded, the value
-     * will be out of sync with that System property.
+     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)} or
+     * {@link System#setProperties(java.util.Properties)} is called after 
this class is loaded, the value will be out of sync with that
+     * System property.
      * </p>
      * 
      * @since Java 1.1
@@ -768,16 +880,18 @@ public class SystemUtils {
     public static final String USER_NAME = getSystemProperty("user.name");
 
     /**
-     * <p>The <code>user.timezone</code> System Property. 
-     * For example: <code>"America/Los_Angeles"</code>.</p>
-     *
-     * <p>Defaults to <code>null</code> if the runtime does not have
-     * security access to read this property or the property does not 
exist.</p>
+     * <p>
+     * The <code>user.timezone</code> System Property. For example: 
<code>"America/Los_Angeles"</code>.
+     * </p>
+     * 
+     * <p>
+     * Defaults to <code>null</code> if the runtime does not have security 
access to read this property or the property does not exist.
+     * </p>
      * 
      * <p>
-     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)}
-     * or {@link System#setProperties(java.util.Properties)} is called 
after this class is loaded, the value
-     * will be out of sync with that System property.
+     * This value is initialized when the class is loaded. If {@link 
System#setProperty(String,String)} or
+     * {@link System#setProperties(java.util.Properties)} is called after 
this class is loaded, the value will be out of sync with that
+     * System property.
      * </p>
      * 
      * @since 2.1
@@ -785,119 +899,156 @@ public class SystemUtils {
     public static final String USER_TIMEZONE = 
getSystemProperty("user.timezone");
 
     // Java version
-    
//-----------------------------------------------------------------------
+    // 
-----------------------------------------------------------------------
     // This MUST be declared after those above as it depends on the
     // values being set up
 
     /**
-     * <p>Gets the Java version as a <code>String</code> trimming leading 
letters.</p>
-     *
-     * <p>The field will return <code>null</code> if {@link #JAVA_VERSION} 
is <code>null</code>.</p>
+     * <p>
+     * Gets the Java version as a <code>String</code> trimming leading 
letters.
+     * </p>
+     * 
+     * <p>
+     * The field will return <code>null</code> if {@link #JAVA_VERSION} is 
<code>null</code>.
+     * </p>
      * 
      * @since 2.1
      */
     public static final String JAVA_VERSION_TRIMMED = 
getJavaVersionTrimmed();
 
     // Java version values
-    
//-----------------------------------------------------------------------
+    // 
-----------------------------------------------------------------------
     // These MUST be declared after the trim above as they depend on the
     // value being set up
 
     /**
-     * <p>Gets the Java version as a <code>float</code>.</p>
-     *
-     * <p>Example return values:</p>
+     * <p>
+     * Gets the Java version as a <code>float</code>.
+     * </p>
+     * 
+     * <p>
+     * Example return values:
+     * </p>
      * <ul>
-     *  <li><code>1.2f</code> for JDK 1.2
-     *  <li><code>1.31f</code> for JDK 1.3.1
+     * <li><code>1.2f</code> for Java 1.2
+     * <li><code>1.31f</code> for Java 1.3.1
      * </ul>
-     *
-     * <p>The field will return zero if {@link #JAVA_VERSION} is 
<code>null</code>.</p>
+     * 
+     * <p>
+     * The field will return zero if {@link #JAVA_VERSION} is 
<code>null</code>.
+     * </p>
      * 
      * @since 2.0
      */
     public static final float JAVA_VERSION_FLOAT = getJavaVersionAsFloat();
 
     /**
-     * <p>Gets the Java version as an <code>int</code>.</p>
-     *
-     * <p>Example return values:</p>
+     * <p>
+     * Gets the Java version as an <code>int</code>.
+     * </p>
+     * 
+     * <p>
+     * Example return values:
+     * </p>
      * <ul>
-     *  <li><code>120</code> for JDK 1.2
-     *  <li><code>131</code> for JDK 1.3.1
+     * <li><code>120</code> for Java 1.2
+     * <li><code>131</code> for Java 1.3.1
      * </ul>
-     *
-     * <p>The field will return zero if {@link #JAVA_VERSION} is 
<code>null</code>.</p>
+     * 
+     * <p>
+     * The field will return zero if {@link #JAVA_VERSION} is 
<code>null</code>.
+     * </p>
      * 
      * @since 2.0
      */
     public static final int JAVA_VERSION_INT = getJavaVersionAsInt();
 
     // Java version checks
-    
//-----------------------------------------------------------------------
+    // 
-----------------------------------------------------------------------
     // These MUST be declared after those above as they depend on the
     // values being set up
-    
+
     /**
-     * <p>Is <code>true</code> if this is Java version 1.1 (also 1.1.x 
versions).</p>
-     *
-     * <p>The field will return <code>false</code> if {@link #JAVA_VERSION} 
is
-     * <code>null</code>.</p>
+     * <p>
+     * Is <code>true</code> if this is Java version 1.1 (also 1.1.x 
versions).
+     * </p>
+     * 
+     * <p>
+     * The field will return <code>false</code> if {@link #JAVA_VERSION} is 
<code>null</code>.
+     * </p>
      */
     public static final boolean IS_JAVA_1_1 = getJavaVersionMatches("1.1");
 
     /**
-     * <p>Is <code>true</code> if this is Java version 1.2 (also 1.2.x 
versions).</p>
-     *
-     * <p>The field will return <code>false</code> if {@link #JAVA_VERSION} 
is
-     * <code>null</code>.</p>
+     * <p>
+     * Is <code>true</code> if this is Java version 1.2 (also 1.2.x 
versions).
+     * </p>
+     * 
+     * <p>
+     * The field will return <code>false</code> if {@link #JAVA_VERSION} is 
<code>null</code>.
+     * </p>
      */
     public static final boolean IS_JAVA_1_2 = getJavaVersionMatches("1.2");
 
     /**
-     * <p>Is <code>true</code> if this is Java version 1.3 (also 1.3.x 
versions).</p>
-     *
-     * <p>The field will return <code>false</code> if {@link #JAVA_VERSION} 
is
-     * <code>null</code>.</p>
-     */
-    public static final boolean IS_JAVA_1_3 = getJavaVersionMatches("1.3");
-
+     * <p>
+     * Is <code>true</code> if this is Java version 1.3 (also 1.3.x 
versions).
+     * </p>
+     * 
+     * <p>
+     * The field will return <code>false</code> if {@link #JAVA_VERSION} is 
<code>null</code>.
+     * </p>
+     */
+    public static final boolean IS_JAVA_1_3 = getJavaVersionMatches("1.3");
+
     /**
-     * <p>Is <code>true</code> if this is Java version 1.4 (also 1.4.x 
versions).</p>
-     *
-     * <p>The field will return <code>false</code> if {@link #JAVA_VERSION} 
is
-     * <code>null</code>.</p>
+     * <p>
+     * Is <code>true</code> if this is Java version 1.4 (also 1.4.x 
versions).
+     * </p>
+     * 
+     * <p>
+     * The field will return <code>false</code> if {@link #JAVA_VERSION} is 
<code>null</code>.
+     * </p>
      */
     public static final boolean IS_JAVA_1_4 = getJavaVersionMatches("1.4");
 
     /**
-     * <p>Is <code>true</code> if this is Java version 1.5 (also 1.5.x 
versions).</p>
-     *
-     * <p>The field will return <code>false</code> if {@link #JAVA_VERSION} 
is
-     * <code>null</code>.</p>
+     * <p>
+     * Is <code>true</code> if this is Java version 1.5 (also 1.5.x 
versions).
+     * </p>
+     * 
+     * <p>
+     * The field will return <code>false</code> if {@link #JAVA_VERSION} is 
<code>null</code>.
+     * </p>
      */
     public static final boolean IS_JAVA_1_5 = getJavaVersionMatches("1.5");
 
     /**
-     * <p>Is <code>true</code> if this is Java version 1.6 (also 1.6.x 
versions).</p>
-     *
-     * <p>The field will return <code>false</code> if {@link #JAVA_VERSION} 
is
-     * <code>null</code>.</p>
+     * <p>
+     * Is <code>true</code> if this is Java version 1.6 (also 1.6.x 
versions).
+     * </p>
+     * 
+     * <p>
+     * The field will return <code>false</code> if {@link #JAVA_VERSION} is 
<code>null</code>.
+     * </p>
      */
     public static final boolean IS_JAVA_1_6 = getJavaVersionMatches("1.6");
 
     /**
-     * <p>Is <code>true</code> if this is Java version 1.7 (also 1.7.x 
versions).</p>
-     *
-     * <p>The field will return <code>false</code> if {@link #JAVA_VERSION} 
is
-     * <code>null</code>.</p>
+     * <p>
+     * Is <code>true</code> if this is Java version 1.7 (also 1.7.x 
versions).
+     * </p>
+     * 
+     * <p>
+     * The field will return <code>false</code> if {@link #JAVA_VERSION} is 
<code>null</code>.
+     * </p>
      * 
      * @since 3.0
      */
     public static final boolean IS_JAVA_1_7 = getJavaVersionMatches("1.7");
 
     // Operating system checks
-    
//-----------------------------------------------------------------------
+    // 
-----------------------------------------------------------------------
     // These MUST be declared after those above as they depend on the
     // values being set up
     // OS names from http://www.vamphq.com/os.html
@@ -905,276 +1056,349 @@ public class SystemUtils {
     // if you want another added or a mistake corrected
 
     /**
-     * <p>Is <code>true</code> if this is AIX.</p>
-     *
-     * <p>The field will return <code>false</code> if <code>OS_NAME</code> 
is
-     * <code>null</code>.</p>
+     * <p>
+     * Is <code>true</code> if this is AIX.
+     * </p>
+     * 
+     * <p>
+     * The field will return <code>false</code> if <code>OS_NAME</code> is 
<code>null</code>.
+     * </p>
      * 
      * @since 2.0
      */
-    public static final boolean IS_OS_AIX = getOSMatches("AIX");
+    public static final boolean IS_OS_AIX = getOSMatchesName("AIX");
 
     /**
-     * <p>Is <code>true</code> if this is HP-UX.</p>
-     *
-     * <p>The field will return <code>false</code> if <code>OS_NAME</code> 
is
-     * <code>null</code>.</p>
+     * <p>
+     * Is <code>true</code> if this is HP-UX.
+     * </p>
+     * 
+     * <p>
+     * The field will return <code>false</code> if <code>OS_NAME</code> is 
<code>null</code>.
+     * </p>
      * 
      * @since 2.0
      */
-    public static final boolean IS_OS_HP_UX = getOSMatches("HP-UX");
+    public static final boolean IS_OS_HP_UX = getOSMatchesName("HP-UX");
 
     /**
-     * <p>Is <code>true</code> if this is Irix.</p>
-     *
-     * <p>The field will return <code>false</code> if <code>OS_NAME</code> 
is
-     * <code>null</code>.</p>
+     * <p>
+     * Is <code>true</code> if this is Irix.
+     * </p>
+     * 
+     * <p>
+     * The field will return <code>false</code> if <code>OS_NAME</code> is 
<code>null</code>.
+     * </p>
      * 
      * @since 2.0
      */
-    public static final boolean IS_OS_IRIX = getOSMatches("Irix");
+    public static final boolean IS_OS_IRIX = getOSMatchesName("Irix");
 
     /**
-     * <p>Is <code>true</code> if this is Linux.</p>
-     *
-     * <p>The field will return <code>false</code> if <code>OS_NAME</code> 
is
-     * <code>null</code>.</p>
+     * <p>
+     * Is <code>true</code> if this is Linux.
+     * </p>
+     * 
+     * <p>
+     * The field will return <code>false</code> if <code>OS_NAME</code> is 
<code>null</code>.
+     * </p>
      * 
      * @since 2.0
      */
-    public static final boolean IS_OS_LINUX = getOSMatches("Linux") || 
getOSMatches("LINUX");
+    public static final boolean IS_OS_LINUX = getOSMatchesName("Linux") || 
getOSMatchesName("LINUX");
 
     /**
-     * <p>Is <code>true</code> if this is Mac.</p>
-     *
-     * <p>The field will return <code>false</code> if <code>OS_NAME</code> 
is
-     * <code>null</code>.</p>
+     * <p>
+     * Is <code>true</code> if this is Mac.
+     * </p>
+     * 
+     * <p>
+     * The field will return <code>false</code> if <code>OS_NAME</code> is 
<code>null</code>.
+     * </p>
      * 
      * @since 2.0
      */
-    public static final boolean IS_OS_MAC = getOSMatches("Mac");
+    public static final boolean IS_OS_MAC = getOSMatchesName("Mac");
 
     /**
-     * <p>Is <code>true</code> if this is Mac.</p>
-     *
-     * <p>The field will return <code>false</code> if <code>OS_NAME</code> 
is
-     * <code>null</code>.</p>
+     * <p>
+     * Is <code>true</code> if this is Mac.
+     * </p>
+     * 
+     * <p>
+     * The field will return <code>false</code> if <code>OS_NAME</code> is 
<code>null</code>.
+     * </p>
      * 
      * @since 2.0
      */
-    public static final boolean IS_OS_MAC_OSX = getOSMatches("Mac OS X");
+    public static final boolean IS_OS_MAC_OSX = getOSMatchesName("Mac OS 
X");
 
     /**
-     * <p>Is <code>true</code> if this is OS/2.</p>
-     *
-     * <p>The field will return <code>false</code> if <code>OS_NAME</code> 
is
-     * <code>null</code>.</p>
+     * <p>
+     * Is <code>true</code> if this is OS/2.
+     * </p>
+     * 
+     * <p>
+     * The field will return <code>false</code> if <code>OS_NAME</code> is 
<code>null</code>.
+     * </p>
      * 
      * @since 2.0
      */
-    public static final boolean IS_OS_OS2 = getOSMatches("OS/2");
+    public static final boolean IS_OS_OS2 = getOSMatchesName("OS/2");
 
     /**
-     * <p>Is <code>true</code> if this is Solaris.</p>
-     *
-     * <p>The field will return <code>false</code> if <code>OS_NAME</code> 
is
-     * <code>null</code>.</p>
+     * <p>
+     * Is <code>true</code> if this is Solaris.
+     * </p>
+     * 
+     * <p>
+     * The field will return <code>false</code> if <code>OS_NAME</code> is 
<code>null</code>.
+     * </p>
      * 
      * @since 2.0
      */
-    public static final boolean IS_OS_SOLARIS = getOSMatches("Solaris");
+    public static final boolean IS_OS_SOLARIS = 
getOSMatchesName("Solaris");
 
     /**
-     * <p>Is <code>true</code> if this is SunOS.</p>
-     *
-     * <p>The field will return <code>false</code> if <code>OS_NAME</code> 
is
-     * <code>null</code>.</p>
+     * <p>
+     * Is <code>true</code> if this is SunOS.
+     * </p>
+     * 
+     * <p>
+     * The field will return <code>false</code> if <code>OS_NAME</code> is 
<code>null</code>.
+     * </p>
      * 
      * @since 2.0
      */
-    public static final boolean IS_OS_SUN_OS = getOSMatches("SunOS");
+    public static final boolean IS_OS_SUN_OS = getOSMatchesName("SunOS");
 
     /**
-     * <p>Is <code>true</code> if this is a POSIX compilant system,
-     * as in any of AIX, HP-UX, Irix, Linux, MacOSX, Solaris or SUN OS.</p>
-     *
-     * <p>The field will return <code>false</code> if <code>OS_NAME</code> 
is
-     * <code>null</code>.</p>
+     * <p>
+     * Is <code>true</code> if this is a POSIX compilant system, as in any 
of AIX, HP-UX, Irix, Linux, MacOSX, Solaris or SUN OS.
+     * </p>
+     * 
+     * <p>
+     * The field will return <code>false</code> if <code>OS_NAME</code> is 
<code>null</code>.
+     * </p>
      * 
      * @since 2.1
      */
-    public static final boolean IS_OS_UNIX =
-        IS_OS_AIX || IS_OS_HP_UX || IS_OS_IRIX || IS_OS_LINUX ||
-        IS_OS_MAC_OSX || IS_OS_SOLARIS || IS_OS_SUN_OS;
+    public static final boolean IS_OS_UNIX = IS_OS_AIX || IS_OS_HP_UX || 
IS_OS_IRIX || IS_OS_LINUX || IS_OS_MAC_OSX || IS_OS_SOLARIS
+            || IS_OS_SUN_OS;
 
     /**
-     * <p>Is <code>true</code> if this is Windows.</p>
-     *
-     * <p>The field will return <code>false</code> if <code>OS_NAME</code> 
is
-     * <code>null</code>.</p>
+     * <p>
+     * Is <code>true</code> if this is Windows.
+     * </p>
+     * 
+     * <p>
+     * The field will return <code>false</code> if <code>OS_NAME</code> is 
<code>null</code>.
+     * </p>
      * 
      * @since 2.0
      */
-    public static final boolean IS_OS_WINDOWS = 
getOSMatches(OS_NAME_WINDOWS_PREFIX);
+    public static final boolean IS_OS_WINDOWS = 
getOSMatchesName(OS_NAME_WINDOWS_PREFIX);
 
     /**
-     * <p>Is <code>true</code> if this is Windows 2000.</p>
-     *
-     * <p>The field will return <code>false</code> if <code>OS_NAME</code> 
is
-     * <code>null</code>.</p>
+     * <p>
+     * Is <code>true</code> if this is Windows 2000.
+     * </p>
+     * 
+     * <p>
+     * The field will return <code>false</code> if <code>OS_NAME</code> is 
<code>null</code>.
+     * </p>
      * 
      * @since 2.0
      */
     public static final boolean IS_OS_WINDOWS_2000 = 
getOSMatches(OS_NAME_WINDOWS_PREFIX, "5.0");
 
     /**
-     * <p>Is <code>true</code> if this is Windows 95.</p>
-     *
-     * <p>The field will return <code>false</code> if <code>OS_NAME</code> 
is
-     * <code>null</code>.</p>
+     * <p>
+     * Is <code>true</code> if this is Windows 95.
+     * </p>
+     * 
+     * <p>
+     * The field will return <code>false</code> if <code>OS_NAME</code> is 
<code>null</code>.
+     * </p>
      * 
      * @since 2.0
      */
     public static final boolean IS_OS_WINDOWS_95 = 
getOSMatches(OS_NAME_WINDOWS_PREFIX + " 9", "4.0");
-    // JDK 1.2 running on Windows98 returns 'Windows 95', hence the above
+    // Java 1.2 running on Windows98 returns 'Windows 95', hence the above
 
     /**
-     * <p>Is <code>true</code> if this is Windows 98.</p>
-     *
-     * <p>The field will return <code>false</code> if <code>OS_NAME</code> 
is
-     * <code>null</code>.</p>
+     * <p>
+     * Is <code>true</code> if this is Windows 98.
+     * </p>
+     * 
+     * <p>
+     * The field will return <code>false</code> if <code>OS_NAME</code> is 
<code>null</code>.
+     * </p>
      * 
      * @since 2.0
      */
     public static final boolean IS_OS_WINDOWS_98 = 
getOSMatches(OS_NAME_WINDOWS_PREFIX + " 9", "4.1");
-    // JDK 1.2 running on Windows98 returns 'Windows 95', hence the above
+    // Java 1.2 running on Windows98 returns 'Windows 95', hence the above
 
     /**
-     * <p>Is <code>true</code> if this is Windows ME.</p>
-     *
-     * <p>The field will return <code>false</code> if <code>OS_NAME</code> 
is
-     * <code>null</code>.</p>
+     * <p>
+     * Is <code>true</code> if this is Windows ME.
+     * </p>
+     * 
+     * <p>
+     * The field will return <code>false</code> if <code>OS_NAME</code> is 
<code>null</code>.
+     * </p>
      * 
      * @since 2.0
      */
     public static final boolean IS_OS_WINDOWS_ME = 
getOSMatches(OS_NAME_WINDOWS_PREFIX, "4.9");
-    // JDK 1.2 running on WindowsME may return 'Windows 95', hence the 
above
+    // Java 1.2 running on WindowsME may return 'Windows 95', hence the 
above
 
     /**
-     * <p>Is <code>true</code> if this is Windows NT.</p>
-     *
-     * <p>The field will return <code>false</code> if <code>OS_NAME</code> 
is
-     * <code>null</code>.</p>
+     * <p>
+     * Is <code>true</code> if this is Windows NT.
+     * </p>
+     * 
+     * <p>
+     * The field will return <code>false</code> if <code>OS_NAME</code> is 
<code>null</code>.
+     * </p>
      * 
      * @since 2.0
      */
-    public static final boolean IS_OS_WINDOWS_NT = 
getOSMatches(OS_NAME_WINDOWS_PREFIX + " NT");
-    // Windows 2000 returns 'Windows 2000' but may suffer from same JDK1.2 
problem
+    public static final boolean IS_OS_WINDOWS_NT = 
getOSMatchesName(OS_NAME_WINDOWS_PREFIX + " NT");
+    // Windows 2000 returns 'Windows 2000' but may suffer from same Java1.2 
problem
 
     /**
-     * <p>Is <code>true</code> if this is Windows XP.</p>
-     *
-     * <p>The field will return <code>false</code> if <code>OS_NAME</code> 
is
-     * <code>null</code>.</p>
+     * <p>
+     * Is <code>true</code> if this is Windows XP.
+     * </p>
+     * 
+     * <p>
+     * The field will return <code>false</code> if <code>OS_NAME</code> is 
<code>null</code>.
+     * </p>
      * 
      * @since 2.0
      */
     public static final boolean IS_OS_WINDOWS_XP = 
getOSMatches(OS_NAME_WINDOWS_PREFIX, "5.1");
 
-    
//-----------------------------------------------------------------------    
+    // 
-----------------------------------------------------------------------
     /**
-     * <p>Is <code>true</code> if this is Windows Vista.</p>
-     *
-     * <p>The field will return <code>false</code> if <code>OS_NAME</code> 
is
-     * <code>null</code>.</p>
-     *
+     * <p>
+     * Is <code>true</code> if this is Windows Vista.
+     * </p>
+     * 
+     * <p>
+     * The field will return <code>false</code> if <code>OS_NAME</code> is 
<code>null</code>.
+     * </p>
+     * 
      * @since 2.4
      */
-    public static final boolean IS_OS_WINDOWS_VISTA = 
getOSMatches(OS_NAME_WINDOWS_PREFIX, "6.0"); 
+    public static final boolean IS_OS_WINDOWS_VISTA = 
getOSMatches(OS_NAME_WINDOWS_PREFIX, "6.0");
 
     /**
-     * <p>Is <code>true</code> if this is Windows 7.</p>
-     *
-     * <p>The field will return <code>false</code> if <code>OS_NAME</code> 
is
-     * <code>null</code>.</p>
-     *
+     * <p>
+     * Is <code>true</code> if this is Windows 7.
+     * </p>
+     * 
+     * <p>
+     * The field will return <code>false</code> if <code>OS_NAME</code> is 
<code>null</code>.
+     * </p>
+     * 
      * @since 3.0
      */
-    public static final boolean IS_OS_WINDOWS_7 = 
getOSMatches(OS_NAME_WINDOWS_PREFIX, "6.1"); 
+    public static final boolean IS_OS_WINDOWS_7 = 
getOSMatches(OS_NAME_WINDOWS_PREFIX, "6.1");
 
-    
//-----------------------------------------------------------------------    
     /**
-     * <p>SystemUtils instances should NOT be constructed in standard
-     * programming. Instead, the class should be used as
-     * <code>SystemUtils.FILE_SEPARATOR</code>.</p>
-     *
-     * <p>This constructor is public to permit tools that require a 
JavaBean
-     * instance to operate.</p>
+     * <p>
+     * Gets the Java home directory as a <code>File</code>.
+     * </p>
+     * 
+     * @return a directory
+     * @throws SecurityException
+     *             if a security manager exists and its 
<code>checkPropertyAccess</code> method doesn't allow access to the 
specified system
+     *             property.
+     * @see System#getProperty(String)
+     * @since 2.1
      */
-    public SystemUtils() {
-        super();
+    public static File getJavaHome() {
+        return new File(System.getProperty(JAVA_HOME_KEY));
     }
-    
-    
//-----------------------------------------------------------------------    
+
     /**
-     * <p>Gets the Java version number as a <code>float</code>.</p>
-     *
-     * <p>Example return values:</p>
+     * <p>
+     * Gets the Java IO temporary directory as a <code>File</code>.
+     * </p>
+     * 
+     * @return a directory
+     * @throws SecurityException
+     *             if a security manager exists and its 
<code>checkPropertyAccess</code> method doesn't allow access to the 
specified system
+     *             property.
+     * @see System#getProperty(String)
+     * @since 2.1
+     */
+    public static File getJavaIoTmpDir() {
+        return new File(System.getProperty(JAVA_IO_TMPDIR_KEY));
+    }
+
+    /**
+     * <p>
+     * Gets the Java version number as a <code>float</code>.
+     * </p>
+     * 
+     * <p>
+     * Example return values:
+     * </p>
      * <ul>
-     *  <li><code>1.2f</code> for JDK 1.2
-     *  <li><code>1.31f</code> for JDK 1.3.1
+     * <li><code>1.2f</code> for Java 1.2</li>
+     * <li><code>1.31f</code> for Java 1.3.1</li>
+     * <li><code>1.6f</code> for Java 1.6.0_20</li>
      * </ul>
      * 
-     * <p>Patch releases are not reported.
-     * Zero is returned if {@link #JAVA_VERSION_TRIMMED} is 
<code>null</code>.</p>
+     * <p>
+     * Patch releases are not reported.
+     * </p>
      * 
-     * @return the version, for example 1.31f for JDK 1.3.1
+     * @return the version, for example 1.31f for Java 1.3.1
      */
     private static float getJavaVersionAsFloat() {
-        if (JAVA_VERSION_TRIMMED == null) {
-            return 0f;
-        }
-        String str = JAVA_VERSION_TRIMMED.substring(0, 3);
-        if (JAVA_VERSION_TRIMMED.length() >= 5) {
-            str = str + JAVA_VERSION_TRIMMED.substring(4, 5);
-        }
-        try {
-            return Float.parseFloat(str);
-        } catch (Exception ex) {
-            return 0;
-        }
+        return 
toVersionFloat(toJavaVersionIntArray(SystemUtils.JAVA_VERSION, 
JAVA_VERSION_TRIM_SIZE));
     }
-    
+
     /**
-     * <p>Gets the Java version number as an <code>int</code>.</p>
-     *
-     * <p>Example return values:</p>
+     * <p>
+     * Gets the Java version number as an <code>int</code>.
+     * </p>
+     * 
+     * <p>
+     * Example return values:
+     * </p>
      * <ul>
-     *  <li><code>120</code> for JDK 1.2
-     *  <li><code>131</code> for JDK 1.3.1
+     * <li><code>120</code> for Java 1.2</li>
+     * <li><code>131</code> for Java 1.3.1</li>
+     * <li><code>160</code> for Java 1.6.0_20</li>
      * </ul>
      * 
-     * <p>Patch releases are not reported.
-     * Zero is returned if {@link #JAVA_VERSION_TRIMMED} is 
<code>null</code>.</p>
+     * <p>
+     * Patch releases are not reported.
+     * </p>
      * 
-     * @return the version, for example 131 for JDK 1.3.1
+     * @return the version, for example 131 for Java 1.3.1
      */
     private static int getJavaVersionAsInt() {
-        if (JAVA_VERSION_TRIMMED == null) {
-            return 0;
-        }
-        String str = JAVA_VERSION_TRIMMED.substring(0, 1);
-        str = str + JAVA_VERSION_TRIMMED.substring(2, 3);
-        if (JAVA_VERSION_TRIMMED.length() >= 5) {
-            str = str + JAVA_VERSION_TRIMMED.substring(4, 5);
-        } else {
-            str = str + "0";
-        }
-        try {
-            return Integer.parseInt(str);
-        } catch (Exception ex) {
-            return 0;
-        }
+        return toVersionInt(toJavaVersionIntArray(SystemUtils.JAVA_VERSION, 
JAVA_VERSION_TRIM_SIZE));
+    }
+
+    /**
+     * <p>
+     * Decides if the Java version matches.
+     * </p>
+     * 
+     * @param versionPrefix
+     *            the prefix for the java version
+     * @return true if matches, or false if not or can't determine
+     */
+    private static boolean getJavaVersionMatches(String versionPrefix) {
+        return isJavaVersionMatch(JAVA_VERSION_TRIMMED, versionPrefix);
     }
 
     /**
@@ -1195,54 +1419,42 @@ public class SystemUtils {
     }
 
     /**
-     * <p>Decides if the java version matches.</p>
+     * Decides if the operating system matches.
      * 
-     * @param versionPrefix  the prefix for the java version
+     * @param osNamePrefix
+     *            the prefix for the os name
+     * @param osVersionPrefix
+     *            the prefix for the version
      * @return true if matches, or false if not or can't determine
      */
-    private static boolean getJavaVersionMatches(String versionPrefix) {
-        if (JAVA_VERSION_TRIMMED == null) {
-            return false;
-        }
-        return JAVA_VERSION_TRIMMED.startsWith(versionPrefix);
-    }    
-    
-    /**
-     * <p>Decides if the operating system matches.</p>
-     * 
-     * @param osNamePrefix  the prefix for the os name
-     * @return true if matches, or false if not or can't determine
-     */
-    private static boolean getOSMatches(String osNamePrefix) {
-        if (OS_NAME == null) {
-            return false;
-        }
-        return OS_NAME.startsWith(osNamePrefix);
-    }    
+    private static boolean getOSMatches(String osNamePrefix, String 
osVersionPrefix) {
+        return isOSMatch(OS_NAME, OS_VERSION, osNamePrefix, 
osVersionPrefix);
+    }
 
     /**
-     * <p>Decides if the operating system matches.</p>
+     * Decides if the operating system matches.
      * 
-     * @param osNamePrefix  the prefix for the os name
-     * @param osVersionPrefix  the prefix for the version
+     * @param osNamePrefix
+     *            the prefix for the os name
      * @return true if matches, or false if not or can't determine
      */
-    private static boolean getOSMatches(String osNamePrefix, String 
osVersionPrefix) {
-        if (OS_NAME == null || OS_VERSION == null) {
-            return false;
-        }
-        return OS_NAME.startsWith(osNamePrefix) && 
OS_VERSION.startsWith(osVersionPrefix);
-    }    
+    private static boolean getOSMatchesName(String osNamePrefix) {
+        return isOSNameMatch(OS_NAME, osNamePrefix);
+    }
 
-    
//-----------------------------------------------------------------------
+    // 
-----------------------------------------------------------------------
     /**
-     * <p>Gets a System property, defaulting to <code>null</code> if the 
property
-     * cannot be read.</p>
-     *
-     * <p>If a <code>SecurityException</code> is caught, the return
-     * value is <code>null</code> and a message is written to 
<code>System.err</code>.</p>
+     * <p>
+     * Gets a System property, defaulting to <code>null</code> if the 
property cannot be read.
+     * </p>
      * 
-     * @param property the system property name
+     * <p>
+     * If a <code>SecurityException</code> is caught, the return value is 
<code>null</code> and a message is written to
+     * <code>System.err</code>.
+     * </p>
+     * 
+     * @param property
+     *            the system property name
      * @return the system property value or <code>null</code> if a security 
problem occurs
      */
     private static String getSystemProperty(String property) {
@@ -1250,43 +1462,94 @@ public class SystemUtils {
             return System.getProperty(property);
         } catch (SecurityException ex) {
             // we are not allowed to look at this property
-            System.err.println(
-                "Caught a SecurityException reading the system property '" 
+ property 
-                + "'; the SystemUtils property value will default to null."
-            );
+            System.err.println("Caught a SecurityException reading the 
system property '" + property
+                    + "'; the SystemUtils property value will default to 
null.");
             return null;
         }
     }
-    
+
+    /**
+     * <p>
+     * Gets the user directory as a <code>File</code>.
+     * </p>
+     * 
+     * @return a directory
+     * @throws SecurityException
+     *             if a security manager exists and its 
<code>checkPropertyAccess</code> method doesn't allow access to the 
specified system
+     *             property.
+     * @see System#getProperty(String)
+     * @since 2.1
+     */
+    public static File getUserDir() {
+        return new File(System.getProperty(USER_DIR_KEY));
+    }
+
     /**
-     * <p>Is the Java version at least the requested version.</p>
-     *
-     * <p>Example input:</p>
+     * <p>
+     * Gets the user home directory as a <code>File</code>.
+     * </p>
+     * 
+     * @return a directory
+     * @throws SecurityException
+     *             if a security manager exists and its 
<code>checkPropertyAccess</code> method doesn't allow access to the 
specified system
+     *             property.
+     * @see System#getProperty(String)
+     * @since 2.1
+     */
+    public static File getUserHome() {
+        return new File(System.getProperty(USER_HOME_KEY));
+    }
+
+    /**
+     * Returns whether the {@link #JAVA_AWT_HEADLESS} value is 
<code>true</code>.
+     * 
+     * @return <code>true</code> if <code>JAVA_AWT_HEADLESS</code> is 
<code>"true"</code>, <code>false</code> otherwise.
+     * 
+     * @see #JAVA_AWT_HEADLESS
+     * @since 2.1
+     * @since Java 1.4
+     */
+    public static boolean isJavaAwtHeadless() {
+        return JAVA_AWT_HEADLESS != null ? 
JAVA_AWT_HEADLESS.equals(Boolean.TRUE.toString()) : false;
+    }
+
+    /**
+     * <p>
+     * Is the Java version at least the requested version.
+     * </p>
+     * 
+     * <p>
+     * Example input:
+     * </p>
      * <ul>
-     *  <li><code>1.2f</code> to test for JDK 1.2</li>
-     *  <li><code>1.31f</code> to test for JDK 1.3.1</li>
+     * <li><code>1.2f</code> to test for Java 1.2</li>
+     * <li><code>1.31f</code> to test for Java 1.3.1</li>
      * </ul>
      * 
-     * @param requiredVersion  the required version, for example 1.31f
-     * @return <code>true</code> if the actual version is equal or greater
-     *  than the required version
+     * @param requiredVersion
+     *            the required version, for example 1.31f
+     * @return <code>true</code> if the actual version is equal or greater 
than the required version
      */
     public static boolean isJavaVersionAtLeast(float requiredVersion) {
         return JAVA_VERSION_FLOAT >= requiredVersion;
     }
-    
+
     /**
-     * <p>Is the Java version at least the requested version.</p>
-     *
-     * <p>Example input:</p>
+     * <p>
+     * Is the Java version at least the requested version.
+     * </p>
+     * 
+     * <p>
+     * Example input:
+     * </p>
      * <ul>
-     *  <li><code>120</code> to test for JDK 1.2 or greater</li>
-     *  <li><code>131</code> to test for JDK 1.3.1 or greater</li>
+     * <li><code>120</code> to test for Java 1.2 or greater</li>
+     * <li><code>131</code> to test for Java 1.3.1 or greater</li>
      * </ul>
      * 
-     * @param requiredVersion  the required version, for example 131

[... 323 lines stripped ...]


--------------- Weitergeleitete Nachricht (Ende)


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org


RE: svn commit: r949140 [2/3] - in /commons/proper/lang/trunk/src: main/java/org/apache/commons/lang3/SystemUtils.java test/java/org/apache/commons/lang3/SystemUtilsTest.java

Posted by Gary Gregory <GG...@seagullsoftware.com>.
Agreed 100%. That's what I usually do, but lost track of the size of the change set this time.

Gary

> -----Original Message-----
> From: Adrian Crum [mailto:adrianc@hlmksw.com]
> Sent: Friday, May 28, 2010 09:28
> To: Commons Developers List
> Subject: Re: svn commit: r949140 [2/3] - in /commons/proper/lang/trunk/src:
> main/java/org/apache/commons/lang3/SystemUtils.java
> test/java/org/apache/commons/lang3/SystemUtilsTest.java
>
> It might help commit reviewers if the different tasks were committed
> individually.
>
> -Adrian
>
> On 5/28/2010 8:58 AM, Gary Gregory wrote:
> > Jörg,
> >
> > I am sorry about that, I did not realize I created extra formatting noise in
> the change set. The changes to the class are numerous though, so there would
> have been lots of deltas, namely:
> >
> > - Fixed and tested (LANG-624) SystemUtils.getJavaVersionAsFloat throws
> StringIndexOutOfBoundsException on Android runtime/Dalvik VM. This is based on
> a new implementation of the underlying code with less reliance of hard coded
> array indices, for example, calls like substring (0, 3).
> >
> > - Refactored some private methods into one private and one package private
> method such that the latter can be called from unit tests. This allows [LANG-
> 624] to be tested along with other methods. See below.
> >
> > - Removed "dead code" from unit tests: The SystemUtilsTest unit test
> contained code that was cut and pasted from SystemUtils for four constants and
> associated initialization methods. The test methods then called these
> SystemUtilsTest methods instead of the SystemUtils methods. The refactoring
> allows for the test to run against as much of the code in SystemUtils as
> possible.
> >
> > - Added assertions for Java version "0", "1.4.2", "1.6" and "1.7" to some
> tests.
> >
> > - Added Javadocs to document what happens with "1.6.0_20" vs. "1.6.0", which
> is that the patch level is ignored.
> >
> > Gary Gregory
> > Senior Software Engineer
> > Seagull Software
> > email: ggregory@seagullsoftware.com
> > email: ggregory@apache.org
> > www.seagullsoftware.com
> >
> >
> >> -----Original Message-----
> >> From: Jörg Schaible [mailto:joerg.schaible@gmx.de]
> >> Sent: Friday, May 28, 2010 05:13
> >> To: dev@commons.apache.org
> >> Subject: Fwd: svn commit: r949140 [2/3] - in
> /commons/proper/lang/trunk/src:
> >> main/java/org/apache/commons/lang3/SystemUtils.java
> >> test/java/org/apache/commons/lang3/SystemUtilsTest.java
> >>
> >> Gary,
> >>
> >> can you please stop with this code reformatting? How should anyone can have
> >> a look at the changes if it is hidden between 95% unrelated stuff ???
> >>
> >> - Jörg
> >>
> >>
> >>
> >> --------------- Forwarded Message
> >>
> >> Betreff: svn commit: r949140 [2/3] - in /commons/proper/lang/trunk/src:
> >> main/java/org/apache/commons/lang3/SystemUtils.java
> >> test/java/org/apache/commons/lang3/SystemUtilsTest.java
> >> Absender: ggregory@apache.org
> >> Datum: Fri, 28 May 2010 10:12:04 +0000
> >> Newsgruppe: gmane.comp.jakarta.commons.scm
> >>
> >>
> >> Modified:
> >>
> commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/SystemUtils.j
> >> ava
> >> URL:
> >>
> http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/main/java/org/apach
> >> e/commons/lang3/SystemUtils.java?rev=949140&r1=949139&r2=949140&view=diff
> >>
> ==============================================================================
> >> ---
> >>
> commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/SystemUtils.j
> >> ava
> >> (original)
> >> +++
> >>
> commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/SystemUtils.j
> >> ava
> >> Fri May 28 10:12:04 2010
> >> @@ -17,15 +17,22 @@
> >>   package org.apache.commons.lang3;
> >>
> >>   import java.io.File;
> >> +import java.util.regex.Pattern;
> >>
> >>   /**
> >> - *<p>Helpers for<code>java.lang.System</code>.</p>
> >> + *<p>
> >> + * Helpers for<code>java.lang.System</code>.
> >> + *</p>
> >> + *
> >> + *<p>
> >> + * If a system property cannot be read due to security restrictions, the
> >> corresponding field in this class will be set to<code>null</code>
> >> + * and a message will be written to<code>System.err</code>.
> >> + *</p>
> >> + *
> >> + *<p>
> >> + * #ThreadSafe#
> >> + *</p>
> >>    *
> >> - *<p>If a system property cannot be read due to security restrictions,
> >> - * the corresponding field in this class will be set to<code>null</code>
> >> - * and a message will be written to<code>System.err</code>.</p>
> >> - *
> >> - *<p>#ThreadSafe#</p>
> >>    * @author Apache Software Foundation
> >>    * @author Based on code from Avalon Excalibur
> >>    * @author Based on code from Lucene
> >> @@ -40,15 +47,17 @@ import java.io.File;
> >>    */
> >>   public class SystemUtils {
> >>
> >> +    private static final int JAVA_VERSION_TRIM_SIZE = 3;
> >> +
> >>       /**
> >>        * The prefix String for all Windows OS.
> >>        */
> >>       private static final String OS_NAME_WINDOWS_PREFIX = "Windows";
> >> -
> >> +
> >>       // System property constants
> >> -
> >> //-----------------------------------------------------------------------
> >> +    //
> >> -----------------------------------------------------------------------
> >>       // These MUST be declared first. Other constants depend on this.
> >> -
> >> +
> >>       /**
> >>        * The System property key for the user home directory.
> >>        */
> >> @@ -58,29 +67,36 @@ public class SystemUtils {
> >>        * The System property key for the user directory.
> >>        */
> >>       private static final String USER_DIR_KEY = "user.dir";
> >> -
> >> +
> >>       /**
> >>        * The System property key for the Java IO temporary directory.
> >>        */
> >>       private static final String JAVA_IO_TMPDIR_KEY = "java.io.tmpdir";
> >> -
> >> +
> >>       /**
> >>        * The System property key for the Java home directory.
> >>        */
> >>       private static final String JAVA_HOME_KEY = "java.home";
> >> -
> >> +
> >>       /**
> >> -     *<p>The<code>awt.toolkit</code>  System Property.</p>
> >> -     *<p>Holds a class name, on Windows XP this is
> >> <code>sun.awt.windows.WToolkit</code>.</p>
> >> -     *<p><b>On platforms without a GUI, this value is
> >> <code>null</code>.</b></p>
> >> +     *<p>
> >> +     * The<code>awt.toolkit</code>  System Property.
> >> +     *</p>
> >> +     *<p>
> >> +     * Holds a class name, on Windows XP this is
> >> <code>sun.awt.windows.WToolkit</code>.
> >> +     *</p>
> >> +     *<p>
> >> +     *<b>On platforms without a GUI, this value is<code>null</code>.</b>
> >> +     *</p>
> >>        *
> >> -     *<p>Defaults to<code>null</code>  if the runtime does not have
> >> -     * security access to read this property or the property does not
> >> exist.</p>
> >> +     *<p>
> >> +     * Defaults to<code>null</code>  if the runtime does not have security
> >> access to read this property or the property does not exist.
> >> +     *</p>
> >>        *
> >>        *<p>
> >> -     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)}
> >> -     * or {@link System#setProperties(java.util.Properties)} is called
> >> after this class is loaded, the value
> >> -     * will be out of sync with that System property.
> >> +     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)} or
> >> +     * {@link System#setProperties(java.util.Properties)} is called after
> >> this class is loaded, the value will be out of sync with that
> >> +     * System property.
> >>        *</p>
> >>        *
> >>        * @since 2.1
> >> @@ -88,16 +104,21 @@ public class SystemUtils {
> >>       public static final String AWT_TOOLKIT =
> >> getSystemProperty("awt.toolkit");
> >>
> >>       /**
> >> -     *<p>The<code>file.encoding</code>  System Property.</p>
> >> -     *<p>File encoding, such as<code>Cp1252</code>.</p>
> >> +     *<p>
> >> +     * The<code>file.encoding</code>  System Property.
> >> +     *</p>
> >> +     *<p>
> >> +     * File encoding, such as<code>Cp1252</code>.
> >> +     *</p>
> >>        *
> >> -     *<p>Defaults to<code>null</code>  if the runtime does not have
> >> -     * security access to read this property or the property does not
> >> exist.</p>
> >> +     *<p>
> >> +     * Defaults to<code>null</code>  if the runtime does not have security
> >> access to read this property or the property does not exist.
> >> +     *</p>
> >>        *
> >>        *<p>
> >> -     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)}
> >> -     * or {@link System#setProperties(java.util.Properties)} is called
> >> after this class is loaded, the value
> >> -     * will be out of sync with that System property.
> >> +     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)} or
> >> +     * {@link System#setProperties(java.util.Properties)} is called after
> >> this class is loaded, the value will be out of sync with that
> >> +     * System property.
> >>        *</p>
> >>        *
> >>        * @since 2.0
> >> @@ -106,16 +127,18 @@ public class SystemUtils {
> >>       public static final String FILE_ENCODING =
> >> getSystemProperty("file.encoding");
> >>
> >>       /**
> >> -     *<p>The<code>file.separator</code>  System Property.
> >> -     * File separator (<code>&quot;/&quot;</code>  on UNIX).</p>
> >> -     *
> >> -     *<p>Defaults to<code>null</code>  if the runtime does not have
> >> -     * security access to read this property or the property does not
> >> exist.</p>
> >> +     *<p>
> >> +     * The<code>file.separator</code>  System Property. File separator
> >> (<code>&quot;/&quot;</code>  on UNIX).
> >> +     *</p>
> >>        *
> >>        *<p>
> >> -     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)}
> >> -     * or {@link System#setProperties(java.util.Properties)} is called
> >> after this class is loaded, the value
> >> -     * will be out of sync with that System property.
> >> +     * Defaults to<code>null</code>  if the runtime does not have security
> >> access to read this property or the property does not exist.
> >> +     *</p>
> >> +     *
> >> +     *<p>
> >> +     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)} or
> >> +     * {@link System#setProperties(java.util.Properties)} is called after
> >> this class is loaded, the value will be out of sync with that
> >> +     * System property.
> >>        *</p>
> >>        *
> >>        * @since Java 1.1
> >> @@ -123,15 +146,18 @@ public class SystemUtils {
> >>       public static final String FILE_SEPARATOR =
> >> getSystemProperty("file.separator");
> >>
> >>       /**
> >> -     *<p>The<code>java.awt.fonts</code>  System Property.</p>
> >> -     *
> >> -     *<p>Defaults to<code>null</code>  if the runtime does not have
> >> -     * security access to read this property or the property does not
> >> exist.</p>
> >> +     *<p>
> >> +     * The<code>java.awt.fonts</code>  System Property.
> >> +     *</p>
> >> +     *
> >> +     *<p>
> >> +     * Defaults to<code>null</code>  if the runtime does not have security
> >> access to read this property or the property does not exist.
> >> +     *</p>
> >>        *
> >>        *<p>
> >> -     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)}
> >> -     * or {@link System#setProperties(java.util.Properties)} is called
> >> after this class is loaded, the value
> >> -     * will be out of sync with that System property.
> >> +     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)} or
> >> +     * {@link System#setProperties(java.util.Properties)} is called after
> >> this class is loaded, the value will be out of sync with that
> >> +     * System property.
> >>        *</p>
> >>        *
> >>        * @since 2.1
> >> @@ -139,15 +165,18 @@ public class SystemUtils {
> >>       public static final String JAVA_AWT_FONTS =
> >> getSystemProperty("java.awt.fonts");
> >>
> >>       /**
> >> -     *<p>The<code>java.awt.graphicsenv</code>  System Property.</p>
> >> -     *
> >> -     *<p>Defaults to<code>null</code>  if the runtime does not have
> >> -     * security access to read this property or the property does not
> >> exist.</p>
> >> +     *<p>
> >> +     * The<code>java.awt.graphicsenv</code>  System Property.
> >> +     *</p>
> >> +     *
> >> +     *<p>
> >> +     * Defaults to<code>null</code>  if the runtime does not have security
> >> access to read this property or the property does not exist.
> >> +     *</p>
> >>        *
> >>        *<p>
> >> -     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)}
> >> -     * or {@link System#setProperties(java.util.Properties)} is called
> >> after this class is loaded, the value
> >> -     * will be out of sync with that System property.
> >> +     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)} or
> >> +     * {@link System#setProperties(java.util.Properties)} is called after
> >> this class is loaded, the value will be out of sync with that
> >> +     * System property.
> >>        *</p>
> >>        *
> >>        * @since 2.1
> >> @@ -156,17 +185,18 @@ public class SystemUtils {
> >>
> >>       /**
> >>        *<p>
> >> -     * The<code>java.awt.headless</code>  System Property.
> >> -     * The value of this property is the String<code>"true"</code>  or
> >> <code>"false"</code>.
> >> +     * The<code>java.awt.headless</code>  System Property. The value of
> >> this property is the String<code>"true"</code>  or
> >> +     *<code>"false"</code>.
> >> +     *</p>
> >> +     *
> >> +     *<p>
> >> +     * Defaults to<code>null</code>  if the runtime does not have security
> >> access to read this property or the property does not exist.
> >>        *</p>
> >> -     *
> >> -     *<p>Defaults to<code>null</code>  if the runtime does not have
> >> -     * security access to read this property or the property does not
> >> exist.</p>
> >>        *
> >>        *<p>
> >> -     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)}
> >> -     * or {@link System#setProperties(java.util.Properties)} is called
> >> after this class is loaded, the value
> >> -     * will be out of sync with that System property.
> >> +     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)} or
> >> +     * {@link System#setProperties(java.util.Properties)} is called after
> >> this class is loaded, the value will be out of sync with that
> >> +     * System property.
> >>        *</p>
> >>        *
> >>        * @see #isJavaAwtHeadless()
> >> @@ -176,15 +206,18 @@ public class SystemUtils {
> >>       public static final String JAVA_AWT_HEADLESS =
> >> getSystemProperty("java.awt.headless");
> >>
> >>       /**
> >> -     *<p>The<code>java.awt.printerjob</code>  System Property.</p>
> >> -     *
> >> -     *<p>Defaults to<code>null</code>  if the runtime does not have
> >> -     * security access to read this property or the property does not
> >> exist.</p>
> >> +     *<p>
> >> +     * The<code>java.awt.printerjob</code>  System Property.
> >> +     *</p>
> >> +     *
> >> +     *<p>
> >> +     * Defaults to<code>null</code>  if the runtime does not have security
> >> access to read this property or the property does not exist.
> >> +     *</p>
> >>        *
> >>        *<p>
> >> -     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)}
> >> -     * or {@link System#setProperties(java.util.Properties)} is called
> >> after this class is loaded, the value
> >> -     * will be out of sync with that System property.
> >> +     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)} or
> >> +     * {@link System#setProperties(java.util.Properties)} is called after
> >> this class is loaded, the value will be out of sync with that
> >> +     * System property.
> >>        *</p>
> >>        *
> >>        * @since 2.1
> >> @@ -192,15 +225,18 @@ public class SystemUtils {
> >>       public static final String JAVA_AWT_PRINTERJOB =
> >> getSystemProperty("java.awt.printerjob");
> >>
> >>       /**
> >> -     *<p>The<code>java.class.path</code>  System Property. Java class
> >> path.</p>
> >> -     *
> >> -     *<p>Defaults to<code>null</code>  if the runtime does not have
> >> -     * security access to read this property or the property does not
> >> exist.</p>
> >> +     *<p>
> >> +     * The<code>java.class.path</code>  System Property. Java class path.
> >> +     *</p>
> >> +     *
> >> +     *<p>
> >> +     * Defaults to<code>null</code>  if the runtime does not have security
> >> access to read this property or the property does not exist.
> >> +     *</p>
> >>        *
> >>        *<p>
> >> -     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)}
> >> -     * or {@link System#setProperties(java.util.Properties)} is called
> >> after this class is loaded, the value
> >> -     * will be out of sync with that System property.
> >> +     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)} or
> >> +     * {@link System#setProperties(java.util.Properties)} is called after
> >> this class is loaded, the value will be out of sync with that
> >> +     * System property.
> >>        *</p>
> >>        *
> >>        * @since Java 1.1
> >> @@ -208,16 +244,18 @@ public class SystemUtils {
> >>       public static final String JAVA_CLASS_PATH =
> >> getSystemProperty("java.class.path");
> >>
> >>       /**
> >> -     *<p>The<code>java.class.version</code>  System Property.
> >> -     * Java class format version number.</p>
> >> -     *
> >> -     *<p>Defaults to<code>null</code>  if the runtime does not have
> >> -     * security access to read this property or the property does not
> >> exist.</p>
> >> +     *<p>
> >> +     * The<code>java.class.version</code>  System Property. Java class
> >> format version number.
> >> +     *</p>
> >>        *
> >>        *<p>
> >> -     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)}
> >> -     * or {@link System#setProperties(java.util.Properties)} is called
> >> after this class is loaded, the value
> >> -     * will be out of sync with that System property.
> >> +     * Defaults to<code>null</code>  if the runtime does not have security
> >> access to read this property or the property does not exist.
> >> +     *</p>
> >> +     *
> >> +     *<p>
> >> +     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)} or
> >> +     * {@link System#setProperties(java.util.Properties)} is called after
> >> this class is loaded, the value will be out of sync with that
> >> +     * System property.
> >>        *</p>
> >>        *
> >>        * @since Java 1.1
> >> @@ -225,16 +263,19 @@ public class SystemUtils {
> >>       public static final String JAVA_CLASS_VERSION =
> >> getSystemProperty("java.class.version");
> >>
> >>       /**
> >> -     *<p>The<code>java.compiler</code>  System Property. Name of JIT
> >> compiler to use.
> >> -     * First in JDK version 1.2. Not used in Sun JDKs after 1.2.</p>
> >> -     *
> >> -     *<p>Defaults to<code>null</code>  if the runtime does not have
> >> -     * security access to read this property or the property does not
> >> exist.</p>
> >> +     *<p>
> >> +     * The<code>java.compiler</code>  System Property. Name of JIT
> compiler
> >> to use. First in JDK version 1.2. Not used in Sun JDKs after
> >> +     * 1.2.
> >> +     *</p>
> >> +     *
> >> +     *<p>
> >> +     * Defaults to<code>null</code>  if the runtime does not have security
> >> access to read this property or the property does not exist.
> >> +     *</p>
> >>        *
> >>        *<p>
> >> -     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)}
> >> -     * or {@link System#setProperties(java.util.Properties)} is called
> >> after this class is loaded, the value
> >> -     * will be out of sync with that System property.
> >> +     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)} or
> >> +     * {@link System#setProperties(java.util.Properties)} is called after
> >> this class is loaded, the value will be out of sync with that
> >> +     * System property.
> >>        *</p>
> >>        *
> >>        * @since Java 1.2. Not used in Sun versions after 1.2.
> >> @@ -242,16 +283,18 @@ public class SystemUtils {
> >>       public static final String JAVA_COMPILER =
> >> getSystemProperty("java.compiler");
> >>
> >>       /**
> >> -     *<p>The<code>java.endorsed.dirs</code>  System Property. Path of
> >> endorsed directory
> >> -     * or directories.</p>
> >> -     *
> >> -     *<p>Defaults to<code>null</code>  if the runtime does not have
> >> -     * security access to read this property or the property does not
> >> exist.</p>
> >> +     *<p>
> >> +     * The<code>java.endorsed.dirs</code>  System Property. Path of
> >> endorsed directory or directories.
> >> +     *</p>
> >> +     *
> >> +     *<p>
> >> +     * Defaults to<code>null</code>  if the runtime does not have security
> >> access to read this property or the property does not exist.
> >> +     *</p>
> >>        *
> >>        *<p>
> >> -     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)}
> >> -     * or {@link System#setProperties(java.util.Properties)} is called
> >> after this class is loaded, the value
> >> -     * will be out of sync with that System property.
> >> +     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)} or
> >> +     * {@link System#setProperties(java.util.Properties)} is called after
> >> this class is loaded, the value will be out of sync with that
> >> +     * System property.
> >>        *</p>
> >>        *
> >>        * @since Java 1.4
> >> @@ -259,16 +302,18 @@ public class SystemUtils {
> >>       public static final String JAVA_ENDORSED_DIRS =
> >> getSystemProperty("java.endorsed.dirs");
> >>
> >>       /**
> >> -     *<p>The<code>java.ext.dirs</code>  System Property. Path of extension
> >> directory
> >> -     * or directories.</p>
> >> -     *
> >> -     *<p>Defaults to<code>null</code>  if the runtime does not have
> >> -     * security access to read this property or the property does not
> >> exist.</p>
> >> +     *<p>
> >> +     * The<code>java.ext.dirs</code>  System Property. Path of extension
> >> directory or directories.
> >> +     *</p>
> >> +     *
> >> +     *<p>
> >> +     * Defaults to<code>null</code>  if the runtime does not have security
> >> access to read this property or the property does not exist.
> >> +     *</p>
> >>        *
> >>        *<p>
> >> -     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)}
> >> -     * or {@link System#setProperties(java.util.Properties)} is called
> >> after this class is loaded, the value
> >> -     * will be out of sync with that System property.
> >> +     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)} or
> >> +     * {@link System#setProperties(java.util.Properties)} is called after
> >> this class is loaded, the value will be out of sync with that
> >> +     * System property.
> >>        *</p>
> >>        *
> >>        * @since Java 1.3
> >> @@ -276,15 +321,18 @@ public class SystemUtils {
> >>       public static final String JAVA_EXT_DIRS =
> >> getSystemProperty("java.ext.dirs");
> >>
> >>       /**
> >> -     *<p>The<code>java.home</code>  System Property. Java installation
> >> directory.</p>
> >> -     *
> >> -     *<p>Defaults to<code>null</code>  if the runtime does not have
> >> -     * security access to read this property or the property does not
> >> exist.</p>
> >> +     *<p>
> >> +     * The<code>java.home</code>  System Property. Java installation
> >> directory.
> >> +     *</p>
> >>        *
> >>        *<p>
> >> -     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)}
> >> -     * or {@link System#setProperties(java.util.Properties)} is called
> >> after this class is loaded, the value
> >> -     * will be out of sync with that System property.
> >> +     * Defaults to<code>null</code>  if the runtime does not have security
> >> access to read this property or the property does not exist.
> >> +     *</p>
> >> +     *
> >> +     *<p>
> >> +     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)} or
> >> +     * {@link System#setProperties(java.util.Properties)} is called after
> >> this class is loaded, the value will be out of sync with that
> >> +     * System property.
> >>        *</p>
> >>        *
> >>        * @since Java 1.1
> >> @@ -292,15 +340,18 @@ public class SystemUtils {
> >>       public static final String JAVA_HOME =
> >> getSystemProperty(JAVA_HOME_KEY);
> >>
> >>       /**
> >> -     *<p>The<code>java.io.tmpdir</code>  System Property. Default temp
> >> file path.</p>
> >> -     *
> >> -     *<p>Defaults to<code>null</code>  if the runtime does not have
> >> -     * security access to read this property or the property does not
> >> exist.</p>
> >> +     *<p>
> >> +     * The<code>java.io.tmpdir</code>  System Property. Default temp file
> >> path.
> >> +     *</p>
> >> +     *
> >> +     *<p>
> >> +     * Defaults to<code>null</code>  if the runtime does not have security
> >> access to read this property or the property does not exist.
> >> +     *</p>
> >>        *
> >>        *<p>
> >> -     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)}
> >> -     * or {@link System#setProperties(java.util.Properties)} is called
> >> after this class is loaded, the value
> >> -     * will be out of sync with that System property.
> >> +     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)} or
> >> +     * {@link System#setProperties(java.util.Properties)} is called after
> >> this class is loaded, the value will be out of sync with that
> >> +     * System property.
> >>        *</p>
> >>        *
> >>        * @since Java 1.2
> >> @@ -308,16 +359,18 @@ public class SystemUtils {
> >>       public static final String JAVA_IO_TMPDIR =
> >> getSystemProperty(JAVA_IO_TMPDIR_KEY);
> >>
> >>       /**
> >> -     *<p>The<code>java.library.path</code>  System Property. List of paths
> >> to search
> >> -     * when loading libraries.</p>
> >> -     *
> >> -     *<p>Defaults to<code>null</code>  if the runtime does not have
> >> -     * security access to read this property or the property does not
> >> exist.</p>
> >> +     *<p>
> >> +     * The<code>java.library.path</code>  System Property. List of paths
> to
> >> search when loading libraries.
> >> +     *</p>
> >> +     *
> >> +     *<p>
> >> +     * Defaults to<code>null</code>  if the runtime does not have security
> >> access to read this property or the property does not exist.
> >> +     *</p>
> >>        *
> >>        *<p>
> >> -     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)}
> >> -     * or {@link System#setProperties(java.util.Properties)} is called
> >> after this class is loaded, the value
> >> -     * will be out of sync with that System property.
> >> +     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)} or
> >> +     * {@link System#setProperties(java.util.Properties)} is called after
> >> this class is loaded, the value will be out of sync with that
> >> +     * System property.
> >>        *</p>
> >>        *
> >>        * @since Java 1.2
> >> @@ -325,16 +378,18 @@ public class SystemUtils {
> >>       public static final String JAVA_LIBRARY_PATH =
> >> getSystemProperty("java.library.path");
> >>
> >>       /**
> >> -     *<p>The<code>java.runtime.name</code>  System Property. Java Runtime
> >> Environment
> >> -     * name.</p>
> >> -     *
> >> -     *<p>Defaults to<code>null</code>  if the runtime does not have
> >> -     * security access to read this property or the property does not
> >> exist.</p>
> >> +     *<p>
> >> +     * The<code>java.runtime.name</code>  System Property. Java Runtime
> >> Environment name.
> >> +     *</p>
> >> +     *
> >> +     *<p>
> >> +     * Defaults to<code>null</code>  if the runtime does not have security
> >> access to read this property or the property does not exist.
> >> +     *</p>
> >>        *
> >>        *<p>
> >> -     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)}
> >> -     * or {@link System#setProperties(java.util.Properties)} is called
> >> after this class is loaded, the value
> >> -     * will be out of sync with that System property.
> >> +     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)} or
> >> +     * {@link System#setProperties(java.util.Properties)} is called after
> >> this class is loaded, the value will be out of sync with that
> >> +     * System property.
> >>        *</p>
> >>        *
> >>        * @since 2.0
> >> @@ -343,16 +398,18 @@ public class SystemUtils {
> >>       public static final String JAVA_RUNTIME_NAME =
> >> getSystemProperty("java.runtime.name");
> >>
> >>       /**
> >> -     *<p>The<code>java.runtime.version</code>  System Property. Java
> >> Runtime Environment
> >> -     * version.</p>
> >> -     *
> >> -     *<p>Defaults to<code>null</code>  if the runtime does not have
> >> -     * security access to read this property or the property does not
> >> exist.</p>
> >> +     *<p>
> >> +     * The<code>java.runtime.version</code>  System Property. Java Runtime
> >> Environment version.
> >> +     *</p>
> >>        *
> >>        *<p>
> >> -     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)}
> >> -     * or {@link System#setProperties(java.util.Properties)} is called
> >> after this class is loaded, the value
> >> -     * will be out of sync with that System property.
> >> +     * Defaults to<code>null</code>  if the runtime does not have security
> >> access to read this property or the property does not exist.
> >> +     *</p>
> >> +     *
> >> +     *<p>
> >> +     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)} or
> >> +     * {@link System#setProperties(java.util.Properties)} is called after
> >> this class is loaded, the value will be out of sync with that
> >> +     * System property.
> >>        *</p>
> >>        *
> >>        * @since 2.0
> >> @@ -361,16 +418,18 @@ public class SystemUtils {
> >>       public static final String JAVA_RUNTIME_VERSION =
> >> getSystemProperty("java.runtime.version");
> >>
> >>       /**
> >> -     *<p>The<code>java.specification.name</code>  System Property. Java
> >> Runtime Environment
> >> -     * specification name.</p>
> >> -     *
> >> -     *<p>Defaults to<code>null</code>  if the runtime does not have
> >> -     * security access to read this property or the property does not
> >> exist.</p>
> >> +     *<p>
> >> +     * The<code>java.specification.name</code>  System Property. Java
> >> Runtime Environment specification name.
> >> +     *</p>
> >> +     *
> >> +     *<p>
> >> +     * Defaults to<code>null</code>  if the runtime does not have security
> >> access to read this property or the property does not exist.
> >> +     *</p>
> >>        *
> >>        *<p>
> >> -     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)}
> >> -     * or {@link System#setProperties(java.util.Properties)} is called
> >> after this class is loaded, the value
> >> -     * will be out of sync with that System property.
> >> +     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)} or
> >> +     * {@link System#setProperties(java.util.Properties)} is called after
> >> this class is loaded, the value will be out of sync with that
> >> +     * System property.
> >>        *</p>
> >>        *
> >>        * @since Java 1.2
> >> @@ -378,16 +437,18 @@ public class SystemUtils {
> >>       public static final String JAVA_SPECIFICATION_NAME =
> >> getSystemProperty("java.specification.name");
> >>
> >>       /**
> >> -     *<p>The<code>java.specification.vendor</code>  System Property. Java
> >> Runtime Environment
> >> -     * specification vendor.</p>
> >> -     *
> >> -     *<p>Defaults to<code>null</code>  if the runtime does not have
> >> -     * security access to read this property or the property does not
> >> exist.</p>
> >> +     *<p>
> >> +     * The<code>java.specification.vendor</code>  System Property. Java
> >> Runtime Environment specification vendor.
> >> +     *</p>
> >> +     *
> >> +     *<p>
> >> +     * Defaults to<code>null</code>  if the runtime does not have security
> >> access to read this property or the property does not exist.
> >> +     *</p>
> >>        *
> >>        *<p>
> >> -     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)}
> >> -     * or {@link System#setProperties(java.util.Properties)} is called
> >> after this class is loaded, the value
> >> -     * will be out of sync with that System property.
> >> +     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)} or
> >> +     * {@link System#setProperties(java.util.Properties)} is called after
> >> this class is loaded, the value will be out of sync with that
> >> +     * System property.
> >>        *</p>
> >>        *
> >>        * @since Java 1.2
> >> @@ -395,16 +456,18 @@ public class SystemUtils {
> >>       public static final String JAVA_SPECIFICATION_VENDOR =
> >> getSystemProperty("java.specification.vendor");
> >>
> >>       /**
> >> -     *<p>The<code>java.specification.version</code>  System Property. Java
> >> Runtime Environment
> >> -     * specification version.</p>
> >> -     *
> >> -     *<p>Defaults to<code>null</code>  if the runtime does not have
> >> -     * security access to read this property or the property does not
> >> exist.</p>
> >> +     *<p>
> >> +     * The<code>java.specification.version</code>  System Property. Java
> >> Runtime Environment specification version.
> >> +     *</p>
> >> +     *
> >> +     *<p>
> >> +     * Defaults to<code>null</code>  if the runtime does not have security
> >> access to read this property or the property does not exist.
> >> +     *</p>
> >>        *
> >>        *<p>
> >> -     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)}
> >> -     * or {@link System#setProperties(java.util.Properties)} is called
> >> after this class is loaded, the value
> >> -     * will be out of sync with that System property.
> >> +     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)} or
> >> +     * {@link System#setProperties(java.util.Properties)} is called after
> >> this class is loaded, the value will be out of sync with that
> >> +     * System property.
> >>        *</p>
> >>        *
> >>        * @since Java 1.3
> >> @@ -412,33 +475,38 @@ public class SystemUtils {
> >>       public static final String JAVA_SPECIFICATION_VERSION =
> >> getSystemProperty("java.specification.version");
> >>
> >>       /**
> >> -     *<p>The<code>java.util.prefs.PreferencesFactory</code>  System
> >> Property. A class name.</p>
> >> -     *
> >> -     *<p>Defaults to<code>null</code>  if the runtime does not have
> >> -     * security access to read this property or the property does not
> >> exist.</p>
> >> +     *<p>
> >> +     * The<code>java.util.prefs.PreferencesFactory</code>  System
> Property.
> >> A class name.
> >> +     *</p>
> >>        *
> >>        *<p>
> >> -     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)}
> >> -     * or {@link System#setProperties(java.util.Properties)} is called
> >> after this class is loaded, the value
> >> -     * will be out of sync with that System property.
> >> +     * Defaults to<code>null</code>  if the runtime does not have security
> >> access to read this property or the property does not exist.
> >> +     *</p>
> >> +     *
> >> +     *<p>
> >> +     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)} or
> >> +     * {@link System#setProperties(java.util.Properties)} is called after
> >> this class is loaded, the value will be out of sync with that
> >> +     * System property.
> >>        *</p>
> >>        *
> >>        * @since 2.1
> >>        * @since Java 1.4
> >>        */
> >> -    public static final String JAVA_UTIL_PREFS_PREFERENCES_FACTORY =
> >> -        getSystemProperty("java.util.prefs.PreferencesFactory");
> >> +    public static final String JAVA_UTIL_PREFS_PREFERENCES_FACTORY =
> >> getSystemProperty("java.util.prefs.PreferencesFactory");
> >>
> >>       /**
> >> -     *<p>The<code>java.vendor</code>  System Property. Java vendor-
> >> specific string.</p>
> >> -     *
> >> -     *<p>Defaults to<code>null</code>  if the runtime does not have
> >> -     * security access to read this property or the property does not
> >> exist.</p>
> >> +     *<p>
> >> +     * The<code>java.vendor</code>  System Property. Java vendor-specific
> >> string.
> >> +     *</p>
> >> +     *
> >> +     *<p>
> >> +     * Defaults to<code>null</code>  if the runtime does not have security
> >> access to read this property or the property does not exist.
> >> +     *</p>
> >>        *
> >>        *<p>
> >> -     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)}
> >> -     * or {@link System#setProperties(java.util.Properties)} is called
> >> after this class is loaded, the value
> >> -     * will be out of sync with that System property.
> >> +     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)} or
> >> +     * {@link System#setProperties(java.util.Properties)} is called after
> >> this class is loaded, the value will be out of sync with that
> >> +     * System property.
> >>        *</p>
> >>        *
> >>        * @since Java 1.1
> >> @@ -446,31 +514,37 @@ public class SystemUtils {
> >>       public static final String JAVA_VENDOR =
> >> getSystemProperty("java.vendor");
> >>
> >>       /**
> >> -     *<p>The<code>java.vendor.url</code>  System Property. Java vendor
> >> URL.</p>
> >> -     *
> >> -     *<p>Defaults to<code>null</code>  if the runtime does not have
> >> -     * security access to read this property or the property does not
> >> exist.</p>
> >> +     *<p>
> >> +     * The<code>java.vendor.url</code>  System Property. Java vendor URL.
> >> +     *</p>
> >> +     *
> >> +     *<p>
> >> +     * Defaults to<code>null</code>  if the runtime does not have security
> >> access to read this property or the property does not exist.
> >> +     *</p>
> >>        *
> >>        *<p>
> >> -     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)}
> >> -     * or {@link System#setProperties(java.util.Properties)} is called
> >> after this class is loaded, the value
> >> -     * will be out of sync with that System property.
> >> +     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)} or
> >> +     * {@link System#setProperties(java.util.Properties)} is called after
> >> this class is loaded, the value will be out of sync with that
> >> +     * System property.
> >>        *</p>
> >>        *
> >>        * @since Java 1.1
> >> -    */
> >> +     */
> >>       public static final String JAVA_VENDOR_URL =
> >> getSystemProperty("java.vendor.url");
> >>
> >>       /**
> >> -     *<p>The<code>java.version</code>  System Property. Java version
> >> number.</p>
> >> -     *
> >> -     *<p>Defaults to<code>null</code>  if the runtime does not have
> >> -     * security access to read this property or the property does not
> >> exist.</p>
> >> +     *<p>
> >> +     * The<code>java.version</code>  System Property. Java version number.
> >> +     *</p>
> >>        *
> >>        *<p>
> >> -     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)}
> >> -     * or {@link System#setProperties(java.util.Properties)} is called
> >> after this class is loaded, the value
> >> -     * will be out of sync with that System property.
> >> +     * Defaults to<code>null</code>  if the runtime does not have security
> >> access to read this property or the property does not exist.
> >> +     *</p>
> >> +     *
> >> +     *<p>
> >> +     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)} or
> >> +     * {@link System#setProperties(java.util.Properties)} is called after
> >> this class is loaded, the value will be out of sync with that
> >> +     * System property.
> >>        *</p>
> >>        *
> >>        * @since Java 1.1
> >> @@ -478,16 +552,18 @@ public class SystemUtils {
> >>       public static final String JAVA_VERSION =
> >> getSystemProperty("java.version");
> >>
> >>       /**
> >> -     *<p>The<code>java.vm.info</code>  System Property. Java Virtual
> >> Machine implementation
> >> -     * info.</p>
> >> -     *
> >> -     *<p>Defaults to<code>null</code>  if the runtime does not have
> >> -     * security access to read this property or the property does not
> >> exist.</p>
> >> +     *<p>
> >> +     * The<code>java.vm.info</code>  System Property. Java Virtual Machine
> >> implementation info.
> >> +     *</p>
> >> +     *
> >> +     *<p>
> >> +     * Defaults to<code>null</code>  if the runtime does not have security
> >> access to read this property or the property does not exist.
> >> +     *</p>
> >>        *
> >>        *<p>
> >> -     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)}
> >> -     * or {@link System#setProperties(java.util.Properties)} is called
> >> after this class is loaded, the value
> >> -     * will be out of sync with that System property.
> >> +     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)} or
> >> +     * {@link System#setProperties(java.util.Properties)} is called after
> >> this class is loaded, the value will be out of sync with that
> >> +     * System property.
> >>        *</p>
> >>        *
> >>        * @since 2.0
> >> @@ -496,16 +572,18 @@ public class SystemUtils {
> >>       public static final String JAVA_VM_INFO =
> >> getSystemProperty("java.vm.info");
> >>
> >>       /**
> >> -     *<p>The<code>java.vm.name</code>  System Property. Java Virtual
> >> Machine implementation
> >> -     * name.</p>
> >> -     *
> >> -     *<p>Defaults to<code>null</code>  if the runtime does not have
> >> -     * security access to read this property or the property does not
> >> exist.</p>
> >> +     *<p>
> >> +     * The<code>java.vm.name</code>  System Property. Java Virtual Machine
> >> implementation name.
> >> +     *</p>
> >> +     *
> >> +     *<p>
> >> +     * Defaults to<code>null</code>  if the runtime does not have security
> >> access to read this property or the property does not exist.
> >> +     *</p>
> >>        *
> >>        *<p>
> >> -     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)}
> >> -     * or {@link System#setProperties(java.util.Properties)} is called
> >> after this class is loaded, the value
> >> -     * will be out of sync with that System property.
> >> +     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)} or
> >> +     * {@link System#setProperties(java.util.Properties)} is called after
> >> this class is loaded, the value will be out of sync with that
> >> +     * System property.
> >>        *</p>
> >>        *
> >>        * @since Java 1.2
> >> @@ -513,16 +591,18 @@ public class SystemUtils {
> >>       public static final String JAVA_VM_NAME =
> >> getSystemProperty("java.vm.name");
> >>
> >>       /**
> >> -     *<p>The<code>java.vm.specification.name</code>  System Property. Java
> >> Virtual Machine
> >> -     * specification name.</p>
> >> -     *
> >> -     *<p>Defaults to<code>null</code>  if the runtime does not have
> >> -     * security access to read this property or the property does not
> >> exist.</p>
> >> +     *<p>
> >> +     * The<code>java.vm.specification.name</code>  System Property. Java
> >> Virtual Machine specification name.
> >> +     *</p>
> >> +     *
> >> +     *<p>
> >> +     * Defaults to<code>null</code>  if the runtime does not have security
> >> access to read this property or the property does not exist.
> >> +     *</p>
> >>        *
> >>        *<p>
> >> -     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)}
> >> -     * or {@link System#setProperties(java.util.Properties)} is called
> >> after this class is loaded, the value
> >> -     * will be out of sync with that System property.
> >> +     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)} or
> >> +     * {@link System#setProperties(java.util.Properties)} is called after
> >> this class is loaded, the value will be out of sync with that
> >> +     * System property.
> >>        *</p>
> >>        *
> >>        * @since Java 1.2
> >> @@ -530,16 +610,18 @@ public class SystemUtils {
> >>       public static final String JAVA_VM_SPECIFICATION_NAME =
> >> getSystemProperty("java.vm.specification.name");
> >>
> >>       /**
> >> -     *<p>The<code>java.vm.specification.vendor</code>  System Property.
> >> Java Virtual
> >> -     * Machine specification vendor.</p>
> >> -     *
> >> -     *<p>Defaults to<code>null</code>  if the runtime does not have
> >> -     * security access to read this property or the property does not
> >> exist.</p>
> >> +     *<p>
> >> +     * The<code>java.vm.specification.vendor</code>  System Property. Java
> >> Virtual Machine specification vendor.
> >> +     *</p>
> >>        *
> >>        *<p>
> >> -     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)}
> >> -     * or {@link System#setProperties(java.util.Properties)} is called
> >> after this class is loaded, the value
> >> -     * will be out of sync with that System property.
> >> +     * Defaults to<code>null</code>  if the runtime does not have security
> >> access to read this property or the property does not exist.
> >> +     *</p>
> >> +     *
> >> +     *<p>
> >> +     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)} or
> >> +     * {@link System#setProperties(java.util.Properties)} is called after
> >> this class is loaded, the value will be out of sync with that
> >> +     * System property.
> >>        *</p>
> >>        *
> >>        * @since Java 1.2
> >> @@ -547,16 +629,18 @@ public class SystemUtils {
> >>       public static final String JAVA_VM_SPECIFICATION_VENDOR =
> >> getSystemProperty("java.vm.specification.vendor");
> >>
> >>       /**
> >> -     *<p>The<code>java.vm.specification.version</code>  System Property.
> >> Java Virtual Machine
> >> -     * specification version.</p>
> >> -     *
> >> -     *<p>Defaults to<code>null</code>  if the runtime does not have
> >> -     * security access to read this property or the property does not
> >> exist.</p>
> >> +     *<p>
> >> +     * The<code>java.vm.specification.version</code>  System Property.
> Java
> >> Virtual Machine specification version.
> >> +     *</p>
> >> +     *
> >> +     *<p>
> >> +     * Defaults to<code>null</code>  if the runtime does not have security
> >> access to read this property or the property does not exist.
> >> +     *</p>
> >>        *
> >>        *<p>
> >> -     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)}
> >> -     * or {@link System#setProperties(java.util.Properties)} is called
> >> after this class is loaded, the value
> >> -     * will be out of sync with that System property.
> >> +     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)} or
> >> +     * {@link System#setProperties(java.util.Properties)} is called after
> >> this class is loaded, the value will be out of sync with that
> >> +     * System property.
> >>        *</p>
> >>        *
> >>        * @since Java 1.2
> >> @@ -564,16 +648,18 @@ public class SystemUtils {
> >>       public static final String JAVA_VM_SPECIFICATION_VERSION =
> >> getSystemProperty("java.vm.specification.version");
> >>
> >>       /**
> >> -     *<p>The<code>java.vm.vendor</code>  System Property. Java Virtual
> >> Machine implementation
> >> -     * vendor.</p>
> >> -     *
> >> -     *<p>Defaults to<code>null</code>  if the runtime does not have
> >> -     * security access to read this property or the property does not
> >> exist.</p>
> >> +     *<p>
> >> +     * The<code>java.vm.vendor</code>  System Property. Java Virtual
> >> Machine implementation vendor.
> >> +     *</p>
> >> +     *
> >> +     *<p>
> >> +     * Defaults to<code>null</code>  if the runtime does not have security
> >> access to read this property or the property does not exist.
> >> +     *</p>
> >>        *
> >>        *<p>
> >> -     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)}
> >> -     * or {@link System#setProperties(java.util.Properties)} is called
> >> after this class is loaded, the value
> >> -     * will be out of sync with that System property.
> >> +     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)} or
> >> +     * {@link System#setProperties(java.util.Properties)} is called after
> >> this class is loaded, the value will be out of sync with that
> >> +     * System property.
> >>        *</p>
> >>        *
> >>        * @since Java 1.2
> >> @@ -581,16 +667,18 @@ public class SystemUtils {
> >>       public static final String JAVA_VM_VENDOR =
> >> getSystemProperty("java.vm.vendor");
> >>
> >>       /**
> >> -     *<p>The<code>java.vm.version</code>  System Property. Java Virtual
> >> Machine
> >> -     * implementation version.</p>
> >> -     *
> >> -     *<p>Defaults to<code>null</code>  if the runtime does not have
> >> -     * security access to read this property or the property does not
> >> exist.</p>
> >> +     *<p>
> >> +     * The<code>java.vm.version</code>  System Property. Java Virtual
> >> Machine implementation version.
> >> +     *</p>
> >> +     *
> >> +     *<p>
> >> +     * Defaults to<code>null</code>  if the runtime does not have security
> >> access to read this property or the property does not exist.
> >> +     *</p>
> >>        *
> >>        *<p>
> >> -     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)}
> >> -     * or {@link System#setProperties(java.util.Properties)} is called
> >> after this class is loaded, the value
> >> -     * will be out of sync with that System property.
> >> +     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)} or
> >> +     * {@link System#setProperties(java.util.Properties)} is called after
> >> this class is loaded, the value will be out of sync with that
> >> +     * System property.
> >>        *</p>
> >>        *
> >>        * @since Java 1.2
> >> @@ -598,16 +686,18 @@ public class SystemUtils {
> >>       public static final String JAVA_VM_VERSION =
> >> getSystemProperty("java.vm.version");
> >>
> >>       /**
> >> -     *<p>The<code>line.separator</code>  System Property. Line separator
> >> -     * (<code>&quot;\n&quot;</code>  on UNIX).</p>
> >> -     *
> >> -     *<p>Defaults to<code>null</code>  if the runtime does not have
> >> -     * security access to read this property or the property does not
> >> exist.</p>
> >> +     *<p>
> >> +     * The<code>line.separator</code>  System Property. Line separator
> >> (<code>&quot;\n&quot;</code>  on UNIX).
> >> +     *</p>
> >>        *
> >>        *<p>
> >> -     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)}
> >> -     * or {@link System#setProperties(java.util.Properties)} is called
> >> after this class is loaded, the value
> >> -     * will be out of sync with that System property.
> >> +     * Defaults to<code>null</code>  if the runtime does not have security
> >> access to read this property or the property does not exist.
> >> +     *</p>
> >> +     *
> >> +     *<p>
> >> +     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)} or
> >> +     * {@link System#setProperties(java.util.Properties)} is called after
> >> this class is loaded, the value will be out of sync with that
> >> +     * System property.
> >>        *</p>
> >>        *
> >>        * @since Java 1.1
> >> @@ -615,15 +705,18 @@ public class SystemUtils {
> >>       public static final String LINE_SEPARATOR =
> >> getSystemProperty("line.separator");
> >>
> >>       /**
> >> -     *<p>The<code>os.arch</code>  System Property. Operating system
> >> architecture.</p>
> >> -     *
> >> -     *<p>Defaults to<code>null</code>  if the runtime does not have
> >> -     * security access to read this property or the property does not
> >> exist.</p>
> >> +     *<p>
> >> +     * The<code>os.arch</code>  System Property. Operating system
> >> architecture.
> >> +     *</p>
> >> +     *
> >> +     *<p>
> >> +     * Defaults to<code>null</code>  if the runtime does not have security
> >> access to read this property or the property does not exist.
> >> +     *</p>
> >>        *
> >>        *<p>
> >> -     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)}
> >> -     * or {@link System#setProperties(java.util.Properties)} is called
> >> after this class is loaded, the value
> >> -     * will be out of sync with that System property.
> >> +     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)} or
> >> +     * {@link System#setProperties(java.util.Properties)} is called after
> >> this class is loaded, the value will be out of sync with that
> >> +     * System property.
> >>        *</p>
> >>        *
> >>        * @since Java 1.1
> >> @@ -631,15 +724,18 @@ public class SystemUtils {
> >>       public static final String OS_ARCH = getSystemProperty("os.arch");
> >>
> >>       /**
> >> -     *<p>The<code>os.name</code>  System Property. Operating system
> >> name.</p>
> >> -     *
> >> -     *<p>Defaults to<code>null</code>  if the runtime does not have
> >> -     * security access to read this property or the property does not
> >> exist.</p>
> >> +     *<p>
> >> +     * The<code>os.name</code>  System Property. Operating system name.
> >> +     *</p>
> >> +     *
> >> +     *<p>
> >> +     * Defaults to<code>null</code>  if the runtime does not have security
> >> access to read this property or the property does not exist.
> >> +     *</p>
> >>        *
> >>        *<p>
> >> -     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)}
> >> -     * or {@link System#setProperties(java.util.Properties)} is called
> >> after this class is loaded, the value
> >> -     * will be out of sync with that System property.
> >> +     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)} or
> >> +     * {@link System#setProperties(java.util.Properties)} is called after
> >> this class is loaded, the value will be out of sync with that
> >> +     * System property.
> >>        *</p>
> >>        *
> >>        * @since Java 1.1
> >> @@ -647,15 +743,18 @@ public class SystemUtils {
> >>       public static final String OS_NAME = getSystemProperty("os.name");
> >>
> >>       /**
> >> -     *<p>The<code>os.version</code>  System Property. Operating system
> >> version.</p>
> >> -     *
> >> -     *<p>Defaults to<code>null</code>  if the runtime does not have
> >> -     * security access to read this property or the property does not
> >> exist.</p>
> >> +     *<p>
> >> +     * The<code>os.version</code>  System Property. Operating system
> >> version.
> >> +     *</p>
> >> +     *
> >> +     *<p>
> >> +     * Defaults to<code>null</code>  if the runtime does not have security
> >> access to read this property or the property does not exist.
> >> +     *</p>
> >>        *
> >>        *<p>
> >> -     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)}
> >> -     * or {@link System#setProperties(java.util.Properties)} is called
> >> after this class is loaded, the value
> >> -     * will be out of sync with that System property.
> >> +     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)} or
> >> +     * {@link System#setProperties(java.util.Properties)} is called after
> >> this class is loaded, the value will be out of sync with that
> >> +     * System property.
> >>        *</p>
> >>        *
> >>        * @since Java 1.1
> >> @@ -663,16 +762,18 @@ public class SystemUtils {
> >>       public static final String OS_VERSION =
> >> getSystemProperty("os.version");
> >>
> >>       /**
> >> -     *<p>The<code>path.separator</code>  System Property. Path separator
> >> -     * (<code>&quot;:&quot;</code>  on UNIX).</p>
> >> -     *
> >> -     *<p>Defaults to<code>null</code>  if the runtime does not have
> >> -     * security access to read this property or the property does not
> >> exist.</p>
> >> +     *<p>
> >> +     * The<code>path.separator</code>  System Property. Path separator
> >> (<code>&quot;:&quot;</code>  on UNIX).
> >> +     *</p>
> >>        *
> >>        *<p>
> >> -     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)}
> >> -     * or {@link System#setProperties(java.util.Properties)} is called
> >> after this class is loaded, the value
> >> -     * will be out of sync with that System property.
> >> +     * Defaults to<code>null</code>  if the runtime does not have security
> >> access to read this property or the property does not exist.
> >> +     *</p>
> >> +     *
> >> +     *<p>
> >> +     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)} or
> >> +     * {@link System#setProperties(java.util.Properties)} is called after
> >> this class is loaded, the value will be out of sync with that
> >> +     * System property.
> >>        *</p>
> >>        *
> >>        * @since Java 1.1
> >> @@ -680,37 +781,40 @@ public class SystemUtils {
> >>       public static final String PATH_SEPARATOR =
> >> getSystemProperty("path.separator");
> >>
> >>       /**
> >> -     *<p>The<code>user.country</code>  or<code>user.region</code>  System
> >> Property.
> >> -     * User's country code, such as<code>GB</code>. First in JDK version
> >> 1.2 as
> >> -     *<code>user.region</code>. Renamed to<code>user.country</code>  in
> >> 1.4</p>
> >> -     *
> >> -     *<p>Defaults to<code>null</code>  if the runtime does not have
> >> -     * security access to read this property or the property does not
> >> exist.</p>
> >> +     *<p>
> >> +     * The<code>user.country</code>  or<code>user.region</code>  System
> >> Property. User's country code, such as<code>GB</code>. First in
> >> +     * Java version 1.2 as<code>user.region</code>. Renamed to
> >> <code>user.country</code>  in 1.4
> >> +     *</p>
> >> +     *
> >> +     *<p>
> >> +     * Defaults to<code>null</code>  if the runtime does not have security
> >> access to read this property or the property does not exist.
> >> +     *</p>
> >>        *
> >>        *<p>
> >> -     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)}
> >> -     * or {@link System#setProperties(java.util.Properties)} is called
> >> after this class is loaded, the value
> >> -     * will be out of sync with that System property.
> >> +     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)} or
> >> +     * {@link System#setProperties(java.util.Properties)} is called after
> >> this class is loaded, the value will be out of sync with that
> >> +     * System property.
> >>        *</p>
> >>        *
> >>        * @since 2.0
> >>        * @since Java 1.2
> >>        */
> >> -    public static final String USER_COUNTRY =
> >> -        getSystemProperty("user.country") == null ?
> >> -            getSystemProperty("user.region") :
> >> getSystemProperty("user.country");
> >> +    public static final String USER_COUNTRY =
> >> getSystemProperty("user.country") == null ?
> getSystemProperty("user.region")
> >> +            : getSystemProperty("user.country");
> >>
> >>       /**
> >> -     *<p>The<code>user.dir</code>  System Property. User's current working
> >> -     * directory.</p>
> >> -     *
> >> -     *<p>Defaults to<code>null</code>  if the runtime does not have
> >> -     * security access to read this property or the property does not
> >> exist.</p>
> >> +     *<p>
> >> +     * The<code>user.dir</code>  System Property. User's current working
> >> directory.
> >> +     *</p>
> >> +     *
> >> +     *<p>
> >> +     * Defaults to<code>null</code>  if the runtime does not have security
> >> access to read this property or the property does not exist.
> >> +     *</p>
> >>        *
> >>        *<p>
> >> -     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)}
> >> -     * or {@link System#setProperties(java.util.Properties)} is called
> >> after this class is loaded, the value
> >> -     * will be out of sync with that System property.
> >> +     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)} or
> >> +     * {@link System#setProperties(java.util.Properties)} is called after
> >> this class is loaded, the value will be out of sync with that
> >> +     * System property.
> >>        *</p>
> >>        *
> >>        * @since Java 1.1
> >> @@ -718,15 +822,18 @@ public class SystemUtils {
> >>       public static final String USER_DIR =
> getSystemProperty(USER_DIR_KEY);
> >>
> >>       /**
> >> -     *<p>The<code>user.home</code>  System Property. User's home
> >> directory.</p>
> >> -     *
> >> -     *<p>Defaults to<code>null</code>  if the runtime does not have
> >> -     * security access to read this property or the property does not
> >> exist.</p>
> >> +     *<p>
> >> +     * The<code>user.home</code>  System Property. User's home directory.
> >> +     *</p>
> >> +     *
> >> +     *<p>
> >> +     * Defaults to<code>null</code>  if the runtime does not have security
> >> access to read this property or the property does not exist.
> >> +     *</p>
> >>        *
> >>        *<p>
> >> -     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)}
> >> -     * or {@link System#setProperties(java.util.Properties)} is called
> >> after this class is loaded, the value
> >> -     * will be out of sync with that System property.
> >> +     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)} or
> >> +     * {@link System#setProperties(java.util.Properties)} is called after
> >> this class is loaded, the value will be out of sync with that
> >> +     * System property.
> >>        *</p>
> >>        *
> >>        * @since Java 1.1
> >> @@ -734,16 +841,18 @@ public class SystemUtils {
> >>       public static final String USER_HOME =
> >> getSystemProperty(USER_HOME_KEY);
> >>
> >>       /**
> >> -     *<p>The<code>user.language</code>  System Property. User's language
> >> code,
> >> -     * such as<code>"en"</code>.</p>
> >> -     *
> >> -     *<p>Defaults to<code>null</code>  if the runtime does not have
> >> -     * security access to read this property or the property does not
> >> exist.</p>
> >> +     *<p>
> >> +     * The<code>user.language</code>  System Property. User's language
> >> code, such as<code>"en"</code>.
> >> +     *</p>
> >>        *
> >>        *<p>
> >> -     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)}
> >> -     * or {@link System#setProperties(java.util.Properties)} is called
> >> after this class is loaded, the value
> >> -     * will be out of sync with that System property.
> >> +     * Defaults to<code>null</code>  if the runtime does not have security
> >> access to read this property or the property does not exist.
> >> +     *</p>
> >> +     *
> >> +     *<p>
> >> +     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)} or
> >> +     * {@link System#setProperties(java.util.Properties)} is called after
> >> this class is loaded, the value will be out of sync with that
> >> +     * System property.
> >>        *</p>
> >>        *
> >>        * @since 2.0
> >> @@ -752,15 +861,18 @@ public class SystemUtils {
> >>       public static final String USER_LANGUAGE =
> >> getSystemProperty("user.language");
> >>
> >>       /**
> >> -     *<p>The<code>user.name</code>  System Property. User's account
> >> name.</p>
> >> -     *
> >> -     *<p>Defaults to<code>null</code>  if the runtime does not have
> >> -     * security access to read this property or the property does not
> >> exist.</p>
> >> +     *<p>
> >> +     * The<code>user.name</code>  System Property. User's account name.
> >> +     *</p>
> >> +     *
> >> +     *<p>
> >> +     * Defaults to<code>null</code>  if the runtime does not have security
> >> access to read this property or the property does not exist.
> >> +     *</p>
> >>        *
> >>        *<p>
> >> -     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)}
> >> -     * or {@link System#setProperties(java.util.Properties)} is called
> >> after this class is loaded, the value
> >> -     * will be out of sync with that System property.
> >> +     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)} or
> >> +     * {@link System#setProperties(java.util.Properties)} is called after
> >> this class is loaded, the value will be out of sync with that
> >> +     * System property.
> >>        *</p>
> >>        *
> >>        * @since Java 1.1
> >> @@ -768,16 +880,18 @@ public class SystemUtils {
> >>       public static final String USER_NAME =
> getSystemProperty("user.name");
> >>
> >>       /**
> >> -     *<p>The<code>user.timezone</code>  System Property.
> >> -     * For example:<code>"America/Los_Angeles"</code>.</p>
> >> -     *
> >> -     *<p>Defaults to<code>null</code>  if the runtime does not have
> >> -     * security access to read this property or the property does not
> >> exist.</p>
> >> +     *<p>
> >> +     * The<code>user.timezone</code>  System Property. For example:
> >> <code>"America/Los_Angeles"</code>.
> >> +     *</p>
> >> +     *
> >> +     *<p>
> >> +     * Defaults to<code>null</code>  if the runtime does not have security
> >> access to read this property or the property does not exist.
> >> +     *</p>
> >>        *
> >>        *<p>
> >> -     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)}
> >> -     * or {@link System#setProperties(java.util.Properties)} is called
> >> after this class is loaded, the value
> >> -     * will be out of sync with that System property.
> >> +     * This value is initialized when the class is loaded. If {@link
> >> System#setProperty(String,String)} or
> >> +     * {@link System#setProperties(java.util.Properties)} is called after
> >> this class is loaded, the value will be out of sync with that
> >> +     * System property.
> >>        *</p>
> >>        *
> >>        * @since 2.1
> >> @@ -785,119 +899,156 @@ public class SystemUtils {
> >>       public static final String USER_TIMEZONE =
> >> getSystemProperty("user.timezone");
> >>
> >>       // Java version
> >> -
> >> //-----------------------------------------------------------------------
> >> +    //
> >> -----------------------------------------------------------------------
> >>       // This MUST be declared after those above as it depends on the
> >>       // values being set up
> >>
> >>       /**
> >> -     *<p>Gets the Java version as a<code>String</code>  trimming leading
> >> letters.</p>
> >> -     *
> >> -     *<p>The field will return<code>null</code>  if {@link #JAVA_VERSION}
> >> is<code>null</code>.</p>
> >> +     *<p>
> >> +     * Gets the Java version as a<code>String</code>  trimming leading
> >> letters.
> >> +     *</p>
> >> +     *
> >> +     *<p>
> >> +     * The field will return<code>null</code>  if {@link #JAVA_VERSION} is
> >> <code>null</code>.
> >> +     *</p>
> >>        *
> >>        * @since 2.1
> >>        */
> >>       public static final String JAVA_VERSION_TRIMMED =
> >> getJavaVersionTrimmed();
> >>
> >>       // Java version values
> >> -
> >> //-----------------------------------------------------------------------
> >> +    //
> >> -----------------------------------------------------------------------
> >>       // These MUST be declared after the trim above as they depend on the
> >>       // value being set up
> >>
> >>       /**
> >> -     *<p>Gets the Java version as a<code>float</code>.</p>
> >> -     *
> >> -     *<p>Example return values:</p>
> >> +     *<p>
> >> +     * Gets the Java version as a<code>float</code>.
> >> +     *</p>
> >> +     *
> >> +     *<p>
> >> +     * Example return values:
> >> +     *</p>
> >>        *<ul>
> >> -     *<li><code>1.2f</code>  for JDK 1.2
> >> -     *<li><code>1.31f</code>  for JDK 1.3.1
> >> +     *<li><code>1.2f</code>  for Java 1.2
> >> +     *<li><code>1.31f</code>  for Java 1.3.1
> >>        *</ul>
> >> -     *
> >> -     *<p>The field will return zero if {@link #JAVA_VERSION} is
> >> <code>null</code>.</p>
> >> +     *
> >> +     *<p>
> >> +     * The field will return zero if {@link #JAVA_VERSION} is
> >> <code>null</code>.
> >> +     *</p>
> >>        *
> >>        * @since 2.0
> >>        */
> >>       public static final float JAVA_VERSION_FLOAT =
> getJavaVersionAsFloat();
> >>
> >>       /**
> >> -     *<p>Gets the Java version as an<code>int</code>.</p>
> >> -     *
> >> -     *<p>Example return values:</p>
> >> +     *<p>
> >> +     * Gets the Java version as an<code>int</code>.
> >> +     *</p>
> >> +     *
> >> +     *<p>
> >> +     * Example return values:
> >> +     *</p>
> >>        *<ul>
> >> -     *<li><code>120</code>  for JDK 1.2
> >> -     *<li><code>131</code>  for JDK 1.3.1
> >> +     *<li><code>120</code>  for Java 1.2
> >> +     *<li><code>131</code>  for Java 1.3.1
> >>        *</ul>
> >> -     *
> >> -     *<p>The field will return zero if {@link #JAVA_VERSION} is
> >> <code>null</code>.</p>
> >> +     *
> >> +     *<p>
> >> +     * The field will return zero if {@link #JAVA_VERSION} is
> >> <code>null</code>.
> >> +     *</p>
> >>        *
> >>        * @since 2.0
> >>        */
> >>       public static final int JAVA_VERSION_INT = getJavaVersionAsInt();
> >>
> >>       // Java version checks
> >> -
> >> //-----------------------------------------------------------------------
> >> +    //
> >> -----------------------------------------------------------------------
> >>       // These MUST be declared after those above as they depend on the
> >>       // values being set up
> >> -
> >> +
> >>       /**
> >> -     *<p>Is<code>true</code>  if this is Java version 1.1 (also 1.1.x
> >> versions).</p>
> >> -     *
> >> -     *<p>The field will return<code>false</code>  if {@link #JAVA_VERSION}
> >> is
> >> -     *<code>null</code>.</p>
> >> +     *<p>
> >> +     * Is<code>true</code>  if this is Java version 1.1 (also 1.1.x
> >> versions).
> >> +     *</p>
> >> +     *
> >> +     *<p>
> >> +     * The field will return<code>false</code>  if {@link #JAVA_VERSION}
> is
> >> <code>null</code>.
> >> +     *</p>
> >>        */
> >>       public static final boolean IS_JAVA_1_1 =
> getJavaVersionMatches("1.1");
> >>
> >>       /**
> >> -     *<p>Is<code>true</code>  if this is Java version 1.2 (also 1.2.x
> >> versions).</p>
> >> -     *
> >> -     *<p>The field will return<code>false</code>  if {@link #JAVA_VERSION}
> >> is
> >> -     *<code>null</code>.</p>
> >> +     *<p>
> >> +     * Is<code>true</code>  if this is Java version 1.2 (also 1.2.x
> >> versions).
> >> +     *</p>
> >> +     *
> >> +     *<p>
> >> +     * The field will return<code>false</code>  if {@link #JAVA_VERSION}
> is
> >> <code>null</code>.
> >> +     *</p>
> >>        */
> >>       public static final boolean IS_JAVA_1_2 =
> getJavaVersionMatches("1.2");
> >>
> >>       /**
> >> -     *<p>Is<code>true</code>  if this is Java version 1.3 (also 1.3.x
> >> versions).</p>
> >> -     *
> >> -     *<p>The field will return<code>false</code>  if {@link #JAVA_VERSION}
> >> is
> >> -     *<code>null</code>.</p>
> >> -     */
> >> -    public static final boolean IS_JAVA_1_3 =
> getJavaVersionMatches("1.3");
> >> -
> >> +     *<p>
> >> +     * Is<code>true</code>  if this is Java version 1.3 (also 1.3.x
> >> versions).
> >> +     *</p>
> >> +     *
> >> +     *<p>
> >> +     * The field will return<code>false</code>  if {@link #JAVA_VERSION}
> is
> >> <code>null</code>.
> >> +     *</p>
> >> +     */
> >> +    public static final boolean IS_JAVA_1_3 =
> getJavaVersionMatches("1.3");
> >> +
> >>       /**
> >> -     *<p>Is<code>true</code>  if this is Java version 1.4 (also 1.4.x
> >> versions).</p>
> >> -     *
> >> -     *<p>The field will return<code>false</code>  if {@link #JAVA_VERSION}
> >> is
> >> -     *<code>null</code>.</p>
> >> +     *<p>
> >> +     * Is<code>true</code>  if this is Java version 1.4 (also 1.4.x
> >> versions).
> >> +     *</p>
> >> +     *
> >> +     *<p>
> >> +     * The field will return<code>false</code>  if {@link #JAVA_VERSION}
> is
> >> <code>null</code>.
> >> +     *</p>
> >>        */
> >>       public static final boolean IS_JAVA_1_4 =
> getJavaVersionMatches("1.4");
> >>
> >>       /**
> >> -     *<p>Is<code>true</code>  if this is Java version 1.5 (also 1.5.x
> >> versions).</p>
> >> -     *
> >> -     *<p>The field will return<code>false</code>  if {@link #JAVA_VERSION}
> >> is
> >> -     *<code>null</code>.</p>
> >> +     *<p>
> >> +     * Is<code>true</code>  if this is Java version 1.5 (also 1.5.x
> >> versions).
> >> +     *</p>
> >> +     *
> >> +     *<p>
> >> +     * The field will return<code>false</code>  if {@link #JAVA_VERSION}
> is
> >> <code>null</code>.
> >> +     *</p>
> >>        */
> >>       public static final boolean IS_JAVA_1_5 =
> getJavaVersionMatches("1.5");
> >>
> >>       /**
> >> -     *<p>Is<code>true</code>  if this is Java version 1.6 (also 1.6.x
> >> versions).</p>
> >> -     *
> >> -     *<p>The field will return<code>false</code>  if {@link #JAVA_VERSION}
> >> is
> >> -     *<code>null</code>.</p>
> >> +     *<p>
> >> +     * Is<code>true</code>  if this is Java version 1.6 (also 1.6.x
> >> versions).
> >> +     *</p>
> >> +     *
> >> +     *<p>
> >> +     * The field will return<code>false</code>  if {@link #JAVA_VERSION}
> is
> >> <code>null</code>.
> >> +     *</p>
> >>        */
> >>       public static final boolean IS_JAVA_1_6 =
> getJavaVersionMatches("1.6");
> >>
> >>       /**
> >> -     *<p>Is<code>true</code>  if this is Java version 1.7 (also 1.7.x
> >> versions).</p>
> >> -     *
> >> -     *<p>The field will return<code>false</code>  if {@link #JAVA_VERSION}
> >> is
> >> -     *<code>null</code>.</p>
> >> +     *<p>
> >> +     * Is<code>true</code>  if this is Java version 1.7 (also 1.7.x
> >> versions).
> >> +     *</p>
> >> +     *
> >> +     *<p>
> >> +     * The field will return<code>false</code>  if {@link #JAVA_VERSION}
> is
> >> <code>null</code>.
> >> +     *</p>
> >>        *
> >>        * @since 3.0
> >>        */
> >>       public static final boolean IS_JAVA_1_7 =
> getJavaVersionMatches("1.7");
> >>
> >>       // Operating system checks
> >> -
> >> //-----------------------------------------------------------------------
> >> +    //
> >> -----------------------------------------------------------------------
> >>       // These MUST be declared after those above as they depend on the
> >>       // values being set up
> >>       // OS names from http://www.vamphq.com/os.html
> >> @@ -905,276 +1056,349 @@ public class SystemUtils {
> >>       // if you want another added or a mistake corrected
> >>
> >>       /**
> >> -     *<p>Is<code>true</code>  if this is AIX.</p>
> >> -     *
> >> -     *<p>The field will return<code>false</code>  if<code>OS_NAME</code>
> >> is
> >> -     *<code>null</code>.</p>
> >> +     *<p>
> >> +     * Is<code>true</code>  if this is AIX.
> >> +     *</p>
> >> +     *
> >> +     *<p>
> >> +     * The field will return<code>false</code>  if<code>OS_NAME</code>  is
> >> <code>null</code>.
> >> +     *</p>
> >>        *
> >>        * @since 2.0
> >>        */
> >> -    public static final boolean IS_OS_AIX = getOSMatches("AIX");
> >> +    public static final boolean IS_OS_AIX = getOSMatchesName("AIX");
> >>
> >>       /**
> >> -     *<p>Is<code>true</code>  if this is HP-UX.</p>
> >> -     *
> >> -     *<p>The field will return<code>false</code>  if<code>OS_NAME</code>
> >> is
> >> -     *<code>null</code>.</p>
> >> +     *<p>
> >> +     * Is<code>true</code>  if this is HP-UX.
> >> +     *</p>
> >> +     *
> >> +     *<p>
> >> +     * The field will return<code>false</code>  if<code>OS_NAME</code>  is
> >> <code>null</code>.
> >> +     *</p>
> >>        *
> >>        * @since 2.0
> >>        */
> >> -    public static final boolean IS_OS_HP_UX = getOSMatches("HP-UX");
> >> +    public static final boolean IS_OS_HP_UX = getOSMatchesName("HP-UX");
> >>
> >>       /**
> >> -     *<p>Is<code>true</code>  if this is Irix.</p>
> >> -     *
> >> -     *<p>The field will return<code>false</code>  if<code>OS_NAME</code>
> >> is
> >> -     *<code>null</code>.</p>
> >> +     *<p>
> >> +     * Is<code>true</code>  if this is Irix.
> >> +     *</p>
> >> +     *
> >> +     *<p>
> >> +     * The field will return<code>false</code>  if<code>OS_NAME</code>  is
> >> <code>null</code>.
> >> +     *</p>
> >>        *
> >>        * @since 2.0
> >>        */
> >> -    public static final boolean IS_OS_IRIX = getOSMatches("Irix");
> >> +    public static final boolean IS_OS_IRIX = getOSMatchesName("Irix");
> >>
> >>       /**
> >> -     *<p>Is<code>true</code>  if this is Linux.</p>
> >> -     *
> >> -     *<p>The field will return<code>false</code>  if<code>OS_NAME</code>
> >> is
> >> -     *<code>null</code>.</p>
> >> +     *<p>
> >> +     * Is<code>true</code>  if this is Linux.
> >> +     *</p>
> >> +     *
> >> +     *<p>
> >> +     * The field will return<code>false</code>  if<code>OS_NAME</code>  is
> >> <code>null</code>.
> >> +     *</p>
> >>        *
> >>        * @since 2.0
> >>        */
> >> -    public static final boolean IS_OS_LINUX = getOSMatches("Linux") ||
> >> getOSMatches("LINUX");
> >> +    public static final boolean IS_OS_LINUX = getOSMatchesName("Linux") ||
> >> getOSMatchesName("LINUX");
> >>
> >>       /**
> >> -     *<p>Is<code>true</code>  if this is Mac.</p>
> >> -     *
> >> -     *<p>The field will return<code>false</code>  if<code>OS_NAME</code>
> >> is
> >> -     *<code>null</code>.</p>
> >> +     *<p>
> >> +     * Is<code>true</code>  if this is Mac.
> >> +     *</p>
> >> +     *
> >> +     *<p>
> >> +     * The field will return<code>false</code>  if<code>OS_NAME</code>  is
> >> <code>null</code>.
> >> +     *</p>
> >>        *
> >>        * @since 2.0
> >>        */
> >> -    public static final boolean IS_OS_MAC = getOSMatches("Mac");
> >> +    public static final boolean IS_OS_MAC = getOSMatchesName("Mac");
> >>
> >>       /**
> >> -     *<p>Is<code>true</code>  if this is Mac.</p>
> >> -     *
> >> -     *<p>The field will return<code>false</code>  if<code>OS_NAME</code>
> >> is
> >> -     *<code>null</code>.</p>
> >> +     *<p>
> >> +     * Is<code>true</code>  if this is Mac.
> >> +     *</p>
> >> +     *
> >> +     *<p>
> >> +     * The field will return<code>false</code>  if<code>OS_NAME</code>  is
> >> <code>null</code>.
> >> +     *</p>
> >>        *
> >>        * @since 2.0
> >>        */
> >> -    public static final boolean IS_OS_MAC_OSX = getOSMatches("Mac OS X");
> >> +    public static final boolean IS_OS_MAC_OSX = getOSMatchesName("Mac OS
> >> X");
> >>
> >>       /**
> >> -     *<p>Is<code>true</code>  if this is OS/2.</p>
> >> -     *
> >> -     *<p>The field will return<code>false</code>  if<code>OS_NAME</code>
> >> is
> >> -     *<code>null</code>.</p>
> >> +     *<p>
> >> +     * Is<code>true</code>  if this is OS/2.
> >> +     *</p>
> >> +     *
> >> +     *<p>
> >> +     * The field will return<code>false</code>  if<code>OS_NAME</code>  is
> >> <code>null</code>.
> >> +     *</p>
> >>        *
> >>        * @since 2.0
> >>        */
> >> -    public static final boolean IS_OS_OS2 = getOSMatches("OS/2");
> >> +    public static final boolean IS_OS_OS2 = getOSMatchesName("OS/2");
> >>
> >>       /**
> >> -     *<p>Is<code>true</code>  if this is Solaris.</p>
> >> -     *
> >> -     *<p>The field will return<code>false</code>  if<code>OS_NAME</code>
> >> is
> >> -     *<code>null</code>.</p>
> >> +     *<p>
> >> +     * Is<code>true</code>  if this is Solaris.
> >> +     *</p>
> >> +     *
> >> +     *<p>
> >> +     * The field will return<code>false</code>  if<code>OS_NAME</code>  is
> >> <code>null</code>.
> >> +     *</p>
> >>        *
> >>        * @since 2.0
> >>        */
> >> -    public static final boolean IS_OS_SOLARIS = getOSMatches("Solaris");
> >> +    public static final boolean IS_OS_SOLARIS =
> >> getOSMatchesName("Solaris");
> >>
> >>       /**
> >> -     *<p>Is<code>true</code>  if this is SunOS.</p>
> >> -     *
> >> -     *<p>The field will return<code>false</code>  if<code>OS_NAME</code>
> >> is
> >> -     *<code>null</code>.</p>
> >> +     *<p>
> >> +     * Is<code>true</code>  if this is SunOS.
> >> +     *</p>
> >> +     *
> >> +     *<p>
> >> +     * The field will return<code>false</code>  if<code>OS_NAME</code>  is
> >> <code>null</code>.
> >> +     *</p>
> >>        *
> >>        * @since 2.0
> >>        */
> >> -    public static final boolean IS_OS_SUN_OS = getOSMatches("SunOS");
> >> +    public static final boolean IS_OS_SUN_OS = getOSMatchesName("SunOS");
> >>
> >>       /**
> >> -     *<p>Is<code>true</code>  if this is a POSIX compilant system,
> >> -     * as in any of AIX, HP-UX, Irix, Linux, MacOSX, Solaris or SUN
> OS.</p>
> >> -     *
> >> -     *<p>The field will return<code>false</code>  if<code>OS_NAME</code>
> >> is
> >> -     *<code>null</code>.</p>
> >> +     *<p>
> >> +     * Is<code>true</code>  if this is a POSIX compilant system, as in any
> >> of AIX, HP-UX, Irix, Linux, MacOSX, Solaris or SUN OS.
> >> +     *</p>
> >> +     *
> >> +     *<p>
> >> +     * The field will return<code>false</code>  if<code>OS_NAME</code>  is
> >> <code>null</code>.
> >> +     *</p>
> >>        *
> >>        * @since 2.1
> >>        */
> >> -    public static final boolean IS_OS_UNIX =
> >> -        IS_OS_AIX || IS_OS_HP_UX || IS_OS_IRIX || IS_OS_LINUX ||
> >> -        IS_OS_MAC_OSX || IS_OS_SOLARIS || IS_OS_SUN_OS;
> >> +    public static final boolean IS_OS_UNIX = IS_OS_AIX || IS_OS_HP_UX ||
> >> IS_OS_IRIX || IS_OS_LINUX || IS_OS_MAC_OSX || IS_OS_SOLARIS
> >> +            || IS_OS_SUN_OS;
> >>
> >>       /**
> >> -     *<p>Is<code>true</code>  if this is Windows.</p>
> >> -     *
> >> -     *<p>The field will return<code>false</code>  if<code>OS_NAME</code>
> >> is
> >> -     *<code>null</code>.</p>
> >> +     *<p>
> >> +     * Is<code>true</code>  if this is Windows.
> >> +     *</p>
> >> +     *
> >> +     *<p>
> >> +     * The field will return<code>false</code>  if<code>OS_NAME</code>  is
> >> <code>null</code>.
> >> +     *</p>
> >>        *
> >>        * @since 2.0
> >>        */
> >> -    public static final boolean IS_OS_WINDOWS =
> >> getOSMatches(OS_NAME_WINDOWS_PREFIX);
> >> +    public static final boolean IS_OS_WINDOWS =
> >> getOSMatchesName(OS_NAME_WINDOWS_PREFIX);
> >>
> >>       /**
> >> -     *<p>Is<code>true</code>  if this is Windows 2000.</p>
> >> -     *
> >> -     *<p>The field will return<code>false</code>  if<code>OS_NAME</code>
> >> is
> >> -     *<code>null</code>.</p>
> >> +     *<p>
> >> +     * Is<code>true</code>  if this is Windows 2000.
> >> +     *</p>
> >> +     *
> >> +     *<p>
> >> +     * The field will return<code>false</code>  if<code>OS_NAME</code>  is
> >> <code>null</code>.
> >> +     *</p>
> >>        *
> >>        * @since 2.0
> >>        */
> >>       public static final boolean IS_OS_WINDOWS_2000 =
> >> getOSMatches(OS_NAME_WINDOWS_PREFIX, "5.0");
> >>
> >>       /**
> >> -     *<p>Is<code>true</code>  if this is Windows 95.</p>
> >> -     *
> >> -     *<p>The field will return<code>false</code>  if<code>OS_NAME</code>
> >> is
> >> -     *<code>null</code>.</p>
> >> +     *<p>
> >> +     * Is<code>true</code>  if this is Windows 95.
> >> +     *</p>
> >> +     *
> >> +     *<p>
> >> +     * The field will return<code>false</code>  if<code>OS_NAME</code>  is
> >> <code>null</code>.
> >> +     *</p>
> >>        *
> >>        * @since 2.0
> >>        */
> >>       public static final boolean IS_OS_WINDOWS_95 =
> >> getOSMatches(OS_NAME_WINDOWS_PREFIX + " 9", "4.0");
> >> -    // JDK 1.2 running on Windows98 returns 'Windows 95', hence the above
> >> +    // Java 1.2 running on Windows98 returns 'Windows 95', hence the above
> >>
> >>       /**
> >> -     *<p>Is<code>true</code>  if this is Windows 98.</p>
> >> -     *
> >> -     *<p>The field will return<code>false</code>  if<code>OS_NAME</code>
> >> is
> >> -     *<code>null</code>.</p>
> >> +     *<p>
> >> +     * Is<code>true</code>  if this is Windows 98.
> >> +     *</p>
> >> +     *
> >> +     *<p>
> >> +     * The field will return<code>false</code>  if<code>OS_NAME</code>  is
> >> <code>null</code>.
> >> +     *</p>
> >>        *
> >>        * @since 2.0
> >>        */
> >>       public static final boolean IS_OS_WINDOWS_98 =
> >> getOSMatches(OS_NAME_WINDOWS_PREFIX + " 9", "4.1");
> >> -    // JDK 1.2 running on Windows98 returns 'Windows 95', hence the above
> >> +    // Java 1.2 running on Windows98 returns 'Windows 95', hence the above
> >>
> >>       /**
> >> -     *<p>Is<code>true</code>  if this is Windows ME.</p>
> >> -     *
> >> -     *<p>The field will return<code>false</code>  if<code>OS_NAME</code>
> >> is
> >> -     *<code>null</code>.</p>
> >> +     *<p>
> >> +     * Is<code>true</code>  if this is Windows ME.
> >> +     *</p>
> >> +     *
> >> +     *<p>
> >> +     * The field will return<code>false</code>  if<code>OS_NAME</code>  is
> >> <code>null</code>.
> >> +     *</p>
> >>        *
> >>        * @since 2.0
> >>        */
> >>       public static final boolean IS_OS_WINDOWS_ME =
> >> getOSMatches(OS_NAME_WINDOWS_PREFIX, "4.9");
> >> -    // JDK 1.2 running on WindowsME may return 'Windows 95', hence the
> >> above
> >> +    // Java 1.2 running on WindowsME may return 'Windows 95', hence the
> >> above
> >>
> >>       /**
> >> -     *<p>Is<code>true</code>  if this is Windows NT.</p>
> >> -     *
> >> -     *<p>The field will return<code>false</code>  if<code>OS_NAME</code>
> >> is
> >> -     *<code>null</code>.</p>
> >> +     *<p>
> >> +     * Is<code>true</code>  if this is Windows NT.
> >> +     *</p>
> >> +     *
> >> +     *<p>
> >> +     * The field will return<code>false</code>  if<code>OS_NAME</code>  is
> >> <code>null</code>.
> >> +     *</p>
> >>        *
> >>        * @since 2.0
> >>        */
> >> -    public static final boolean IS_OS_WINDOWS_NT =
> >> getOSMatches(OS_NAME_WINDOWS_PREFIX + " NT");
> >> -    // Windows 2000 returns 'Windows 2000' but may suffer from same JDK1.2
> >> problem
> >> +    public static final boolean IS_OS_WINDOWS_NT =
> >> getOSMatchesName(OS_NAME_WINDOWS_PREFIX + " NT");
> >> +    // Windows 2000 returns 'Windows 2000' but may suffer from same
> Java1.2
> >> problem
> >>
> >>       /**
> >> -     *<p>Is<code>true</code>  if this is Windows XP.</p>
> >> -     *
> >> -     *<p>The field will return<code>false</code>  if<code>OS_NAME</code>
> >> is
> >> -     *<code>null</code>.</p>
> >> +     *<p>
> >> +     * Is<code>true</code>  if this is Windows XP.
> >> +     *</p>
> >> +     *
> >> +     *<p>
> >> +     * The field will return<code>false</code>  if<code>OS_NAME</code>  is
> >> <code>null</code>.
> >> +     *</p>
> >>        *
> >>        * @since 2.0
> >>        */
> >>       public static final boolean IS_OS_WINDOWS_XP =
> >> getOSMatches(OS_NAME_WINDOWS_PREFIX, "5.1");
> >>
> >> -
> >> //-----------------------------------------------------------------------
> >> +    //
> >> -----------------------------------------------------------------------
> >>       /**
> >> -     *<p>Is<code>true</code>  if this is Windows Vista.</p>
> >> -     *
> >> -     *<p>The field will return<code>false</code>  if<code>OS_NAME</code>
> >> is
> >> -     *<code>null</code>.</p>
> >> -     *
> >> +     *<p>
> >> +     * Is<code>true</code>  if this is Windows Vista.
> >> +     *</p>
> >> +     *
> >> +     *<p>
> >> +     * The field will return<code>false</code>  if<code>OS_NAME</code>  is
> >> <code>null</code>.
> >> +     *</p>
> >> +     *
> >>        * @since 2.4
> >>        */
> >> -    public static final boolean IS_OS_WINDOWS_VISTA =
> >> getOSMatches(OS_NAME_WINDOWS_PREFIX, "6.0");
> >> +    public static final boolean IS_OS_WINDOWS_VISTA =
> >> getOSMatches(OS_NAME_WINDOWS_PREFIX, "6.0");
> >>
> >>       /**
> >> -     *<p>Is<code>true</code>  if this is Windows 7.</p>
> >> -     *
> >> -     *<p>The field will return<code>false</code>  if<code>OS_NAME</code>
> >> is
> >> -     *<code>null</code>.</p>
> >> -     *
> >> +     *<p>
> >> +     * Is<code>true</code>  if this is Windows 7.
> >> +     *</p>
> >> +     *
> >> +     *<p>
> >> +     * The field will return<code>false</code>  if<code>OS_NAME</code>  is
> >> <code>null</code>.
> >> +     *</p>
> >> +     *
> >>        * @since 3.0
> >>        */
> >> -    public static final boolean IS_OS_WINDOWS_7 =
> >> getOSMatches(OS_NAME_WINDOWS_PREFIX, "6.1");
> >> +    public static final boolean IS_OS_WINDOWS_7 =
> >> getOSMatches(OS_NAME_WINDOWS_PREFIX, "6.1");
> >>
> >> -
> >> //-----------------------------------------------------------------------
> >>       /**
> >> -     *<p>SystemUtils instances should NOT be constructed in standard
> >> -     * programming. Instead, the class should be used as
> >> -     *<code>SystemUtils.FILE_SEPARATOR</code>.</p>
> >> -     *
> >> -     *<p>This constructor is public to permit tools that require a
> >> JavaBean
> >> -     * instance to operate.</p>
> >> +     *<p>
> >> +     * Gets the Java home directory as a<code>File</code>.
> >> +     *</p>
> >> +     *
> >> +     * @return a directory
> >> +     * @throws SecurityException
> >> +     *             if a security manager exists and its
> >> <code>checkPropertyAccess</code>  method doesn't allow access to the
> >> specified system
> >> +     *             property.
> >> +     * @see System#getProperty(String)
> >> +     * @since 2.1
> >>        */
> >> -    public SystemUtils() {
> >> -        super();
> >> +    public static File getJavaHome() {
> >> +        return new File(System.getProperty(JAVA_HOME_KEY));
> >>       }
> >> -
> >> -
> >> //-----------------------------------------------------------------------
> >> +
> >>       /**
> >> -     *<p>Gets the Java version number as a<code>float</code>.</p>
> >> -     *
> >> -     *<p>Example return values:</p>
> >> +     *<p>
> >> +     * Gets the Java IO temporary directory as a<code>File</code>.
> >> +     *</p>
> >> +     *
> >> +     * @return a directory
> >> +     * @throws SecurityException
> >> +     *             if a security manager exists and its
> >> <code>checkPropertyAccess</code>  method doesn't allow access to the
> >> specified system
> >> +     *             property.
> >> +     * @see System#getProperty(String)
> >> +     * @since 2.1
> >> +     */
> >> +    public static File getJavaIoTmpDir() {
> >> +        return new File(System.getProperty(JAVA_IO_TMPDIR_KEY));
> >> +    }
> >> +
> >> +    /**
> >> +     *<p>
> >> +     * Gets the Java version number as a<code>float</code>.
> >> +     *</p>
> >> +     *
> >> +     *<p>
> >> +     * Example return values:
> >> +     *</p>
> >>        *<ul>
> >> -     *<li><code>1.2f</code>  for JDK 1.2
> >> -     *<li><code>1.31f</code>  for JDK 1.3.1
> >> +     *<li><code>1.2f</code>  for Java 1.2</li>
> >> +     *<li><code>1.31f</code>  for Java 1.3.1</li>
> >> +     *<li><code>1.6f</code>  for Java 1.6.0_20</li>
> >>        *</ul>
> >>        *
> >> -     *<p>Patch releases are not reported.
> >> -     * Zero is returned if {@link #JAVA_VERSION_TRIMMED} is
> >> <code>null</code>.</p>
> >> +     *<p>
> >> +     * Patch releases are not reported.
> >> +     *</p>
> >>        *
> >> -     * @return the version, for example 1.31f for JDK 1.3.1
> >> +     * @return the version, for example 1.31f for Java 1.3.1
> >>        */
> >>       private static float getJavaVersionAsFloat() {
> >> -        if (JAVA_VERSION_TRIMMED == null) {
> >> -            return 0f;
> >> -        }
> >> -        String str = JAVA_VERSION_TRIMMED.substring(0, 3);
> >> -        if (JAVA_VERSION_TRIMMED.length()>= 5) {
> >> -            str = str + JAVA_VERSION_TRIMMED.substring(4, 5);
> >> -        }
> >> -        try {
> >> -            return Float.parseFloat(str);
> >> -        } catch (Exception ex) {
> >> -            return 0;
> >> -        }
> >> +        return
> >> toVersionFloat(toJavaVersionIntArray(SystemUtils.JAVA_VERSION,
> >> JAVA_VERSION_TRIM_SIZE));
> >>       }
> >> -
> >> +
> >>       /**
> >> -     *<p>Gets the Java version number as an<code>int</code>.</p>
> >> -     *
> >> -     *<p>Example return values:</p>
> >> +     *<p>
> >> +     * Gets the Java version number as an<code>int</code>.
> >> +     *</p>
> >> +     *
> >> +     *<p>
> >> +     * Example return values:
> >> +     *</p>
> >>        *<ul>
> >> -     *<li><code>120</code>  for JDK 1.2
> >> -     *<li><code>131</code>  for JDK 1.3.1
> >> +     *<li><code>120</code>  for Java 1.2</li>
> >> +     *<li><code>131</code>  for Java 1.3.1</li>
> >> +     *<li><code>160</code>  for Java 1.6.0_20</li>
> >>        *</ul>
> >>        *
> >> -     *<p>Patch releases are not reported.
> >> -     * Zero is returned if {@link #JAVA_VERSION_TRIMMED} is
> >> <code>null</code>.</p>
> >> +     *<p>
> >> +     * Patch releases are not reported.
> >> +     *</p>
> >>        *
> >> -     * @return the version, for example 131 for JDK 1.3.1
> >> +     * @return the version, for example 131 for Java 1.3.1
> >>        */
> >>       private static int getJavaVersionAsInt() {
> >> -        if (JAVA_VERSION_TRIMMED == null) {
> >> -            return 0;
> >> -        }
> >> -        String str = JAVA_VERSION_TRIMMED.substring(0, 1);
> >> -        str = str + JAVA_VERSION_TRIMMED.substring(2, 3);
> >> -        if (JAVA_VERSION_TRIMMED.length()>= 5) {
> >> -            str = str + JAVA_VERSION_TRIMMED.substring(4, 5);
> >> -        } else {
> >> -            str = str + "0";
> >> -        }
> >> -        try {
> >> -            return Integer.parseInt(str);
> >> -        } catch (Exception ex) {
> >> -            return 0;
> >> -        }
> >> +        return
> toVersionInt(toJavaVersionIntArray(SystemUtils.JAVA_VERSION,
> >> JAVA_VERSION_TRIM_SIZE));
> >> +    }
> >> +
> >> +    /**
> >> +     *<p>
> >> +     * Decides if the Java version matches.
> >> +     *</p>
> >> +     *
> >> +     * @param versionPrefix
> >> +     *            the prefix for the java version
> >> +     * @return true if matches, or false if not or can't determine
> >> +     */
> >> +    private static boolean getJavaVersionMatches(String versionPrefix) {
> >> +        return isJavaVersionMatch(JAVA_VERSION_TRIMMED, versionPrefix);
> >>       }
> >>
> >>       /**
> >> @@ -1195,54 +1419,42 @@ public class SystemUtils {
> >>       }
> >>
> >>       /**
> >> -     *<p>Decides if the java version matches.</p>
> >> +     * Decides if the operating system matches.
> >>        *
> >> -     * @param versionPrefix  the prefix for the java version
> >> +     * @param osNamePrefix
> >> +     *            the prefix for the os name
> >> +     * @param osVersionPrefix
> >> +     *            the prefix for the version
> >>        * @return true if matches, or false if not or can't determine
> >>        */
> >> -    private static boolean getJavaVersionMatches(String versionPrefix) {
> >> -        if (JAVA_VERSION_TRIMMED == null) {
> >> -            return false;
> >> -        }
> >> -        return JAVA_VERSION_TRIMMED.startsWith(versionPrefix);
> >> -    }
> >> -
> >> -    /**
> >> -     *<p>Decides if the operating system matches.</p>
> >> -     *
> >> -     * @param osNamePrefix  the prefix for the os name
> >> -     * @return true if matches, or false if not or can't determine
> >> -     */
> >> -    private static boolean getOSMatches(String osNamePrefix) {
> >> -        if (OS_NAME == null) {
> >> -            return false;
> >> -        }
> >> -        return OS_NAME.startsWith(osNamePrefix);
> >> -    }
> >> +    private static boolean getOSMatches(String osNamePrefix, String
> >> osVersionPrefix) {
> >> +        return isOSMatch(OS_NAME, OS_VERSION, osNamePrefix,
> >> osVersionPrefix);
> >> +    }
> >>
> >>       /**
> >> -     *<p>Decides if the operating system matches.</p>
> >> +     * Decides if the operating system matches.
> >>        *
> >> -     * @param osNamePrefix  the prefix for the os name
> >> -     * @param osVersionPrefix  the prefix for the version
> >> +     * @param osNamePrefix
> >> +     *            the prefix for the os name
> >>        * @return true if matches, or false if not or can't determine
> >>        */
> >> -    private static boolean getOSMatches(String osNamePrefix, String
> >> osVersionPrefix) {
> >> -        if (OS_NAME == null || OS_VERSION == null) {
> >> -            return false;
> >> -        }
> >> -        return OS_NAME.startsWith(osNamePrefix)&&
> >> OS_VERSION.startsWith(osVersionPrefix);
> >> -    }
> >> +    private static boolean getOSMatchesName(String osNamePrefix) {
> >> +        return isOSNameMatch(OS_NAME, osNamePrefix);
> >> +    }
> >>
> >> -
> >> //-----------------------------------------------------------------------
> >> +    //
> >> -----------------------------------------------------------------------
> >>       /**
> >> -     *<p>Gets a System property, defaulting to<code>null</code>  if the
> >> property
> >> -     * cannot be read.</p>
> >> -     *
> >> -     *<p>If a<code>SecurityException</code>  is caught, the return
> >> -     * value is<code>null</code>  and a message is written to
> >> <code>System.err</code>.</p>
> >> +     *<p>
> >> +     * Gets a System property, defaulting to<code>null</code>  if the
> >> property cannot be read.
> >> +     *</p>
> >>        *
> >> -     * @param property the system property name
> >> +     *<p>
> >> +     * If a<code>SecurityException</code>  is caught, the return value is
> >> <code>null</code>  and a message is written to
> >> +     *<code>System.err</code>.
> >> +     *</p>
> >> +     *
> >> +     * @param property
> >> +     *            the system property name
> >>        * @return the system property value or<code>null</code>  if a
> security
> >> problem occurs
> >>        */
> >>       private static String getSystemProperty(String property) {
> >> @@ -1250,43 +1462,94 @@ public class SystemUtils {
> >>               return System.getProperty(property);
> >>           } catch (SecurityException ex) {
> >>               // we are not allowed to look at this property
> >> -            System.err.println(
> >> -                "Caught a SecurityException reading the system property '"
> >> + property
> >> -                + "'; the SystemUtils property value will default to
> null."
> >> -            );
> >> +            System.err.println("Caught a SecurityException reading the
> >> system property '" + property
> >> +                    + "'; the SystemUtils property value will default to
> >> null.");
> >>               return null;
> >>           }
> >>       }
> >> -
> >> +
> >> +    /**
> >> +     *<p>
> >> +     * Gets the user directory as a<code>File</code>.
> >> +     *</p>
> >> +     *
> >> +     * @return a directory
> >> +     * @throws SecurityException
> >> +     *             if a security manager exists and its
> >> <code>checkPropertyAccess</code>  method doesn't allow access to the
> >> specified system
> >> +     *             property.
> >> +     * @see System#getProperty(String)
> >> +     * @since 2.1
> >> +     */
> >> +    public static File getUserDir() {
> >> +        return new File(System.getProperty(USER_DIR_KEY));
> >> +    }
> >> +
> >>       /**
> >> -     *<p>Is the Java version at least the requested version.</p>
> >> -     *
> >> -     *<p>Example input:</p>
> >> +     *<p>
> >> +     * Gets the user home directory as a<code>File</code>.
> >> +     *</p>
> >> +     *
> >> +     * @return a directory
> >> +     * @throws SecurityException
> >> +     *             if a security manager exists and its
> >> <code>checkPropertyAccess</code>  method doesn't allow access to the
> >> specified system
> >> +     *             property.
> >> +     * @see System#getProperty(String)
> >> +     * @since 2.1
> >> +     */
> >> +    public static File getUserHome() {
> >> +        return new File(System.getProperty(USER_HOME_KEY));
> >> +    }
> >> +
> >> +    /**
> >> +     * Returns whether the {@link #JAVA_AWT_HEADLESS} value is
> >> <code>true</code>.
> >> +     *
> >> +     * @return<code>true</code>  if<code>JAVA_AWT_HEADLESS</code>  is
> >> <code>"true"</code>,<code>false</code>  otherwise.
> >> +     *
> >> +     * @see #JAVA_AWT_HEADLESS
> >> +     * @since 2.1
> >> +     * @since Java 1.4
> >> +     */
> >> +    public static boolean isJavaAwtHeadless() {
> >> +        return JAVA_AWT_HEADLESS != null ?
> >> JAVA_AWT_HEADLESS.equals(Boolean.TRUE.toString()) : false;
> >> +    }
> >> +
> >> +    /**
> >> +     *<p>
> >> +     * Is the Java version at least the requested version.
> >> +     *</p>
> >> +     *
> >> +     *<p>
> >> +     * Example input:
> >> +     *</p>
> >>        *<ul>
> >> -     *<li><code>1.2f</code>  to test for JDK 1.2</li>
> >> -     *<li><code>1.31f</code>  to test for JDK 1.3.1</li>
> >> +     *<li><code>1.2f</code>  to test for Java 1.2</li>
> >> +     *<li><code>1.31f</code>  to test for Java 1.3.1</li>
> >>        *</ul>
> >>        *
> >> -     * @param requiredVersion  the required version, for example 1.31f
> >> -     * @return<code>true</code>  if the actual version is equal or greater
> >> -     *  than the required version
> >> +     * @param requiredVersion
> >> +     *            the required version, for example 1.31f
> >> +     * @return<code>true</code>  if the actual version is equal or greater
> >> than the required version
> >>        */
> >>       public static boolean isJavaVersionAtLeast(float requiredVersion) {
> >>           return JAVA_VERSION_FLOAT>= requiredVersion;
> >>       }
> >> -
> >> +
> >>       /**
> >> -     *<p>Is the Java version at least the requested version.</p>
> >> -     *
> >> -     *<p>Example input:</p>
> >> +     *<p>
> >> +     * Is the Java version at least the requested version.
> >> +     *</p>
> >> +     *
> >> +     *<p>
> >> +     * Example input:
> >> +     *</p>
> >>        *<ul>
> >> -     *<li><code>120</code>  to test for JDK 1.2 or greater</li>
> >> -     *<li><code>131</code>  to test for JDK 1.3.1 or greater</li>
> >> +     *<li><code>120</code>  to test for Java 1.2 or greater</li>
> >> +     *<li><code>131</code>  to test for Java 1.3.1 or greater</li>
> >>        *</ul>
> >>        *
> >> -     * @param requiredVersion  the required version, for example 131
> >>
> >> [... 323 lines stripped ...]
> >>
> >>
> >> --------------- Weitergeleitete Nachricht (Ende)
> >>
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
> >> For additional commands, e-mail: dev-help@commons.apache.org
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
> For additional commands, e-mail: dev-help@commons.apache.org


Re: svn commit: r949140 [2/3] - in /commons/proper/lang/trunk/src: main/java/org/apache/commons/lang3/SystemUtils.java test/java/org/apache/commons/lang3/SystemUtilsTest.java

Posted by Adrian Crum <ad...@hlmksw.com>.
It might help commit reviewers if the different tasks were committed 
individually.

-Adrian

On 5/28/2010 8:58 AM, Gary Gregory wrote:
> Jörg,
>
> I am sorry about that, I did not realize I created extra formatting noise in the change set. The changes to the class are numerous though, so there would have been lots of deltas, namely:
>
> - Fixed and tested (LANG-624) SystemUtils.getJavaVersionAsFloat throws StringIndexOutOfBoundsException on Android runtime/Dalvik VM. This is based on a new implementation of the underlying code with less reliance of hard coded array indices, for example, calls like substring (0, 3).
>
> - Refactored some private methods into one private and one package private method such that the latter can be called from unit tests. This allows [LANG-624] to be tested along with other methods. See below.
>
> - Removed "dead code" from unit tests: The SystemUtilsTest unit test contained code that was cut and pasted from SystemUtils for four constants and associated initialization methods. The test methods then called these SystemUtilsTest methods instead of the SystemUtils methods. The refactoring allows for the test to run against as much of the code in SystemUtils as possible.
>
> - Added assertions for Java version "0", "1.4.2", "1.6" and "1.7" to some tests.
>
> - Added Javadocs to document what happens with "1.6.0_20" vs. "1.6.0", which is that the patch level is ignored.
>
> Gary Gregory
> Senior Software Engineer
> Seagull Software
> email: ggregory@seagullsoftware.com
> email: ggregory@apache.org
> www.seagullsoftware.com
>
>
>> -----Original Message-----
>> From: Jörg Schaible [mailto:joerg.schaible@gmx.de]
>> Sent: Friday, May 28, 2010 05:13
>> To: dev@commons.apache.org
>> Subject: Fwd: svn commit: r949140 [2/3] - in /commons/proper/lang/trunk/src:
>> main/java/org/apache/commons/lang3/SystemUtils.java
>> test/java/org/apache/commons/lang3/SystemUtilsTest.java
>>
>> Gary,
>>
>> can you please stop with this code reformatting? How should anyone can have
>> a look at the changes if it is hidden between 95% unrelated stuff ???
>>
>> - Jörg
>>
>>
>>
>> --------------- Forwarded Message
>>
>> Betreff: svn commit: r949140 [2/3] - in /commons/proper/lang/trunk/src:
>> main/java/org/apache/commons/lang3/SystemUtils.java
>> test/java/org/apache/commons/lang3/SystemUtilsTest.java
>> Absender: ggregory@apache.org
>> Datum: Fri, 28 May 2010 10:12:04 +0000
>> Newsgruppe: gmane.comp.jakarta.commons.scm
>>
>>
>> Modified:
>> commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/SystemUtils.j
>> ava
>> URL:
>> http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/main/java/org/apach
>> e/commons/lang3/SystemUtils.java?rev=949140&r1=949139&r2=949140&view=diff
>> ==============================================================================
>> ---
>> commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/SystemUtils.j
>> ava
>> (original)
>> +++
>> commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/SystemUtils.j
>> ava
>> Fri May 28 10:12:04 2010
>> @@ -17,15 +17,22 @@
>>   package org.apache.commons.lang3;
>>
>>   import java.io.File;
>> +import java.util.regex.Pattern;
>>
>>   /**
>> - *<p>Helpers for<code>java.lang.System</code>.</p>
>> + *<p>
>> + * Helpers for<code>java.lang.System</code>.
>> + *</p>
>> + *
>> + *<p>
>> + * If a system property cannot be read due to security restrictions, the
>> corresponding field in this class will be set to<code>null</code>
>> + * and a message will be written to<code>System.err</code>.
>> + *</p>
>> + *
>> + *<p>
>> + * #ThreadSafe#
>> + *</p>
>>    *
>> - *<p>If a system property cannot be read due to security restrictions,
>> - * the corresponding field in this class will be set to<code>null</code>
>> - * and a message will be written to<code>System.err</code>.</p>
>> - *
>> - *<p>#ThreadSafe#</p>
>>    * @author Apache Software Foundation
>>    * @author Based on code from Avalon Excalibur
>>    * @author Based on code from Lucene
>> @@ -40,15 +47,17 @@ import java.io.File;
>>    */
>>   public class SystemUtils {
>>
>> +    private static final int JAVA_VERSION_TRIM_SIZE = 3;
>> +
>>       /**
>>        * The prefix String for all Windows OS.
>>        */
>>       private static final String OS_NAME_WINDOWS_PREFIX = "Windows";
>> -
>> +
>>       // System property constants
>> -
>> //-----------------------------------------------------------------------
>> +    //
>> -----------------------------------------------------------------------
>>       // These MUST be declared first. Other constants depend on this.
>> -
>> +
>>       /**
>>        * The System property key for the user home directory.
>>        */
>> @@ -58,29 +67,36 @@ public class SystemUtils {
>>        * The System property key for the user directory.
>>        */
>>       private static final String USER_DIR_KEY = "user.dir";
>> -
>> +
>>       /**
>>        * The System property key for the Java IO temporary directory.
>>        */
>>       private static final String JAVA_IO_TMPDIR_KEY = "java.io.tmpdir";
>> -
>> +
>>       /**
>>        * The System property key for the Java home directory.
>>        */
>>       private static final String JAVA_HOME_KEY = "java.home";
>> -
>> +
>>       /**
>> -     *<p>The<code>awt.toolkit</code>  System Property.</p>
>> -     *<p>Holds a class name, on Windows XP this is
>> <code>sun.awt.windows.WToolkit</code>.</p>
>> -     *<p><b>On platforms without a GUI, this value is
>> <code>null</code>.</b></p>
>> +     *<p>
>> +     * The<code>awt.toolkit</code>  System Property.
>> +     *</p>
>> +     *<p>
>> +     * Holds a class name, on Windows XP this is
>> <code>sun.awt.windows.WToolkit</code>.
>> +     *</p>
>> +     *<p>
>> +     *<b>On platforms without a GUI, this value is<code>null</code>.</b>
>> +     *</p>
>>        *
>> -     *<p>Defaults to<code>null</code>  if the runtime does not have
>> -     * security access to read this property or the property does not
>> exist.</p>
>> +     *<p>
>> +     * Defaults to<code>null</code>  if the runtime does not have security
>> access to read this property or the property does not exist.
>> +     *</p>
>>        *
>>        *<p>
>> -     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)}
>> -     * or {@link System#setProperties(java.util.Properties)} is called
>> after this class is loaded, the value
>> -     * will be out of sync with that System property.
>> +     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)} or
>> +     * {@link System#setProperties(java.util.Properties)} is called after
>> this class is loaded, the value will be out of sync with that
>> +     * System property.
>>        *</p>
>>        *
>>        * @since 2.1
>> @@ -88,16 +104,21 @@ public class SystemUtils {
>>       public static final String AWT_TOOLKIT =
>> getSystemProperty("awt.toolkit");
>>
>>       /**
>> -     *<p>The<code>file.encoding</code>  System Property.</p>
>> -     *<p>File encoding, such as<code>Cp1252</code>.</p>
>> +     *<p>
>> +     * The<code>file.encoding</code>  System Property.
>> +     *</p>
>> +     *<p>
>> +     * File encoding, such as<code>Cp1252</code>.
>> +     *</p>
>>        *
>> -     *<p>Defaults to<code>null</code>  if the runtime does not have
>> -     * security access to read this property or the property does not
>> exist.</p>
>> +     *<p>
>> +     * Defaults to<code>null</code>  if the runtime does not have security
>> access to read this property or the property does not exist.
>> +     *</p>
>>        *
>>        *<p>
>> -     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)}
>> -     * or {@link System#setProperties(java.util.Properties)} is called
>> after this class is loaded, the value
>> -     * will be out of sync with that System property.
>> +     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)} or
>> +     * {@link System#setProperties(java.util.Properties)} is called after
>> this class is loaded, the value will be out of sync with that
>> +     * System property.
>>        *</p>
>>        *
>>        * @since 2.0
>> @@ -106,16 +127,18 @@ public class SystemUtils {
>>       public static final String FILE_ENCODING =
>> getSystemProperty("file.encoding");
>>
>>       /**
>> -     *<p>The<code>file.separator</code>  System Property.
>> -     * File separator (<code>&quot;/&quot;</code>  on UNIX).</p>
>> -     *
>> -     *<p>Defaults to<code>null</code>  if the runtime does not have
>> -     * security access to read this property or the property does not
>> exist.</p>
>> +     *<p>
>> +     * The<code>file.separator</code>  System Property. File separator
>> (<code>&quot;/&quot;</code>  on UNIX).
>> +     *</p>
>>        *
>>        *<p>
>> -     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)}
>> -     * or {@link System#setProperties(java.util.Properties)} is called
>> after this class is loaded, the value
>> -     * will be out of sync with that System property.
>> +     * Defaults to<code>null</code>  if the runtime does not have security
>> access to read this property or the property does not exist.
>> +     *</p>
>> +     *
>> +     *<p>
>> +     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)} or
>> +     * {@link System#setProperties(java.util.Properties)} is called after
>> this class is loaded, the value will be out of sync with that
>> +     * System property.
>>        *</p>
>>        *
>>        * @since Java 1.1
>> @@ -123,15 +146,18 @@ public class SystemUtils {
>>       public static final String FILE_SEPARATOR =
>> getSystemProperty("file.separator");
>>
>>       /**
>> -     *<p>The<code>java.awt.fonts</code>  System Property.</p>
>> -     *
>> -     *<p>Defaults to<code>null</code>  if the runtime does not have
>> -     * security access to read this property or the property does not
>> exist.</p>
>> +     *<p>
>> +     * The<code>java.awt.fonts</code>  System Property.
>> +     *</p>
>> +     *
>> +     *<p>
>> +     * Defaults to<code>null</code>  if the runtime does not have security
>> access to read this property or the property does not exist.
>> +     *</p>
>>        *
>>        *<p>
>> -     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)}
>> -     * or {@link System#setProperties(java.util.Properties)} is called
>> after this class is loaded, the value
>> -     * will be out of sync with that System property.
>> +     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)} or
>> +     * {@link System#setProperties(java.util.Properties)} is called after
>> this class is loaded, the value will be out of sync with that
>> +     * System property.
>>        *</p>
>>        *
>>        * @since 2.1
>> @@ -139,15 +165,18 @@ public class SystemUtils {
>>       public static final String JAVA_AWT_FONTS =
>> getSystemProperty("java.awt.fonts");
>>
>>       /**
>> -     *<p>The<code>java.awt.graphicsenv</code>  System Property.</p>
>> -     *
>> -     *<p>Defaults to<code>null</code>  if the runtime does not have
>> -     * security access to read this property or the property does not
>> exist.</p>
>> +     *<p>
>> +     * The<code>java.awt.graphicsenv</code>  System Property.
>> +     *</p>
>> +     *
>> +     *<p>
>> +     * Defaults to<code>null</code>  if the runtime does not have security
>> access to read this property or the property does not exist.
>> +     *</p>
>>        *
>>        *<p>
>> -     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)}
>> -     * or {@link System#setProperties(java.util.Properties)} is called
>> after this class is loaded, the value
>> -     * will be out of sync with that System property.
>> +     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)} or
>> +     * {@link System#setProperties(java.util.Properties)} is called after
>> this class is loaded, the value will be out of sync with that
>> +     * System property.
>>        *</p>
>>        *
>>        * @since 2.1
>> @@ -156,17 +185,18 @@ public class SystemUtils {
>>
>>       /**
>>        *<p>
>> -     * The<code>java.awt.headless</code>  System Property.
>> -     * The value of this property is the String<code>"true"</code>  or
>> <code>"false"</code>.
>> +     * The<code>java.awt.headless</code>  System Property. The value of
>> this property is the String<code>"true"</code>  or
>> +     *<code>"false"</code>.
>> +     *</p>
>> +     *
>> +     *<p>
>> +     * Defaults to<code>null</code>  if the runtime does not have security
>> access to read this property or the property does not exist.
>>        *</p>
>> -     *
>> -     *<p>Defaults to<code>null</code>  if the runtime does not have
>> -     * security access to read this property or the property does not
>> exist.</p>
>>        *
>>        *<p>
>> -     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)}
>> -     * or {@link System#setProperties(java.util.Properties)} is called
>> after this class is loaded, the value
>> -     * will be out of sync with that System property.
>> +     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)} or
>> +     * {@link System#setProperties(java.util.Properties)} is called after
>> this class is loaded, the value will be out of sync with that
>> +     * System property.
>>        *</p>
>>        *
>>        * @see #isJavaAwtHeadless()
>> @@ -176,15 +206,18 @@ public class SystemUtils {
>>       public static final String JAVA_AWT_HEADLESS =
>> getSystemProperty("java.awt.headless");
>>
>>       /**
>> -     *<p>The<code>java.awt.printerjob</code>  System Property.</p>
>> -     *
>> -     *<p>Defaults to<code>null</code>  if the runtime does not have
>> -     * security access to read this property or the property does not
>> exist.</p>
>> +     *<p>
>> +     * The<code>java.awt.printerjob</code>  System Property.
>> +     *</p>
>> +     *
>> +     *<p>
>> +     * Defaults to<code>null</code>  if the runtime does not have security
>> access to read this property or the property does not exist.
>> +     *</p>
>>        *
>>        *<p>
>> -     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)}
>> -     * or {@link System#setProperties(java.util.Properties)} is called
>> after this class is loaded, the value
>> -     * will be out of sync with that System property.
>> +     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)} or
>> +     * {@link System#setProperties(java.util.Properties)} is called after
>> this class is loaded, the value will be out of sync with that
>> +     * System property.
>>        *</p>
>>        *
>>        * @since 2.1
>> @@ -192,15 +225,18 @@ public class SystemUtils {
>>       public static final String JAVA_AWT_PRINTERJOB =
>> getSystemProperty("java.awt.printerjob");
>>
>>       /**
>> -     *<p>The<code>java.class.path</code>  System Property. Java class
>> path.</p>
>> -     *
>> -     *<p>Defaults to<code>null</code>  if the runtime does not have
>> -     * security access to read this property or the property does not
>> exist.</p>
>> +     *<p>
>> +     * The<code>java.class.path</code>  System Property. Java class path.
>> +     *</p>
>> +     *
>> +     *<p>
>> +     * Defaults to<code>null</code>  if the runtime does not have security
>> access to read this property or the property does not exist.
>> +     *</p>
>>        *
>>        *<p>
>> -     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)}
>> -     * or {@link System#setProperties(java.util.Properties)} is called
>> after this class is loaded, the value
>> -     * will be out of sync with that System property.
>> +     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)} or
>> +     * {@link System#setProperties(java.util.Properties)} is called after
>> this class is loaded, the value will be out of sync with that
>> +     * System property.
>>        *</p>
>>        *
>>        * @since Java 1.1
>> @@ -208,16 +244,18 @@ public class SystemUtils {
>>       public static final String JAVA_CLASS_PATH =
>> getSystemProperty("java.class.path");
>>
>>       /**
>> -     *<p>The<code>java.class.version</code>  System Property.
>> -     * Java class format version number.</p>
>> -     *
>> -     *<p>Defaults to<code>null</code>  if the runtime does not have
>> -     * security access to read this property or the property does not
>> exist.</p>
>> +     *<p>
>> +     * The<code>java.class.version</code>  System Property. Java class
>> format version number.
>> +     *</p>
>>        *
>>        *<p>
>> -     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)}
>> -     * or {@link System#setProperties(java.util.Properties)} is called
>> after this class is loaded, the value
>> -     * will be out of sync with that System property.
>> +     * Defaults to<code>null</code>  if the runtime does not have security
>> access to read this property or the property does not exist.
>> +     *</p>
>> +     *
>> +     *<p>
>> +     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)} or
>> +     * {@link System#setProperties(java.util.Properties)} is called after
>> this class is loaded, the value will be out of sync with that
>> +     * System property.
>>        *</p>
>>        *
>>        * @since Java 1.1
>> @@ -225,16 +263,19 @@ public class SystemUtils {
>>       public static final String JAVA_CLASS_VERSION =
>> getSystemProperty("java.class.version");
>>
>>       /**
>> -     *<p>The<code>java.compiler</code>  System Property. Name of JIT
>> compiler to use.
>> -     * First in JDK version 1.2. Not used in Sun JDKs after 1.2.</p>
>> -     *
>> -     *<p>Defaults to<code>null</code>  if the runtime does not have
>> -     * security access to read this property or the property does not
>> exist.</p>
>> +     *<p>
>> +     * The<code>java.compiler</code>  System Property. Name of JIT compiler
>> to use. First in JDK version 1.2. Not used in Sun JDKs after
>> +     * 1.2.
>> +     *</p>
>> +     *
>> +     *<p>
>> +     * Defaults to<code>null</code>  if the runtime does not have security
>> access to read this property or the property does not exist.
>> +     *</p>
>>        *
>>        *<p>
>> -     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)}
>> -     * or {@link System#setProperties(java.util.Properties)} is called
>> after this class is loaded, the value
>> -     * will be out of sync with that System property.
>> +     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)} or
>> +     * {@link System#setProperties(java.util.Properties)} is called after
>> this class is loaded, the value will be out of sync with that
>> +     * System property.
>>        *</p>
>>        *
>>        * @since Java 1.2. Not used in Sun versions after 1.2.
>> @@ -242,16 +283,18 @@ public class SystemUtils {
>>       public static final String JAVA_COMPILER =
>> getSystemProperty("java.compiler");
>>
>>       /**
>> -     *<p>The<code>java.endorsed.dirs</code>  System Property. Path of
>> endorsed directory
>> -     * or directories.</p>
>> -     *
>> -     *<p>Defaults to<code>null</code>  if the runtime does not have
>> -     * security access to read this property or the property does not
>> exist.</p>
>> +     *<p>
>> +     * The<code>java.endorsed.dirs</code>  System Property. Path of
>> endorsed directory or directories.
>> +     *</p>
>> +     *
>> +     *<p>
>> +     * Defaults to<code>null</code>  if the runtime does not have security
>> access to read this property or the property does not exist.
>> +     *</p>
>>        *
>>        *<p>
>> -     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)}
>> -     * or {@link System#setProperties(java.util.Properties)} is called
>> after this class is loaded, the value
>> -     * will be out of sync with that System property.
>> +     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)} or
>> +     * {@link System#setProperties(java.util.Properties)} is called after
>> this class is loaded, the value will be out of sync with that
>> +     * System property.
>>        *</p>
>>        *
>>        * @since Java 1.4
>> @@ -259,16 +302,18 @@ public class SystemUtils {
>>       public static final String JAVA_ENDORSED_DIRS =
>> getSystemProperty("java.endorsed.dirs");
>>
>>       /**
>> -     *<p>The<code>java.ext.dirs</code>  System Property. Path of extension
>> directory
>> -     * or directories.</p>
>> -     *
>> -     *<p>Defaults to<code>null</code>  if the runtime does not have
>> -     * security access to read this property or the property does not
>> exist.</p>
>> +     *<p>
>> +     * The<code>java.ext.dirs</code>  System Property. Path of extension
>> directory or directories.
>> +     *</p>
>> +     *
>> +     *<p>
>> +     * Defaults to<code>null</code>  if the runtime does not have security
>> access to read this property or the property does not exist.
>> +     *</p>
>>        *
>>        *<p>
>> -     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)}
>> -     * or {@link System#setProperties(java.util.Properties)} is called
>> after this class is loaded, the value
>> -     * will be out of sync with that System property.
>> +     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)} or
>> +     * {@link System#setProperties(java.util.Properties)} is called after
>> this class is loaded, the value will be out of sync with that
>> +     * System property.
>>        *</p>
>>        *
>>        * @since Java 1.3
>> @@ -276,15 +321,18 @@ public class SystemUtils {
>>       public static final String JAVA_EXT_DIRS =
>> getSystemProperty("java.ext.dirs");
>>
>>       /**
>> -     *<p>The<code>java.home</code>  System Property. Java installation
>> directory.</p>
>> -     *
>> -     *<p>Defaults to<code>null</code>  if the runtime does not have
>> -     * security access to read this property or the property does not
>> exist.</p>
>> +     *<p>
>> +     * The<code>java.home</code>  System Property. Java installation
>> directory.
>> +     *</p>
>>        *
>>        *<p>
>> -     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)}
>> -     * or {@link System#setProperties(java.util.Properties)} is called
>> after this class is loaded, the value
>> -     * will be out of sync with that System property.
>> +     * Defaults to<code>null</code>  if the runtime does not have security
>> access to read this property or the property does not exist.
>> +     *</p>
>> +     *
>> +     *<p>
>> +     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)} or
>> +     * {@link System#setProperties(java.util.Properties)} is called after
>> this class is loaded, the value will be out of sync with that
>> +     * System property.
>>        *</p>
>>        *
>>        * @since Java 1.1
>> @@ -292,15 +340,18 @@ public class SystemUtils {
>>       public static final String JAVA_HOME =
>> getSystemProperty(JAVA_HOME_KEY);
>>
>>       /**
>> -     *<p>The<code>java.io.tmpdir</code>  System Property. Default temp
>> file path.</p>
>> -     *
>> -     *<p>Defaults to<code>null</code>  if the runtime does not have
>> -     * security access to read this property or the property does not
>> exist.</p>
>> +     *<p>
>> +     * The<code>java.io.tmpdir</code>  System Property. Default temp file
>> path.
>> +     *</p>
>> +     *
>> +     *<p>
>> +     * Defaults to<code>null</code>  if the runtime does not have security
>> access to read this property or the property does not exist.
>> +     *</p>
>>        *
>>        *<p>
>> -     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)}
>> -     * or {@link System#setProperties(java.util.Properties)} is called
>> after this class is loaded, the value
>> -     * will be out of sync with that System property.
>> +     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)} or
>> +     * {@link System#setProperties(java.util.Properties)} is called after
>> this class is loaded, the value will be out of sync with that
>> +     * System property.
>>        *</p>
>>        *
>>        * @since Java 1.2
>> @@ -308,16 +359,18 @@ public class SystemUtils {
>>       public static final String JAVA_IO_TMPDIR =
>> getSystemProperty(JAVA_IO_TMPDIR_KEY);
>>
>>       /**
>> -     *<p>The<code>java.library.path</code>  System Property. List of paths
>> to search
>> -     * when loading libraries.</p>
>> -     *
>> -     *<p>Defaults to<code>null</code>  if the runtime does not have
>> -     * security access to read this property or the property does not
>> exist.</p>
>> +     *<p>
>> +     * The<code>java.library.path</code>  System Property. List of paths to
>> search when loading libraries.
>> +     *</p>
>> +     *
>> +     *<p>
>> +     * Defaults to<code>null</code>  if the runtime does not have security
>> access to read this property or the property does not exist.
>> +     *</p>
>>        *
>>        *<p>
>> -     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)}
>> -     * or {@link System#setProperties(java.util.Properties)} is called
>> after this class is loaded, the value
>> -     * will be out of sync with that System property.
>> +     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)} or
>> +     * {@link System#setProperties(java.util.Properties)} is called after
>> this class is loaded, the value will be out of sync with that
>> +     * System property.
>>        *</p>
>>        *
>>        * @since Java 1.2
>> @@ -325,16 +378,18 @@ public class SystemUtils {
>>       public static final String JAVA_LIBRARY_PATH =
>> getSystemProperty("java.library.path");
>>
>>       /**
>> -     *<p>The<code>java.runtime.name</code>  System Property. Java Runtime
>> Environment
>> -     * name.</p>
>> -     *
>> -     *<p>Defaults to<code>null</code>  if the runtime does not have
>> -     * security access to read this property or the property does not
>> exist.</p>
>> +     *<p>
>> +     * The<code>java.runtime.name</code>  System Property. Java Runtime
>> Environment name.
>> +     *</p>
>> +     *
>> +     *<p>
>> +     * Defaults to<code>null</code>  if the runtime does not have security
>> access to read this property or the property does not exist.
>> +     *</p>
>>        *
>>        *<p>
>> -     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)}
>> -     * or {@link System#setProperties(java.util.Properties)} is called
>> after this class is loaded, the value
>> -     * will be out of sync with that System property.
>> +     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)} or
>> +     * {@link System#setProperties(java.util.Properties)} is called after
>> this class is loaded, the value will be out of sync with that
>> +     * System property.
>>        *</p>
>>        *
>>        * @since 2.0
>> @@ -343,16 +398,18 @@ public class SystemUtils {
>>       public static final String JAVA_RUNTIME_NAME =
>> getSystemProperty("java.runtime.name");
>>
>>       /**
>> -     *<p>The<code>java.runtime.version</code>  System Property. Java
>> Runtime Environment
>> -     * version.</p>
>> -     *
>> -     *<p>Defaults to<code>null</code>  if the runtime does not have
>> -     * security access to read this property or the property does not
>> exist.</p>
>> +     *<p>
>> +     * The<code>java.runtime.version</code>  System Property. Java Runtime
>> Environment version.
>> +     *</p>
>>        *
>>        *<p>
>> -     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)}
>> -     * or {@link System#setProperties(java.util.Properties)} is called
>> after this class is loaded, the value
>> -     * will be out of sync with that System property.
>> +     * Defaults to<code>null</code>  if the runtime does not have security
>> access to read this property or the property does not exist.
>> +     *</p>
>> +     *
>> +     *<p>
>> +     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)} or
>> +     * {@link System#setProperties(java.util.Properties)} is called after
>> this class is loaded, the value will be out of sync with that
>> +     * System property.
>>        *</p>
>>        *
>>        * @since 2.0
>> @@ -361,16 +418,18 @@ public class SystemUtils {
>>       public static final String JAVA_RUNTIME_VERSION =
>> getSystemProperty("java.runtime.version");
>>
>>       /**
>> -     *<p>The<code>java.specification.name</code>  System Property. Java
>> Runtime Environment
>> -     * specification name.</p>
>> -     *
>> -     *<p>Defaults to<code>null</code>  if the runtime does not have
>> -     * security access to read this property or the property does not
>> exist.</p>
>> +     *<p>
>> +     * The<code>java.specification.name</code>  System Property. Java
>> Runtime Environment specification name.
>> +     *</p>
>> +     *
>> +     *<p>
>> +     * Defaults to<code>null</code>  if the runtime does not have security
>> access to read this property or the property does not exist.
>> +     *</p>
>>        *
>>        *<p>
>> -     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)}
>> -     * or {@link System#setProperties(java.util.Properties)} is called
>> after this class is loaded, the value
>> -     * will be out of sync with that System property.
>> +     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)} or
>> +     * {@link System#setProperties(java.util.Properties)} is called after
>> this class is loaded, the value will be out of sync with that
>> +     * System property.
>>        *</p>
>>        *
>>        * @since Java 1.2
>> @@ -378,16 +437,18 @@ public class SystemUtils {
>>       public static final String JAVA_SPECIFICATION_NAME =
>> getSystemProperty("java.specification.name");
>>
>>       /**
>> -     *<p>The<code>java.specification.vendor</code>  System Property. Java
>> Runtime Environment
>> -     * specification vendor.</p>
>> -     *
>> -     *<p>Defaults to<code>null</code>  if the runtime does not have
>> -     * security access to read this property or the property does not
>> exist.</p>
>> +     *<p>
>> +     * The<code>java.specification.vendor</code>  System Property. Java
>> Runtime Environment specification vendor.
>> +     *</p>
>> +     *
>> +     *<p>
>> +     * Defaults to<code>null</code>  if the runtime does not have security
>> access to read this property or the property does not exist.
>> +     *</p>
>>        *
>>        *<p>
>> -     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)}
>> -     * or {@link System#setProperties(java.util.Properties)} is called
>> after this class is loaded, the value
>> -     * will be out of sync with that System property.
>> +     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)} or
>> +     * {@link System#setProperties(java.util.Properties)} is called after
>> this class is loaded, the value will be out of sync with that
>> +     * System property.
>>        *</p>
>>        *
>>        * @since Java 1.2
>> @@ -395,16 +456,18 @@ public class SystemUtils {
>>       public static final String JAVA_SPECIFICATION_VENDOR =
>> getSystemProperty("java.specification.vendor");
>>
>>       /**
>> -     *<p>The<code>java.specification.version</code>  System Property. Java
>> Runtime Environment
>> -     * specification version.</p>
>> -     *
>> -     *<p>Defaults to<code>null</code>  if the runtime does not have
>> -     * security access to read this property or the property does not
>> exist.</p>
>> +     *<p>
>> +     * The<code>java.specification.version</code>  System Property. Java
>> Runtime Environment specification version.
>> +     *</p>
>> +     *
>> +     *<p>
>> +     * Defaults to<code>null</code>  if the runtime does not have security
>> access to read this property or the property does not exist.
>> +     *</p>
>>        *
>>        *<p>
>> -     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)}
>> -     * or {@link System#setProperties(java.util.Properties)} is called
>> after this class is loaded, the value
>> -     * will be out of sync with that System property.
>> +     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)} or
>> +     * {@link System#setProperties(java.util.Properties)} is called after
>> this class is loaded, the value will be out of sync with that
>> +     * System property.
>>        *</p>
>>        *
>>        * @since Java 1.3
>> @@ -412,33 +475,38 @@ public class SystemUtils {
>>       public static final String JAVA_SPECIFICATION_VERSION =
>> getSystemProperty("java.specification.version");
>>
>>       /**
>> -     *<p>The<code>java.util.prefs.PreferencesFactory</code>  System
>> Property. A class name.</p>
>> -     *
>> -     *<p>Defaults to<code>null</code>  if the runtime does not have
>> -     * security access to read this property or the property does not
>> exist.</p>
>> +     *<p>
>> +     * The<code>java.util.prefs.PreferencesFactory</code>  System Property.
>> A class name.
>> +     *</p>
>>        *
>>        *<p>
>> -     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)}
>> -     * or {@link System#setProperties(java.util.Properties)} is called
>> after this class is loaded, the value
>> -     * will be out of sync with that System property.
>> +     * Defaults to<code>null</code>  if the runtime does not have security
>> access to read this property or the property does not exist.
>> +     *</p>
>> +     *
>> +     *<p>
>> +     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)} or
>> +     * {@link System#setProperties(java.util.Properties)} is called after
>> this class is loaded, the value will be out of sync with that
>> +     * System property.
>>        *</p>
>>        *
>>        * @since 2.1
>>        * @since Java 1.4
>>        */
>> -    public static final String JAVA_UTIL_PREFS_PREFERENCES_FACTORY =
>> -        getSystemProperty("java.util.prefs.PreferencesFactory");
>> +    public static final String JAVA_UTIL_PREFS_PREFERENCES_FACTORY =
>> getSystemProperty("java.util.prefs.PreferencesFactory");
>>
>>       /**
>> -     *<p>The<code>java.vendor</code>  System Property. Java vendor-
>> specific string.</p>
>> -     *
>> -     *<p>Defaults to<code>null</code>  if the runtime does not have
>> -     * security access to read this property or the property does not
>> exist.</p>
>> +     *<p>
>> +     * The<code>java.vendor</code>  System Property. Java vendor-specific
>> string.
>> +     *</p>
>> +     *
>> +     *<p>
>> +     * Defaults to<code>null</code>  if the runtime does not have security
>> access to read this property or the property does not exist.
>> +     *</p>
>>        *
>>        *<p>
>> -     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)}
>> -     * or {@link System#setProperties(java.util.Properties)} is called
>> after this class is loaded, the value
>> -     * will be out of sync with that System property.
>> +     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)} or
>> +     * {@link System#setProperties(java.util.Properties)} is called after
>> this class is loaded, the value will be out of sync with that
>> +     * System property.
>>        *</p>
>>        *
>>        * @since Java 1.1
>> @@ -446,31 +514,37 @@ public class SystemUtils {
>>       public static final String JAVA_VENDOR =
>> getSystemProperty("java.vendor");
>>
>>       /**
>> -     *<p>The<code>java.vendor.url</code>  System Property. Java vendor
>> URL.</p>
>> -     *
>> -     *<p>Defaults to<code>null</code>  if the runtime does not have
>> -     * security access to read this property or the property does not
>> exist.</p>
>> +     *<p>
>> +     * The<code>java.vendor.url</code>  System Property. Java vendor URL.
>> +     *</p>
>> +     *
>> +     *<p>
>> +     * Defaults to<code>null</code>  if the runtime does not have security
>> access to read this property or the property does not exist.
>> +     *</p>
>>        *
>>        *<p>
>> -     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)}
>> -     * or {@link System#setProperties(java.util.Properties)} is called
>> after this class is loaded, the value
>> -     * will be out of sync with that System property.
>> +     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)} or
>> +     * {@link System#setProperties(java.util.Properties)} is called after
>> this class is loaded, the value will be out of sync with that
>> +     * System property.
>>        *</p>
>>        *
>>        * @since Java 1.1
>> -    */
>> +     */
>>       public static final String JAVA_VENDOR_URL =
>> getSystemProperty("java.vendor.url");
>>
>>       /**
>> -     *<p>The<code>java.version</code>  System Property. Java version
>> number.</p>
>> -     *
>> -     *<p>Defaults to<code>null</code>  if the runtime does not have
>> -     * security access to read this property or the property does not
>> exist.</p>
>> +     *<p>
>> +     * The<code>java.version</code>  System Property. Java version number.
>> +     *</p>
>>        *
>>        *<p>
>> -     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)}
>> -     * or {@link System#setProperties(java.util.Properties)} is called
>> after this class is loaded, the value
>> -     * will be out of sync with that System property.
>> +     * Defaults to<code>null</code>  if the runtime does not have security
>> access to read this property or the property does not exist.
>> +     *</p>
>> +     *
>> +     *<p>
>> +     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)} or
>> +     * {@link System#setProperties(java.util.Properties)} is called after
>> this class is loaded, the value will be out of sync with that
>> +     * System property.
>>        *</p>
>>        *
>>        * @since Java 1.1
>> @@ -478,16 +552,18 @@ public class SystemUtils {
>>       public static final String JAVA_VERSION =
>> getSystemProperty("java.version");
>>
>>       /**
>> -     *<p>The<code>java.vm.info</code>  System Property. Java Virtual
>> Machine implementation
>> -     * info.</p>
>> -     *
>> -     *<p>Defaults to<code>null</code>  if the runtime does not have
>> -     * security access to read this property or the property does not
>> exist.</p>
>> +     *<p>
>> +     * The<code>java.vm.info</code>  System Property. Java Virtual Machine
>> implementation info.
>> +     *</p>
>> +     *
>> +     *<p>
>> +     * Defaults to<code>null</code>  if the runtime does not have security
>> access to read this property or the property does not exist.
>> +     *</p>
>>        *
>>        *<p>
>> -     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)}
>> -     * or {@link System#setProperties(java.util.Properties)} is called
>> after this class is loaded, the value
>> -     * will be out of sync with that System property.
>> +     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)} or
>> +     * {@link System#setProperties(java.util.Properties)} is called after
>> this class is loaded, the value will be out of sync with that
>> +     * System property.
>>        *</p>
>>        *
>>        * @since 2.0
>> @@ -496,16 +572,18 @@ public class SystemUtils {
>>       public static final String JAVA_VM_INFO =
>> getSystemProperty("java.vm.info");
>>
>>       /**
>> -     *<p>The<code>java.vm.name</code>  System Property. Java Virtual
>> Machine implementation
>> -     * name.</p>
>> -     *
>> -     *<p>Defaults to<code>null</code>  if the runtime does not have
>> -     * security access to read this property or the property does not
>> exist.</p>
>> +     *<p>
>> +     * The<code>java.vm.name</code>  System Property. Java Virtual Machine
>> implementation name.
>> +     *</p>
>> +     *
>> +     *<p>
>> +     * Defaults to<code>null</code>  if the runtime does not have security
>> access to read this property or the property does not exist.
>> +     *</p>
>>        *
>>        *<p>
>> -     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)}
>> -     * or {@link System#setProperties(java.util.Properties)} is called
>> after this class is loaded, the value
>> -     * will be out of sync with that System property.
>> +     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)} or
>> +     * {@link System#setProperties(java.util.Properties)} is called after
>> this class is loaded, the value will be out of sync with that
>> +     * System property.
>>        *</p>
>>        *
>>        * @since Java 1.2
>> @@ -513,16 +591,18 @@ public class SystemUtils {
>>       public static final String JAVA_VM_NAME =
>> getSystemProperty("java.vm.name");
>>
>>       /**
>> -     *<p>The<code>java.vm.specification.name</code>  System Property. Java
>> Virtual Machine
>> -     * specification name.</p>
>> -     *
>> -     *<p>Defaults to<code>null</code>  if the runtime does not have
>> -     * security access to read this property or the property does not
>> exist.</p>
>> +     *<p>
>> +     * The<code>java.vm.specification.name</code>  System Property. Java
>> Virtual Machine specification name.
>> +     *</p>
>> +     *
>> +     *<p>
>> +     * Defaults to<code>null</code>  if the runtime does not have security
>> access to read this property or the property does not exist.
>> +     *</p>
>>        *
>>        *<p>
>> -     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)}
>> -     * or {@link System#setProperties(java.util.Properties)} is called
>> after this class is loaded, the value
>> -     * will be out of sync with that System property.
>> +     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)} or
>> +     * {@link System#setProperties(java.util.Properties)} is called after
>> this class is loaded, the value will be out of sync with that
>> +     * System property.
>>        *</p>
>>        *
>>        * @since Java 1.2
>> @@ -530,16 +610,18 @@ public class SystemUtils {
>>       public static final String JAVA_VM_SPECIFICATION_NAME =
>> getSystemProperty("java.vm.specification.name");
>>
>>       /**
>> -     *<p>The<code>java.vm.specification.vendor</code>  System Property.
>> Java Virtual
>> -     * Machine specification vendor.</p>
>> -     *
>> -     *<p>Defaults to<code>null</code>  if the runtime does not have
>> -     * security access to read this property or the property does not
>> exist.</p>
>> +     *<p>
>> +     * The<code>java.vm.specification.vendor</code>  System Property. Java
>> Virtual Machine specification vendor.
>> +     *</p>
>>        *
>>        *<p>
>> -     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)}
>> -     * or {@link System#setProperties(java.util.Properties)} is called
>> after this class is loaded, the value
>> -     * will be out of sync with that System property.
>> +     * Defaults to<code>null</code>  if the runtime does not have security
>> access to read this property or the property does not exist.
>> +     *</p>
>> +     *
>> +     *<p>
>> +     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)} or
>> +     * {@link System#setProperties(java.util.Properties)} is called after
>> this class is loaded, the value will be out of sync with that
>> +     * System property.
>>        *</p>
>>        *
>>        * @since Java 1.2
>> @@ -547,16 +629,18 @@ public class SystemUtils {
>>       public static final String JAVA_VM_SPECIFICATION_VENDOR =
>> getSystemProperty("java.vm.specification.vendor");
>>
>>       /**
>> -     *<p>The<code>java.vm.specification.version</code>  System Property.
>> Java Virtual Machine
>> -     * specification version.</p>
>> -     *
>> -     *<p>Defaults to<code>null</code>  if the runtime does not have
>> -     * security access to read this property or the property does not
>> exist.</p>
>> +     *<p>
>> +     * The<code>java.vm.specification.version</code>  System Property. Java
>> Virtual Machine specification version.
>> +     *</p>
>> +     *
>> +     *<p>
>> +     * Defaults to<code>null</code>  if the runtime does not have security
>> access to read this property or the property does not exist.
>> +     *</p>
>>        *
>>        *<p>
>> -     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)}
>> -     * or {@link System#setProperties(java.util.Properties)} is called
>> after this class is loaded, the value
>> -     * will be out of sync with that System property.
>> +     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)} or
>> +     * {@link System#setProperties(java.util.Properties)} is called after
>> this class is loaded, the value will be out of sync with that
>> +     * System property.
>>        *</p>
>>        *
>>        * @since Java 1.2
>> @@ -564,16 +648,18 @@ public class SystemUtils {
>>       public static final String JAVA_VM_SPECIFICATION_VERSION =
>> getSystemProperty("java.vm.specification.version");
>>
>>       /**
>> -     *<p>The<code>java.vm.vendor</code>  System Property. Java Virtual
>> Machine implementation
>> -     * vendor.</p>
>> -     *
>> -     *<p>Defaults to<code>null</code>  if the runtime does not have
>> -     * security access to read this property or the property does not
>> exist.</p>
>> +     *<p>
>> +     * The<code>java.vm.vendor</code>  System Property. Java Virtual
>> Machine implementation vendor.
>> +     *</p>
>> +     *
>> +     *<p>
>> +     * Defaults to<code>null</code>  if the runtime does not have security
>> access to read this property or the property does not exist.
>> +     *</p>
>>        *
>>        *<p>
>> -     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)}
>> -     * or {@link System#setProperties(java.util.Properties)} is called
>> after this class is loaded, the value
>> -     * will be out of sync with that System property.
>> +     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)} or
>> +     * {@link System#setProperties(java.util.Properties)} is called after
>> this class is loaded, the value will be out of sync with that
>> +     * System property.
>>        *</p>
>>        *
>>        * @since Java 1.2
>> @@ -581,16 +667,18 @@ public class SystemUtils {
>>       public static final String JAVA_VM_VENDOR =
>> getSystemProperty("java.vm.vendor");
>>
>>       /**
>> -     *<p>The<code>java.vm.version</code>  System Property. Java Virtual
>> Machine
>> -     * implementation version.</p>
>> -     *
>> -     *<p>Defaults to<code>null</code>  if the runtime does not have
>> -     * security access to read this property or the property does not
>> exist.</p>
>> +     *<p>
>> +     * The<code>java.vm.version</code>  System Property. Java Virtual
>> Machine implementation version.
>> +     *</p>
>> +     *
>> +     *<p>
>> +     * Defaults to<code>null</code>  if the runtime does not have security
>> access to read this property or the property does not exist.
>> +     *</p>
>>        *
>>        *<p>
>> -     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)}
>> -     * or {@link System#setProperties(java.util.Properties)} is called
>> after this class is loaded, the value
>> -     * will be out of sync with that System property.
>> +     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)} or
>> +     * {@link System#setProperties(java.util.Properties)} is called after
>> this class is loaded, the value will be out of sync with that
>> +     * System property.
>>        *</p>
>>        *
>>        * @since Java 1.2
>> @@ -598,16 +686,18 @@ public class SystemUtils {
>>       public static final String JAVA_VM_VERSION =
>> getSystemProperty("java.vm.version");
>>
>>       /**
>> -     *<p>The<code>line.separator</code>  System Property. Line separator
>> -     * (<code>&quot;\n&quot;</code>  on UNIX).</p>
>> -     *
>> -     *<p>Defaults to<code>null</code>  if the runtime does not have
>> -     * security access to read this property or the property does not
>> exist.</p>
>> +     *<p>
>> +     * The<code>line.separator</code>  System Property. Line separator
>> (<code>&quot;\n&quot;</code>  on UNIX).
>> +     *</p>
>>        *
>>        *<p>
>> -     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)}
>> -     * or {@link System#setProperties(java.util.Properties)} is called
>> after this class is loaded, the value
>> -     * will be out of sync with that System property.
>> +     * Defaults to<code>null</code>  if the runtime does not have security
>> access to read this property or the property does not exist.
>> +     *</p>
>> +     *
>> +     *<p>
>> +     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)} or
>> +     * {@link System#setProperties(java.util.Properties)} is called after
>> this class is loaded, the value will be out of sync with that
>> +     * System property.
>>        *</p>
>>        *
>>        * @since Java 1.1
>> @@ -615,15 +705,18 @@ public class SystemUtils {
>>       public static final String LINE_SEPARATOR =
>> getSystemProperty("line.separator");
>>
>>       /**
>> -     *<p>The<code>os.arch</code>  System Property. Operating system
>> architecture.</p>
>> -     *
>> -     *<p>Defaults to<code>null</code>  if the runtime does not have
>> -     * security access to read this property or the property does not
>> exist.</p>
>> +     *<p>
>> +     * The<code>os.arch</code>  System Property. Operating system
>> architecture.
>> +     *</p>
>> +     *
>> +     *<p>
>> +     * Defaults to<code>null</code>  if the runtime does not have security
>> access to read this property or the property does not exist.
>> +     *</p>
>>        *
>>        *<p>
>> -     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)}
>> -     * or {@link System#setProperties(java.util.Properties)} is called
>> after this class is loaded, the value
>> -     * will be out of sync with that System property.
>> +     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)} or
>> +     * {@link System#setProperties(java.util.Properties)} is called after
>> this class is loaded, the value will be out of sync with that
>> +     * System property.
>>        *</p>
>>        *
>>        * @since Java 1.1
>> @@ -631,15 +724,18 @@ public class SystemUtils {
>>       public static final String OS_ARCH = getSystemProperty("os.arch");
>>
>>       /**
>> -     *<p>The<code>os.name</code>  System Property. Operating system
>> name.</p>
>> -     *
>> -     *<p>Defaults to<code>null</code>  if the runtime does not have
>> -     * security access to read this property or the property does not
>> exist.</p>
>> +     *<p>
>> +     * The<code>os.name</code>  System Property. Operating system name.
>> +     *</p>
>> +     *
>> +     *<p>
>> +     * Defaults to<code>null</code>  if the runtime does not have security
>> access to read this property or the property does not exist.
>> +     *</p>
>>        *
>>        *<p>
>> -     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)}
>> -     * or {@link System#setProperties(java.util.Properties)} is called
>> after this class is loaded, the value
>> -     * will be out of sync with that System property.
>> +     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)} or
>> +     * {@link System#setProperties(java.util.Properties)} is called after
>> this class is loaded, the value will be out of sync with that
>> +     * System property.
>>        *</p>
>>        *
>>        * @since Java 1.1
>> @@ -647,15 +743,18 @@ public class SystemUtils {
>>       public static final String OS_NAME = getSystemProperty("os.name");
>>
>>       /**
>> -     *<p>The<code>os.version</code>  System Property. Operating system
>> version.</p>
>> -     *
>> -     *<p>Defaults to<code>null</code>  if the runtime does not have
>> -     * security access to read this property or the property does not
>> exist.</p>
>> +     *<p>
>> +     * The<code>os.version</code>  System Property. Operating system
>> version.
>> +     *</p>
>> +     *
>> +     *<p>
>> +     * Defaults to<code>null</code>  if the runtime does not have security
>> access to read this property or the property does not exist.
>> +     *</p>
>>        *
>>        *<p>
>> -     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)}
>> -     * or {@link System#setProperties(java.util.Properties)} is called
>> after this class is loaded, the value
>> -     * will be out of sync with that System property.
>> +     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)} or
>> +     * {@link System#setProperties(java.util.Properties)} is called after
>> this class is loaded, the value will be out of sync with that
>> +     * System property.
>>        *</p>
>>        *
>>        * @since Java 1.1
>> @@ -663,16 +762,18 @@ public class SystemUtils {
>>       public static final String OS_VERSION =
>> getSystemProperty("os.version");
>>
>>       /**
>> -     *<p>The<code>path.separator</code>  System Property. Path separator
>> -     * (<code>&quot;:&quot;</code>  on UNIX).</p>
>> -     *
>> -     *<p>Defaults to<code>null</code>  if the runtime does not have
>> -     * security access to read this property or the property does not
>> exist.</p>
>> +     *<p>
>> +     * The<code>path.separator</code>  System Property. Path separator
>> (<code>&quot;:&quot;</code>  on UNIX).
>> +     *</p>
>>        *
>>        *<p>
>> -     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)}
>> -     * or {@link System#setProperties(java.util.Properties)} is called
>> after this class is loaded, the value
>> -     * will be out of sync with that System property.
>> +     * Defaults to<code>null</code>  if the runtime does not have security
>> access to read this property or the property does not exist.
>> +     *</p>
>> +     *
>> +     *<p>
>> +     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)} or
>> +     * {@link System#setProperties(java.util.Properties)} is called after
>> this class is loaded, the value will be out of sync with that
>> +     * System property.
>>        *</p>
>>        *
>>        * @since Java 1.1
>> @@ -680,37 +781,40 @@ public class SystemUtils {
>>       public static final String PATH_SEPARATOR =
>> getSystemProperty("path.separator");
>>
>>       /**
>> -     *<p>The<code>user.country</code>  or<code>user.region</code>  System
>> Property.
>> -     * User's country code, such as<code>GB</code>. First in JDK version
>> 1.2 as
>> -     *<code>user.region</code>. Renamed to<code>user.country</code>  in
>> 1.4</p>
>> -     *
>> -     *<p>Defaults to<code>null</code>  if the runtime does not have
>> -     * security access to read this property or the property does not
>> exist.</p>
>> +     *<p>
>> +     * The<code>user.country</code>  or<code>user.region</code>  System
>> Property. User's country code, such as<code>GB</code>. First in
>> +     * Java version 1.2 as<code>user.region</code>. Renamed to
>> <code>user.country</code>  in 1.4
>> +     *</p>
>> +     *
>> +     *<p>
>> +     * Defaults to<code>null</code>  if the runtime does not have security
>> access to read this property or the property does not exist.
>> +     *</p>
>>        *
>>        *<p>
>> -     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)}
>> -     * or {@link System#setProperties(java.util.Properties)} is called
>> after this class is loaded, the value
>> -     * will be out of sync with that System property.
>> +     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)} or
>> +     * {@link System#setProperties(java.util.Properties)} is called after
>> this class is loaded, the value will be out of sync with that
>> +     * System property.
>>        *</p>
>>        *
>>        * @since 2.0
>>        * @since Java 1.2
>>        */
>> -    public static final String USER_COUNTRY =
>> -        getSystemProperty("user.country") == null ?
>> -            getSystemProperty("user.region") :
>> getSystemProperty("user.country");
>> +    public static final String USER_COUNTRY =
>> getSystemProperty("user.country") == null ? getSystemProperty("user.region")
>> +            : getSystemProperty("user.country");
>>
>>       /**
>> -     *<p>The<code>user.dir</code>  System Property. User's current working
>> -     * directory.</p>
>> -     *
>> -     *<p>Defaults to<code>null</code>  if the runtime does not have
>> -     * security access to read this property or the property does not
>> exist.</p>
>> +     *<p>
>> +     * The<code>user.dir</code>  System Property. User's current working
>> directory.
>> +     *</p>
>> +     *
>> +     *<p>
>> +     * Defaults to<code>null</code>  if the runtime does not have security
>> access to read this property or the property does not exist.
>> +     *</p>
>>        *
>>        *<p>
>> -     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)}
>> -     * or {@link System#setProperties(java.util.Properties)} is called
>> after this class is loaded, the value
>> -     * will be out of sync with that System property.
>> +     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)} or
>> +     * {@link System#setProperties(java.util.Properties)} is called after
>> this class is loaded, the value will be out of sync with that
>> +     * System property.
>>        *</p>
>>        *
>>        * @since Java 1.1
>> @@ -718,15 +822,18 @@ public class SystemUtils {
>>       public static final String USER_DIR = getSystemProperty(USER_DIR_KEY);
>>
>>       /**
>> -     *<p>The<code>user.home</code>  System Property. User's home
>> directory.</p>
>> -     *
>> -     *<p>Defaults to<code>null</code>  if the runtime does not have
>> -     * security access to read this property or the property does not
>> exist.</p>
>> +     *<p>
>> +     * The<code>user.home</code>  System Property. User's home directory.
>> +     *</p>
>> +     *
>> +     *<p>
>> +     * Defaults to<code>null</code>  if the runtime does not have security
>> access to read this property or the property does not exist.
>> +     *</p>
>>        *
>>        *<p>
>> -     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)}
>> -     * or {@link System#setProperties(java.util.Properties)} is called
>> after this class is loaded, the value
>> -     * will be out of sync with that System property.
>> +     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)} or
>> +     * {@link System#setProperties(java.util.Properties)} is called after
>> this class is loaded, the value will be out of sync with that
>> +     * System property.
>>        *</p>
>>        *
>>        * @since Java 1.1
>> @@ -734,16 +841,18 @@ public class SystemUtils {
>>       public static final String USER_HOME =
>> getSystemProperty(USER_HOME_KEY);
>>
>>       /**
>> -     *<p>The<code>user.language</code>  System Property. User's language
>> code,
>> -     * such as<code>"en"</code>.</p>
>> -     *
>> -     *<p>Defaults to<code>null</code>  if the runtime does not have
>> -     * security access to read this property or the property does not
>> exist.</p>
>> +     *<p>
>> +     * The<code>user.language</code>  System Property. User's language
>> code, such as<code>"en"</code>.
>> +     *</p>
>>        *
>>        *<p>
>> -     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)}
>> -     * or {@link System#setProperties(java.util.Properties)} is called
>> after this class is loaded, the value
>> -     * will be out of sync with that System property.
>> +     * Defaults to<code>null</code>  if the runtime does not have security
>> access to read this property or the property does not exist.
>> +     *</p>
>> +     *
>> +     *<p>
>> +     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)} or
>> +     * {@link System#setProperties(java.util.Properties)} is called after
>> this class is loaded, the value will be out of sync with that
>> +     * System property.
>>        *</p>
>>        *
>>        * @since 2.0
>> @@ -752,15 +861,18 @@ public class SystemUtils {
>>       public static final String USER_LANGUAGE =
>> getSystemProperty("user.language");
>>
>>       /**
>> -     *<p>The<code>user.name</code>  System Property. User's account
>> name.</p>
>> -     *
>> -     *<p>Defaults to<code>null</code>  if the runtime does not have
>> -     * security access to read this property or the property does not
>> exist.</p>
>> +     *<p>
>> +     * The<code>user.name</code>  System Property. User's account name.
>> +     *</p>
>> +     *
>> +     *<p>
>> +     * Defaults to<code>null</code>  if the runtime does not have security
>> access to read this property or the property does not exist.
>> +     *</p>
>>        *
>>        *<p>
>> -     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)}
>> -     * or {@link System#setProperties(java.util.Properties)} is called
>> after this class is loaded, the value
>> -     * will be out of sync with that System property.
>> +     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)} or
>> +     * {@link System#setProperties(java.util.Properties)} is called after
>> this class is loaded, the value will be out of sync with that
>> +     * System property.
>>        *</p>
>>        *
>>        * @since Java 1.1
>> @@ -768,16 +880,18 @@ public class SystemUtils {
>>       public static final String USER_NAME = getSystemProperty("user.name");
>>
>>       /**
>> -     *<p>The<code>user.timezone</code>  System Property.
>> -     * For example:<code>"America/Los_Angeles"</code>.</p>
>> -     *
>> -     *<p>Defaults to<code>null</code>  if the runtime does not have
>> -     * security access to read this property or the property does not
>> exist.</p>
>> +     *<p>
>> +     * The<code>user.timezone</code>  System Property. For example:
>> <code>"America/Los_Angeles"</code>.
>> +     *</p>
>> +     *
>> +     *<p>
>> +     * Defaults to<code>null</code>  if the runtime does not have security
>> access to read this property or the property does not exist.
>> +     *</p>
>>        *
>>        *<p>
>> -     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)}
>> -     * or {@link System#setProperties(java.util.Properties)} is called
>> after this class is loaded, the value
>> -     * will be out of sync with that System property.
>> +     * This value is initialized when the class is loaded. If {@link
>> System#setProperty(String,String)} or
>> +     * {@link System#setProperties(java.util.Properties)} is called after
>> this class is loaded, the value will be out of sync with that
>> +     * System property.
>>        *</p>
>>        *
>>        * @since 2.1
>> @@ -785,119 +899,156 @@ public class SystemUtils {
>>       public static final String USER_TIMEZONE =
>> getSystemProperty("user.timezone");
>>
>>       // Java version
>> -
>> //-----------------------------------------------------------------------
>> +    //
>> -----------------------------------------------------------------------
>>       // This MUST be declared after those above as it depends on the
>>       // values being set up
>>
>>       /**
>> -     *<p>Gets the Java version as a<code>String</code>  trimming leading
>> letters.</p>
>> -     *
>> -     *<p>The field will return<code>null</code>  if {@link #JAVA_VERSION}
>> is<code>null</code>.</p>
>> +     *<p>
>> +     * Gets the Java version as a<code>String</code>  trimming leading
>> letters.
>> +     *</p>
>> +     *
>> +     *<p>
>> +     * The field will return<code>null</code>  if {@link #JAVA_VERSION} is
>> <code>null</code>.
>> +     *</p>
>>        *
>>        * @since 2.1
>>        */
>>       public static final String JAVA_VERSION_TRIMMED =
>> getJavaVersionTrimmed();
>>
>>       // Java version values
>> -
>> //-----------------------------------------------------------------------
>> +    //
>> -----------------------------------------------------------------------
>>       // These MUST be declared after the trim above as they depend on the
>>       // value being set up
>>
>>       /**
>> -     *<p>Gets the Java version as a<code>float</code>.</p>
>> -     *
>> -     *<p>Example return values:</p>
>> +     *<p>
>> +     * Gets the Java version as a<code>float</code>.
>> +     *</p>
>> +     *
>> +     *<p>
>> +     * Example return values:
>> +     *</p>
>>        *<ul>
>> -     *<li><code>1.2f</code>  for JDK 1.2
>> -     *<li><code>1.31f</code>  for JDK 1.3.1
>> +     *<li><code>1.2f</code>  for Java 1.2
>> +     *<li><code>1.31f</code>  for Java 1.3.1
>>        *</ul>
>> -     *
>> -     *<p>The field will return zero if {@link #JAVA_VERSION} is
>> <code>null</code>.</p>
>> +     *
>> +     *<p>
>> +     * The field will return zero if {@link #JAVA_VERSION} is
>> <code>null</code>.
>> +     *</p>
>>        *
>>        * @since 2.0
>>        */
>>       public static final float JAVA_VERSION_FLOAT = getJavaVersionAsFloat();
>>
>>       /**
>> -     *<p>Gets the Java version as an<code>int</code>.</p>
>> -     *
>> -     *<p>Example return values:</p>
>> +     *<p>
>> +     * Gets the Java version as an<code>int</code>.
>> +     *</p>
>> +     *
>> +     *<p>
>> +     * Example return values:
>> +     *</p>
>>        *<ul>
>> -     *<li><code>120</code>  for JDK 1.2
>> -     *<li><code>131</code>  for JDK 1.3.1
>> +     *<li><code>120</code>  for Java 1.2
>> +     *<li><code>131</code>  for Java 1.3.1
>>        *</ul>
>> -     *
>> -     *<p>The field will return zero if {@link #JAVA_VERSION} is
>> <code>null</code>.</p>
>> +     *
>> +     *<p>
>> +     * The field will return zero if {@link #JAVA_VERSION} is
>> <code>null</code>.
>> +     *</p>
>>        *
>>        * @since 2.0
>>        */
>>       public static final int JAVA_VERSION_INT = getJavaVersionAsInt();
>>
>>       // Java version checks
>> -
>> //-----------------------------------------------------------------------
>> +    //
>> -----------------------------------------------------------------------
>>       // These MUST be declared after those above as they depend on the
>>       // values being set up
>> -
>> +
>>       /**
>> -     *<p>Is<code>true</code>  if this is Java version 1.1 (also 1.1.x
>> versions).</p>
>> -     *
>> -     *<p>The field will return<code>false</code>  if {@link #JAVA_VERSION}
>> is
>> -     *<code>null</code>.</p>
>> +     *<p>
>> +     * Is<code>true</code>  if this is Java version 1.1 (also 1.1.x
>> versions).
>> +     *</p>
>> +     *
>> +     *<p>
>> +     * The field will return<code>false</code>  if {@link #JAVA_VERSION} is
>> <code>null</code>.
>> +     *</p>
>>        */
>>       public static final boolean IS_JAVA_1_1 = getJavaVersionMatches("1.1");
>>
>>       /**
>> -     *<p>Is<code>true</code>  if this is Java version 1.2 (also 1.2.x
>> versions).</p>
>> -     *
>> -     *<p>The field will return<code>false</code>  if {@link #JAVA_VERSION}
>> is
>> -     *<code>null</code>.</p>
>> +     *<p>
>> +     * Is<code>true</code>  if this is Java version 1.2 (also 1.2.x
>> versions).
>> +     *</p>
>> +     *
>> +     *<p>
>> +     * The field will return<code>false</code>  if {@link #JAVA_VERSION} is
>> <code>null</code>.
>> +     *</p>
>>        */
>>       public static final boolean IS_JAVA_1_2 = getJavaVersionMatches("1.2");
>>
>>       /**
>> -     *<p>Is<code>true</code>  if this is Java version 1.3 (also 1.3.x
>> versions).</p>
>> -     *
>> -     *<p>The field will return<code>false</code>  if {@link #JAVA_VERSION}
>> is
>> -     *<code>null</code>.</p>
>> -     */
>> -    public static final boolean IS_JAVA_1_3 = getJavaVersionMatches("1.3");
>> -
>> +     *<p>
>> +     * Is<code>true</code>  if this is Java version 1.3 (also 1.3.x
>> versions).
>> +     *</p>
>> +     *
>> +     *<p>
>> +     * The field will return<code>false</code>  if {@link #JAVA_VERSION} is
>> <code>null</code>.
>> +     *</p>
>> +     */
>> +    public static final boolean IS_JAVA_1_3 = getJavaVersionMatches("1.3");
>> +
>>       /**
>> -     *<p>Is<code>true</code>  if this is Java version 1.4 (also 1.4.x
>> versions).</p>
>> -     *
>> -     *<p>The field will return<code>false</code>  if {@link #JAVA_VERSION}
>> is
>> -     *<code>null</code>.</p>
>> +     *<p>
>> +     * Is<code>true</code>  if this is Java version 1.4 (also 1.4.x
>> versions).
>> +     *</p>
>> +     *
>> +     *<p>
>> +     * The field will return<code>false</code>  if {@link #JAVA_VERSION} is
>> <code>null</code>.
>> +     *</p>
>>        */
>>       public static final boolean IS_JAVA_1_4 = getJavaVersionMatches("1.4");
>>
>>       /**
>> -     *<p>Is<code>true</code>  if this is Java version 1.5 (also 1.5.x
>> versions).</p>
>> -     *
>> -     *<p>The field will return<code>false</code>  if {@link #JAVA_VERSION}
>> is
>> -     *<code>null</code>.</p>
>> +     *<p>
>> +     * Is<code>true</code>  if this is Java version 1.5 (also 1.5.x
>> versions).
>> +     *</p>
>> +     *
>> +     *<p>
>> +     * The field will return<code>false</code>  if {@link #JAVA_VERSION} is
>> <code>null</code>.
>> +     *</p>
>>        */
>>       public static final boolean IS_JAVA_1_5 = getJavaVersionMatches("1.5");
>>
>>       /**
>> -     *<p>Is<code>true</code>  if this is Java version 1.6 (also 1.6.x
>> versions).</p>
>> -     *
>> -     *<p>The field will return<code>false</code>  if {@link #JAVA_VERSION}
>> is
>> -     *<code>null</code>.</p>
>> +     *<p>
>> +     * Is<code>true</code>  if this is Java version 1.6 (also 1.6.x
>> versions).
>> +     *</p>
>> +     *
>> +     *<p>
>> +     * The field will return<code>false</code>  if {@link #JAVA_VERSION} is
>> <code>null</code>.
>> +     *</p>
>>        */
>>       public static final boolean IS_JAVA_1_6 = getJavaVersionMatches("1.6");
>>
>>       /**
>> -     *<p>Is<code>true</code>  if this is Java version 1.7 (also 1.7.x
>> versions).</p>
>> -     *
>> -     *<p>The field will return<code>false</code>  if {@link #JAVA_VERSION}
>> is
>> -     *<code>null</code>.</p>
>> +     *<p>
>> +     * Is<code>true</code>  if this is Java version 1.7 (also 1.7.x
>> versions).
>> +     *</p>
>> +     *
>> +     *<p>
>> +     * The field will return<code>false</code>  if {@link #JAVA_VERSION} is
>> <code>null</code>.
>> +     *</p>
>>        *
>>        * @since 3.0
>>        */
>>       public static final boolean IS_JAVA_1_7 = getJavaVersionMatches("1.7");
>>
>>       // Operating system checks
>> -
>> //-----------------------------------------------------------------------
>> +    //
>> -----------------------------------------------------------------------
>>       // These MUST be declared after those above as they depend on the
>>       // values being set up
>>       // OS names from http://www.vamphq.com/os.html
>> @@ -905,276 +1056,349 @@ public class SystemUtils {
>>       // if you want another added or a mistake corrected
>>
>>       /**
>> -     *<p>Is<code>true</code>  if this is AIX.</p>
>> -     *
>> -     *<p>The field will return<code>false</code>  if<code>OS_NAME</code>
>> is
>> -     *<code>null</code>.</p>
>> +     *<p>
>> +     * Is<code>true</code>  if this is AIX.
>> +     *</p>
>> +     *
>> +     *<p>
>> +     * The field will return<code>false</code>  if<code>OS_NAME</code>  is
>> <code>null</code>.
>> +     *</p>
>>        *
>>        * @since 2.0
>>        */
>> -    public static final boolean IS_OS_AIX = getOSMatches("AIX");
>> +    public static final boolean IS_OS_AIX = getOSMatchesName("AIX");
>>
>>       /**
>> -     *<p>Is<code>true</code>  if this is HP-UX.</p>
>> -     *
>> -     *<p>The field will return<code>false</code>  if<code>OS_NAME</code>
>> is
>> -     *<code>null</code>.</p>
>> +     *<p>
>> +     * Is<code>true</code>  if this is HP-UX.
>> +     *</p>
>> +     *
>> +     *<p>
>> +     * The field will return<code>false</code>  if<code>OS_NAME</code>  is
>> <code>null</code>.
>> +     *</p>
>>        *
>>        * @since 2.0
>>        */
>> -    public static final boolean IS_OS_HP_UX = getOSMatches("HP-UX");
>> +    public static final boolean IS_OS_HP_UX = getOSMatchesName("HP-UX");
>>
>>       /**
>> -     *<p>Is<code>true</code>  if this is Irix.</p>
>> -     *
>> -     *<p>The field will return<code>false</code>  if<code>OS_NAME</code>
>> is
>> -     *<code>null</code>.</p>
>> +     *<p>
>> +     * Is<code>true</code>  if this is Irix.
>> +     *</p>
>> +     *
>> +     *<p>
>> +     * The field will return<code>false</code>  if<code>OS_NAME</code>  is
>> <code>null</code>.
>> +     *</p>
>>        *
>>        * @since 2.0
>>        */
>> -    public static final boolean IS_OS_IRIX = getOSMatches("Irix");
>> +    public static final boolean IS_OS_IRIX = getOSMatchesName("Irix");
>>
>>       /**
>> -     *<p>Is<code>true</code>  if this is Linux.</p>
>> -     *
>> -     *<p>The field will return<code>false</code>  if<code>OS_NAME</code>
>> is
>> -     *<code>null</code>.</p>
>> +     *<p>
>> +     * Is<code>true</code>  if this is Linux.
>> +     *</p>
>> +     *
>> +     *<p>
>> +     * The field will return<code>false</code>  if<code>OS_NAME</code>  is
>> <code>null</code>.
>> +     *</p>
>>        *
>>        * @since 2.0
>>        */
>> -    public static final boolean IS_OS_LINUX = getOSMatches("Linux") ||
>> getOSMatches("LINUX");
>> +    public static final boolean IS_OS_LINUX = getOSMatchesName("Linux") ||
>> getOSMatchesName("LINUX");
>>
>>       /**
>> -     *<p>Is<code>true</code>  if this is Mac.</p>
>> -     *
>> -     *<p>The field will return<code>false</code>  if<code>OS_NAME</code>
>> is
>> -     *<code>null</code>.</p>
>> +     *<p>
>> +     * Is<code>true</code>  if this is Mac.
>> +     *</p>
>> +     *
>> +     *<p>
>> +     * The field will return<code>false</code>  if<code>OS_NAME</code>  is
>> <code>null</code>.
>> +     *</p>
>>        *
>>        * @since 2.0
>>        */
>> -    public static final boolean IS_OS_MAC = getOSMatches("Mac");
>> +    public static final boolean IS_OS_MAC = getOSMatchesName("Mac");
>>
>>       /**
>> -     *<p>Is<code>true</code>  if this is Mac.</p>
>> -     *
>> -     *<p>The field will return<code>false</code>  if<code>OS_NAME</code>
>> is
>> -     *<code>null</code>.</p>
>> +     *<p>
>> +     * Is<code>true</code>  if this is Mac.
>> +     *</p>
>> +     *
>> +     *<p>
>> +     * The field will return<code>false</code>  if<code>OS_NAME</code>  is
>> <code>null</code>.
>> +     *</p>
>>        *
>>        * @since 2.0
>>        */
>> -    public static final boolean IS_OS_MAC_OSX = getOSMatches("Mac OS X");
>> +    public static final boolean IS_OS_MAC_OSX = getOSMatchesName("Mac OS
>> X");
>>
>>       /**
>> -     *<p>Is<code>true</code>  if this is OS/2.</p>
>> -     *
>> -     *<p>The field will return<code>false</code>  if<code>OS_NAME</code>
>> is
>> -     *<code>null</code>.</p>
>> +     *<p>
>> +     * Is<code>true</code>  if this is OS/2.
>> +     *</p>
>> +     *
>> +     *<p>
>> +     * The field will return<code>false</code>  if<code>OS_NAME</code>  is
>> <code>null</code>.
>> +     *</p>
>>        *
>>        * @since 2.0
>>        */
>> -    public static final boolean IS_OS_OS2 = getOSMatches("OS/2");
>> +    public static final boolean IS_OS_OS2 = getOSMatchesName("OS/2");
>>
>>       /**
>> -     *<p>Is<code>true</code>  if this is Solaris.</p>
>> -     *
>> -     *<p>The field will return<code>false</code>  if<code>OS_NAME</code>
>> is
>> -     *<code>null</code>.</p>
>> +     *<p>
>> +     * Is<code>true</code>  if this is Solaris.
>> +     *</p>
>> +     *
>> +     *<p>
>> +     * The field will return<code>false</code>  if<code>OS_NAME</code>  is
>> <code>null</code>.
>> +     *</p>
>>        *
>>        * @since 2.0
>>        */
>> -    public static final boolean IS_OS_SOLARIS = getOSMatches("Solaris");
>> +    public static final boolean IS_OS_SOLARIS =
>> getOSMatchesName("Solaris");
>>
>>       /**
>> -     *<p>Is<code>true</code>  if this is SunOS.</p>
>> -     *
>> -     *<p>The field will return<code>false</code>  if<code>OS_NAME</code>
>> is
>> -     *<code>null</code>.</p>
>> +     *<p>
>> +     * Is<code>true</code>  if this is SunOS.
>> +     *</p>
>> +     *
>> +     *<p>
>> +     * The field will return<code>false</code>  if<code>OS_NAME</code>  is
>> <code>null</code>.
>> +     *</p>
>>        *
>>        * @since 2.0
>>        */
>> -    public static final boolean IS_OS_SUN_OS = getOSMatches("SunOS");
>> +    public static final boolean IS_OS_SUN_OS = getOSMatchesName("SunOS");
>>
>>       /**
>> -     *<p>Is<code>true</code>  if this is a POSIX compilant system,
>> -     * as in any of AIX, HP-UX, Irix, Linux, MacOSX, Solaris or SUN OS.</p>
>> -     *
>> -     *<p>The field will return<code>false</code>  if<code>OS_NAME</code>
>> is
>> -     *<code>null</code>.</p>
>> +     *<p>
>> +     * Is<code>true</code>  if this is a POSIX compilant system, as in any
>> of AIX, HP-UX, Irix, Linux, MacOSX, Solaris or SUN OS.
>> +     *</p>
>> +     *
>> +     *<p>
>> +     * The field will return<code>false</code>  if<code>OS_NAME</code>  is
>> <code>null</code>.
>> +     *</p>
>>        *
>>        * @since 2.1
>>        */
>> -    public static final boolean IS_OS_UNIX =
>> -        IS_OS_AIX || IS_OS_HP_UX || IS_OS_IRIX || IS_OS_LINUX ||
>> -        IS_OS_MAC_OSX || IS_OS_SOLARIS || IS_OS_SUN_OS;
>> +    public static final boolean IS_OS_UNIX = IS_OS_AIX || IS_OS_HP_UX ||
>> IS_OS_IRIX || IS_OS_LINUX || IS_OS_MAC_OSX || IS_OS_SOLARIS
>> +            || IS_OS_SUN_OS;
>>
>>       /**
>> -     *<p>Is<code>true</code>  if this is Windows.</p>
>> -     *
>> -     *<p>The field will return<code>false</code>  if<code>OS_NAME</code>
>> is
>> -     *<code>null</code>.</p>
>> +     *<p>
>> +     * Is<code>true</code>  if this is Windows.
>> +     *</p>
>> +     *
>> +     *<p>
>> +     * The field will return<code>false</code>  if<code>OS_NAME</code>  is
>> <code>null</code>.
>> +     *</p>
>>        *
>>        * @since 2.0
>>        */
>> -    public static final boolean IS_OS_WINDOWS =
>> getOSMatches(OS_NAME_WINDOWS_PREFIX);
>> +    public static final boolean IS_OS_WINDOWS =
>> getOSMatchesName(OS_NAME_WINDOWS_PREFIX);
>>
>>       /**
>> -     *<p>Is<code>true</code>  if this is Windows 2000.</p>
>> -     *
>> -     *<p>The field will return<code>false</code>  if<code>OS_NAME</code>
>> is
>> -     *<code>null</code>.</p>
>> +     *<p>
>> +     * Is<code>true</code>  if this is Windows 2000.
>> +     *</p>
>> +     *
>> +     *<p>
>> +     * The field will return<code>false</code>  if<code>OS_NAME</code>  is
>> <code>null</code>.
>> +     *</p>
>>        *
>>        * @since 2.0
>>        */
>>       public static final boolean IS_OS_WINDOWS_2000 =
>> getOSMatches(OS_NAME_WINDOWS_PREFIX, "5.0");
>>
>>       /**
>> -     *<p>Is<code>true</code>  if this is Windows 95.</p>
>> -     *
>> -     *<p>The field will return<code>false</code>  if<code>OS_NAME</code>
>> is
>> -     *<code>null</code>.</p>
>> +     *<p>
>> +     * Is<code>true</code>  if this is Windows 95.
>> +     *</p>
>> +     *
>> +     *<p>
>> +     * The field will return<code>false</code>  if<code>OS_NAME</code>  is
>> <code>null</code>.
>> +     *</p>
>>        *
>>        * @since 2.0
>>        */
>>       public static final boolean IS_OS_WINDOWS_95 =
>> getOSMatches(OS_NAME_WINDOWS_PREFIX + " 9", "4.0");
>> -    // JDK 1.2 running on Windows98 returns 'Windows 95', hence the above
>> +    // Java 1.2 running on Windows98 returns 'Windows 95', hence the above
>>
>>       /**
>> -     *<p>Is<code>true</code>  if this is Windows 98.</p>
>> -     *
>> -     *<p>The field will return<code>false</code>  if<code>OS_NAME</code>
>> is
>> -     *<code>null</code>.</p>
>> +     *<p>
>> +     * Is<code>true</code>  if this is Windows 98.
>> +     *</p>
>> +     *
>> +     *<p>
>> +     * The field will return<code>false</code>  if<code>OS_NAME</code>  is
>> <code>null</code>.
>> +     *</p>
>>        *
>>        * @since 2.0
>>        */
>>       public static final boolean IS_OS_WINDOWS_98 =
>> getOSMatches(OS_NAME_WINDOWS_PREFIX + " 9", "4.1");
>> -    // JDK 1.2 running on Windows98 returns 'Windows 95', hence the above
>> +    // Java 1.2 running on Windows98 returns 'Windows 95', hence the above
>>
>>       /**
>> -     *<p>Is<code>true</code>  if this is Windows ME.</p>
>> -     *
>> -     *<p>The field will return<code>false</code>  if<code>OS_NAME</code>
>> is
>> -     *<code>null</code>.</p>
>> +     *<p>
>> +     * Is<code>true</code>  if this is Windows ME.
>> +     *</p>
>> +     *
>> +     *<p>
>> +     * The field will return<code>false</code>  if<code>OS_NAME</code>  is
>> <code>null</code>.
>> +     *</p>
>>        *
>>        * @since 2.0
>>        */
>>       public static final boolean IS_OS_WINDOWS_ME =
>> getOSMatches(OS_NAME_WINDOWS_PREFIX, "4.9");
>> -    // JDK 1.2 running on WindowsME may return 'Windows 95', hence the
>> above
>> +    // Java 1.2 running on WindowsME may return 'Windows 95', hence the
>> above
>>
>>       /**
>> -     *<p>Is<code>true</code>  if this is Windows NT.</p>
>> -     *
>> -     *<p>The field will return<code>false</code>  if<code>OS_NAME</code>
>> is
>> -     *<code>null</code>.</p>
>> +     *<p>
>> +     * Is<code>true</code>  if this is Windows NT.
>> +     *</p>
>> +     *
>> +     *<p>
>> +     * The field will return<code>false</code>  if<code>OS_NAME</code>  is
>> <code>null</code>.
>> +     *</p>
>>        *
>>        * @since 2.0
>>        */
>> -    public static final boolean IS_OS_WINDOWS_NT =
>> getOSMatches(OS_NAME_WINDOWS_PREFIX + " NT");
>> -    // Windows 2000 returns 'Windows 2000' but may suffer from same JDK1.2
>> problem
>> +    public static final boolean IS_OS_WINDOWS_NT =
>> getOSMatchesName(OS_NAME_WINDOWS_PREFIX + " NT");
>> +    // Windows 2000 returns 'Windows 2000' but may suffer from same Java1.2
>> problem
>>
>>       /**
>> -     *<p>Is<code>true</code>  if this is Windows XP.</p>
>> -     *
>> -     *<p>The field will return<code>false</code>  if<code>OS_NAME</code>
>> is
>> -     *<code>null</code>.</p>
>> +     *<p>
>> +     * Is<code>true</code>  if this is Windows XP.
>> +     *</p>
>> +     *
>> +     *<p>
>> +     * The field will return<code>false</code>  if<code>OS_NAME</code>  is
>> <code>null</code>.
>> +     *</p>
>>        *
>>        * @since 2.0
>>        */
>>       public static final boolean IS_OS_WINDOWS_XP =
>> getOSMatches(OS_NAME_WINDOWS_PREFIX, "5.1");
>>
>> -
>> //-----------------------------------------------------------------------
>> +    //
>> -----------------------------------------------------------------------
>>       /**
>> -     *<p>Is<code>true</code>  if this is Windows Vista.</p>
>> -     *
>> -     *<p>The field will return<code>false</code>  if<code>OS_NAME</code>
>> is
>> -     *<code>null</code>.</p>
>> -     *
>> +     *<p>
>> +     * Is<code>true</code>  if this is Windows Vista.
>> +     *</p>
>> +     *
>> +     *<p>
>> +     * The field will return<code>false</code>  if<code>OS_NAME</code>  is
>> <code>null</code>.
>> +     *</p>
>> +     *
>>        * @since 2.4
>>        */
>> -    public static final boolean IS_OS_WINDOWS_VISTA =
>> getOSMatches(OS_NAME_WINDOWS_PREFIX, "6.0");
>> +    public static final boolean IS_OS_WINDOWS_VISTA =
>> getOSMatches(OS_NAME_WINDOWS_PREFIX, "6.0");
>>
>>       /**
>> -     *<p>Is<code>true</code>  if this is Windows 7.</p>
>> -     *
>> -     *<p>The field will return<code>false</code>  if<code>OS_NAME</code>
>> is
>> -     *<code>null</code>.</p>
>> -     *
>> +     *<p>
>> +     * Is<code>true</code>  if this is Windows 7.
>> +     *</p>
>> +     *
>> +     *<p>
>> +     * The field will return<code>false</code>  if<code>OS_NAME</code>  is
>> <code>null</code>.
>> +     *</p>
>> +     *
>>        * @since 3.0
>>        */
>> -    public static final boolean IS_OS_WINDOWS_7 =
>> getOSMatches(OS_NAME_WINDOWS_PREFIX, "6.1");
>> +    public static final boolean IS_OS_WINDOWS_7 =
>> getOSMatches(OS_NAME_WINDOWS_PREFIX, "6.1");
>>
>> -
>> //-----------------------------------------------------------------------
>>       /**
>> -     *<p>SystemUtils instances should NOT be constructed in standard
>> -     * programming. Instead, the class should be used as
>> -     *<code>SystemUtils.FILE_SEPARATOR</code>.</p>
>> -     *
>> -     *<p>This constructor is public to permit tools that require a
>> JavaBean
>> -     * instance to operate.</p>
>> +     *<p>
>> +     * Gets the Java home directory as a<code>File</code>.
>> +     *</p>
>> +     *
>> +     * @return a directory
>> +     * @throws SecurityException
>> +     *             if a security manager exists and its
>> <code>checkPropertyAccess</code>  method doesn't allow access to the
>> specified system
>> +     *             property.
>> +     * @see System#getProperty(String)
>> +     * @since 2.1
>>        */
>> -    public SystemUtils() {
>> -        super();
>> +    public static File getJavaHome() {
>> +        return new File(System.getProperty(JAVA_HOME_KEY));
>>       }
>> -
>> -
>> //-----------------------------------------------------------------------
>> +
>>       /**
>> -     *<p>Gets the Java version number as a<code>float</code>.</p>
>> -     *
>> -     *<p>Example return values:</p>
>> +     *<p>
>> +     * Gets the Java IO temporary directory as a<code>File</code>.
>> +     *</p>
>> +     *
>> +     * @return a directory
>> +     * @throws SecurityException
>> +     *             if a security manager exists and its
>> <code>checkPropertyAccess</code>  method doesn't allow access to the
>> specified system
>> +     *             property.
>> +     * @see System#getProperty(String)
>> +     * @since 2.1
>> +     */
>> +    public static File getJavaIoTmpDir() {
>> +        return new File(System.getProperty(JAVA_IO_TMPDIR_KEY));
>> +    }
>> +
>> +    /**
>> +     *<p>
>> +     * Gets the Java version number as a<code>float</code>.
>> +     *</p>
>> +     *
>> +     *<p>
>> +     * Example return values:
>> +     *</p>
>>        *<ul>
>> -     *<li><code>1.2f</code>  for JDK 1.2
>> -     *<li><code>1.31f</code>  for JDK 1.3.1
>> +     *<li><code>1.2f</code>  for Java 1.2</li>
>> +     *<li><code>1.31f</code>  for Java 1.3.1</li>
>> +     *<li><code>1.6f</code>  for Java 1.6.0_20</li>
>>        *</ul>
>>        *
>> -     *<p>Patch releases are not reported.
>> -     * Zero is returned if {@link #JAVA_VERSION_TRIMMED} is
>> <code>null</code>.</p>
>> +     *<p>
>> +     * Patch releases are not reported.
>> +     *</p>
>>        *
>> -     * @return the version, for example 1.31f for JDK 1.3.1
>> +     * @return the version, for example 1.31f for Java 1.3.1
>>        */
>>       private static float getJavaVersionAsFloat() {
>> -        if (JAVA_VERSION_TRIMMED == null) {
>> -            return 0f;
>> -        }
>> -        String str = JAVA_VERSION_TRIMMED.substring(0, 3);
>> -        if (JAVA_VERSION_TRIMMED.length()>= 5) {
>> -            str = str + JAVA_VERSION_TRIMMED.substring(4, 5);
>> -        }
>> -        try {
>> -            return Float.parseFloat(str);
>> -        } catch (Exception ex) {
>> -            return 0;
>> -        }
>> +        return
>> toVersionFloat(toJavaVersionIntArray(SystemUtils.JAVA_VERSION,
>> JAVA_VERSION_TRIM_SIZE));
>>       }
>> -
>> +
>>       /**
>> -     *<p>Gets the Java version number as an<code>int</code>.</p>
>> -     *
>> -     *<p>Example return values:</p>
>> +     *<p>
>> +     * Gets the Java version number as an<code>int</code>.
>> +     *</p>
>> +     *
>> +     *<p>
>> +     * Example return values:
>> +     *</p>
>>        *<ul>
>> -     *<li><code>120</code>  for JDK 1.2
>> -     *<li><code>131</code>  for JDK 1.3.1
>> +     *<li><code>120</code>  for Java 1.2</li>
>> +     *<li><code>131</code>  for Java 1.3.1</li>
>> +     *<li><code>160</code>  for Java 1.6.0_20</li>
>>        *</ul>
>>        *
>> -     *<p>Patch releases are not reported.
>> -     * Zero is returned if {@link #JAVA_VERSION_TRIMMED} is
>> <code>null</code>.</p>
>> +     *<p>
>> +     * Patch releases are not reported.
>> +     *</p>
>>        *
>> -     * @return the version, for example 131 for JDK 1.3.1
>> +     * @return the version, for example 131 for Java 1.3.1
>>        */
>>       private static int getJavaVersionAsInt() {
>> -        if (JAVA_VERSION_TRIMMED == null) {
>> -            return 0;
>> -        }
>> -        String str = JAVA_VERSION_TRIMMED.substring(0, 1);
>> -        str = str + JAVA_VERSION_TRIMMED.substring(2, 3);
>> -        if (JAVA_VERSION_TRIMMED.length()>= 5) {
>> -            str = str + JAVA_VERSION_TRIMMED.substring(4, 5);
>> -        } else {
>> -            str = str + "0";
>> -        }
>> -        try {
>> -            return Integer.parseInt(str);
>> -        } catch (Exception ex) {
>> -            return 0;
>> -        }
>> +        return toVersionInt(toJavaVersionIntArray(SystemUtils.JAVA_VERSION,
>> JAVA_VERSION_TRIM_SIZE));
>> +    }
>> +
>> +    /**
>> +     *<p>
>> +     * Decides if the Java version matches.
>> +     *</p>
>> +     *
>> +     * @param versionPrefix
>> +     *            the prefix for the java version
>> +     * @return true if matches, or false if not or can't determine
>> +     */
>> +    private static boolean getJavaVersionMatches(String versionPrefix) {
>> +        return isJavaVersionMatch(JAVA_VERSION_TRIMMED, versionPrefix);
>>       }
>>
>>       /**
>> @@ -1195,54 +1419,42 @@ public class SystemUtils {
>>       }
>>
>>       /**
>> -     *<p>Decides if the java version matches.</p>
>> +     * Decides if the operating system matches.
>>        *
>> -     * @param versionPrefix  the prefix for the java version
>> +     * @param osNamePrefix
>> +     *            the prefix for the os name
>> +     * @param osVersionPrefix
>> +     *            the prefix for the version
>>        * @return true if matches, or false if not or can't determine
>>        */
>> -    private static boolean getJavaVersionMatches(String versionPrefix) {
>> -        if (JAVA_VERSION_TRIMMED == null) {
>> -            return false;
>> -        }
>> -        return JAVA_VERSION_TRIMMED.startsWith(versionPrefix);
>> -    }
>> -
>> -    /**
>> -     *<p>Decides if the operating system matches.</p>
>> -     *
>> -     * @param osNamePrefix  the prefix for the os name
>> -     * @return true if matches, or false if not or can't determine
>> -     */
>> -    private static boolean getOSMatches(String osNamePrefix) {
>> -        if (OS_NAME == null) {
>> -            return false;
>> -        }
>> -        return OS_NAME.startsWith(osNamePrefix);
>> -    }
>> +    private static boolean getOSMatches(String osNamePrefix, String
>> osVersionPrefix) {
>> +        return isOSMatch(OS_NAME, OS_VERSION, osNamePrefix,
>> osVersionPrefix);
>> +    }
>>
>>       /**
>> -     *<p>Decides if the operating system matches.</p>
>> +     * Decides if the operating system matches.
>>        *
>> -     * @param osNamePrefix  the prefix for the os name
>> -     * @param osVersionPrefix  the prefix for the version
>> +     * @param osNamePrefix
>> +     *            the prefix for the os name
>>        * @return true if matches, or false if not or can't determine
>>        */
>> -    private static boolean getOSMatches(String osNamePrefix, String
>> osVersionPrefix) {
>> -        if (OS_NAME == null || OS_VERSION == null) {
>> -            return false;
>> -        }
>> -        return OS_NAME.startsWith(osNamePrefix)&&
>> OS_VERSION.startsWith(osVersionPrefix);
>> -    }
>> +    private static boolean getOSMatchesName(String osNamePrefix) {
>> +        return isOSNameMatch(OS_NAME, osNamePrefix);
>> +    }
>>
>> -
>> //-----------------------------------------------------------------------
>> +    //
>> -----------------------------------------------------------------------
>>       /**
>> -     *<p>Gets a System property, defaulting to<code>null</code>  if the
>> property
>> -     * cannot be read.</p>
>> -     *
>> -     *<p>If a<code>SecurityException</code>  is caught, the return
>> -     * value is<code>null</code>  and a message is written to
>> <code>System.err</code>.</p>
>> +     *<p>
>> +     * Gets a System property, defaulting to<code>null</code>  if the
>> property cannot be read.
>> +     *</p>
>>        *
>> -     * @param property the system property name
>> +     *<p>
>> +     * If a<code>SecurityException</code>  is caught, the return value is
>> <code>null</code>  and a message is written to
>> +     *<code>System.err</code>.
>> +     *</p>
>> +     *
>> +     * @param property
>> +     *            the system property name
>>        * @return the system property value or<code>null</code>  if a security
>> problem occurs
>>        */
>>       private static String getSystemProperty(String property) {
>> @@ -1250,43 +1462,94 @@ public class SystemUtils {
>>               return System.getProperty(property);
>>           } catch (SecurityException ex) {
>>               // we are not allowed to look at this property
>> -            System.err.println(
>> -                "Caught a SecurityException reading the system property '"
>> + property
>> -                + "'; the SystemUtils property value will default to null."
>> -            );
>> +            System.err.println("Caught a SecurityException reading the
>> system property '" + property
>> +                    + "'; the SystemUtils property value will default to
>> null.");
>>               return null;
>>           }
>>       }
>> -
>> +
>> +    /**
>> +     *<p>
>> +     * Gets the user directory as a<code>File</code>.
>> +     *</p>
>> +     *
>> +     * @return a directory
>> +     * @throws SecurityException
>> +     *             if a security manager exists and its
>> <code>checkPropertyAccess</code>  method doesn't allow access to the
>> specified system
>> +     *             property.
>> +     * @see System#getProperty(String)
>> +     * @since 2.1
>> +     */
>> +    public static File getUserDir() {
>> +        return new File(System.getProperty(USER_DIR_KEY));
>> +    }
>> +
>>       /**
>> -     *<p>Is the Java version at least the requested version.</p>
>> -     *
>> -     *<p>Example input:</p>
>> +     *<p>
>> +     * Gets the user home directory as a<code>File</code>.
>> +     *</p>
>> +     *
>> +     * @return a directory
>> +     * @throws SecurityException
>> +     *             if a security manager exists and its
>> <code>checkPropertyAccess</code>  method doesn't allow access to the
>> specified system
>> +     *             property.
>> +     * @see System#getProperty(String)
>> +     * @since 2.1
>> +     */
>> +    public static File getUserHome() {
>> +        return new File(System.getProperty(USER_HOME_KEY));
>> +    }
>> +
>> +    /**
>> +     * Returns whether the {@link #JAVA_AWT_HEADLESS} value is
>> <code>true</code>.
>> +     *
>> +     * @return<code>true</code>  if<code>JAVA_AWT_HEADLESS</code>  is
>> <code>"true"</code>,<code>false</code>  otherwise.
>> +     *
>> +     * @see #JAVA_AWT_HEADLESS
>> +     * @since 2.1
>> +     * @since Java 1.4
>> +     */
>> +    public static boolean isJavaAwtHeadless() {
>> +        return JAVA_AWT_HEADLESS != null ?
>> JAVA_AWT_HEADLESS.equals(Boolean.TRUE.toString()) : false;
>> +    }
>> +
>> +    /**
>> +     *<p>
>> +     * Is the Java version at least the requested version.
>> +     *</p>
>> +     *
>> +     *<p>
>> +     * Example input:
>> +     *</p>
>>        *<ul>
>> -     *<li><code>1.2f</code>  to test for JDK 1.2</li>
>> -     *<li><code>1.31f</code>  to test for JDK 1.3.1</li>
>> +     *<li><code>1.2f</code>  to test for Java 1.2</li>
>> +     *<li><code>1.31f</code>  to test for Java 1.3.1</li>
>>        *</ul>
>>        *
>> -     * @param requiredVersion  the required version, for example 1.31f
>> -     * @return<code>true</code>  if the actual version is equal or greater
>> -     *  than the required version
>> +     * @param requiredVersion
>> +     *            the required version, for example 1.31f
>> +     * @return<code>true</code>  if the actual version is equal or greater
>> than the required version
>>        */
>>       public static boolean isJavaVersionAtLeast(float requiredVersion) {
>>           return JAVA_VERSION_FLOAT>= requiredVersion;
>>       }
>> -
>> +
>>       /**
>> -     *<p>Is the Java version at least the requested version.</p>
>> -     *
>> -     *<p>Example input:</p>
>> +     *<p>
>> +     * Is the Java version at least the requested version.
>> +     *</p>
>> +     *
>> +     *<p>
>> +     * Example input:
>> +     *</p>
>>        *<ul>
>> -     *<li><code>120</code>  to test for JDK 1.2 or greater</li>
>> -     *<li><code>131</code>  to test for JDK 1.3.1 or greater</li>
>> +     *<li><code>120</code>  to test for Java 1.2 or greater</li>
>> +     *<li><code>131</code>  to test for Java 1.3.1 or greater</li>
>>        *</ul>
>>        *
>> -     * @param requiredVersion  the required version, for example 131
>>
>> [... 323 lines stripped ...]
>>
>>
>> --------------- Weitergeleitete Nachricht (Ende)
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
>> For additional commands, e-mail: dev-help@commons.apache.org
>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org


RE: svn commit: r949140 [2/3] - in /commons/proper/lang/trunk/src: main/java/org/apache/commons/lang3/SystemUtils.java test/java/org/apache/commons/lang3/SystemUtilsTest.java

Posted by Gary Gregory <GG...@seagullsoftware.com>.
Jörg,

I am sorry about that, I did not realize I created extra formatting noise in the change set. The changes to the class are numerous though, so there would have been lots of deltas, namely:

- Fixed and tested (LANG-624) SystemUtils.getJavaVersionAsFloat throws StringIndexOutOfBoundsException on Android runtime/Dalvik VM. This is based on a new implementation of the underlying code with less reliance of hard coded array indices, for example, calls like substring (0, 3).

- Refactored some private methods into one private and one package private method such that the latter can be called from unit tests. This allows [LANG-624] to be tested along with other methods. See below.

- Removed "dead code" from unit tests: The SystemUtilsTest unit test contained code that was cut and pasted from SystemUtils for four constants and associated initialization methods. The test methods then called these SystemUtilsTest methods instead of the SystemUtils methods. The refactoring allows for the test to run against as much of the code in SystemUtils as possible.

- Added assertions for Java version "0", "1.4.2", "1.6" and "1.7" to some tests.

- Added Javadocs to document what happens with "1.6.0_20" vs. "1.6.0", which is that the patch level is ignored.

Gary Gregory
Senior Software Engineer
Seagull Software
email: ggregory@seagullsoftware.com
email: ggregory@apache.org
www.seagullsoftware.com


> -----Original Message-----
> From: Jörg Schaible [mailto:joerg.schaible@gmx.de]
> Sent: Friday, May 28, 2010 05:13
> To: dev@commons.apache.org
> Subject: Fwd: svn commit: r949140 [2/3] - in /commons/proper/lang/trunk/src:
> main/java/org/apache/commons/lang3/SystemUtils.java
> test/java/org/apache/commons/lang3/SystemUtilsTest.java
>
> Gary,
>
> can you please stop with this code reformatting? How should anyone can have
> a look at the changes if it is hidden between 95% unrelated stuff ???
>
> - Jörg
>
>
>
> --------------- Forwarded Message
>
> Betreff: svn commit: r949140 [2/3] - in /commons/proper/lang/trunk/src:
> main/java/org/apache/commons/lang3/SystemUtils.java
> test/java/org/apache/commons/lang3/SystemUtilsTest.java
> Absender: ggregory@apache.org
> Datum: Fri, 28 May 2010 10:12:04 +0000
> Newsgruppe: gmane.comp.jakarta.commons.scm
>
>
> Modified:
> commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/SystemUtils.j
> ava
> URL:
> http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/main/java/org/apach
> e/commons/lang3/SystemUtils.java?rev=949140&r1=949139&r2=949140&view=diff
> ==============================================================================
> ---
> commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/SystemUtils.j
> ava
> (original)
> +++
> commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/SystemUtils.j
> ava
> Fri May 28 10:12:04 2010
> @@ -17,15 +17,22 @@
>  package org.apache.commons.lang3;
>
>  import java.io.File;
> +import java.util.regex.Pattern;
>
>  /**
> - * <p>Helpers for <code>java.lang.System</code>.</p>
> + * <p>
> + * Helpers for <code>java.lang.System</code>.
> + * </p>
> + *
> + * <p>
> + * If a system property cannot be read due to security restrictions, the
> corresponding field in this class will be set to <code>null</code>
> + * and a message will be written to <code>System.err</code>.
> + * </p>
> + *
> + * <p>
> + * #ThreadSafe#
> + * </p>
>   *
> - * <p>If a system property cannot be read due to security restrictions,
> - * the corresponding field in this class will be set to <code>null</code>
> - * and a message will be written to <code>System.err</code>.</p>
> - *
> - * <p>#ThreadSafe#</p>
>   * @author Apache Software Foundation
>   * @author Based on code from Avalon Excalibur
>   * @author Based on code from Lucene
> @@ -40,15 +47,17 @@ import java.io.File;
>   */
>  public class SystemUtils {
>
> +    private static final int JAVA_VERSION_TRIM_SIZE = 3;
> +
>      /**
>       * The prefix String for all Windows OS.
>       */
>      private static final String OS_NAME_WINDOWS_PREFIX = "Windows";
> -
> +
>      // System property constants
> -
> //-----------------------------------------------------------------------
> +    //
> -----------------------------------------------------------------------
>      // These MUST be declared first. Other constants depend on this.
> -
> +
>      /**
>       * The System property key for the user home directory.
>       */
> @@ -58,29 +67,36 @@ public class SystemUtils {
>       * The System property key for the user directory.
>       */
>      private static final String USER_DIR_KEY = "user.dir";
> -
> +
>      /**
>       * The System property key for the Java IO temporary directory.
>       */
>      private static final String JAVA_IO_TMPDIR_KEY = "java.io.tmpdir";
> -
> +
>      /**
>       * The System property key for the Java home directory.
>       */
>      private static final String JAVA_HOME_KEY = "java.home";
> -
> +
>      /**
> -     * <p>The <code>awt.toolkit</code> System Property.</p>
> -     * <p>Holds a class name, on Windows XP this is
> <code>sun.awt.windows.WToolkit</code>.</p>
> -     * <p><b>On platforms without a GUI, this value is
> <code>null</code>.</b></p>
> +     * <p>
> +     * The <code>awt.toolkit</code> System Property.
> +     * </p>
> +     * <p>
> +     * Holds a class name, on Windows XP this is
> <code>sun.awt.windows.WToolkit</code>.
> +     * </p>
> +     * <p>
> +     * <b>On platforms without a GUI, this value is <code>null</code>.</b>
> +     * </p>
>       *
> -     * <p>Defaults to <code>null</code> if the runtime does not have
> -     * security access to read this property or the property does not
> exist.</p>
> +     * <p>
> +     * Defaults to <code>null</code> if the runtime does not have security
> access to read this property or the property does not exist.
> +     * </p>
>       *
>       * <p>
> -     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)}
> -     * or {@link System#setProperties(java.util.Properties)} is called
> after this class is loaded, the value
> -     * will be out of sync with that System property.
> +     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)} or
> +     * {@link System#setProperties(java.util.Properties)} is called after
> this class is loaded, the value will be out of sync with that
> +     * System property.
>       * </p>
>       *
>       * @since 2.1
> @@ -88,16 +104,21 @@ public class SystemUtils {
>      public static final String AWT_TOOLKIT =
> getSystemProperty("awt.toolkit");
>
>      /**
> -     * <p>The <code>file.encoding</code> System Property.</p>
> -     * <p>File encoding, such as <code>Cp1252</code>.</p>
> +     * <p>
> +     * The <code>file.encoding</code> System Property.
> +     * </p>
> +     * <p>
> +     * File encoding, such as <code>Cp1252</code>.
> +     * </p>
>       *
> -     * <p>Defaults to <code>null</code> if the runtime does not have
> -     * security access to read this property or the property does not
> exist.</p>
> +     * <p>
> +     * Defaults to <code>null</code> if the runtime does not have security
> access to read this property or the property does not exist.
> +     * </p>
>       *
>       * <p>
> -     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)}
> -     * or {@link System#setProperties(java.util.Properties)} is called
> after this class is loaded, the value
> -     * will be out of sync with that System property.
> +     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)} or
> +     * {@link System#setProperties(java.util.Properties)} is called after
> this class is loaded, the value will be out of sync with that
> +     * System property.
>       * </p>
>       *
>       * @since 2.0
> @@ -106,16 +127,18 @@ public class SystemUtils {
>      public static final String FILE_ENCODING =
> getSystemProperty("file.encoding");
>
>      /**
> -     * <p>The <code>file.separator</code> System Property.
> -     * File separator (<code>&quot;/&quot;</code> on UNIX).</p>
> -     *
> -     * <p>Defaults to <code>null</code> if the runtime does not have
> -     * security access to read this property or the property does not
> exist.</p>
> +     * <p>
> +     * The <code>file.separator</code> System Property. File separator
> (<code>&quot;/&quot;</code> on UNIX).
> +     * </p>
>       *
>       * <p>
> -     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)}
> -     * or {@link System#setProperties(java.util.Properties)} is called
> after this class is loaded, the value
> -     * will be out of sync with that System property.
> +     * Defaults to <code>null</code> if the runtime does not have security
> access to read this property or the property does not exist.
> +     * </p>
> +     *
> +     * <p>
> +     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)} or
> +     * {@link System#setProperties(java.util.Properties)} is called after
> this class is loaded, the value will be out of sync with that
> +     * System property.
>       * </p>
>       *
>       * @since Java 1.1
> @@ -123,15 +146,18 @@ public class SystemUtils {
>      public static final String FILE_SEPARATOR =
> getSystemProperty("file.separator");
>
>      /**
> -     * <p>The <code>java.awt.fonts</code> System Property.</p>
> -     *
> -     * <p>Defaults to <code>null</code> if the runtime does not have
> -     * security access to read this property or the property does not
> exist.</p>
> +     * <p>
> +     * The <code>java.awt.fonts</code> System Property.
> +     * </p>
> +     *
> +     * <p>
> +     * Defaults to <code>null</code> if the runtime does not have security
> access to read this property or the property does not exist.
> +     * </p>
>       *
>       * <p>
> -     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)}
> -     * or {@link System#setProperties(java.util.Properties)} is called
> after this class is loaded, the value
> -     * will be out of sync with that System property.
> +     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)} or
> +     * {@link System#setProperties(java.util.Properties)} is called after
> this class is loaded, the value will be out of sync with that
> +     * System property.
>       * </p>
>       *
>       * @since 2.1
> @@ -139,15 +165,18 @@ public class SystemUtils {
>      public static final String JAVA_AWT_FONTS =
> getSystemProperty("java.awt.fonts");
>
>      /**
> -     * <p>The <code>java.awt.graphicsenv</code> System Property.</p>
> -     *
> -     * <p>Defaults to <code>null</code> if the runtime does not have
> -     * security access to read this property or the property does not
> exist.</p>
> +     * <p>
> +     * The <code>java.awt.graphicsenv</code> System Property.
> +     * </p>
> +     *
> +     * <p>
> +     * Defaults to <code>null</code> if the runtime does not have security
> access to read this property or the property does not exist.
> +     * </p>
>       *
>       * <p>
> -     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)}
> -     * or {@link System#setProperties(java.util.Properties)} is called
> after this class is loaded, the value
> -     * will be out of sync with that System property.
> +     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)} or
> +     * {@link System#setProperties(java.util.Properties)} is called after
> this class is loaded, the value will be out of sync with that
> +     * System property.
>       * </p>
>       *
>       * @since 2.1
> @@ -156,17 +185,18 @@ public class SystemUtils {
>
>      /**
>       * <p>
> -     * The <code>java.awt.headless</code> System Property.
> -     * The value of this property is the String <code>"true"</code> or
> <code>"false"</code>.
> +     * The <code>java.awt.headless</code> System Property. The value of
> this property is the String <code>"true"</code> or
> +     * <code>"false"</code>.
> +     * </p>
> +     *
> +     * <p>
> +     * Defaults to <code>null</code> if the runtime does not have security
> access to read this property or the property does not exist.
>       * </p>
> -     *
> -     * <p>Defaults to <code>null</code> if the runtime does not have
> -     * security access to read this property or the property does not
> exist.</p>
>       *
>       * <p>
> -     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)}
> -     * or {@link System#setProperties(java.util.Properties)} is called
> after this class is loaded, the value
> -     * will be out of sync with that System property.
> +     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)} or
> +     * {@link System#setProperties(java.util.Properties)} is called after
> this class is loaded, the value will be out of sync with that
> +     * System property.
>       * </p>
>       *
>       * @see #isJavaAwtHeadless()
> @@ -176,15 +206,18 @@ public class SystemUtils {
>      public static final String JAVA_AWT_HEADLESS =
> getSystemProperty("java.awt.headless");
>
>      /**
> -     * <p>The <code>java.awt.printerjob</code> System Property.</p>
> -     *
> -     * <p>Defaults to <code>null</code> if the runtime does not have
> -     * security access to read this property or the property does not
> exist.</p>
> +     * <p>
> +     * The <code>java.awt.printerjob</code> System Property.
> +     * </p>
> +     *
> +     * <p>
> +     * Defaults to <code>null</code> if the runtime does not have security
> access to read this property or the property does not exist.
> +     * </p>
>       *
>       * <p>
> -     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)}
> -     * or {@link System#setProperties(java.util.Properties)} is called
> after this class is loaded, the value
> -     * will be out of sync with that System property.
> +     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)} or
> +     * {@link System#setProperties(java.util.Properties)} is called after
> this class is loaded, the value will be out of sync with that
> +     * System property.
>       * </p>
>       *
>       * @since 2.1
> @@ -192,15 +225,18 @@ public class SystemUtils {
>      public static final String JAVA_AWT_PRINTERJOB =
> getSystemProperty("java.awt.printerjob");
>
>      /**
> -     * <p>The <code>java.class.path</code> System Property. Java class
> path.</p>
> -     *
> -     * <p>Defaults to <code>null</code> if the runtime does not have
> -     * security access to read this property or the property does not
> exist.</p>
> +     * <p>
> +     * The <code>java.class.path</code> System Property. Java class path.
> +     * </p>
> +     *
> +     * <p>
> +     * Defaults to <code>null</code> if the runtime does not have security
> access to read this property or the property does not exist.
> +     * </p>
>       *
>       * <p>
> -     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)}
> -     * or {@link System#setProperties(java.util.Properties)} is called
> after this class is loaded, the value
> -     * will be out of sync with that System property.
> +     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)} or
> +     * {@link System#setProperties(java.util.Properties)} is called after
> this class is loaded, the value will be out of sync with that
> +     * System property.
>       * </p>
>       *
>       * @since Java 1.1
> @@ -208,16 +244,18 @@ public class SystemUtils {
>      public static final String JAVA_CLASS_PATH =
> getSystemProperty("java.class.path");
>
>      /**
> -     * <p>The <code>java.class.version</code> System Property.
> -     * Java class format version number.</p>
> -     *
> -     * <p>Defaults to <code>null</code> if the runtime does not have
> -     * security access to read this property or the property does not
> exist.</p>
> +     * <p>
> +     * The <code>java.class.version</code> System Property. Java class
> format version number.
> +     * </p>
>       *
>       * <p>
> -     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)}
> -     * or {@link System#setProperties(java.util.Properties)} is called
> after this class is loaded, the value
> -     * will be out of sync with that System property.
> +     * Defaults to <code>null</code> if the runtime does not have security
> access to read this property or the property does not exist.
> +     * </p>
> +     *
> +     * <p>
> +     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)} or
> +     * {@link System#setProperties(java.util.Properties)} is called after
> this class is loaded, the value will be out of sync with that
> +     * System property.
>       * </p>
>       *
>       * @since Java 1.1
> @@ -225,16 +263,19 @@ public class SystemUtils {
>      public static final String JAVA_CLASS_VERSION =
> getSystemProperty("java.class.version");
>
>      /**
> -     * <p>The <code>java.compiler</code> System Property. Name of JIT
> compiler to use.
> -     * First in JDK version 1.2. Not used in Sun JDKs after 1.2.</p>
> -     *
> -     * <p>Defaults to <code>null</code> if the runtime does not have
> -     * security access to read this property or the property does not
> exist.</p>
> +     * <p>
> +     * The <code>java.compiler</code> System Property. Name of JIT compiler
> to use. First in JDK version 1.2. Not used in Sun JDKs after
> +     * 1.2.
> +     * </p>
> +     *
> +     * <p>
> +     * Defaults to <code>null</code> if the runtime does not have security
> access to read this property or the property does not exist.
> +     * </p>
>       *
>       * <p>
> -     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)}
> -     * or {@link System#setProperties(java.util.Properties)} is called
> after this class is loaded, the value
> -     * will be out of sync with that System property.
> +     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)} or
> +     * {@link System#setProperties(java.util.Properties)} is called after
> this class is loaded, the value will be out of sync with that
> +     * System property.
>       * </p>
>       *
>       * @since Java 1.2. Not used in Sun versions after 1.2.
> @@ -242,16 +283,18 @@ public class SystemUtils {
>      public static final String JAVA_COMPILER =
> getSystemProperty("java.compiler");
>
>      /**
> -     * <p>The <code>java.endorsed.dirs</code> System Property. Path of
> endorsed directory
> -     * or directories.</p>
> -     *
> -     * <p>Defaults to <code>null</code> if the runtime does not have
> -     * security access to read this property or the property does not
> exist.</p>
> +     * <p>
> +     * The <code>java.endorsed.dirs</code> System Property. Path of
> endorsed directory or directories.
> +     * </p>
> +     *
> +     * <p>
> +     * Defaults to <code>null</code> if the runtime does not have security
> access to read this property or the property does not exist.
> +     * </p>
>       *
>       * <p>
> -     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)}
> -     * or {@link System#setProperties(java.util.Properties)} is called
> after this class is loaded, the value
> -     * will be out of sync with that System property.
> +     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)} or
> +     * {@link System#setProperties(java.util.Properties)} is called after
> this class is loaded, the value will be out of sync with that
> +     * System property.
>       * </p>
>       *
>       * @since Java 1.4
> @@ -259,16 +302,18 @@ public class SystemUtils {
>      public static final String JAVA_ENDORSED_DIRS =
> getSystemProperty("java.endorsed.dirs");
>
>      /**
> -     * <p>The <code>java.ext.dirs</code> System Property. Path of extension
> directory
> -     * or directories.</p>
> -     *
> -     * <p>Defaults to <code>null</code> if the runtime does not have
> -     * security access to read this property or the property does not
> exist.</p>
> +     * <p>
> +     * The <code>java.ext.dirs</code> System Property. Path of extension
> directory or directories.
> +     * </p>
> +     *
> +     * <p>
> +     * Defaults to <code>null</code> if the runtime does not have security
> access to read this property or the property does not exist.
> +     * </p>
>       *
>       * <p>
> -     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)}
> -     * or {@link System#setProperties(java.util.Properties)} is called
> after this class is loaded, the value
> -     * will be out of sync with that System property.
> +     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)} or
> +     * {@link System#setProperties(java.util.Properties)} is called after
> this class is loaded, the value will be out of sync with that
> +     * System property.
>       * </p>
>       *
>       * @since Java 1.3
> @@ -276,15 +321,18 @@ public class SystemUtils {
>      public static final String JAVA_EXT_DIRS =
> getSystemProperty("java.ext.dirs");
>
>      /**
> -     * <p>The <code>java.home</code> System Property. Java installation
> directory.</p>
> -     *
> -     * <p>Defaults to <code>null</code> if the runtime does not have
> -     * security access to read this property or the property does not
> exist.</p>
> +     * <p>
> +     * The <code>java.home</code> System Property. Java installation
> directory.
> +     * </p>
>       *
>       * <p>
> -     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)}
> -     * or {@link System#setProperties(java.util.Properties)} is called
> after this class is loaded, the value
> -     * will be out of sync with that System property.
> +     * Defaults to <code>null</code> if the runtime does not have security
> access to read this property or the property does not exist.
> +     * </p>
> +     *
> +     * <p>
> +     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)} or
> +     * {@link System#setProperties(java.util.Properties)} is called after
> this class is loaded, the value will be out of sync with that
> +     * System property.
>       * </p>
>       *
>       * @since Java 1.1
> @@ -292,15 +340,18 @@ public class SystemUtils {
>      public static final String JAVA_HOME =
> getSystemProperty(JAVA_HOME_KEY);
>
>      /**
> -     * <p>The <code>java.io.tmpdir</code> System Property. Default temp
> file path.</p>
> -     *
> -     * <p>Defaults to <code>null</code> if the runtime does not have
> -     * security access to read this property or the property does not
> exist.</p>
> +     * <p>
> +     * The <code>java.io.tmpdir</code> System Property. Default temp file
> path.
> +     * </p>
> +     *
> +     * <p>
> +     * Defaults to <code>null</code> if the runtime does not have security
> access to read this property or the property does not exist.
> +     * </p>
>       *
>       * <p>
> -     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)}
> -     * or {@link System#setProperties(java.util.Properties)} is called
> after this class is loaded, the value
> -     * will be out of sync with that System property.
> +     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)} or
> +     * {@link System#setProperties(java.util.Properties)} is called after
> this class is loaded, the value will be out of sync with that
> +     * System property.
>       * </p>
>       *
>       * @since Java 1.2
> @@ -308,16 +359,18 @@ public class SystemUtils {
>      public static final String JAVA_IO_TMPDIR =
> getSystemProperty(JAVA_IO_TMPDIR_KEY);
>
>      /**
> -     * <p>The <code>java.library.path</code> System Property. List of paths
> to search
> -     * when loading libraries.</p>
> -     *
> -     * <p>Defaults to <code>null</code> if the runtime does not have
> -     * security access to read this property or the property does not
> exist.</p>
> +     * <p>
> +     * The <code>java.library.path</code> System Property. List of paths to
> search when loading libraries.
> +     * </p>
> +     *
> +     * <p>
> +     * Defaults to <code>null</code> if the runtime does not have security
> access to read this property or the property does not exist.
> +     * </p>
>       *
>       * <p>
> -     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)}
> -     * or {@link System#setProperties(java.util.Properties)} is called
> after this class is loaded, the value
> -     * will be out of sync with that System property.
> +     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)} or
> +     * {@link System#setProperties(java.util.Properties)} is called after
> this class is loaded, the value will be out of sync with that
> +     * System property.
>       * </p>
>       *
>       * @since Java 1.2
> @@ -325,16 +378,18 @@ public class SystemUtils {
>      public static final String JAVA_LIBRARY_PATH =
> getSystemProperty("java.library.path");
>
>      /**
> -     * <p>The <code>java.runtime.name</code> System Property. Java Runtime
> Environment
> -     * name.</p>
> -     *
> -     * <p>Defaults to <code>null</code> if the runtime does not have
> -     * security access to read this property or the property does not
> exist.</p>
> +     * <p>
> +     * The <code>java.runtime.name</code> System Property. Java Runtime
> Environment name.
> +     * </p>
> +     *
> +     * <p>
> +     * Defaults to <code>null</code> if the runtime does not have security
> access to read this property or the property does not exist.
> +     * </p>
>       *
>       * <p>
> -     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)}
> -     * or {@link System#setProperties(java.util.Properties)} is called
> after this class is loaded, the value
> -     * will be out of sync with that System property.
> +     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)} or
> +     * {@link System#setProperties(java.util.Properties)} is called after
> this class is loaded, the value will be out of sync with that
> +     * System property.
>       * </p>
>       *
>       * @since 2.0
> @@ -343,16 +398,18 @@ public class SystemUtils {
>      public static final String JAVA_RUNTIME_NAME =
> getSystemProperty("java.runtime.name");
>
>      /**
> -     * <p>The <code>java.runtime.version</code> System Property. Java
> Runtime Environment
> -     * version.</p>
> -     *
> -     * <p>Defaults to <code>null</code> if the runtime does not have
> -     * security access to read this property or the property does not
> exist.</p>
> +     * <p>
> +     * The <code>java.runtime.version</code> System Property. Java Runtime
> Environment version.
> +     * </p>
>       *
>       * <p>
> -     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)}
> -     * or {@link System#setProperties(java.util.Properties)} is called
> after this class is loaded, the value
> -     * will be out of sync with that System property.
> +     * Defaults to <code>null</code> if the runtime does not have security
> access to read this property or the property does not exist.
> +     * </p>
> +     *
> +     * <p>
> +     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)} or
> +     * {@link System#setProperties(java.util.Properties)} is called after
> this class is loaded, the value will be out of sync with that
> +     * System property.
>       * </p>
>       *
>       * @since 2.0
> @@ -361,16 +418,18 @@ public class SystemUtils {
>      public static final String JAVA_RUNTIME_VERSION =
> getSystemProperty("java.runtime.version");
>
>      /**
> -     * <p>The <code>java.specification.name</code> System Property. Java
> Runtime Environment
> -     * specification name.</p>
> -     *
> -     * <p>Defaults to <code>null</code> if the runtime does not have
> -     * security access to read this property or the property does not
> exist.</p>
> +     * <p>
> +     * The <code>java.specification.name</code> System Property. Java
> Runtime Environment specification name.
> +     * </p>
> +     *
> +     * <p>
> +     * Defaults to <code>null</code> if the runtime does not have security
> access to read this property or the property does not exist.
> +     * </p>
>       *
>       * <p>
> -     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)}
> -     * or {@link System#setProperties(java.util.Properties)} is called
> after this class is loaded, the value
> -     * will be out of sync with that System property.
> +     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)} or
> +     * {@link System#setProperties(java.util.Properties)} is called after
> this class is loaded, the value will be out of sync with that
> +     * System property.
>       * </p>
>       *
>       * @since Java 1.2
> @@ -378,16 +437,18 @@ public class SystemUtils {
>      public static final String JAVA_SPECIFICATION_NAME =
> getSystemProperty("java.specification.name");
>
>      /**
> -     * <p>The <code>java.specification.vendor</code> System Property. Java
> Runtime Environment
> -     * specification vendor.</p>
> -     *
> -     * <p>Defaults to <code>null</code> if the runtime does not have
> -     * security access to read this property or the property does not
> exist.</p>
> +     * <p>
> +     * The <code>java.specification.vendor</code> System Property. Java
> Runtime Environment specification vendor.
> +     * </p>
> +     *
> +     * <p>
> +     * Defaults to <code>null</code> if the runtime does not have security
> access to read this property or the property does not exist.
> +     * </p>
>       *
>       * <p>
> -     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)}
> -     * or {@link System#setProperties(java.util.Properties)} is called
> after this class is loaded, the value
> -     * will be out of sync with that System property.
> +     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)} or
> +     * {@link System#setProperties(java.util.Properties)} is called after
> this class is loaded, the value will be out of sync with that
> +     * System property.
>       * </p>
>       *
>       * @since Java 1.2
> @@ -395,16 +456,18 @@ public class SystemUtils {
>      public static final String JAVA_SPECIFICATION_VENDOR =
> getSystemProperty("java.specification.vendor");
>
>      /**
> -     * <p>The <code>java.specification.version</code> System Property. Java
> Runtime Environment
> -     * specification version.</p>
> -     *
> -     * <p>Defaults to <code>null</code> if the runtime does not have
> -     * security access to read this property or the property does not
> exist.</p>
> +     * <p>
> +     * The <code>java.specification.version</code> System Property. Java
> Runtime Environment specification version.
> +     * </p>
> +     *
> +     * <p>
> +     * Defaults to <code>null</code> if the runtime does not have security
> access to read this property or the property does not exist.
> +     * </p>
>       *
>       * <p>
> -     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)}
> -     * or {@link System#setProperties(java.util.Properties)} is called
> after this class is loaded, the value
> -     * will be out of sync with that System property.
> +     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)} or
> +     * {@link System#setProperties(java.util.Properties)} is called after
> this class is loaded, the value will be out of sync with that
> +     * System property.
>       * </p>
>       *
>       * @since Java 1.3
> @@ -412,33 +475,38 @@ public class SystemUtils {
>      public static final String JAVA_SPECIFICATION_VERSION =
> getSystemProperty("java.specification.version");
>
>      /**
> -     * <p>The <code>java.util.prefs.PreferencesFactory</code> System
> Property. A class name.</p>
> -     *
> -     * <p>Defaults to <code>null</code> if the runtime does not have
> -     * security access to read this property or the property does not
> exist.</p>
> +     * <p>
> +     * The <code>java.util.prefs.PreferencesFactory</code> System Property.
> A class name.
> +     * </p>
>       *
>       * <p>
> -     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)}
> -     * or {@link System#setProperties(java.util.Properties)} is called
> after this class is loaded, the value
> -     * will be out of sync with that System property.
> +     * Defaults to <code>null</code> if the runtime does not have security
> access to read this property or the property does not exist.
> +     * </p>
> +     *
> +     * <p>
> +     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)} or
> +     * {@link System#setProperties(java.util.Properties)} is called after
> this class is loaded, the value will be out of sync with that
> +     * System property.
>       * </p>
>       *
>       * @since 2.1
>       * @since Java 1.4
>       */
> -    public static final String JAVA_UTIL_PREFS_PREFERENCES_FACTORY =
> -        getSystemProperty("java.util.prefs.PreferencesFactory");
> +    public static final String JAVA_UTIL_PREFS_PREFERENCES_FACTORY =
> getSystemProperty("java.util.prefs.PreferencesFactory");
>
>      /**
> -     * <p>The <code>java.vendor</code> System Property. Java vendor-
> specific string.</p>
> -     *
> -     * <p>Defaults to <code>null</code> if the runtime does not have
> -     * security access to read this property or the property does not
> exist.</p>
> +     * <p>
> +     * The <code>java.vendor</code> System Property. Java vendor-specific
> string.
> +     * </p>
> +     *
> +     * <p>
> +     * Defaults to <code>null</code> if the runtime does not have security
> access to read this property or the property does not exist.
> +     * </p>
>       *
>       * <p>
> -     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)}
> -     * or {@link System#setProperties(java.util.Properties)} is called
> after this class is loaded, the value
> -     * will be out of sync with that System property.
> +     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)} or
> +     * {@link System#setProperties(java.util.Properties)} is called after
> this class is loaded, the value will be out of sync with that
> +     * System property.
>       * </p>
>       *
>       * @since Java 1.1
> @@ -446,31 +514,37 @@ public class SystemUtils {
>      public static final String JAVA_VENDOR =
> getSystemProperty("java.vendor");
>
>      /**
> -     * <p>The <code>java.vendor.url</code> System Property. Java vendor
> URL.</p>
> -     *
> -     * <p>Defaults to <code>null</code> if the runtime does not have
> -     * security access to read this property or the property does not
> exist.</p>
> +     * <p>
> +     * The <code>java.vendor.url</code> System Property. Java vendor URL.
> +     * </p>
> +     *
> +     * <p>
> +     * Defaults to <code>null</code> if the runtime does not have security
> access to read this property or the property does not exist.
> +     * </p>
>       *
>       * <p>
> -     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)}
> -     * or {@link System#setProperties(java.util.Properties)} is called
> after this class is loaded, the value
> -     * will be out of sync with that System property.
> +     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)} or
> +     * {@link System#setProperties(java.util.Properties)} is called after
> this class is loaded, the value will be out of sync with that
> +     * System property.
>       * </p>
>       *
>       * @since Java 1.1
> -    */
> +     */
>      public static final String JAVA_VENDOR_URL =
> getSystemProperty("java.vendor.url");
>
>      /**
> -     * <p>The <code>java.version</code> System Property. Java version
> number.</p>
> -     *
> -     * <p>Defaults to <code>null</code> if the runtime does not have
> -     * security access to read this property or the property does not
> exist.</p>
> +     * <p>
> +     * The <code>java.version</code> System Property. Java version number.
> +     * </p>
>       *
>       * <p>
> -     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)}
> -     * or {@link System#setProperties(java.util.Properties)} is called
> after this class is loaded, the value
> -     * will be out of sync with that System property.
> +     * Defaults to <code>null</code> if the runtime does not have security
> access to read this property or the property does not exist.
> +     * </p>
> +     *
> +     * <p>
> +     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)} or
> +     * {@link System#setProperties(java.util.Properties)} is called after
> this class is loaded, the value will be out of sync with that
> +     * System property.
>       * </p>
>       *
>       * @since Java 1.1
> @@ -478,16 +552,18 @@ public class SystemUtils {
>      public static final String JAVA_VERSION =
> getSystemProperty("java.version");
>
>      /**
> -     * <p>The <code>java.vm.info</code> System Property. Java Virtual
> Machine implementation
> -     * info.</p>
> -     *
> -     * <p>Defaults to <code>null</code> if the runtime does not have
> -     * security access to read this property or the property does not
> exist.</p>
> +     * <p>
> +     * The <code>java.vm.info</code> System Property. Java Virtual Machine
> implementation info.
> +     * </p>
> +     *
> +     * <p>
> +     * Defaults to <code>null</code> if the runtime does not have security
> access to read this property or the property does not exist.
> +     * </p>
>       *
>       * <p>
> -     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)}
> -     * or {@link System#setProperties(java.util.Properties)} is called
> after this class is loaded, the value
> -     * will be out of sync with that System property.
> +     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)} or
> +     * {@link System#setProperties(java.util.Properties)} is called after
> this class is loaded, the value will be out of sync with that
> +     * System property.
>       * </p>
>       *
>       * @since 2.0
> @@ -496,16 +572,18 @@ public class SystemUtils {
>      public static final String JAVA_VM_INFO =
> getSystemProperty("java.vm.info");
>
>      /**
> -     * <p>The <code>java.vm.name</code> System Property. Java Virtual
> Machine implementation
> -     * name.</p>
> -     *
> -     * <p>Defaults to <code>null</code> if the runtime does not have
> -     * security access to read this property or the property does not
> exist.</p>
> +     * <p>
> +     * The <code>java.vm.name</code> System Property. Java Virtual Machine
> implementation name.
> +     * </p>
> +     *
> +     * <p>
> +     * Defaults to <code>null</code> if the runtime does not have security
> access to read this property or the property does not exist.
> +     * </p>
>       *
>       * <p>
> -     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)}
> -     * or {@link System#setProperties(java.util.Properties)} is called
> after this class is loaded, the value
> -     * will be out of sync with that System property.
> +     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)} or
> +     * {@link System#setProperties(java.util.Properties)} is called after
> this class is loaded, the value will be out of sync with that
> +     * System property.
>       * </p>
>       *
>       * @since Java 1.2
> @@ -513,16 +591,18 @@ public class SystemUtils {
>      public static final String JAVA_VM_NAME =
> getSystemProperty("java.vm.name");
>
>      /**
> -     * <p>The <code>java.vm.specification.name</code> System Property. Java
> Virtual Machine
> -     * specification name.</p>
> -     *
> -     * <p>Defaults to <code>null</code> if the runtime does not have
> -     * security access to read this property or the property does not
> exist.</p>
> +     * <p>
> +     * The <code>java.vm.specification.name</code> System Property. Java
> Virtual Machine specification name.
> +     * </p>
> +     *
> +     * <p>
> +     * Defaults to <code>null</code> if the runtime does not have security
> access to read this property or the property does not exist.
> +     * </p>
>       *
>       * <p>
> -     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)}
> -     * or {@link System#setProperties(java.util.Properties)} is called
> after this class is loaded, the value
> -     * will be out of sync with that System property.
> +     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)} or
> +     * {@link System#setProperties(java.util.Properties)} is called after
> this class is loaded, the value will be out of sync with that
> +     * System property.
>       * </p>
>       *
>       * @since Java 1.2
> @@ -530,16 +610,18 @@ public class SystemUtils {
>      public static final String JAVA_VM_SPECIFICATION_NAME =
> getSystemProperty("java.vm.specification.name");
>
>      /**
> -     * <p>The <code>java.vm.specification.vendor</code> System Property.
> Java Virtual
> -     * Machine specification vendor.</p>
> -     *
> -     * <p>Defaults to <code>null</code> if the runtime does not have
> -     * security access to read this property or the property does not
> exist.</p>
> +     * <p>
> +     * The <code>java.vm.specification.vendor</code> System Property. Java
> Virtual Machine specification vendor.
> +     * </p>
>       *
>       * <p>
> -     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)}
> -     * or {@link System#setProperties(java.util.Properties)} is called
> after this class is loaded, the value
> -     * will be out of sync with that System property.
> +     * Defaults to <code>null</code> if the runtime does not have security
> access to read this property or the property does not exist.
> +     * </p>
> +     *
> +     * <p>
> +     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)} or
> +     * {@link System#setProperties(java.util.Properties)} is called after
> this class is loaded, the value will be out of sync with that
> +     * System property.
>       * </p>
>       *
>       * @since Java 1.2
> @@ -547,16 +629,18 @@ public class SystemUtils {
>      public static final String JAVA_VM_SPECIFICATION_VENDOR =
> getSystemProperty("java.vm.specification.vendor");
>
>      /**
> -     * <p>The <code>java.vm.specification.version</code> System Property.
> Java Virtual Machine
> -     * specification version.</p>
> -     *
> -     * <p>Defaults to <code>null</code> if the runtime does not have
> -     * security access to read this property or the property does not
> exist.</p>
> +     * <p>
> +     * The <code>java.vm.specification.version</code> System Property. Java
> Virtual Machine specification version.
> +     * </p>
> +     *
> +     * <p>
> +     * Defaults to <code>null</code> if the runtime does not have security
> access to read this property or the property does not exist.
> +     * </p>
>       *
>       * <p>
> -     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)}
> -     * or {@link System#setProperties(java.util.Properties)} is called
> after this class is loaded, the value
> -     * will be out of sync with that System property.
> +     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)} or
> +     * {@link System#setProperties(java.util.Properties)} is called after
> this class is loaded, the value will be out of sync with that
> +     * System property.
>       * </p>
>       *
>       * @since Java 1.2
> @@ -564,16 +648,18 @@ public class SystemUtils {
>      public static final String JAVA_VM_SPECIFICATION_VERSION =
> getSystemProperty("java.vm.specification.version");
>
>      /**
> -     * <p>The <code>java.vm.vendor</code> System Property. Java Virtual
> Machine implementation
> -     * vendor.</p>
> -     *
> -     * <p>Defaults to <code>null</code> if the runtime does not have
> -     * security access to read this property or the property does not
> exist.</p>
> +     * <p>
> +     * The <code>java.vm.vendor</code> System Property. Java Virtual
> Machine implementation vendor.
> +     * </p>
> +     *
> +     * <p>
> +     * Defaults to <code>null</code> if the runtime does not have security
> access to read this property or the property does not exist.
> +     * </p>
>       *
>       * <p>
> -     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)}
> -     * or {@link System#setProperties(java.util.Properties)} is called
> after this class is loaded, the value
> -     * will be out of sync with that System property.
> +     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)} or
> +     * {@link System#setProperties(java.util.Properties)} is called after
> this class is loaded, the value will be out of sync with that
> +     * System property.
>       * </p>
>       *
>       * @since Java 1.2
> @@ -581,16 +667,18 @@ public class SystemUtils {
>      public static final String JAVA_VM_VENDOR =
> getSystemProperty("java.vm.vendor");
>
>      /**
> -     * <p>The <code>java.vm.version</code> System Property. Java Virtual
> Machine
> -     * implementation version.</p>
> -     *
> -     * <p>Defaults to <code>null</code> if the runtime does not have
> -     * security access to read this property or the property does not
> exist.</p>
> +     * <p>
> +     * The <code>java.vm.version</code> System Property. Java Virtual
> Machine implementation version.
> +     * </p>
> +     *
> +     * <p>
> +     * Defaults to <code>null</code> if the runtime does not have security
> access to read this property or the property does not exist.
> +     * </p>
>       *
>       * <p>
> -     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)}
> -     * or {@link System#setProperties(java.util.Properties)} is called
> after this class is loaded, the value
> -     * will be out of sync with that System property.
> +     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)} or
> +     * {@link System#setProperties(java.util.Properties)} is called after
> this class is loaded, the value will be out of sync with that
> +     * System property.
>       * </p>
>       *
>       * @since Java 1.2
> @@ -598,16 +686,18 @@ public class SystemUtils {
>      public static final String JAVA_VM_VERSION =
> getSystemProperty("java.vm.version");
>
>      /**
> -     * <p>The <code>line.separator</code> System Property. Line separator
> -     * (<code>&quot;\n&quot;</code> on UNIX).</p>
> -     *
> -     * <p>Defaults to <code>null</code> if the runtime does not have
> -     * security access to read this property or the property does not
> exist.</p>
> +     * <p>
> +     * The <code>line.separator</code> System Property. Line separator
> (<code>&quot;\n&quot;</code> on UNIX).
> +     * </p>
>       *
>       * <p>
> -     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)}
> -     * or {@link System#setProperties(java.util.Properties)} is called
> after this class is loaded, the value
> -     * will be out of sync with that System property.
> +     * Defaults to <code>null</code> if the runtime does not have security
> access to read this property or the property does not exist.
> +     * </p>
> +     *
> +     * <p>
> +     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)} or
> +     * {@link System#setProperties(java.util.Properties)} is called after
> this class is loaded, the value will be out of sync with that
> +     * System property.
>       * </p>
>       *
>       * @since Java 1.1
> @@ -615,15 +705,18 @@ public class SystemUtils {
>      public static final String LINE_SEPARATOR =
> getSystemProperty("line.separator");
>
>      /**
> -     * <p>The <code>os.arch</code> System Property. Operating system
> architecture.</p>
> -     *
> -     * <p>Defaults to <code>null</code> if the runtime does not have
> -     * security access to read this property or the property does not
> exist.</p>
> +     * <p>
> +     * The <code>os.arch</code> System Property. Operating system
> architecture.
> +     * </p>
> +     *
> +     * <p>
> +     * Defaults to <code>null</code> if the runtime does not have security
> access to read this property or the property does not exist.
> +     * </p>
>       *
>       * <p>
> -     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)}
> -     * or {@link System#setProperties(java.util.Properties)} is called
> after this class is loaded, the value
> -     * will be out of sync with that System property.
> +     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)} or
> +     * {@link System#setProperties(java.util.Properties)} is called after
> this class is loaded, the value will be out of sync with that
> +     * System property.
>       * </p>
>       *
>       * @since Java 1.1
> @@ -631,15 +724,18 @@ public class SystemUtils {
>      public static final String OS_ARCH = getSystemProperty("os.arch");
>
>      /**
> -     * <p>The <code>os.name</code> System Property. Operating system
> name.</p>
> -     *
> -     * <p>Defaults to <code>null</code> if the runtime does not have
> -     * security access to read this property or the property does not
> exist.</p>
> +     * <p>
> +     * The <code>os.name</code> System Property. Operating system name.
> +     * </p>
> +     *
> +     * <p>
> +     * Defaults to <code>null</code> if the runtime does not have security
> access to read this property or the property does not exist.
> +     * </p>
>       *
>       * <p>
> -     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)}
> -     * or {@link System#setProperties(java.util.Properties)} is called
> after this class is loaded, the value
> -     * will be out of sync with that System property.
> +     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)} or
> +     * {@link System#setProperties(java.util.Properties)} is called after
> this class is loaded, the value will be out of sync with that
> +     * System property.
>       * </p>
>       *
>       * @since Java 1.1
> @@ -647,15 +743,18 @@ public class SystemUtils {
>      public static final String OS_NAME = getSystemProperty("os.name");
>
>      /**
> -     * <p>The <code>os.version</code> System Property. Operating system
> version.</p>
> -     *
> -     * <p>Defaults to <code>null</code> if the runtime does not have
> -     * security access to read this property or the property does not
> exist.</p>
> +     * <p>
> +     * The <code>os.version</code> System Property. Operating system
> version.
> +     * </p>
> +     *
> +     * <p>
> +     * Defaults to <code>null</code> if the runtime does not have security
> access to read this property or the property does not exist.
> +     * </p>
>       *
>       * <p>
> -     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)}
> -     * or {@link System#setProperties(java.util.Properties)} is called
> after this class is loaded, the value
> -     * will be out of sync with that System property.
> +     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)} or
> +     * {@link System#setProperties(java.util.Properties)} is called after
> this class is loaded, the value will be out of sync with that
> +     * System property.
>       * </p>
>       *
>       * @since Java 1.1
> @@ -663,16 +762,18 @@ public class SystemUtils {
>      public static final String OS_VERSION =
> getSystemProperty("os.version");
>
>      /**
> -     * <p>The <code>path.separator</code> System Property. Path separator
> -     * (<code>&quot;:&quot;</code> on UNIX).</p>
> -     *
> -     * <p>Defaults to <code>null</code> if the runtime does not have
> -     * security access to read this property or the property does not
> exist.</p>
> +     * <p>
> +     * The <code>path.separator</code> System Property. Path separator
> (<code>&quot;:&quot;</code> on UNIX).
> +     * </p>
>       *
>       * <p>
> -     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)}
> -     * or {@link System#setProperties(java.util.Properties)} is called
> after this class is loaded, the value
> -     * will be out of sync with that System property.
> +     * Defaults to <code>null</code> if the runtime does not have security
> access to read this property or the property does not exist.
> +     * </p>
> +     *
> +     * <p>
> +     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)} or
> +     * {@link System#setProperties(java.util.Properties)} is called after
> this class is loaded, the value will be out of sync with that
> +     * System property.
>       * </p>
>       *
>       * @since Java 1.1
> @@ -680,37 +781,40 @@ public class SystemUtils {
>      public static final String PATH_SEPARATOR =
> getSystemProperty("path.separator");
>
>      /**
> -     * <p>The <code>user.country</code> or <code>user.region</code> System
> Property.
> -     * User's country code, such as <code>GB</code>. First in JDK version
> 1.2 as
> -     * <code>user.region</code>. Renamed to <code>user.country</code> in
> 1.4</p>
> -     *
> -     * <p>Defaults to <code>null</code> if the runtime does not have
> -     * security access to read this property or the property does not
> exist.</p>
> +     * <p>
> +     * The <code>user.country</code> or <code>user.region</code> System
> Property. User's country code, such as <code>GB</code>. First in
> +     * Java version 1.2 as <code>user.region</code>. Renamed to
> <code>user.country</code> in 1.4
> +     * </p>
> +     *
> +     * <p>
> +     * Defaults to <code>null</code> if the runtime does not have security
> access to read this property or the property does not exist.
> +     * </p>
>       *
>       * <p>
> -     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)}
> -     * or {@link System#setProperties(java.util.Properties)} is called
> after this class is loaded, the value
> -     * will be out of sync with that System property.
> +     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)} or
> +     * {@link System#setProperties(java.util.Properties)} is called after
> this class is loaded, the value will be out of sync with that
> +     * System property.
>       * </p>
>       *
>       * @since 2.0
>       * @since Java 1.2
>       */
> -    public static final String USER_COUNTRY =
> -        getSystemProperty("user.country") == null ?
> -            getSystemProperty("user.region") :
> getSystemProperty("user.country");
> +    public static final String USER_COUNTRY =
> getSystemProperty("user.country") == null ? getSystemProperty("user.region")
> +            : getSystemProperty("user.country");
>
>      /**
> -     * <p>The <code>user.dir</code> System Property. User's current working
> -     * directory.</p>
> -     *
> -     * <p>Defaults to <code>null</code> if the runtime does not have
> -     * security access to read this property or the property does not
> exist.</p>
> +     * <p>
> +     * The <code>user.dir</code> System Property. User's current working
> directory.
> +     * </p>
> +     *
> +     * <p>
> +     * Defaults to <code>null</code> if the runtime does not have security
> access to read this property or the property does not exist.
> +     * </p>
>       *
>       * <p>
> -     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)}
> -     * or {@link System#setProperties(java.util.Properties)} is called
> after this class is loaded, the value
> -     * will be out of sync with that System property.
> +     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)} or
> +     * {@link System#setProperties(java.util.Properties)} is called after
> this class is loaded, the value will be out of sync with that
> +     * System property.
>       * </p>
>       *
>       * @since Java 1.1
> @@ -718,15 +822,18 @@ public class SystemUtils {
>      public static final String USER_DIR = getSystemProperty(USER_DIR_KEY);
>
>      /**
> -     * <p>The <code>user.home</code> System Property. User's home
> directory.</p>
> -     *
> -     * <p>Defaults to <code>null</code> if the runtime does not have
> -     * security access to read this property or the property does not
> exist.</p>
> +     * <p>
> +     * The <code>user.home</code> System Property. User's home directory.
> +     * </p>
> +     *
> +     * <p>
> +     * Defaults to <code>null</code> if the runtime does not have security
> access to read this property or the property does not exist.
> +     * </p>
>       *
>       * <p>
> -     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)}
> -     * or {@link System#setProperties(java.util.Properties)} is called
> after this class is loaded, the value
> -     * will be out of sync with that System property.
> +     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)} or
> +     * {@link System#setProperties(java.util.Properties)} is called after
> this class is loaded, the value will be out of sync with that
> +     * System property.
>       * </p>
>       *
>       * @since Java 1.1
> @@ -734,16 +841,18 @@ public class SystemUtils {
>      public static final String USER_HOME =
> getSystemProperty(USER_HOME_KEY);
>
>      /**
> -     * <p>The <code>user.language</code> System Property. User's language
> code,
> -     * such as <code>"en"</code>.</p>
> -     *
> -     * <p>Defaults to <code>null</code> if the runtime does not have
> -     * security access to read this property or the property does not
> exist.</p>
> +     * <p>
> +     * The <code>user.language</code> System Property. User's language
> code, such as <code>"en"</code>.
> +     * </p>
>       *
>       * <p>
> -     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)}
> -     * or {@link System#setProperties(java.util.Properties)} is called
> after this class is loaded, the value
> -     * will be out of sync with that System property.
> +     * Defaults to <code>null</code> if the runtime does not have security
> access to read this property or the property does not exist.
> +     * </p>
> +     *
> +     * <p>
> +     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)} or
> +     * {@link System#setProperties(java.util.Properties)} is called after
> this class is loaded, the value will be out of sync with that
> +     * System property.
>       * </p>
>       *
>       * @since 2.0
> @@ -752,15 +861,18 @@ public class SystemUtils {
>      public static final String USER_LANGUAGE =
> getSystemProperty("user.language");
>
>      /**
> -     * <p>The <code>user.name</code> System Property. User's account
> name.</p>
> -     *
> -     * <p>Defaults to <code>null</code> if the runtime does not have
> -     * security access to read this property or the property does not
> exist.</p>
> +     * <p>
> +     * The <code>user.name</code> System Property. User's account name.
> +     * </p>
> +     *
> +     * <p>
> +     * Defaults to <code>null</code> if the runtime does not have security
> access to read this property or the property does not exist.
> +     * </p>
>       *
>       * <p>
> -     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)}
> -     * or {@link System#setProperties(java.util.Properties)} is called
> after this class is loaded, the value
> -     * will be out of sync with that System property.
> +     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)} or
> +     * {@link System#setProperties(java.util.Properties)} is called after
> this class is loaded, the value will be out of sync with that
> +     * System property.
>       * </p>
>       *
>       * @since Java 1.1
> @@ -768,16 +880,18 @@ public class SystemUtils {
>      public static final String USER_NAME = getSystemProperty("user.name");
>
>      /**
> -     * <p>The <code>user.timezone</code> System Property.
> -     * For example: <code>"America/Los_Angeles"</code>.</p>
> -     *
> -     * <p>Defaults to <code>null</code> if the runtime does not have
> -     * security access to read this property or the property does not
> exist.</p>
> +     * <p>
> +     * The <code>user.timezone</code> System Property. For example:
> <code>"America/Los_Angeles"</code>.
> +     * </p>
> +     *
> +     * <p>
> +     * Defaults to <code>null</code> if the runtime does not have security
> access to read this property or the property does not exist.
> +     * </p>
>       *
>       * <p>
> -     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)}
> -     * or {@link System#setProperties(java.util.Properties)} is called
> after this class is loaded, the value
> -     * will be out of sync with that System property.
> +     * This value is initialized when the class is loaded. If {@link
> System#setProperty(String,String)} or
> +     * {@link System#setProperties(java.util.Properties)} is called after
> this class is loaded, the value will be out of sync with that
> +     * System property.
>       * </p>
>       *
>       * @since 2.1
> @@ -785,119 +899,156 @@ public class SystemUtils {
>      public static final String USER_TIMEZONE =
> getSystemProperty("user.timezone");
>
>      // Java version
> -
> //-----------------------------------------------------------------------
> +    //
> -----------------------------------------------------------------------
>      // This MUST be declared after those above as it depends on the
>      // values being set up
>
>      /**
> -     * <p>Gets the Java version as a <code>String</code> trimming leading
> letters.</p>
> -     *
> -     * <p>The field will return <code>null</code> if {@link #JAVA_VERSION}
> is <code>null</code>.</p>
> +     * <p>
> +     * Gets the Java version as a <code>String</code> trimming leading
> letters.
> +     * </p>
> +     *
> +     * <p>
> +     * The field will return <code>null</code> if {@link #JAVA_VERSION} is
> <code>null</code>.
> +     * </p>
>       *
>       * @since 2.1
>       */
>      public static final String JAVA_VERSION_TRIMMED =
> getJavaVersionTrimmed();
>
>      // Java version values
> -
> //-----------------------------------------------------------------------
> +    //
> -----------------------------------------------------------------------
>      // These MUST be declared after the trim above as they depend on the
>      // value being set up
>
>      /**
> -     * <p>Gets the Java version as a <code>float</code>.</p>
> -     *
> -     * <p>Example return values:</p>
> +     * <p>
> +     * Gets the Java version as a <code>float</code>.
> +     * </p>
> +     *
> +     * <p>
> +     * Example return values:
> +     * </p>
>       * <ul>
> -     *  <li><code>1.2f</code> for JDK 1.2
> -     *  <li><code>1.31f</code> for JDK 1.3.1
> +     * <li><code>1.2f</code> for Java 1.2
> +     * <li><code>1.31f</code> for Java 1.3.1
>       * </ul>
> -     *
> -     * <p>The field will return zero if {@link #JAVA_VERSION} is
> <code>null</code>.</p>
> +     *
> +     * <p>
> +     * The field will return zero if {@link #JAVA_VERSION} is
> <code>null</code>.
> +     * </p>
>       *
>       * @since 2.0
>       */
>      public static final float JAVA_VERSION_FLOAT = getJavaVersionAsFloat();
>
>      /**
> -     * <p>Gets the Java version as an <code>int</code>.</p>
> -     *
> -     * <p>Example return values:</p>
> +     * <p>
> +     * Gets the Java version as an <code>int</code>.
> +     * </p>
> +     *
> +     * <p>
> +     * Example return values:
> +     * </p>
>       * <ul>
> -     *  <li><code>120</code> for JDK 1.2
> -     *  <li><code>131</code> for JDK 1.3.1
> +     * <li><code>120</code> for Java 1.2
> +     * <li><code>131</code> for Java 1.3.1
>       * </ul>
> -     *
> -     * <p>The field will return zero if {@link #JAVA_VERSION} is
> <code>null</code>.</p>
> +     *
> +     * <p>
> +     * The field will return zero if {@link #JAVA_VERSION} is
> <code>null</code>.
> +     * </p>
>       *
>       * @since 2.0
>       */
>      public static final int JAVA_VERSION_INT = getJavaVersionAsInt();
>
>      // Java version checks
> -
> //-----------------------------------------------------------------------
> +    //
> -----------------------------------------------------------------------
>      // These MUST be declared after those above as they depend on the
>      // values being set up
> -
> +
>      /**
> -     * <p>Is <code>true</code> if this is Java version 1.1 (also 1.1.x
> versions).</p>
> -     *
> -     * <p>The field will return <code>false</code> if {@link #JAVA_VERSION}
> is
> -     * <code>null</code>.</p>
> +     * <p>
> +     * Is <code>true</code> if this is Java version 1.1 (also 1.1.x
> versions).
> +     * </p>
> +     *
> +     * <p>
> +     * The field will return <code>false</code> if {@link #JAVA_VERSION} is
> <code>null</code>.
> +     * </p>
>       */
>      public static final boolean IS_JAVA_1_1 = getJavaVersionMatches("1.1");
>
>      /**
> -     * <p>Is <code>true</code> if this is Java version 1.2 (also 1.2.x
> versions).</p>
> -     *
> -     * <p>The field will return <code>false</code> if {@link #JAVA_VERSION}
> is
> -     * <code>null</code>.</p>
> +     * <p>
> +     * Is <code>true</code> if this is Java version 1.2 (also 1.2.x
> versions).
> +     * </p>
> +     *
> +     * <p>
> +     * The field will return <code>false</code> if {@link #JAVA_VERSION} is
> <code>null</code>.
> +     * </p>
>       */
>      public static final boolean IS_JAVA_1_2 = getJavaVersionMatches("1.2");
>
>      /**
> -     * <p>Is <code>true</code> if this is Java version 1.3 (also 1.3.x
> versions).</p>
> -     *
> -     * <p>The field will return <code>false</code> if {@link #JAVA_VERSION}
> is
> -     * <code>null</code>.</p>
> -     */
> -    public static final boolean IS_JAVA_1_3 = getJavaVersionMatches("1.3");
> -
> +     * <p>
> +     * Is <code>true</code> if this is Java version 1.3 (also 1.3.x
> versions).
> +     * </p>
> +     *
> +     * <p>
> +     * The field will return <code>false</code> if {@link #JAVA_VERSION} is
> <code>null</code>.
> +     * </p>
> +     */
> +    public static final boolean IS_JAVA_1_3 = getJavaVersionMatches("1.3");
> +
>      /**
> -     * <p>Is <code>true</code> if this is Java version 1.4 (also 1.4.x
> versions).</p>
> -     *
> -     * <p>The field will return <code>false</code> if {@link #JAVA_VERSION}
> is
> -     * <code>null</code>.</p>
> +     * <p>
> +     * Is <code>true</code> if this is Java version 1.4 (also 1.4.x
> versions).
> +     * </p>
> +     *
> +     * <p>
> +     * The field will return <code>false</code> if {@link #JAVA_VERSION} is
> <code>null</code>.
> +     * </p>
>       */
>      public static final boolean IS_JAVA_1_4 = getJavaVersionMatches("1.4");
>
>      /**
> -     * <p>Is <code>true</code> if this is Java version 1.5 (also 1.5.x
> versions).</p>
> -     *
> -     * <p>The field will return <code>false</code> if {@link #JAVA_VERSION}
> is
> -     * <code>null</code>.</p>
> +     * <p>
> +     * Is <code>true</code> if this is Java version 1.5 (also 1.5.x
> versions).
> +     * </p>
> +     *
> +     * <p>
> +     * The field will return <code>false</code> if {@link #JAVA_VERSION} is
> <code>null</code>.
> +     * </p>
>       */
>      public static final boolean IS_JAVA_1_5 = getJavaVersionMatches("1.5");
>
>      /**
> -     * <p>Is <code>true</code> if this is Java version 1.6 (also 1.6.x
> versions).</p>
> -     *
> -     * <p>The field will return <code>false</code> if {@link #JAVA_VERSION}
> is
> -     * <code>null</code>.</p>
> +     * <p>
> +     * Is <code>true</code> if this is Java version 1.6 (also 1.6.x
> versions).
> +     * </p>
> +     *
> +     * <p>
> +     * The field will return <code>false</code> if {@link #JAVA_VERSION} is
> <code>null</code>.
> +     * </p>
>       */
>      public static final boolean IS_JAVA_1_6 = getJavaVersionMatches("1.6");
>
>      /**
> -     * <p>Is <code>true</code> if this is Java version 1.7 (also 1.7.x
> versions).</p>
> -     *
> -     * <p>The field will return <code>false</code> if {@link #JAVA_VERSION}
> is
> -     * <code>null</code>.</p>
> +     * <p>
> +     * Is <code>true</code> if this is Java version 1.7 (also 1.7.x
> versions).
> +     * </p>
> +     *
> +     * <p>
> +     * The field will return <code>false</code> if {@link #JAVA_VERSION} is
> <code>null</code>.
> +     * </p>
>       *
>       * @since 3.0
>       */
>      public static final boolean IS_JAVA_1_7 = getJavaVersionMatches("1.7");
>
>      // Operating system checks
> -
> //-----------------------------------------------------------------------
> +    //
> -----------------------------------------------------------------------
>      // These MUST be declared after those above as they depend on the
>      // values being set up
>      // OS names from http://www.vamphq.com/os.html
> @@ -905,276 +1056,349 @@ public class SystemUtils {
>      // if you want another added or a mistake corrected
>
>      /**
> -     * <p>Is <code>true</code> if this is AIX.</p>
> -     *
> -     * <p>The field will return <code>false</code> if <code>OS_NAME</code>
> is
> -     * <code>null</code>.</p>
> +     * <p>
> +     * Is <code>true</code> if this is AIX.
> +     * </p>
> +     *
> +     * <p>
> +     * The field will return <code>false</code> if <code>OS_NAME</code> is
> <code>null</code>.
> +     * </p>
>       *
>       * @since 2.0
>       */
> -    public static final boolean IS_OS_AIX = getOSMatches("AIX");
> +    public static final boolean IS_OS_AIX = getOSMatchesName("AIX");
>
>      /**
> -     * <p>Is <code>true</code> if this is HP-UX.</p>
> -     *
> -     * <p>The field will return <code>false</code> if <code>OS_NAME</code>
> is
> -     * <code>null</code>.</p>
> +     * <p>
> +     * Is <code>true</code> if this is HP-UX.
> +     * </p>
> +     *
> +     * <p>
> +     * The field will return <code>false</code> if <code>OS_NAME</code> is
> <code>null</code>.
> +     * </p>
>       *
>       * @since 2.0
>       */
> -    public static final boolean IS_OS_HP_UX = getOSMatches("HP-UX");
> +    public static final boolean IS_OS_HP_UX = getOSMatchesName("HP-UX");
>
>      /**
> -     * <p>Is <code>true</code> if this is Irix.</p>
> -     *
> -     * <p>The field will return <code>false</code> if <code>OS_NAME</code>
> is
> -     * <code>null</code>.</p>
> +     * <p>
> +     * Is <code>true</code> if this is Irix.
> +     * </p>
> +     *
> +     * <p>
> +     * The field will return <code>false</code> if <code>OS_NAME</code> is
> <code>null</code>.
> +     * </p>
>       *
>       * @since 2.0
>       */
> -    public static final boolean IS_OS_IRIX = getOSMatches("Irix");
> +    public static final boolean IS_OS_IRIX = getOSMatchesName("Irix");
>
>      /**
> -     * <p>Is <code>true</code> if this is Linux.</p>
> -     *
> -     * <p>The field will return <code>false</code> if <code>OS_NAME</code>
> is
> -     * <code>null</code>.</p>
> +     * <p>
> +     * Is <code>true</code> if this is Linux.
> +     * </p>
> +     *
> +     * <p>
> +     * The field will return <code>false</code> if <code>OS_NAME</code> is
> <code>null</code>.
> +     * </p>
>       *
>       * @since 2.0
>       */
> -    public static final boolean IS_OS_LINUX = getOSMatches("Linux") ||
> getOSMatches("LINUX");
> +    public static final boolean IS_OS_LINUX = getOSMatchesName("Linux") ||
> getOSMatchesName("LINUX");
>
>      /**
> -     * <p>Is <code>true</code> if this is Mac.</p>
> -     *
> -     * <p>The field will return <code>false</code> if <code>OS_NAME</code>
> is
> -     * <code>null</code>.</p>
> +     * <p>
> +     * Is <code>true</code> if this is Mac.
> +     * </p>
> +     *
> +     * <p>
> +     * The field will return <code>false</code> if <code>OS_NAME</code> is
> <code>null</code>.
> +     * </p>
>       *
>       * @since 2.0
>       */
> -    public static final boolean IS_OS_MAC = getOSMatches("Mac");
> +    public static final boolean IS_OS_MAC = getOSMatchesName("Mac");
>
>      /**
> -     * <p>Is <code>true</code> if this is Mac.</p>
> -     *
> -     * <p>The field will return <code>false</code> if <code>OS_NAME</code>
> is
> -     * <code>null</code>.</p>
> +     * <p>
> +     * Is <code>true</code> if this is Mac.
> +     * </p>
> +     *
> +     * <p>
> +     * The field will return <code>false</code> if <code>OS_NAME</code> is
> <code>null</code>.
> +     * </p>
>       *
>       * @since 2.0
>       */
> -    public static final boolean IS_OS_MAC_OSX = getOSMatches("Mac OS X");
> +    public static final boolean IS_OS_MAC_OSX = getOSMatchesName("Mac OS
> X");
>
>      /**
> -     * <p>Is <code>true</code> if this is OS/2.</p>
> -     *
> -     * <p>The field will return <code>false</code> if <code>OS_NAME</code>
> is
> -     * <code>null</code>.</p>
> +     * <p>
> +     * Is <code>true</code> if this is OS/2.
> +     * </p>
> +     *
> +     * <p>
> +     * The field will return <code>false</code> if <code>OS_NAME</code> is
> <code>null</code>.
> +     * </p>
>       *
>       * @since 2.0
>       */
> -    public static final boolean IS_OS_OS2 = getOSMatches("OS/2");
> +    public static final boolean IS_OS_OS2 = getOSMatchesName("OS/2");
>
>      /**
> -     * <p>Is <code>true</code> if this is Solaris.</p>
> -     *
> -     * <p>The field will return <code>false</code> if <code>OS_NAME</code>
> is
> -     * <code>null</code>.</p>
> +     * <p>
> +     * Is <code>true</code> if this is Solaris.
> +     * </p>
> +     *
> +     * <p>
> +     * The field will return <code>false</code> if <code>OS_NAME</code> is
> <code>null</code>.
> +     * </p>
>       *
>       * @since 2.0
>       */
> -    public static final boolean IS_OS_SOLARIS = getOSMatches("Solaris");
> +    public static final boolean IS_OS_SOLARIS =
> getOSMatchesName("Solaris");
>
>      /**
> -     * <p>Is <code>true</code> if this is SunOS.</p>
> -     *
> -     * <p>The field will return <code>false</code> if <code>OS_NAME</code>
> is
> -     * <code>null</code>.</p>
> +     * <p>
> +     * Is <code>true</code> if this is SunOS.
> +     * </p>
> +     *
> +     * <p>
> +     * The field will return <code>false</code> if <code>OS_NAME</code> is
> <code>null</code>.
> +     * </p>
>       *
>       * @since 2.0
>       */
> -    public static final boolean IS_OS_SUN_OS = getOSMatches("SunOS");
> +    public static final boolean IS_OS_SUN_OS = getOSMatchesName("SunOS");
>
>      /**
> -     * <p>Is <code>true</code> if this is a POSIX compilant system,
> -     * as in any of AIX, HP-UX, Irix, Linux, MacOSX, Solaris or SUN OS.</p>
> -     *
> -     * <p>The field will return <code>false</code> if <code>OS_NAME</code>
> is
> -     * <code>null</code>.</p>
> +     * <p>
> +     * Is <code>true</code> if this is a POSIX compilant system, as in any
> of AIX, HP-UX, Irix, Linux, MacOSX, Solaris or SUN OS.
> +     * </p>
> +     *
> +     * <p>
> +     * The field will return <code>false</code> if <code>OS_NAME</code> is
> <code>null</code>.
> +     * </p>
>       *
>       * @since 2.1
>       */
> -    public static final boolean IS_OS_UNIX =
> -        IS_OS_AIX || IS_OS_HP_UX || IS_OS_IRIX || IS_OS_LINUX ||
> -        IS_OS_MAC_OSX || IS_OS_SOLARIS || IS_OS_SUN_OS;
> +    public static final boolean IS_OS_UNIX = IS_OS_AIX || IS_OS_HP_UX ||
> IS_OS_IRIX || IS_OS_LINUX || IS_OS_MAC_OSX || IS_OS_SOLARIS
> +            || IS_OS_SUN_OS;
>
>      /**
> -     * <p>Is <code>true</code> if this is Windows.</p>
> -     *
> -     * <p>The field will return <code>false</code> if <code>OS_NAME</code>
> is
> -     * <code>null</code>.</p>
> +     * <p>
> +     * Is <code>true</code> if this is Windows.
> +     * </p>
> +     *
> +     * <p>
> +     * The field will return <code>false</code> if <code>OS_NAME</code> is
> <code>null</code>.
> +     * </p>
>       *
>       * @since 2.0
>       */
> -    public static final boolean IS_OS_WINDOWS =
> getOSMatches(OS_NAME_WINDOWS_PREFIX);
> +    public static final boolean IS_OS_WINDOWS =
> getOSMatchesName(OS_NAME_WINDOWS_PREFIX);
>
>      /**
> -     * <p>Is <code>true</code> if this is Windows 2000.</p>
> -     *
> -     * <p>The field will return <code>false</code> if <code>OS_NAME</code>
> is
> -     * <code>null</code>.</p>
> +     * <p>
> +     * Is <code>true</code> if this is Windows 2000.
> +     * </p>
> +     *
> +     * <p>
> +     * The field will return <code>false</code> if <code>OS_NAME</code> is
> <code>null</code>.
> +     * </p>
>       *
>       * @since 2.0
>       */
>      public static final boolean IS_OS_WINDOWS_2000 =
> getOSMatches(OS_NAME_WINDOWS_PREFIX, "5.0");
>
>      /**
> -     * <p>Is <code>true</code> if this is Windows 95.</p>
> -     *
> -     * <p>The field will return <code>false</code> if <code>OS_NAME</code>
> is
> -     * <code>null</code>.</p>
> +     * <p>
> +     * Is <code>true</code> if this is Windows 95.
> +     * </p>
> +     *
> +     * <p>
> +     * The field will return <code>false</code> if <code>OS_NAME</code> is
> <code>null</code>.
> +     * </p>
>       *
>       * @since 2.0
>       */
>      public static final boolean IS_OS_WINDOWS_95 =
> getOSMatches(OS_NAME_WINDOWS_PREFIX + " 9", "4.0");
> -    // JDK 1.2 running on Windows98 returns 'Windows 95', hence the above
> +    // Java 1.2 running on Windows98 returns 'Windows 95', hence the above
>
>      /**
> -     * <p>Is <code>true</code> if this is Windows 98.</p>
> -     *
> -     * <p>The field will return <code>false</code> if <code>OS_NAME</code>
> is
> -     * <code>null</code>.</p>
> +     * <p>
> +     * Is <code>true</code> if this is Windows 98.
> +     * </p>
> +     *
> +     * <p>
> +     * The field will return <code>false</code> if <code>OS_NAME</code> is
> <code>null</code>.
> +     * </p>
>       *
>       * @since 2.0
>       */
>      public static final boolean IS_OS_WINDOWS_98 =
> getOSMatches(OS_NAME_WINDOWS_PREFIX + " 9", "4.1");
> -    // JDK 1.2 running on Windows98 returns 'Windows 95', hence the above
> +    // Java 1.2 running on Windows98 returns 'Windows 95', hence the above
>
>      /**
> -     * <p>Is <code>true</code> if this is Windows ME.</p>
> -     *
> -     * <p>The field will return <code>false</code> if <code>OS_NAME</code>
> is
> -     * <code>null</code>.</p>
> +     * <p>
> +     * Is <code>true</code> if this is Windows ME.
> +     * </p>
> +     *
> +     * <p>
> +     * The field will return <code>false</code> if <code>OS_NAME</code> is
> <code>null</code>.
> +     * </p>
>       *
>       * @since 2.0
>       */
>      public static final boolean IS_OS_WINDOWS_ME =
> getOSMatches(OS_NAME_WINDOWS_PREFIX, "4.9");
> -    // JDK 1.2 running on WindowsME may return 'Windows 95', hence the
> above
> +    // Java 1.2 running on WindowsME may return 'Windows 95', hence the
> above
>
>      /**
> -     * <p>Is <code>true</code> if this is Windows NT.</p>
> -     *
> -     * <p>The field will return <code>false</code> if <code>OS_NAME</code>
> is
> -     * <code>null</code>.</p>
> +     * <p>
> +     * Is <code>true</code> if this is Windows NT.
> +     * </p>
> +     *
> +     * <p>
> +     * The field will return <code>false</code> if <code>OS_NAME</code> is
> <code>null</code>.
> +     * </p>
>       *
>       * @since 2.0
>       */
> -    public static final boolean IS_OS_WINDOWS_NT =
> getOSMatches(OS_NAME_WINDOWS_PREFIX + " NT");
> -    // Windows 2000 returns 'Windows 2000' but may suffer from same JDK1.2
> problem
> +    public static final boolean IS_OS_WINDOWS_NT =
> getOSMatchesName(OS_NAME_WINDOWS_PREFIX + " NT");
> +    // Windows 2000 returns 'Windows 2000' but may suffer from same Java1.2
> problem
>
>      /**
> -     * <p>Is <code>true</code> if this is Windows XP.</p>
> -     *
> -     * <p>The field will return <code>false</code> if <code>OS_NAME</code>
> is
> -     * <code>null</code>.</p>
> +     * <p>
> +     * Is <code>true</code> if this is Windows XP.
> +     * </p>
> +     *
> +     * <p>
> +     * The field will return <code>false</code> if <code>OS_NAME</code> is
> <code>null</code>.
> +     * </p>
>       *
>       * @since 2.0
>       */
>      public static final boolean IS_OS_WINDOWS_XP =
> getOSMatches(OS_NAME_WINDOWS_PREFIX, "5.1");
>
> -
> //-----------------------------------------------------------------------
> +    //
> -----------------------------------------------------------------------
>      /**
> -     * <p>Is <code>true</code> if this is Windows Vista.</p>
> -     *
> -     * <p>The field will return <code>false</code> if <code>OS_NAME</code>
> is
> -     * <code>null</code>.</p>
> -     *
> +     * <p>
> +     * Is <code>true</code> if this is Windows Vista.
> +     * </p>
> +     *
> +     * <p>
> +     * The field will return <code>false</code> if <code>OS_NAME</code> is
> <code>null</code>.
> +     * </p>
> +     *
>       * @since 2.4
>       */
> -    public static final boolean IS_OS_WINDOWS_VISTA =
> getOSMatches(OS_NAME_WINDOWS_PREFIX, "6.0");
> +    public static final boolean IS_OS_WINDOWS_VISTA =
> getOSMatches(OS_NAME_WINDOWS_PREFIX, "6.0");
>
>      /**
> -     * <p>Is <code>true</code> if this is Windows 7.</p>
> -     *
> -     * <p>The field will return <code>false</code> if <code>OS_NAME</code>
> is
> -     * <code>null</code>.</p>
> -     *
> +     * <p>
> +     * Is <code>true</code> if this is Windows 7.
> +     * </p>
> +     *
> +     * <p>
> +     * The field will return <code>false</code> if <code>OS_NAME</code> is
> <code>null</code>.
> +     * </p>
> +     *
>       * @since 3.0
>       */
> -    public static final boolean IS_OS_WINDOWS_7 =
> getOSMatches(OS_NAME_WINDOWS_PREFIX, "6.1");
> +    public static final boolean IS_OS_WINDOWS_7 =
> getOSMatches(OS_NAME_WINDOWS_PREFIX, "6.1");
>
> -
> //-----------------------------------------------------------------------
>      /**
> -     * <p>SystemUtils instances should NOT be constructed in standard
> -     * programming. Instead, the class should be used as
> -     * <code>SystemUtils.FILE_SEPARATOR</code>.</p>
> -     *
> -     * <p>This constructor is public to permit tools that require a
> JavaBean
> -     * instance to operate.</p>
> +     * <p>
> +     * Gets the Java home directory as a <code>File</code>.
> +     * </p>
> +     *
> +     * @return a directory
> +     * @throws SecurityException
> +     *             if a security manager exists and its
> <code>checkPropertyAccess</code> method doesn't allow access to the
> specified system
> +     *             property.
> +     * @see System#getProperty(String)
> +     * @since 2.1
>       */
> -    public SystemUtils() {
> -        super();
> +    public static File getJavaHome() {
> +        return new File(System.getProperty(JAVA_HOME_KEY));
>      }
> -
> -
> //-----------------------------------------------------------------------
> +
>      /**
> -     * <p>Gets the Java version number as a <code>float</code>.</p>
> -     *
> -     * <p>Example return values:</p>
> +     * <p>
> +     * Gets the Java IO temporary directory as a <code>File</code>.
> +     * </p>
> +     *
> +     * @return a directory
> +     * @throws SecurityException
> +     *             if a security manager exists and its
> <code>checkPropertyAccess</code> method doesn't allow access to the
> specified system
> +     *             property.
> +     * @see System#getProperty(String)
> +     * @since 2.1
> +     */
> +    public static File getJavaIoTmpDir() {
> +        return new File(System.getProperty(JAVA_IO_TMPDIR_KEY));
> +    }
> +
> +    /**
> +     * <p>
> +     * Gets the Java version number as a <code>float</code>.
> +     * </p>
> +     *
> +     * <p>
> +     * Example return values:
> +     * </p>
>       * <ul>
> -     *  <li><code>1.2f</code> for JDK 1.2
> -     *  <li><code>1.31f</code> for JDK 1.3.1
> +     * <li><code>1.2f</code> for Java 1.2</li>
> +     * <li><code>1.31f</code> for Java 1.3.1</li>
> +     * <li><code>1.6f</code> for Java 1.6.0_20</li>
>       * </ul>
>       *
> -     * <p>Patch releases are not reported.
> -     * Zero is returned if {@link #JAVA_VERSION_TRIMMED} is
> <code>null</code>.</p>
> +     * <p>
> +     * Patch releases are not reported.
> +     * </p>
>       *
> -     * @return the version, for example 1.31f for JDK 1.3.1
> +     * @return the version, for example 1.31f for Java 1.3.1
>       */
>      private static float getJavaVersionAsFloat() {
> -        if (JAVA_VERSION_TRIMMED == null) {
> -            return 0f;
> -        }
> -        String str = JAVA_VERSION_TRIMMED.substring(0, 3);
> -        if (JAVA_VERSION_TRIMMED.length() >= 5) {
> -            str = str + JAVA_VERSION_TRIMMED.substring(4, 5);
> -        }
> -        try {
> -            return Float.parseFloat(str);
> -        } catch (Exception ex) {
> -            return 0;
> -        }
> +        return
> toVersionFloat(toJavaVersionIntArray(SystemUtils.JAVA_VERSION,
> JAVA_VERSION_TRIM_SIZE));
>      }
> -
> +
>      /**
> -     * <p>Gets the Java version number as an <code>int</code>.</p>
> -     *
> -     * <p>Example return values:</p>
> +     * <p>
> +     * Gets the Java version number as an <code>int</code>.
> +     * </p>
> +     *
> +     * <p>
> +     * Example return values:
> +     * </p>
>       * <ul>
> -     *  <li><code>120</code> for JDK 1.2
> -     *  <li><code>131</code> for JDK 1.3.1
> +     * <li><code>120</code> for Java 1.2</li>
> +     * <li><code>131</code> for Java 1.3.1</li>
> +     * <li><code>160</code> for Java 1.6.0_20</li>
>       * </ul>
>       *
> -     * <p>Patch releases are not reported.
> -     * Zero is returned if {@link #JAVA_VERSION_TRIMMED} is
> <code>null</code>.</p>
> +     * <p>
> +     * Patch releases are not reported.
> +     * </p>
>       *
> -     * @return the version, for example 131 for JDK 1.3.1
> +     * @return the version, for example 131 for Java 1.3.1
>       */
>      private static int getJavaVersionAsInt() {
> -        if (JAVA_VERSION_TRIMMED == null) {
> -            return 0;
> -        }
> -        String str = JAVA_VERSION_TRIMMED.substring(0, 1);
> -        str = str + JAVA_VERSION_TRIMMED.substring(2, 3);
> -        if (JAVA_VERSION_TRIMMED.length() >= 5) {
> -            str = str + JAVA_VERSION_TRIMMED.substring(4, 5);
> -        } else {
> -            str = str + "0";
> -        }
> -        try {
> -            return Integer.parseInt(str);
> -        } catch (Exception ex) {
> -            return 0;
> -        }
> +        return toVersionInt(toJavaVersionIntArray(SystemUtils.JAVA_VERSION,
> JAVA_VERSION_TRIM_SIZE));
> +    }
> +
> +    /**
> +     * <p>
> +     * Decides if the Java version matches.
> +     * </p>
> +     *
> +     * @param versionPrefix
> +     *            the prefix for the java version
> +     * @return true if matches, or false if not or can't determine
> +     */
> +    private static boolean getJavaVersionMatches(String versionPrefix) {
> +        return isJavaVersionMatch(JAVA_VERSION_TRIMMED, versionPrefix);
>      }
>
>      /**
> @@ -1195,54 +1419,42 @@ public class SystemUtils {
>      }
>
>      /**
> -     * <p>Decides if the java version matches.</p>
> +     * Decides if the operating system matches.
>       *
> -     * @param versionPrefix  the prefix for the java version
> +     * @param osNamePrefix
> +     *            the prefix for the os name
> +     * @param osVersionPrefix
> +     *            the prefix for the version
>       * @return true if matches, or false if not or can't determine
>       */
> -    private static boolean getJavaVersionMatches(String versionPrefix) {
> -        if (JAVA_VERSION_TRIMMED == null) {
> -            return false;
> -        }
> -        return JAVA_VERSION_TRIMMED.startsWith(versionPrefix);
> -    }
> -
> -    /**
> -     * <p>Decides if the operating system matches.</p>
> -     *
> -     * @param osNamePrefix  the prefix for the os name
> -     * @return true if matches, or false if not or can't determine
> -     */
> -    private static boolean getOSMatches(String osNamePrefix) {
> -        if (OS_NAME == null) {
> -            return false;
> -        }
> -        return OS_NAME.startsWith(osNamePrefix);
> -    }
> +    private static boolean getOSMatches(String osNamePrefix, String
> osVersionPrefix) {
> +        return isOSMatch(OS_NAME, OS_VERSION, osNamePrefix,
> osVersionPrefix);
> +    }
>
>      /**
> -     * <p>Decides if the operating system matches.</p>
> +     * Decides if the operating system matches.
>       *
> -     * @param osNamePrefix  the prefix for the os name
> -     * @param osVersionPrefix  the prefix for the version
> +     * @param osNamePrefix
> +     *            the prefix for the os name
>       * @return true if matches, or false if not or can't determine
>       */
> -    private static boolean getOSMatches(String osNamePrefix, String
> osVersionPrefix) {
> -        if (OS_NAME == null || OS_VERSION == null) {
> -            return false;
> -        }
> -        return OS_NAME.startsWith(osNamePrefix) &&
> OS_VERSION.startsWith(osVersionPrefix);
> -    }
> +    private static boolean getOSMatchesName(String osNamePrefix) {
> +        return isOSNameMatch(OS_NAME, osNamePrefix);
> +    }
>
> -
> //-----------------------------------------------------------------------
> +    //
> -----------------------------------------------------------------------
>      /**
> -     * <p>Gets a System property, defaulting to <code>null</code> if the
> property
> -     * cannot be read.</p>
> -     *
> -     * <p>If a <code>SecurityException</code> is caught, the return
> -     * value is <code>null</code> and a message is written to
> <code>System.err</code>.</p>
> +     * <p>
> +     * Gets a System property, defaulting to <code>null</code> if the
> property cannot be read.
> +     * </p>
>       *
> -     * @param property the system property name
> +     * <p>
> +     * If a <code>SecurityException</code> is caught, the return value is
> <code>null</code> and a message is written to
> +     * <code>System.err</code>.
> +     * </p>
> +     *
> +     * @param property
> +     *            the system property name
>       * @return the system property value or <code>null</code> if a security
> problem occurs
>       */
>      private static String getSystemProperty(String property) {
> @@ -1250,43 +1462,94 @@ public class SystemUtils {
>              return System.getProperty(property);
>          } catch (SecurityException ex) {
>              // we are not allowed to look at this property
> -            System.err.println(
> -                "Caught a SecurityException reading the system property '"
> + property
> -                + "'; the SystemUtils property value will default to null."
> -            );
> +            System.err.println("Caught a SecurityException reading the
> system property '" + property
> +                    + "'; the SystemUtils property value will default to
> null.");
>              return null;
>          }
>      }
> -
> +
> +    /**
> +     * <p>
> +     * Gets the user directory as a <code>File</code>.
> +     * </p>
> +     *
> +     * @return a directory
> +     * @throws SecurityException
> +     *             if a security manager exists and its
> <code>checkPropertyAccess</code> method doesn't allow access to the
> specified system
> +     *             property.
> +     * @see System#getProperty(String)
> +     * @since 2.1
> +     */
> +    public static File getUserDir() {
> +        return new File(System.getProperty(USER_DIR_KEY));
> +    }
> +
>      /**
> -     * <p>Is the Java version at least the requested version.</p>
> -     *
> -     * <p>Example input:</p>
> +     * <p>
> +     * Gets the user home directory as a <code>File</code>.
> +     * </p>
> +     *
> +     * @return a directory
> +     * @throws SecurityException
> +     *             if a security manager exists and its
> <code>checkPropertyAccess</code> method doesn't allow access to the
> specified system
> +     *             property.
> +     * @see System#getProperty(String)
> +     * @since 2.1
> +     */
> +    public static File getUserHome() {
> +        return new File(System.getProperty(USER_HOME_KEY));
> +    }
> +
> +    /**
> +     * Returns whether the {@link #JAVA_AWT_HEADLESS} value is
> <code>true</code>.
> +     *
> +     * @return <code>true</code> if <code>JAVA_AWT_HEADLESS</code> is
> <code>"true"</code>, <code>false</code> otherwise.
> +     *
> +     * @see #JAVA_AWT_HEADLESS
> +     * @since 2.1
> +     * @since Java 1.4
> +     */
> +    public static boolean isJavaAwtHeadless() {
> +        return JAVA_AWT_HEADLESS != null ?
> JAVA_AWT_HEADLESS.equals(Boolean.TRUE.toString()) : false;
> +    }
> +
> +    /**
> +     * <p>
> +     * Is the Java version at least the requested version.
> +     * </p>
> +     *
> +     * <p>
> +     * Example input:
> +     * </p>
>       * <ul>
> -     *  <li><code>1.2f</code> to test for JDK 1.2</li>
> -     *  <li><code>1.31f</code> to test for JDK 1.3.1</li>
> +     * <li><code>1.2f</code> to test for Java 1.2</li>
> +     * <li><code>1.31f</code> to test for Java 1.3.1</li>
>       * </ul>
>       *
> -     * @param requiredVersion  the required version, for example 1.31f
> -     * @return <code>true</code> if the actual version is equal or greater
> -     *  than the required version
> +     * @param requiredVersion
> +     *            the required version, for example 1.31f
> +     * @return <code>true</code> if the actual version is equal or greater
> than the required version
>       */
>      public static boolean isJavaVersionAtLeast(float requiredVersion) {
>          return JAVA_VERSION_FLOAT >= requiredVersion;
>      }
> -
> +
>      /**
> -     * <p>Is the Java version at least the requested version.</p>
> -     *
> -     * <p>Example input:</p>
> +     * <p>
> +     * Is the Java version at least the requested version.
> +     * </p>
> +     *
> +     * <p>
> +     * Example input:
> +     * </p>
>       * <ul>
> -     *  <li><code>120</code> to test for JDK 1.2 or greater</li>
> -     *  <li><code>131</code> to test for JDK 1.3.1 or greater</li>
> +     * <li><code>120</code> to test for Java 1.2 or greater</li>
> +     * <li><code>131</code> to test for Java 1.3.1 or greater</li>
>       * </ul>
>       *
> -     * @param requiredVersion  the required version, for example 131
>
> [... 323 lines stripped ...]
>
>
> --------------- Weitergeleitete Nachricht (Ende)
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
> For additional commands, e-mail: dev-help@commons.apache.org


RE: svn commit: r949140 [2/3] - in /commons/proper/lang/trunk/src: main/java/org/apache/commons/lang3/SystemUtils.java test/java/org/apache/commons/lang3/SystemUtilsTest.java

Posted by Gary Gregory <GG...@seagullsoftware.com>.
Please find below a "reverse" patch file that shows the differences without the formatting noise. This file should be useful to anyone who wants to review the changes. The file is a "reverse" patch hack which shows what happens if you remove the changes instead of adding them, it's just the simplest way I found to show the deltas without the formatting noise.

Gary

### Eclipse Workspace Patch 1.0
#P Apache Commons Lang
Index: src/main/java/org/apache/commons/lang3/SystemUtils.java
===================================================================
--- src/main/java/org/apache/commons/lang3/SystemUtils.java     (revision 949223)
+++ src/main/java/org/apache/commons/lang3/SystemUtils.java     (working copy)
@@ -17,7 +17,6 @@
 package org.apache.commons.lang3;

 import java.io.File;
-import java.util.regex.Pattern;

 /**
  * <p>
@@ -47,8 +46,6 @@
  */
 public class SystemUtils {

-    private static final int JAVA_VERSION_TRIM_SIZE = 3;
-
     /**
      * The prefix String for all Windows OS.
      */
@@ -782,8 +779,8 @@

     /**
      * <p>
-     * The <code>user.country</code> or <code>user.region</code> System Property. User's country code, such as <code>GB</code>. First in
-     * Java version 1.2 as <code>user.region</code>. Renamed to <code>user.country</code> in 1.4
+     * The <code>user.country</code> or <code>user.region</code> System Property. User's country code, such as <code>GB</code>. First in JDK
+     * version 1.2 as <code>user.region</code>. Renamed to <code>user.country</code> in 1.4
      * </p>
      *
      * <p>
@@ -930,8 +927,8 @@
      * Example return values:
      * </p>
      * <ul>
-     * <li><code>1.2f</code> for Java 1.2
-     * <li><code>1.31f</code> for Java 1.3.1
+     * <li><code>1.2f</code> for JDK 1.2
+     * <li><code>1.31f</code> for JDK 1.3.1
      * </ul>
      *
      * <p>
@@ -951,8 +948,8 @@
      * Example return values:
      * </p>
      * <ul>
-     * <li><code>120</code> for Java 1.2
-     * <li><code>131</code> for Java 1.3.1
+     * <li><code>120</code> for JDK 1.2
+     * <li><code>131</code> for JDK 1.3.1
      * </ul>
      *
      * <p>
@@ -1066,7 +1063,7 @@
      *
      * @since 2.0
      */
-    public static final boolean IS_OS_AIX = getOSMatchesName("AIX");
+    public static final boolean IS_OS_AIX = getOSMatches("AIX");

     /**
      * <p>
@@ -1079,7 +1076,7 @@
      *
      * @since 2.0
      */
-    public static final boolean IS_OS_HP_UX = getOSMatchesName("HP-UX");
+    public static final boolean IS_OS_HP_UX = getOSMatches("HP-UX");

     /**
      * <p>
@@ -1092,7 +1089,7 @@
      *
      * @since 2.0
      */
-    public static final boolean IS_OS_IRIX = getOSMatchesName("Irix");
+    public static final boolean IS_OS_IRIX = getOSMatches("Irix");

     /**
      * <p>
@@ -1105,7 +1102,7 @@
      *
      * @since 2.0
      */
-    public static final boolean IS_OS_LINUX = getOSMatchesName("Linux") || getOSMatchesName("LINUX");
+    public static final boolean IS_OS_LINUX = getOSMatches("Linux") || getOSMatches("LINUX");

     /**
      * <p>
@@ -1118,7 +1115,7 @@
      *
      * @since 2.0
      */
-    public static final boolean IS_OS_MAC = getOSMatchesName("Mac");
+    public static final boolean IS_OS_MAC = getOSMatches("Mac");

     /**
      * <p>
@@ -1131,7 +1128,7 @@
      *
      * @since 2.0
      */
-    public static final boolean IS_OS_MAC_OSX = getOSMatchesName("Mac OS X");
+    public static final boolean IS_OS_MAC_OSX = getOSMatches("Mac OS X");

     /**
      * <p>
@@ -1144,7 +1141,7 @@
      *
      * @since 2.0
      */
-    public static final boolean IS_OS_OS2 = getOSMatchesName("OS/2");
+    public static final boolean IS_OS_OS2 = getOSMatches("OS/2");

     /**
      * <p>
@@ -1157,7 +1154,7 @@
      *
      * @since 2.0
      */
-    public static final boolean IS_OS_SOLARIS = getOSMatchesName("Solaris");
+    public static final boolean IS_OS_SOLARIS = getOSMatches("Solaris");

     /**
      * <p>
@@ -1170,7 +1167,7 @@
      *
      * @since 2.0
      */
-    public static final boolean IS_OS_SUN_OS = getOSMatchesName("SunOS");
+    public static final boolean IS_OS_SUN_OS = getOSMatches("SunOS");

     /**
      * <p>
@@ -1197,7 +1194,7 @@
      *
      * @since 2.0
      */
-    public static final boolean IS_OS_WINDOWS = getOSMatchesName(OS_NAME_WINDOWS_PREFIX);
+    public static final boolean IS_OS_WINDOWS = getOSMatches(OS_NAME_WINDOWS_PREFIX);

     /**
      * <p>
@@ -1224,7 +1221,7 @@
      * @since 2.0
      */
     public static final boolean IS_OS_WINDOWS_95 = getOSMatches(OS_NAME_WINDOWS_PREFIX + " 9", "4.0");
-    // Java 1.2 running on Windows98 returns 'Windows 95', hence the above
+    // JDK 1.2 running on Windows98 returns 'Windows 95', hence the above

     /**
      * <p>
@@ -1238,7 +1235,7 @@
      * @since 2.0
      */
     public static final boolean IS_OS_WINDOWS_98 = getOSMatches(OS_NAME_WINDOWS_PREFIX + " 9", "4.1");
-    // Java 1.2 running on Windows98 returns 'Windows 95', hence the above
+    // JDK 1.2 running on Windows98 returns 'Windows 95', hence the above

     /**
      * <p>
@@ -1252,7 +1249,7 @@
      * @since 2.0
      */
     public static final boolean IS_OS_WINDOWS_ME = getOSMatches(OS_NAME_WINDOWS_PREFIX, "4.9");
-    // Java 1.2 running on WindowsME may return 'Windows 95', hence the above
+    // JDK 1.2 running on WindowsME may return 'Windows 95', hence the above

     /**
      * <p>
@@ -1265,8 +1262,8 @@
      *
      * @since 2.0
      */
-    public static final boolean IS_OS_WINDOWS_NT = getOSMatchesName(OS_NAME_WINDOWS_PREFIX + " NT");
-    // Windows 2000 returns 'Windows 2000' but may suffer from same Java1.2 problem
+    public static final boolean IS_OS_WINDOWS_NT = getOSMatches(OS_NAME_WINDOWS_PREFIX + " NT");
+    // Windows 2000 returns 'Windows 2000' but may suffer from same JDK1.2 problem

     /**
      * <p>
@@ -1340,6 +1337,7 @@
         return new File(System.getProperty(JAVA_IO_TMPDIR_KEY));
     }

+    // -----------------------------------------------------------------------
     /**
      * <p>
      * Gets the Java version number as a <code>float</code>.
@@ -1349,19 +1347,29 @@
      * Example return values:
      * </p>
      * <ul>
-     * <li><code>1.2f</code> for Java 1.2</li>
-     * <li><code>1.31f</code> for Java 1.3.1</li>
-     * <li><code>1.6f</code> for Java 1.6.0_20</li>
+     * <li><code>1.2f</code> for JDK 1.2
+     * <li><code>1.31f</code> for JDK 1.3.1
      * </ul>
      *
      * <p>
-     * Patch releases are not reported.
+     * Patch releases are not reported. Zero is returned if {@link #JAVA_VERSION_TRIMMED} is <code>null</code>.
      * </p>
      *
-     * @return the version, for example 1.31f for Java 1.3.1
+     * @return the version, for example 1.31f for JDK 1.3.1
      */
     private static float getJavaVersionAsFloat() {
-        return toVersionFloat(toJavaVersionIntArray(SystemUtils.JAVA_VERSION, JAVA_VERSION_TRIM_SIZE));
+        if (JAVA_VERSION_TRIMMED == null) {
+            return 0f;
+        }
+        String str = JAVA_VERSION_TRIMMED.substring(0, 3);
+        if (JAVA_VERSION_TRIMMED.length() >= 5) {
+            str = str + JAVA_VERSION_TRIMMED.substring(4, 5);
+        }
+        try {
+            return Float.parseFloat(str);
+        } catch (Exception ex) {
+            return 0;
+        }
     }

     /**
@@ -1373,24 +1381,37 @@
      * Example return values:
      * </p>
      * <ul>
-     * <li><code>120</code> for Java 1.2</li>
-     * <li><code>131</code> for Java 1.3.1</li>
-     * <li><code>160</code> for Java 1.6.0_20</li>
+     * <li><code>120</code> for JDK 1.2
+     * <li><code>131</code> for JDK 1.3.1
      * </ul>
      *
      * <p>
-     * Patch releases are not reported.
+     * Patch releases are not reported. Zero is returned if {@link #JAVA_VERSION_TRIMMED} is <code>null</code>.
      * </p>
      *
-     * @return the version, for example 131 for Java 1.3.1
+     * @return the version, for example 131 for JDK 1.3.1
      */
     private static int getJavaVersionAsInt() {
-        return toVersionInt(toJavaVersionIntArray(SystemUtils.JAVA_VERSION, JAVA_VERSION_TRIM_SIZE));
+        if (JAVA_VERSION_TRIMMED == null) {
+            return 0;
+        }
+        String str = JAVA_VERSION_TRIMMED.substring(0, 1);
+        str = str + JAVA_VERSION_TRIMMED.substring(2, 3);
+        if (JAVA_VERSION_TRIMMED.length() >= 5) {
+            str = str + JAVA_VERSION_TRIMMED.substring(4, 5);
+        } else {
+            str = str + "0";
+        }
+        try {
+            return Integer.parseInt(str);
+        } catch (Exception ex) {
+            return 0;
+        }
     }

     /**
      * <p>
-     * Decides if the Java version matches.
+     * Decides if the java version matches.
      * </p>
      *
      * @param versionPrefix
@@ -1398,7 +1419,10 @@
      * @return true if matches, or false if not or can't determine
      */
     private static boolean getJavaVersionMatches(String versionPrefix) {
-        return isJavaVersionMatch(JAVA_VERSION_TRIMMED, versionPrefix);
+        if (JAVA_VERSION_TRIMMED == null) {
+            return false;
+        }
+        return JAVA_VERSION_TRIMMED.startsWith(versionPrefix);
     }

     /**
@@ -1419,27 +1443,37 @@
     }

     /**
+     * <p>
      * Decides if the operating system matches.
+     * </p>
      *
      * @param osNamePrefix
      *            the prefix for the os name
-     * @param osVersionPrefix
-     *            the prefix for the version
      * @return true if matches, or false if not or can't determine
      */
-    private static boolean getOSMatches(String osNamePrefix, String osVersionPrefix) {
-        return isOSMatch(OS_NAME, OS_VERSION, osNamePrefix, osVersionPrefix);
+    private static boolean getOSMatches(String osNamePrefix) {
+        if (OS_NAME == null) {
+            return false;
+        }
+        return OS_NAME.startsWith(osNamePrefix);
     }

     /**
+     * <p>
      * Decides if the operating system matches.
+     * </p>
      *
      * @param osNamePrefix
      *            the prefix for the os name
+     * @param osVersionPrefix
+     *            the prefix for the version
      * @return true if matches, or false if not or can't determine
      */
-    private static boolean getOSMatchesName(String osNamePrefix) {
-        return isOSNameMatch(OS_NAME, osNamePrefix);
+    private static boolean getOSMatches(String osNamePrefix, String osVersionPrefix) {
+        if (OS_NAME == null || OS_VERSION == null) {
+            return false;
+        }
+        return OS_NAME.startsWith(osNamePrefix) && OS_VERSION.startsWith(osVersionPrefix);
     }

     // -----------------------------------------------------------------------
@@ -1522,8 +1556,8 @@
      * Example input:
      * </p>
      * <ul>
-     * <li><code>1.2f</code> to test for Java 1.2</li>
-     * <li><code>1.31f</code> to test for Java 1.3.1</li>
+     * <li><code>1.2f</code> to test for JDK 1.2</li>
+     * <li><code>1.31f</code> to test for JDK 1.3.1</li>
      * </ul>
      *
      * @param requiredVersion
@@ -1543,8 +1577,8 @@
      * Example input:
      * </p>
      * <ul>
-     * <li><code>120</code> to test for Java 1.2 or greater</li>
-     * <li><code>131</code> to test for Java 1.3.1 or greater</li>
+     * <li><code>120</code> to test for JDK 1.2 or greater</li>
+     * <li><code>131</code> to test for JDK 1.3.1 or greater</li>
      * </ul>
      *
      * @param requiredVersion
@@ -1556,256 +1590,6 @@
         return JAVA_VERSION_INT >= requiredVersion;
     }

-    /**
-     * <p>
-     * Decides if the Java version matches.
-     * </p>
-     * <p>
-     * This method is package private instead of private to support unit test invocation.
-     * </p>
-     *
-     * @param version
-     *            the actual Java version
-     * @param versionPrefix
-     *            the prefix for the expected Java version
-     * @return true if matches, or false if not or can't determine
-     */
-    static boolean isJavaVersionMatch(String version, String versionPrefix) {
-        if (version == null) {
-            return false;
-        }
-        return version.startsWith(versionPrefix);
-    }
-
-    /**
-     * Decides if the operating system matches.
-     * <p>
-     * This method is package private instead of private to support unit test invocation.
-     * </p>
-     *
-     * @param osName
-     *            the actual OS name
-     * @param osVersion
-     *            the actual OS version
-     * @param osNamePrefix
-     *            the prefix for the expected OS name
-     * @param osVersionPrefix
-     *            the prefix for the expected OS version
-     * @return true if matches, or false if not or can't determine
-     */
-    static boolean isOSMatch(String osName, String osVersion, String osNamePrefix, String osVersionPrefix) {
-        if (osName == null || osVersion == null) {
-            return false;
-        }
-        return osName.startsWith(osNamePrefix) && osVersion.startsWith(osVersionPrefix);
-    }
-
-    /**
-     * Decides if the operating system matches.
-     * <p>
-     * This method is package private instead of private to support unit test invocation.
-     * </p>
-     *
-     * @param osName
-     *            the actual OS name
-     * @param osNamePrefix
-     *            the prefix for the expected OS name
-     * @return true if matches, or false if not or can't determine
-     */
-    static boolean isOSNameMatch(String osName, String osNamePrefix) {
-        if (osName == null) {
-            return false;
-        }
-        return osName.startsWith(osNamePrefix);
-    }
-
-    /**
-     * <p>
-     * Converts the given Java version string to a <code>float</code>.
-     * </p>
-     *
-     * <p>
-     * Example return values:
-     * </p>
-     * <ul>
-     * <li><code>1.2f</code> for Java 1.2</li>
-     * <li><code>1.31f</code> for Java 1.3.1</li>
-     * <li><code>1.6f</code> for Java 1.6.0_20</li>
-     * </ul>
-     *
-     * <p>
-     * Patch releases are not reported.
-     * </p>
-     * <p>
-     * This method is package private instead of private to support unit test invocation.
-     * </p>
-     *
-     * @return the version, for example 1.31f for Java 1.3.1
-     */
-    static float toJavaVersionFloat(String version) {
-        return toVersionFloat(toJavaVersionIntArray(version, JAVA_VERSION_TRIM_SIZE));
-    }
-
-    /**
-     * <p>
-     * Converts the given Java version string to an <code>int</code>.
-     * </p>
-     *
-     * <p>
-     * Example return values:
-     * </p>
-     * <ul>
-     * <li><code>120</code> for Java 1.2</li>
-     * <li><code>131</code> for Java 1.3.1</li>
-     * <li><code>160</code> for Java 1.6.0_20</li>
-     * </ul>
-     *
-     * <p>
-     * Patch releases are not reported.
-     * </p>
-     * <p>
-     * This method is package private instead of private to support unit test invocation.
-     * </p>
-     *
-     * @return the version, for example 131 for Java 1.3.1
-     */
-    static int toJavaVersionInt(String version) {
-        return toVersionInt(toJavaVersionIntArray(version, JAVA_VERSION_TRIM_SIZE));
-    }
-
-    /**
-     * <p>
-     * Converts the given Java version string to an <code>int[]</code> of maximum size <code>3</code>.
-     * </p>
-     *
-     * <p>
-     * Example return values:
-     * </p>
-     * <ul>
-     * <li><code>[1, 2, 0]</code> for Java 1.2</li>
-     * <li><code>[1, 3, 1]</code> for Java 1.3.1</li>
-     * <li><code>[1, 5, 0]</code> for Java 1.5.0_21</li>
-     * </ul>
-     * <p>
-     * This method is package private instead of private to support unit test invocation.
-     * </p>
-     *
-     * @return the version, for example [1, 5, 0] for Java 1.5.0_21
-     */
-    static int[] toJavaVersionIntArray(String version) {
-        return toJavaVersionIntArray(version, Integer.MAX_VALUE);
-    }
-
-    /**
-     * <p>
-     * Converts the given Java version string to an <code>int[]</code> of maximum size <code>limit</code>.
-     * </p>
-     *
-     * <p>
-     * Example return values:
-     * </p>
-     * <ul>
-     * <li><code>[1, 2, 0]</code> for Java 1.2</li>
-     * <li><code>[1, 3, 1]</code> for Java 1.3.1</li>
-     * <li><code>[1, 5, 0, 21]</code> for Java 1.5.0_21</li>
-     * </ul>
-     *
-     * @return the version, for example [1, 5, 0, 21] for Java 1.5.0_21
-     */
-    private static int[] toJavaVersionIntArray(String version, int limit) {
-        if (version == null) {
-            return ArrayUtils.EMPTY_INT_ARRAY;
-        }
-        String[] strings = Pattern.compile("[^\\d]").split(version);
-        int[] ints = new int[Math.min(limit, strings.length)];
-        int j = 0;
-        for (int i = 0; i < strings.length && j < limit; i++) {
-            String s = strings[i];
-            if (s.length() > 0) {
-                ints[j++] = Integer.parseInt(s);
-            }
-        }
-        return ints;
-    }
-
-    /**
-     * <p>
-     * Converts given the Java version array to a <code>float</code>.
-     * </p>
-     *
-     * <p>
-     * Example return values:
-     * </p>
-     * <ul>
-     * <li><code>1.2f</code> for Java 1.2</li>
-     * <li><code>1.31f</code> for Java 1.3.1</li>
-     * <li><code>1.6f</code> for Java 1.6.0_20</li>
-     * </ul>
-     *
-     * <p>
-     * Patch releases are not reported.
-     * </p>
-     *
-     * @return the version, for example 1.31f for Java 1.3.1
-     */
-    private static float toVersionFloat(int[] javaVersions) {
-        if (javaVersions == null || javaVersions.length == 0) {
-            return 0f;
-        }
-        if (javaVersions.length == 1) {
-            return javaVersions[0];
-        }
-        StringBuilder builder = new StringBuilder();
-        builder.append(javaVersions[0]);
-        builder.append('.');
-        for (int i = 1; i < javaVersions.length; i++) {
-            builder.append(javaVersions[i]);
-        }
-        try {
-            return Float.parseFloat(builder.toString());
-        } catch (Exception ex) {
-            return 0f;
-        }
-    }
-
-    /**
-     * <p>
-     * Converts given the Java version array to an <code>int</code>.
-     * </p>
-     *
-     * <p>
-     * Example return values:
-     * </p>
-     * <ul>
-     * <li><code>120</code> for Java 1.2</li>
-     * <li><code>131</code> for Java 1.3.1</li>
-     * <li><code>160</code> for Java 1.6.0_20</li>
-     * </ul>
-     *
-     * <p>
-     * Patch releases are not reported.
-     * </p>
-     *
-     * @return the version, for example 1.31f for Java 1.3.1
-     */
-    private static int toVersionInt(int[] javaVersions) {
-        if (javaVersions == null) {
-            return 0;
-        }
-        int intVersion = 0;
-        int len = javaVersions.length;
-        if (len >= 1) {
-            intVersion = javaVersions[0] * 100;
-        }
-        if (len >= 2) {
-            intVersion += javaVersions[1] * 10;
-        }
-        if (len >= 3) {
-            intVersion += javaVersions[2];
-        }
-        return intVersion;
-    }
-
     // -----------------------------------------------------------------------
     /**
      * <p>

Gary Gregory
Senior Software Engineer
Seagull Software
email: ggregory@seagullsoftware.com
email: ggregory@apache.org
www.seagullsoftware.com



> -----Original Message-----
> From: Gary Gregory
> Sent: Friday, May 28, 2010 08:59
> To: dev@commons.apache.org
> Subject: RE: svn commit: r949140 [2/3] - in /commons/proper/lang/trunk/src:
> main/java/org/apache/commons/lang3/SystemUtils.java
> test/java/org/apache/commons/lang3/SystemUtilsTest.java
>
> Jörg,
>
> I am sorry about that, I did not realize I created extra formatting noise in
> the change set. The changes to the class are numerous though, so there would
> have been lots of deltas, namely:
>
> - Fixed and tested (LANG-624) SystemUtils.getJavaVersionAsFloat throws
> StringIndexOutOfBoundsException on Android runtime/Dalvik VM. This is based on
> a new implementation of the underlying code with less reliance of hard coded
> array indices, for example, calls like substring (0, 3).
>
> - Refactored some private methods into one private and one package private
> method such that the latter can be called from unit tests. This allows [LANG-
> 624] to be tested along with other methods. See below.
>
> - Removed "dead code" from unit tests: The SystemUtilsTest unit test contained
> code that was cut and pasted from SystemUtils for four constants and
> associated initialization methods. The test methods then called these
> SystemUtilsTest methods instead of the SystemUtils methods. The refactoring
> allows for the test to run against as much of the code in SystemUtils as
> possible.
>
> - Added assertions for Java version "0", "1.4.2", "1.6" and "1.7" to some
> tests.
>
> - Added Javadocs to document what happens with "1.6.0_20" vs. "1.6.0", which
> is that the patch level is ignored.
>
> Gary Gregory
> Senior Software Engineer
> Seagull Software
> email: ggregory@seagullsoftware.com
> email: ggregory@apache.org
> www.seagullsoftware.com
>
>
> > -----Original Message-----
> > From: Jörg Schaible [mailto:joerg.schaible@gmx.de]
> > Sent: Friday, May 28, 2010 05:13
> > To: dev@commons.apache.org
> > Subject: Fwd: svn commit: r949140 [2/3] - in /commons/proper/lang/trunk/src:
> > main/java/org/apache/commons/lang3/SystemUtils.java
> > test/java/org/apache/commons/lang3/SystemUtilsTest.java
> >
> > Gary,
> >
> > can you please stop with this code reformatting? How should anyone can have
> > a look at the changes if it is hidden between 95% unrelated stuff ???
> >
> > - Jörg
> >
> >
> >
> > --------------- Forwarded Message
> >
> > Betreff: svn commit: r949140 [2/3] - in /commons/proper/lang/trunk/src:
> > main/java/org/apache/commons/lang3/SystemUtils.java
> > test/java/org/apache/commons/lang3/SystemUtilsTest.java
> > Absender: ggregory@apache.org
> > Datum: Fri, 28 May 2010 10:12:04 +0000
> > Newsgruppe: gmane.comp.jakarta.commons.scm
> >
> >
> > Modified:
> >
> commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/SystemUtils.j
> > ava
> > URL:
> >
> http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/main/java/org/apach
> > e/commons/lang3/SystemUtils.java?rev=949140&r1=949139&r2=949140&view=diff
> >
> ==============================================================================
> > ---
> >
> commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/SystemUtils.j
> > ava
> > (original)
> > +++
> >
> commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/SystemUtils.j
> > ava
> > Fri May 28 10:12:04 2010
> > @@ -17,15 +17,22 @@
> >  package org.apache.commons.lang3;
> >
> >  import java.io.File;
> > +import java.util.regex.Pattern;
> >
> >  /**
> > - * <p>Helpers for <code>java.lang.System</code>.</p>
> > + * <p>
> > + * Helpers for <code>java.lang.System</code>.
> > + * </p>
> > + *
> > + * <p>
> > + * If a system property cannot be read due to security restrictions, the
> > corresponding field in this class will be set to <code>null</code>
> > + * and a message will be written to <code>System.err</code>.
> > + * </p>
> > + *
> > + * <p>
> > + * #ThreadSafe#
> > + * </p>
> >   *
> > - * <p>If a system property cannot be read due to security restrictions,
> > - * the corresponding field in this class will be set to <code>null</code>
> > - * and a message will be written to <code>System.err</code>.</p>
> > - *
> > - * <p>#ThreadSafe#</p>
> >   * @author Apache Software Foundation
> >   * @author Based on code from Avalon Excalibur
> >   * @author Based on code from Lucene
> > @@ -40,15 +47,17 @@ import java.io.File;
> >   */
> >  public class SystemUtils {
> >
> > +    private static final int JAVA_VERSION_TRIM_SIZE = 3;
> > +
> >      /**
> >       * The prefix String for all Windows OS.
> >       */
> >      private static final String OS_NAME_WINDOWS_PREFIX = "Windows";
> > -
> > +
> >      // System property constants
> > -
> > //-----------------------------------------------------------------------
> > +    //
> > -----------------------------------------------------------------------
> >      // These MUST be declared first. Other constants depend on this.
> > -
> > +
> >      /**
> >       * The System property key for the user home directory.
> >       */
> > @@ -58,29 +67,36 @@ public class SystemUtils {
> >       * The System property key for the user directory.
> >       */
> >      private static final String USER_DIR_KEY = "user.dir";
> > -
> > +
> >      /**
> >       * The System property key for the Java IO temporary directory.
> >       */
> >      private static final String JAVA_IO_TMPDIR_KEY = "java.io.tmpdir";
> > -
> > +
> >      /**
> >       * The System property key for the Java home directory.
> >       */
> >      private static final String JAVA_HOME_KEY = "java.home";
> > -
> > +
> >      /**
> > -     * <p>The <code>awt.toolkit</code> System Property.</p>
> > -     * <p>Holds a class name, on Windows XP this is
> > <code>sun.awt.windows.WToolkit</code>.</p>
> > -     * <p><b>On platforms without a GUI, this value is
> > <code>null</code>.</b></p>
> > +     * <p>
> > +     * The <code>awt.toolkit</code> System Property.
> > +     * </p>
> > +     * <p>
> > +     * Holds a class name, on Windows XP this is
> > <code>sun.awt.windows.WToolkit</code>.
> > +     * </p>
> > +     * <p>
> > +     * <b>On platforms without a GUI, this value is <code>null</code>.</b>
> > +     * </p>
> >       *
> > -     * <p>Defaults to <code>null</code> if the runtime does not have
> > -     * security access to read this property or the property does not
> > exist.</p>
> > +     * <p>
> > +     * Defaults to <code>null</code> if the runtime does not have security
> > access to read this property or the property does not exist.
> > +     * </p>
> >       *
> >       * <p>
> > -     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)}
> > -     * or {@link System#setProperties(java.util.Properties)} is called
> > after this class is loaded, the value
> > -     * will be out of sync with that System property.
> > +     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)} or
> > +     * {@link System#setProperties(java.util.Properties)} is called after
> > this class is loaded, the value will be out of sync with that
> > +     * System property.
> >       * </p>
> >       *
> >       * @since 2.1
> > @@ -88,16 +104,21 @@ public class SystemUtils {
> >      public static final String AWT_TOOLKIT =
> > getSystemProperty("awt.toolkit");
> >
> >      /**
> > -     * <p>The <code>file.encoding</code> System Property.</p>
> > -     * <p>File encoding, such as <code>Cp1252</code>.</p>
> > +     * <p>
> > +     * The <code>file.encoding</code> System Property.
> > +     * </p>
> > +     * <p>
> > +     * File encoding, such as <code>Cp1252</code>.
> > +     * </p>
> >       *
> > -     * <p>Defaults to <code>null</code> if the runtime does not have
> > -     * security access to read this property or the property does not
> > exist.</p>
> > +     * <p>
> > +     * Defaults to <code>null</code> if the runtime does not have security
> > access to read this property or the property does not exist.
> > +     * </p>
> >       *
> >       * <p>
> > -     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)}
> > -     * or {@link System#setProperties(java.util.Properties)} is called
> > after this class is loaded, the value
> > -     * will be out of sync with that System property.
> > +     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)} or
> > +     * {@link System#setProperties(java.util.Properties)} is called after
> > this class is loaded, the value will be out of sync with that
> > +     * System property.
> >       * </p>
> >       *
> >       * @since 2.0
> > @@ -106,16 +127,18 @@ public class SystemUtils {
> >      public static final String FILE_ENCODING =
> > getSystemProperty("file.encoding");
> >
> >      /**
> > -     * <p>The <code>file.separator</code> System Property.
> > -     * File separator (<code>&quot;/&quot;</code> on UNIX).</p>
> > -     *
> > -     * <p>Defaults to <code>null</code> if the runtime does not have
> > -     * security access to read this property or the property does not
> > exist.</p>
> > +     * <p>
> > +     * The <code>file.separator</code> System Property. File separator
> > (<code>&quot;/&quot;</code> on UNIX).
> > +     * </p>
> >       *
> >       * <p>
> > -     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)}
> > -     * or {@link System#setProperties(java.util.Properties)} is called
> > after this class is loaded, the value
> > -     * will be out of sync with that System property.
> > +     * Defaults to <code>null</code> if the runtime does not have security
> > access to read this property or the property does not exist.
> > +     * </p>
> > +     *
> > +     * <p>
> > +     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)} or
> > +     * {@link System#setProperties(java.util.Properties)} is called after
> > this class is loaded, the value will be out of sync with that
> > +     * System property.
> >       * </p>
> >       *
> >       * @since Java 1.1
> > @@ -123,15 +146,18 @@ public class SystemUtils {
> >      public static final String FILE_SEPARATOR =
> > getSystemProperty("file.separator");
> >
> >      /**
> > -     * <p>The <code>java.awt.fonts</code> System Property.</p>
> > -     *
> > -     * <p>Defaults to <code>null</code> if the runtime does not have
> > -     * security access to read this property or the property does not
> > exist.</p>
> > +     * <p>
> > +     * The <code>java.awt.fonts</code> System Property.
> > +     * </p>
> > +     *
> > +     * <p>
> > +     * Defaults to <code>null</code> if the runtime does not have security
> > access to read this property or the property does not exist.
> > +     * </p>
> >       *
> >       * <p>
> > -     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)}
> > -     * or {@link System#setProperties(java.util.Properties)} is called
> > after this class is loaded, the value
> > -     * will be out of sync with that System property.
> > +     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)} or
> > +     * {@link System#setProperties(java.util.Properties)} is called after
> > this class is loaded, the value will be out of sync with that
> > +     * System property.
> >       * </p>
> >       *
> >       * @since 2.1
> > @@ -139,15 +165,18 @@ public class SystemUtils {
> >      public static final String JAVA_AWT_FONTS =
> > getSystemProperty("java.awt.fonts");
> >
> >      /**
> > -     * <p>The <code>java.awt.graphicsenv</code> System Property.</p>
> > -     *
> > -     * <p>Defaults to <code>null</code> if the runtime does not have
> > -     * security access to read this property or the property does not
> > exist.</p>
> > +     * <p>
> > +     * The <code>java.awt.graphicsenv</code> System Property.
> > +     * </p>
> > +     *
> > +     * <p>
> > +     * Defaults to <code>null</code> if the runtime does not have security
> > access to read this property or the property does not exist.
> > +     * </p>
> >       *
> >       * <p>
> > -     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)}
> > -     * or {@link System#setProperties(java.util.Properties)} is called
> > after this class is loaded, the value
> > -     * will be out of sync with that System property.
> > +     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)} or
> > +     * {@link System#setProperties(java.util.Properties)} is called after
> > this class is loaded, the value will be out of sync with that
> > +     * System property.
> >       * </p>
> >       *
> >       * @since 2.1
> > @@ -156,17 +185,18 @@ public class SystemUtils {
> >
> >      /**
> >       * <p>
> > -     * The <code>java.awt.headless</code> System Property.
> > -     * The value of this property is the String <code>"true"</code> or
> > <code>"false"</code>.
> > +     * The <code>java.awt.headless</code> System Property. The value of
> > this property is the String <code>"true"</code> or
> > +     * <code>"false"</code>.
> > +     * </p>
> > +     *
> > +     * <p>
> > +     * Defaults to <code>null</code> if the runtime does not have security
> > access to read this property or the property does not exist.
> >       * </p>
> > -     *
> > -     * <p>Defaults to <code>null</code> if the runtime does not have
> > -     * security access to read this property or the property does not
> > exist.</p>
> >       *
> >       * <p>
> > -     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)}
> > -     * or {@link System#setProperties(java.util.Properties)} is called
> > after this class is loaded, the value
> > -     * will be out of sync with that System property.
> > +     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)} or
> > +     * {@link System#setProperties(java.util.Properties)} is called after
> > this class is loaded, the value will be out of sync with that
> > +     * System property.
> >       * </p>
> >       *
> >       * @see #isJavaAwtHeadless()
> > @@ -176,15 +206,18 @@ public class SystemUtils {
> >      public static final String JAVA_AWT_HEADLESS =
> > getSystemProperty("java.awt.headless");
> >
> >      /**
> > -     * <p>The <code>java.awt.printerjob</code> System Property.</p>
> > -     *
> > -     * <p>Defaults to <code>null</code> if the runtime does not have
> > -     * security access to read this property or the property does not
> > exist.</p>
> > +     * <p>
> > +     * The <code>java.awt.printerjob</code> System Property.
> > +     * </p>
> > +     *
> > +     * <p>
> > +     * Defaults to <code>null</code> if the runtime does not have security
> > access to read this property or the property does not exist.
> > +     * </p>
> >       *
> >       * <p>
> > -     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)}
> > -     * or {@link System#setProperties(java.util.Properties)} is called
> > after this class is loaded, the value
> > -     * will be out of sync with that System property.
> > +     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)} or
> > +     * {@link System#setProperties(java.util.Properties)} is called after
> > this class is loaded, the value will be out of sync with that
> > +     * System property.
> >       * </p>
> >       *
> >       * @since 2.1
> > @@ -192,15 +225,18 @@ public class SystemUtils {
> >      public static final String JAVA_AWT_PRINTERJOB =
> > getSystemProperty("java.awt.printerjob");
> >
> >      /**
> > -     * <p>The <code>java.class.path</code> System Property. Java class
> > path.</p>
> > -     *
> > -     * <p>Defaults to <code>null</code> if the runtime does not have
> > -     * security access to read this property or the property does not
> > exist.</p>
> > +     * <p>
> > +     * The <code>java.class.path</code> System Property. Java class path.
> > +     * </p>
> > +     *
> > +     * <p>
> > +     * Defaults to <code>null</code> if the runtime does not have security
> > access to read this property or the property does not exist.
> > +     * </p>
> >       *
> >       * <p>
> > -     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)}
> > -     * or {@link System#setProperties(java.util.Properties)} is called
> > after this class is loaded, the value
> > -     * will be out of sync with that System property.
> > +     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)} or
> > +     * {@link System#setProperties(java.util.Properties)} is called after
> > this class is loaded, the value will be out of sync with that
> > +     * System property.
> >       * </p>
> >       *
> >       * @since Java 1.1
> > @@ -208,16 +244,18 @@ public class SystemUtils {
> >      public static final String JAVA_CLASS_PATH =
> > getSystemProperty("java.class.path");
> >
> >      /**
> > -     * <p>The <code>java.class.version</code> System Property.
> > -     * Java class format version number.</p>
> > -     *
> > -     * <p>Defaults to <code>null</code> if the runtime does not have
> > -     * security access to read this property or the property does not
> > exist.</p>
> > +     * <p>
> > +     * The <code>java.class.version</code> System Property. Java class
> > format version number.
> > +     * </p>
> >       *
> >       * <p>
> > -     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)}
> > -     * or {@link System#setProperties(java.util.Properties)} is called
> > after this class is loaded, the value
> > -     * will be out of sync with that System property.
> > +     * Defaults to <code>null</code> if the runtime does not have security
> > access to read this property or the property does not exist.
> > +     * </p>
> > +     *
> > +     * <p>
> > +     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)} or
> > +     * {@link System#setProperties(java.util.Properties)} is called after
> > this class is loaded, the value will be out of sync with that
> > +     * System property.
> >       * </p>
> >       *
> >       * @since Java 1.1
> > @@ -225,16 +263,19 @@ public class SystemUtils {
> >      public static final String JAVA_CLASS_VERSION =
> > getSystemProperty("java.class.version");
> >
> >      /**
> > -     * <p>The <code>java.compiler</code> System Property. Name of JIT
> > compiler to use.
> > -     * First in JDK version 1.2. Not used in Sun JDKs after 1.2.</p>
> > -     *
> > -     * <p>Defaults to <code>null</code> if the runtime does not have
> > -     * security access to read this property or the property does not
> > exist.</p>
> > +     * <p>
> > +     * The <code>java.compiler</code> System Property. Name of JIT compiler
> > to use. First in JDK version 1.2. Not used in Sun JDKs after
> > +     * 1.2.
> > +     * </p>
> > +     *
> > +     * <p>
> > +     * Defaults to <code>null</code> if the runtime does not have security
> > access to read this property or the property does not exist.
> > +     * </p>
> >       *
> >       * <p>
> > -     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)}
> > -     * or {@link System#setProperties(java.util.Properties)} is called
> > after this class is loaded, the value
> > -     * will be out of sync with that System property.
> > +     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)} or
> > +     * {@link System#setProperties(java.util.Properties)} is called after
> > this class is loaded, the value will be out of sync with that
> > +     * System property.
> >       * </p>
> >       *
> >       * @since Java 1.2. Not used in Sun versions after 1.2.
> > @@ -242,16 +283,18 @@ public class SystemUtils {
> >      public static final String JAVA_COMPILER =
> > getSystemProperty("java.compiler");
> >
> >      /**
> > -     * <p>The <code>java.endorsed.dirs</code> System Property. Path of
> > endorsed directory
> > -     * or directories.</p>
> > -     *
> > -     * <p>Defaults to <code>null</code> if the runtime does not have
> > -     * security access to read this property or the property does not
> > exist.</p>
> > +     * <p>
> > +     * The <code>java.endorsed.dirs</code> System Property. Path of
> > endorsed directory or directories.
> > +     * </p>
> > +     *
> > +     * <p>
> > +     * Defaults to <code>null</code> if the runtime does not have security
> > access to read this property or the property does not exist.
> > +     * </p>
> >       *
> >       * <p>
> > -     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)}
> > -     * or {@link System#setProperties(java.util.Properties)} is called
> > after this class is loaded, the value
> > -     * will be out of sync with that System property.
> > +     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)} or
> > +     * {@link System#setProperties(java.util.Properties)} is called after
> > this class is loaded, the value will be out of sync with that
> > +     * System property.
> >       * </p>
> >       *
> >       * @since Java 1.4
> > @@ -259,16 +302,18 @@ public class SystemUtils {
> >      public static final String JAVA_ENDORSED_DIRS =
> > getSystemProperty("java.endorsed.dirs");
> >
> >      /**
> > -     * <p>The <code>java.ext.dirs</code> System Property. Path of extension
> > directory
> > -     * or directories.</p>
> > -     *
> > -     * <p>Defaults to <code>null</code> if the runtime does not have
> > -     * security access to read this property or the property does not
> > exist.</p>
> > +     * <p>
> > +     * The <code>java.ext.dirs</code> System Property. Path of extension
> > directory or directories.
> > +     * </p>
> > +     *
> > +     * <p>
> > +     * Defaults to <code>null</code> if the runtime does not have security
> > access to read this property or the property does not exist.
> > +     * </p>
> >       *
> >       * <p>
> > -     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)}
> > -     * or {@link System#setProperties(java.util.Properties)} is called
> > after this class is loaded, the value
> > -     * will be out of sync with that System property.
> > +     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)} or
> > +     * {@link System#setProperties(java.util.Properties)} is called after
> > this class is loaded, the value will be out of sync with that
> > +     * System property.
> >       * </p>
> >       *
> >       * @since Java 1.3
> > @@ -276,15 +321,18 @@ public class SystemUtils {
> >      public static final String JAVA_EXT_DIRS =
> > getSystemProperty("java.ext.dirs");
> >
> >      /**
> > -     * <p>The <code>java.home</code> System Property. Java installation
> > directory.</p>
> > -     *
> > -     * <p>Defaults to <code>null</code> if the runtime does not have
> > -     * security access to read this property or the property does not
> > exist.</p>
> > +     * <p>
> > +     * The <code>java.home</code> System Property. Java installation
> > directory.
> > +     * </p>
> >       *
> >       * <p>
> > -     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)}
> > -     * or {@link System#setProperties(java.util.Properties)} is called
> > after this class is loaded, the value
> > -     * will be out of sync with that System property.
> > +     * Defaults to <code>null</code> if the runtime does not have security
> > access to read this property or the property does not exist.
> > +     * </p>
> > +     *
> > +     * <p>
> > +     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)} or
> > +     * {@link System#setProperties(java.util.Properties)} is called after
> > this class is loaded, the value will be out of sync with that
> > +     * System property.
> >       * </p>
> >       *
> >       * @since Java 1.1
> > @@ -292,15 +340,18 @@ public class SystemUtils {
> >      public static final String JAVA_HOME =
> > getSystemProperty(JAVA_HOME_KEY);
> >
> >      /**
> > -     * <p>The <code>java.io.tmpdir</code> System Property. Default temp
> > file path.</p>
> > -     *
> > -     * <p>Defaults to <code>null</code> if the runtime does not have
> > -     * security access to read this property or the property does not
> > exist.</p>
> > +     * <p>
> > +     * The <code>java.io.tmpdir</code> System Property. Default temp file
> > path.
> > +     * </p>
> > +     *
> > +     * <p>
> > +     * Defaults to <code>null</code> if the runtime does not have security
> > access to read this property or the property does not exist.
> > +     * </p>
> >       *
> >       * <p>
> > -     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)}
> > -     * or {@link System#setProperties(java.util.Properties)} is called
> > after this class is loaded, the value
> > -     * will be out of sync with that System property.
> > +     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)} or
> > +     * {@link System#setProperties(java.util.Properties)} is called after
> > this class is loaded, the value will be out of sync with that
> > +     * System property.
> >       * </p>
> >       *
> >       * @since Java 1.2
> > @@ -308,16 +359,18 @@ public class SystemUtils {
> >      public static final String JAVA_IO_TMPDIR =
> > getSystemProperty(JAVA_IO_TMPDIR_KEY);
> >
> >      /**
> > -     * <p>The <code>java.library.path</code> System Property. List of paths
> > to search
> > -     * when loading libraries.</p>
> > -     *
> > -     * <p>Defaults to <code>null</code> if the runtime does not have
> > -     * security access to read this property or the property does not
> > exist.</p>
> > +     * <p>
> > +     * The <code>java.library.path</code> System Property. List of paths to
> > search when loading libraries.
> > +     * </p>
> > +     *
> > +     * <p>
> > +     * Defaults to <code>null</code> if the runtime does not have security
> > access to read this property or the property does not exist.
> > +     * </p>
> >       *
> >       * <p>
> > -     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)}
> > -     * or {@link System#setProperties(java.util.Properties)} is called
> > after this class is loaded, the value
> > -     * will be out of sync with that System property.
> > +     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)} or
> > +     * {@link System#setProperties(java.util.Properties)} is called after
> > this class is loaded, the value will be out of sync with that
> > +     * System property.
> >       * </p>
> >       *
> >       * @since Java 1.2
> > @@ -325,16 +378,18 @@ public class SystemUtils {
> >      public static final String JAVA_LIBRARY_PATH =
> > getSystemProperty("java.library.path");
> >
> >      /**
> > -     * <p>The <code>java.runtime.name</code> System Property. Java Runtime
> > Environment
> > -     * name.</p>
> > -     *
> > -     * <p>Defaults to <code>null</code> if the runtime does not have
> > -     * security access to read this property or the property does not
> > exist.</p>
> > +     * <p>
> > +     * The <code>java.runtime.name</code> System Property. Java Runtime
> > Environment name.
> > +     * </p>
> > +     *
> > +     * <p>
> > +     * Defaults to <code>null</code> if the runtime does not have security
> > access to read this property or the property does not exist.
> > +     * </p>
> >       *
> >       * <p>
> > -     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)}
> > -     * or {@link System#setProperties(java.util.Properties)} is called
> > after this class is loaded, the value
> > -     * will be out of sync with that System property.
> > +     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)} or
> > +     * {@link System#setProperties(java.util.Properties)} is called after
> > this class is loaded, the value will be out of sync with that
> > +     * System property.
> >       * </p>
> >       *
> >       * @since 2.0
> > @@ -343,16 +398,18 @@ public class SystemUtils {
> >      public static final String JAVA_RUNTIME_NAME =
> > getSystemProperty("java.runtime.name");
> >
> >      /**
> > -     * <p>The <code>java.runtime.version</code> System Property. Java
> > Runtime Environment
> > -     * version.</p>
> > -     *
> > -     * <p>Defaults to <code>null</code> if the runtime does not have
> > -     * security access to read this property or the property does not
> > exist.</p>
> > +     * <p>
> > +     * The <code>java.runtime.version</code> System Property. Java Runtime
> > Environment version.
> > +     * </p>
> >       *
> >       * <p>
> > -     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)}
> > -     * or {@link System#setProperties(java.util.Properties)} is called
> > after this class is loaded, the value
> > -     * will be out of sync with that System property.
> > +     * Defaults to <code>null</code> if the runtime does not have security
> > access to read this property or the property does not exist.
> > +     * </p>
> > +     *
> > +     * <p>
> > +     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)} or
> > +     * {@link System#setProperties(java.util.Properties)} is called after
> > this class is loaded, the value will be out of sync with that
> > +     * System property.
> >       * </p>
> >       *
> >       * @since 2.0
> > @@ -361,16 +418,18 @@ public class SystemUtils {
> >      public static final String JAVA_RUNTIME_VERSION =
> > getSystemProperty("java.runtime.version");
> >
> >      /**
> > -     * <p>The <code>java.specification.name</code> System Property. Java
> > Runtime Environment
> > -     * specification name.</p>
> > -     *
> > -     * <p>Defaults to <code>null</code> if the runtime does not have
> > -     * security access to read this property or the property does not
> > exist.</p>
> > +     * <p>
> > +     * The <code>java.specification.name</code> System Property. Java
> > Runtime Environment specification name.
> > +     * </p>
> > +     *
> > +     * <p>
> > +     * Defaults to <code>null</code> if the runtime does not have security
> > access to read this property or the property does not exist.
> > +     * </p>
> >       *
> >       * <p>
> > -     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)}
> > -     * or {@link System#setProperties(java.util.Properties)} is called
> > after this class is loaded, the value
> > -     * will be out of sync with that System property.
> > +     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)} or
> > +     * {@link System#setProperties(java.util.Properties)} is called after
> > this class is loaded, the value will be out of sync with that
> > +     * System property.
> >       * </p>
> >       *
> >       * @since Java 1.2
> > @@ -378,16 +437,18 @@ public class SystemUtils {
> >      public static final String JAVA_SPECIFICATION_NAME =
> > getSystemProperty("java.specification.name");
> >
> >      /**
> > -     * <p>The <code>java.specification.vendor</code> System Property. Java
> > Runtime Environment
> > -     * specification vendor.</p>
> > -     *
> > -     * <p>Defaults to <code>null</code> if the runtime does not have
> > -     * security access to read this property or the property does not
> > exist.</p>
> > +     * <p>
> > +     * The <code>java.specification.vendor</code> System Property. Java
> > Runtime Environment specification vendor.
> > +     * </p>
> > +     *
> > +     * <p>
> > +     * Defaults to <code>null</code> if the runtime does not have security
> > access to read this property or the property does not exist.
> > +     * </p>
> >       *
> >       * <p>
> > -     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)}
> > -     * or {@link System#setProperties(java.util.Properties)} is called
> > after this class is loaded, the value
> > -     * will be out of sync with that System property.
> > +     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)} or
> > +     * {@link System#setProperties(java.util.Properties)} is called after
> > this class is loaded, the value will be out of sync with that
> > +     * System property.
> >       * </p>
> >       *
> >       * @since Java 1.2
> > @@ -395,16 +456,18 @@ public class SystemUtils {
> >      public static final String JAVA_SPECIFICATION_VENDOR =
> > getSystemProperty("java.specification.vendor");
> >
> >      /**
> > -     * <p>The <code>java.specification.version</code> System Property. Java
> > Runtime Environment
> > -     * specification version.</p>
> > -     *
> > -     * <p>Defaults to <code>null</code> if the runtime does not have
> > -     * security access to read this property or the property does not
> > exist.</p>
> > +     * <p>
> > +     * The <code>java.specification.version</code> System Property. Java
> > Runtime Environment specification version.
> > +     * </p>
> > +     *
> > +     * <p>
> > +     * Defaults to <code>null</code> if the runtime does not have security
> > access to read this property or the property does not exist.
> > +     * </p>
> >       *
> >       * <p>
> > -     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)}
> > -     * or {@link System#setProperties(java.util.Properties)} is called
> > after this class is loaded, the value
> > -     * will be out of sync with that System property.
> > +     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)} or
> > +     * {@link System#setProperties(java.util.Properties)} is called after
> > this class is loaded, the value will be out of sync with that
> > +     * System property.
> >       * </p>
> >       *
> >       * @since Java 1.3
> > @@ -412,33 +475,38 @@ public class SystemUtils {
> >      public static final String JAVA_SPECIFICATION_VERSION =
> > getSystemProperty("java.specification.version");
> >
> >      /**
> > -     * <p>The <code>java.util.prefs.PreferencesFactory</code> System
> > Property. A class name.</p>
> > -     *
> > -     * <p>Defaults to <code>null</code> if the runtime does not have
> > -     * security access to read this property or the property does not
> > exist.</p>
> > +     * <p>
> > +     * The <code>java.util.prefs.PreferencesFactory</code> System Property.
> > A class name.
> > +     * </p>
> >       *
> >       * <p>
> > -     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)}
> > -     * or {@link System#setProperties(java.util.Properties)} is called
> > after this class is loaded, the value
> > -     * will be out of sync with that System property.
> > +     * Defaults to <code>null</code> if the runtime does not have security
> > access to read this property or the property does not exist.
> > +     * </p>
> > +     *
> > +     * <p>
> > +     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)} or
> > +     * {@link System#setProperties(java.util.Properties)} is called after
> > this class is loaded, the value will be out of sync with that
> > +     * System property.
> >       * </p>
> >       *
> >       * @since 2.1
> >       * @since Java 1.4
> >       */
> > -    public static final String JAVA_UTIL_PREFS_PREFERENCES_FACTORY =
> > -        getSystemProperty("java.util.prefs.PreferencesFactory");
> > +    public static final String JAVA_UTIL_PREFS_PREFERENCES_FACTORY =
> > getSystemProperty("java.util.prefs.PreferencesFactory");
> >
> >      /**
> > -     * <p>The <code>java.vendor</code> System Property. Java vendor-
> > specific string.</p>
> > -     *
> > -     * <p>Defaults to <code>null</code> if the runtime does not have
> > -     * security access to read this property or the property does not
> > exist.</p>
> > +     * <p>
> > +     * The <code>java.vendor</code> System Property. Java vendor-specific
> > string.
> > +     * </p>
> > +     *
> > +     * <p>
> > +     * Defaults to <code>null</code> if the runtime does not have security
> > access to read this property or the property does not exist.
> > +     * </p>
> >       *
> >       * <p>
> > -     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)}
> > -     * or {@link System#setProperties(java.util.Properties)} is called
> > after this class is loaded, the value
> > -     * will be out of sync with that System property.
> > +     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)} or
> > +     * {@link System#setProperties(java.util.Properties)} is called after
> > this class is loaded, the value will be out of sync with that
> > +     * System property.
> >       * </p>
> >       *
> >       * @since Java 1.1
> > @@ -446,31 +514,37 @@ public class SystemUtils {
> >      public static final String JAVA_VENDOR =
> > getSystemProperty("java.vendor");
> >
> >      /**
> > -     * <p>The <code>java.vendor.url</code> System Property. Java vendor
> > URL.</p>
> > -     *
> > -     * <p>Defaults to <code>null</code> if the runtime does not have
> > -     * security access to read this property or the property does not
> > exist.</p>
> > +     * <p>
> > +     * The <code>java.vendor.url</code> System Property. Java vendor URL.
> > +     * </p>
> > +     *
> > +     * <p>
> > +     * Defaults to <code>null</code> if the runtime does not have security
> > access to read this property or the property does not exist.
> > +     * </p>
> >       *
> >       * <p>
> > -     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)}
> > -     * or {@link System#setProperties(java.util.Properties)} is called
> > after this class is loaded, the value
> > -     * will be out of sync with that System property.
> > +     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)} or
> > +     * {@link System#setProperties(java.util.Properties)} is called after
> > this class is loaded, the value will be out of sync with that
> > +     * System property.
> >       * </p>
> >       *
> >       * @since Java 1.1
> > -    */
> > +     */
> >      public static final String JAVA_VENDOR_URL =
> > getSystemProperty("java.vendor.url");
> >
> >      /**
> > -     * <p>The <code>java.version</code> System Property. Java version
> > number.</p>
> > -     *
> > -     * <p>Defaults to <code>null</code> if the runtime does not have
> > -     * security access to read this property or the property does not
> > exist.</p>
> > +     * <p>
> > +     * The <code>java.version</code> System Property. Java version number.
> > +     * </p>
> >       *
> >       * <p>
> > -     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)}
> > -     * or {@link System#setProperties(java.util.Properties)} is called
> > after this class is loaded, the value
> > -     * will be out of sync with that System property.
> > +     * Defaults to <code>null</code> if the runtime does not have security
> > access to read this property or the property does not exist.
> > +     * </p>
> > +     *
> > +     * <p>
> > +     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)} or
> > +     * {@link System#setProperties(java.util.Properties)} is called after
> > this class is loaded, the value will be out of sync with that
> > +     * System property.
> >       * </p>
> >       *
> >       * @since Java 1.1
> > @@ -478,16 +552,18 @@ public class SystemUtils {
> >      public static final String JAVA_VERSION =
> > getSystemProperty("java.version");
> >
> >      /**
> > -     * <p>The <code>java.vm.info</code> System Property. Java Virtual
> > Machine implementation
> > -     * info.</p>
> > -     *
> > -     * <p>Defaults to <code>null</code> if the runtime does not have
> > -     * security access to read this property or the property does not
> > exist.</p>
> > +     * <p>
> > +     * The <code>java.vm.info</code> System Property. Java Virtual Machine
> > implementation info.
> > +     * </p>
> > +     *
> > +     * <p>
> > +     * Defaults to <code>null</code> if the runtime does not have security
> > access to read this property or the property does not exist.
> > +     * </p>
> >       *
> >       * <p>
> > -     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)}
> > -     * or {@link System#setProperties(java.util.Properties)} is called
> > after this class is loaded, the value
> > -     * will be out of sync with that System property.
> > +     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)} or
> > +     * {@link System#setProperties(java.util.Properties)} is called after
> > this class is loaded, the value will be out of sync with that
> > +     * System property.
> >       * </p>
> >       *
> >       * @since 2.0
> > @@ -496,16 +572,18 @@ public class SystemUtils {
> >      public static final String JAVA_VM_INFO =
> > getSystemProperty("java.vm.info");
> >
> >      /**
> > -     * <p>The <code>java.vm.name</code> System Property. Java Virtual
> > Machine implementation
> > -     * name.</p>
> > -     *
> > -     * <p>Defaults to <code>null</code> if the runtime does not have
> > -     * security access to read this property or the property does not
> > exist.</p>
> > +     * <p>
> > +     * The <code>java.vm.name</code> System Property. Java Virtual Machine
> > implementation name.
> > +     * </p>
> > +     *
> > +     * <p>
> > +     * Defaults to <code>null</code> if the runtime does not have security
> > access to read this property or the property does not exist.
> > +     * </p>
> >       *
> >       * <p>
> > -     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)}
> > -     * or {@link System#setProperties(java.util.Properties)} is called
> > after this class is loaded, the value
> > -     * will be out of sync with that System property.
> > +     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)} or
> > +     * {@link System#setProperties(java.util.Properties)} is called after
> > this class is loaded, the value will be out of sync with that
> > +     * System property.
> >       * </p>
> >       *
> >       * @since Java 1.2
> > @@ -513,16 +591,18 @@ public class SystemUtils {
> >      public static final String JAVA_VM_NAME =
> > getSystemProperty("java.vm.name");
> >
> >      /**
> > -     * <p>The <code>java.vm.specification.name</code> System Property. Java
> > Virtual Machine
> > -     * specification name.</p>
> > -     *
> > -     * <p>Defaults to <code>null</code> if the runtime does not have
> > -     * security access to read this property or the property does not
> > exist.</p>
> > +     * <p>
> > +     * The <code>java.vm.specification.name</code> System Property. Java
> > Virtual Machine specification name.
> > +     * </p>
> > +     *
> > +     * <p>
> > +     * Defaults to <code>null</code> if the runtime does not have security
> > access to read this property or the property does not exist.
> > +     * </p>
> >       *
> >       * <p>
> > -     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)}
> > -     * or {@link System#setProperties(java.util.Properties)} is called
> > after this class is loaded, the value
> > -     * will be out of sync with that System property.
> > +     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)} or
> > +     * {@link System#setProperties(java.util.Properties)} is called after
> > this class is loaded, the value will be out of sync with that
> > +     * System property.
> >       * </p>
> >       *
> >       * @since Java 1.2
> > @@ -530,16 +610,18 @@ public class SystemUtils {
> >      public static final String JAVA_VM_SPECIFICATION_NAME =
> > getSystemProperty("java.vm.specification.name");
> >
> >      /**
> > -     * <p>The <code>java.vm.specification.vendor</code> System Property.
> > Java Virtual
> > -     * Machine specification vendor.</p>
> > -     *
> > -     * <p>Defaults to <code>null</code> if the runtime does not have
> > -     * security access to read this property or the property does not
> > exist.</p>
> > +     * <p>
> > +     * The <code>java.vm.specification.vendor</code> System Property. Java
> > Virtual Machine specification vendor.
> > +     * </p>
> >       *
> >       * <p>
> > -     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)}
> > -     * or {@link System#setProperties(java.util.Properties)} is called
> > after this class is loaded, the value
> > -     * will be out of sync with that System property.
> > +     * Defaults to <code>null</code> if the runtime does not have security
> > access to read this property or the property does not exist.
> > +     * </p>
> > +     *
> > +     * <p>
> > +     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)} or
> > +     * {@link System#setProperties(java.util.Properties)} is called after
> > this class is loaded, the value will be out of sync with that
> > +     * System property.
> >       * </p>
> >       *
> >       * @since Java 1.2
> > @@ -547,16 +629,18 @@ public class SystemUtils {
> >      public static final String JAVA_VM_SPECIFICATION_VENDOR =
> > getSystemProperty("java.vm.specification.vendor");
> >
> >      /**
> > -     * <p>The <code>java.vm.specification.version</code> System Property.
> > Java Virtual Machine
> > -     * specification version.</p>
> > -     *
> > -     * <p>Defaults to <code>null</code> if the runtime does not have
> > -     * security access to read this property or the property does not
> > exist.</p>
> > +     * <p>
> > +     * The <code>java.vm.specification.version</code> System Property. Java
> > Virtual Machine specification version.
> > +     * </p>
> > +     *
> > +     * <p>
> > +     * Defaults to <code>null</code> if the runtime does not have security
> > access to read this property or the property does not exist.
> > +     * </p>
> >       *
> >       * <p>
> > -     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)}
> > -     * or {@link System#setProperties(java.util.Properties)} is called
> > after this class is loaded, the value
> > -     * will be out of sync with that System property.
> > +     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)} or
> > +     * {@link System#setProperties(java.util.Properties)} is called after
> > this class is loaded, the value will be out of sync with that
> > +     * System property.
> >       * </p>
> >       *
> >       * @since Java 1.2
> > @@ -564,16 +648,18 @@ public class SystemUtils {
> >      public static final String JAVA_VM_SPECIFICATION_VERSION =
> > getSystemProperty("java.vm.specification.version");
> >
> >      /**
> > -     * <p>The <code>java.vm.vendor</code> System Property. Java Virtual
> > Machine implementation
> > -     * vendor.</p>
> > -     *
> > -     * <p>Defaults to <code>null</code> if the runtime does not have
> > -     * security access to read this property or the property does not
> > exist.</p>
> > +     * <p>
> > +     * The <code>java.vm.vendor</code> System Property. Java Virtual
> > Machine implementation vendor.
> > +     * </p>
> > +     *
> > +     * <p>
> > +     * Defaults to <code>null</code> if the runtime does not have security
> > access to read this property or the property does not exist.
> > +     * </p>
> >       *
> >       * <p>
> > -     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)}
> > -     * or {@link System#setProperties(java.util.Properties)} is called
> > after this class is loaded, the value
> > -     * will be out of sync with that System property.
> > +     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)} or
> > +     * {@link System#setProperties(java.util.Properties)} is called after
> > this class is loaded, the value will be out of sync with that
> > +     * System property.
> >       * </p>
> >       *
> >       * @since Java 1.2
> > @@ -581,16 +667,18 @@ public class SystemUtils {
> >      public static final String JAVA_VM_VENDOR =
> > getSystemProperty("java.vm.vendor");
> >
> >      /**
> > -     * <p>The <code>java.vm.version</code> System Property. Java Virtual
> > Machine
> > -     * implementation version.</p>
> > -     *
> > -     * <p>Defaults to <code>null</code> if the runtime does not have
> > -     * security access to read this property or the property does not
> > exist.</p>
> > +     * <p>
> > +     * The <code>java.vm.version</code> System Property. Java Virtual
> > Machine implementation version.
> > +     * </p>
> > +     *
> > +     * <p>
> > +     * Defaults to <code>null</code> if the runtime does not have security
> > access to read this property or the property does not exist.
> > +     * </p>
> >       *
> >       * <p>
> > -     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)}
> > -     * or {@link System#setProperties(java.util.Properties)} is called
> > after this class is loaded, the value
> > -     * will be out of sync with that System property.
> > +     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)} or
> > +     * {@link System#setProperties(java.util.Properties)} is called after
> > this class is loaded, the value will be out of sync with that
> > +     * System property.
> >       * </p>
> >       *
> >       * @since Java 1.2
> > @@ -598,16 +686,18 @@ public class SystemUtils {
> >      public static final String JAVA_VM_VERSION =
> > getSystemProperty("java.vm.version");
> >
> >      /**
> > -     * <p>The <code>line.separator</code> System Property. Line separator
> > -     * (<code>&quot;\n&quot;</code> on UNIX).</p>
> > -     *
> > -     * <p>Defaults to <code>null</code> if the runtime does not have
> > -     * security access to read this property or the property does not
> > exist.</p>
> > +     * <p>
> > +     * The <code>line.separator</code> System Property. Line separator
> > (<code>&quot;\n&quot;</code> on UNIX).
> > +     * </p>
> >       *
> >       * <p>
> > -     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)}
> > -     * or {@link System#setProperties(java.util.Properties)} is called
> > after this class is loaded, the value
> > -     * will be out of sync with that System property.
> > +     * Defaults to <code>null</code> if the runtime does not have security
> > access to read this property or the property does not exist.
> > +     * </p>
> > +     *
> > +     * <p>
> > +     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)} or
> > +     * {@link System#setProperties(java.util.Properties)} is called after
> > this class is loaded, the value will be out of sync with that
> > +     * System property.
> >       * </p>
> >       *
> >       * @since Java 1.1
> > @@ -615,15 +705,18 @@ public class SystemUtils {
> >      public static final String LINE_SEPARATOR =
> > getSystemProperty("line.separator");
> >
> >      /**
> > -     * <p>The <code>os.arch</code> System Property. Operating system
> > architecture.</p>
> > -     *
> > -     * <p>Defaults to <code>null</code> if the runtime does not have
> > -     * security access to read this property or the property does not
> > exist.</p>
> > +     * <p>
> > +     * The <code>os.arch</code> System Property. Operating system
> > architecture.
> > +     * </p>
> > +     *
> > +     * <p>
> > +     * Defaults to <code>null</code> if the runtime does not have security
> > access to read this property or the property does not exist.
> > +     * </p>
> >       *
> >       * <p>
> > -     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)}
> > -     * or {@link System#setProperties(java.util.Properties)} is called
> > after this class is loaded, the value
> > -     * will be out of sync with that System property.
> > +     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)} or
> > +     * {@link System#setProperties(java.util.Properties)} is called after
> > this class is loaded, the value will be out of sync with that
> > +     * System property.
> >       * </p>
> >       *
> >       * @since Java 1.1
> > @@ -631,15 +724,18 @@ public class SystemUtils {
> >      public static final String OS_ARCH = getSystemProperty("os.arch");
> >
> >      /**
> > -     * <p>The <code>os.name</code> System Property. Operating system
> > name.</p>
> > -     *
> > -     * <p>Defaults to <code>null</code> if the runtime does not have
> > -     * security access to read this property or the property does not
> > exist.</p>
> > +     * <p>
> > +     * The <code>os.name</code> System Property. Operating system name.
> > +     * </p>
> > +     *
> > +     * <p>
> > +     * Defaults to <code>null</code> if the runtime does not have security
> > access to read this property or the property does not exist.
> > +     * </p>
> >       *
> >       * <p>
> > -     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)}
> > -     * or {@link System#setProperties(java.util.Properties)} is called
> > after this class is loaded, the value
> > -     * will be out of sync with that System property.
> > +     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)} or
> > +     * {@link System#setProperties(java.util.Properties)} is called after
> > this class is loaded, the value will be out of sync with that
> > +     * System property.
> >       * </p>
> >       *
> >       * @since Java 1.1
> > @@ -647,15 +743,18 @@ public class SystemUtils {
> >      public static final String OS_NAME = getSystemProperty("os.name");
> >
> >      /**
> > -     * <p>The <code>os.version</code> System Property. Operating system
> > version.</p>
> > -     *
> > -     * <p>Defaults to <code>null</code> if the runtime does not have
> > -     * security access to read this property or the property does not
> > exist.</p>
> > +     * <p>
> > +     * The <code>os.version</code> System Property. Operating system
> > version.
> > +     * </p>
> > +     *
> > +     * <p>
> > +     * Defaults to <code>null</code> if the runtime does not have security
> > access to read this property or the property does not exist.
> > +     * </p>
> >       *
> >       * <p>
> > -     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)}
> > -     * or {@link System#setProperties(java.util.Properties)} is called
> > after this class is loaded, the value
> > -     * will be out of sync with that System property.
> > +     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)} or
> > +     * {@link System#setProperties(java.util.Properties)} is called after
> > this class is loaded, the value will be out of sync with that
> > +     * System property.
> >       * </p>
> >       *
> >       * @since Java 1.1
> > @@ -663,16 +762,18 @@ public class SystemUtils {
> >      public static final String OS_VERSION =
> > getSystemProperty("os.version");
> >
> >      /**
> > -     * <p>The <code>path.separator</code> System Property. Path separator
> > -     * (<code>&quot;:&quot;</code> on UNIX).</p>
> > -     *
> > -     * <p>Defaults to <code>null</code> if the runtime does not have
> > -     * security access to read this property or the property does not
> > exist.</p>
> > +     * <p>
> > +     * The <code>path.separator</code> System Property. Path separator
> > (<code>&quot;:&quot;</code> on UNIX).
> > +     * </p>
> >       *
> >       * <p>
> > -     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)}
> > -     * or {@link System#setProperties(java.util.Properties)} is called
> > after this class is loaded, the value
> > -     * will be out of sync with that System property.
> > +     * Defaults to <code>null</code> if the runtime does not have security
> > access to read this property or the property does not exist.
> > +     * </p>
> > +     *
> > +     * <p>
> > +     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)} or
> > +     * {@link System#setProperties(java.util.Properties)} is called after
> > this class is loaded, the value will be out of sync with that
> > +     * System property.
> >       * </p>
> >       *
> >       * @since Java 1.1
> > @@ -680,37 +781,40 @@ public class SystemUtils {
> >      public static final String PATH_SEPARATOR =
> > getSystemProperty("path.separator");
> >
> >      /**
> > -     * <p>The <code>user.country</code> or <code>user.region</code> System
> > Property.
> > -     * User's country code, such as <code>GB</code>. First in JDK version
> > 1.2 as
> > -     * <code>user.region</code>. Renamed to <code>user.country</code> in
> > 1.4</p>
> > -     *
> > -     * <p>Defaults to <code>null</code> if the runtime does not have
> > -     * security access to read this property or the property does not
> > exist.</p>
> > +     * <p>
> > +     * The <code>user.country</code> or <code>user.region</code> System
> > Property. User's country code, such as <code>GB</code>. First in
> > +     * Java version 1.2 as <code>user.region</code>. Renamed to
> > <code>user.country</code> in 1.4
> > +     * </p>
> > +     *
> > +     * <p>
> > +     * Defaults to <code>null</code> if the runtime does not have security
> > access to read this property or the property does not exist.
> > +     * </p>
> >       *
> >       * <p>
> > -     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)}
> > -     * or {@link System#setProperties(java.util.Properties)} is called
> > after this class is loaded, the value
> > -     * will be out of sync with that System property.
> > +     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)} or
> > +     * {@link System#setProperties(java.util.Properties)} is called after
> > this class is loaded, the value will be out of sync with that
> > +     * System property.
> >       * </p>
> >       *
> >       * @since 2.0
> >       * @since Java 1.2
> >       */
> > -    public static final String USER_COUNTRY =
> > -        getSystemProperty("user.country") == null ?
> > -            getSystemProperty("user.region") :
> > getSystemProperty("user.country");
> > +    public static final String USER_COUNTRY =
> > getSystemProperty("user.country") == null ? getSystemProperty("user.region")
> > +            : getSystemProperty("user.country");
> >
> >      /**
> > -     * <p>The <code>user.dir</code> System Property. User's current working
> > -     * directory.</p>
> > -     *
> > -     * <p>Defaults to <code>null</code> if the runtime does not have
> > -     * security access to read this property or the property does not
> > exist.</p>
> > +     * <p>
> > +     * The <code>user.dir</code> System Property. User's current working
> > directory.
> > +     * </p>
> > +     *
> > +     * <p>
> > +     * Defaults to <code>null</code> if the runtime does not have security
> > access to read this property or the property does not exist.
> > +     * </p>
> >       *
> >       * <p>
> > -     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)}
> > -     * or {@link System#setProperties(java.util.Properties)} is called
> > after this class is loaded, the value
> > -     * will be out of sync with that System property.
> > +     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)} or
> > +     * {@link System#setProperties(java.util.Properties)} is called after
> > this class is loaded, the value will be out of sync with that
> > +     * System property.
> >       * </p>
> >       *
> >       * @since Java 1.1
> > @@ -718,15 +822,18 @@ public class SystemUtils {
> >      public static final String USER_DIR = getSystemProperty(USER_DIR_KEY);
> >
> >      /**
> > -     * <p>The <code>user.home</code> System Property. User's home
> > directory.</p>
> > -     *
> > -     * <p>Defaults to <code>null</code> if the runtime does not have
> > -     * security access to read this property or the property does not
> > exist.</p>
> > +     * <p>
> > +     * The <code>user.home</code> System Property. User's home directory.
> > +     * </p>
> > +     *
> > +     * <p>
> > +     * Defaults to <code>null</code> if the runtime does not have security
> > access to read this property or the property does not exist.
> > +     * </p>
> >       *
> >       * <p>
> > -     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)}
> > -     * or {@link System#setProperties(java.util.Properties)} is called
> > after this class is loaded, the value
> > -     * will be out of sync with that System property.
> > +     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)} or
> > +     * {@link System#setProperties(java.util.Properties)} is called after
> > this class is loaded, the value will be out of sync with that
> > +     * System property.
> >       * </p>
> >       *
> >       * @since Java 1.1
> > @@ -734,16 +841,18 @@ public class SystemUtils {
> >      public static final String USER_HOME =
> > getSystemProperty(USER_HOME_KEY);
> >
> >      /**
> > -     * <p>The <code>user.language</code> System Property. User's language
> > code,
> > -     * such as <code>"en"</code>.</p>
> > -     *
> > -     * <p>Defaults to <code>null</code> if the runtime does not have
> > -     * security access to read this property or the property does not
> > exist.</p>
> > +     * <p>
> > +     * The <code>user.language</code> System Property. User's language
> > code, such as <code>"en"</code>.
> > +     * </p>
> >       *
> >       * <p>
> > -     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)}
> > -     * or {@link System#setProperties(java.util.Properties)} is called
> > after this class is loaded, the value
> > -     * will be out of sync with that System property.
> > +     * Defaults to <code>null</code> if the runtime does not have security
> > access to read this property or the property does not exist.
> > +     * </p>
> > +     *
> > +     * <p>
> > +     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)} or
> > +     * {@link System#setProperties(java.util.Properties)} is called after
> > this class is loaded, the value will be out of sync with that
> > +     * System property.
> >       * </p>
> >       *
> >       * @since 2.0
> > @@ -752,15 +861,18 @@ public class SystemUtils {
> >      public static final String USER_LANGUAGE =
> > getSystemProperty("user.language");
> >
> >      /**
> > -     * <p>The <code>user.name</code> System Property. User's account
> > name.</p>
> > -     *
> > -     * <p>Defaults to <code>null</code> if the runtime does not have
> > -     * security access to read this property or the property does not
> > exist.</p>
> > +     * <p>
> > +     * The <code>user.name</code> System Property. User's account name.
> > +     * </p>
> > +     *
> > +     * <p>
> > +     * Defaults to <code>null</code> if the runtime does not have security
> > access to read this property or the property does not exist.
> > +     * </p>
> >       *
> >       * <p>
> > -     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)}
> > -     * or {@link System#setProperties(java.util.Properties)} is called
> > after this class is loaded, the value
> > -     * will be out of sync with that System property.
> > +     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)} or
> > +     * {@link System#setProperties(java.util.Properties)} is called after
> > this class is loaded, the value will be out of sync with that
> > +     * System property.
> >       * </p>
> >       *
> >       * @since Java 1.1
> > @@ -768,16 +880,18 @@ public class SystemUtils {
> >      public static final String USER_NAME = getSystemProperty("user.name");
> >
> >      /**
> > -     * <p>The <code>user.timezone</code> System Property.
> > -     * For example: <code>"America/Los_Angeles"</code>.</p>
> > -     *
> > -     * <p>Defaults to <code>null</code> if the runtime does not have
> > -     * security access to read this property or the property does not
> > exist.</p>
> > +     * <p>
> > +     * The <code>user.timezone</code> System Property. For example:
> > <code>"America/Los_Angeles"</code>.
> > +     * </p>
> > +     *
> > +     * <p>
> > +     * Defaults to <code>null</code> if the runtime does not have security
> > access to read this property or the property does not exist.
> > +     * </p>
> >       *
> >       * <p>
> > -     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)}
> > -     * or {@link System#setProperties(java.util.Properties)} is called
> > after this class is loaded, the value
> > -     * will be out of sync with that System property.
> > +     * This value is initialized when the class is loaded. If {@link
> > System#setProperty(String,String)} or
> > +     * {@link System#setProperties(java.util.Properties)} is called after
> > this class is loaded, the value will be out of sync with that
> > +     * System property.
> >       * </p>
> >       *
> >       * @since 2.1
> > @@ -785,119 +899,156 @@ public class SystemUtils {
> >      public static final String USER_TIMEZONE =
> > getSystemProperty("user.timezone");
> >
> >      // Java version
> > -
> > //-----------------------------------------------------------------------
> > +    //
> > -----------------------------------------------------------------------
> >      // This MUST be declared after those above as it depends on the
> >      // values being set up
> >
> >      /**
> > -     * <p>Gets the Java version as a <code>String</code> trimming leading
> > letters.</p>
> > -     *
> > -     * <p>The field will return <code>null</code> if {@link #JAVA_VERSION}
> > is <code>null</code>.</p>
> > +     * <p>
> > +     * Gets the Java version as a <code>String</code> trimming leading
> > letters.
> > +     * </p>
> > +     *
> > +     * <p>
> > +     * The field will return <code>null</code> if {@link #JAVA_VERSION} is
> > <code>null</code>.
> > +     * </p>
> >       *
> >       * @since 2.1
> >       */
> >      public static final String JAVA_VERSION_TRIMMED =
> > getJavaVersionTrimmed();
> >
> >      // Java version values
> > -
> > //-----------------------------------------------------------------------
> > +    //
> > -----------------------------------------------------------------------
> >      // These MUST be declared after the trim above as they depend on the
> >      // value being set up
> >
> >      /**
> > -     * <p>Gets the Java version as a <code>float</code>.</p>
> > -     *
> > -     * <p>Example return values:</p>
> > +     * <p>
> > +     * Gets the Java version as a <code>float</code>.
> > +     * </p>
> > +     *
> > +     * <p>
> > +     * Example return values:
> > +     * </p>
> >       * <ul>
> > -     *  <li><code>1.2f</code> for JDK 1.2
> > -     *  <li><code>1.31f</code> for JDK 1.3.1
> > +     * <li><code>1.2f</code> for Java 1.2
> > +     * <li><code>1.31f</code> for Java 1.3.1
> >       * </ul>
> > -     *
> > -     * <p>The field will return zero if {@link #JAVA_VERSION} is
> > <code>null</code>.</p>
> > +     *
> > +     * <p>
> > +     * The field will return zero if {@link #JAVA_VERSION} is
> > <code>null</code>.
> > +     * </p>
> >       *
> >       * @since 2.0
> >       */
> >      public static final float JAVA_VERSION_FLOAT = getJavaVersionAsFloat();
> >
> >      /**
> > -     * <p>Gets the Java version as an <code>int</code>.</p>
> > -     *
> > -     * <p>Example return values:</p>
> > +     * <p>
> > +     * Gets the Java version as an <code>int</code>.
> > +     * </p>
> > +     *
> > +     * <p>
> > +     * Example return values:
> > +     * </p>
> >       * <ul>
> > -     *  <li><code>120</code> for JDK 1.2
> > -     *  <li><code>131</code> for JDK 1.3.1
> > +     * <li><code>120</code> for Java 1.2
> > +     * <li><code>131</code> for Java 1.3.1
> >       * </ul>
> > -     *
> > -     * <p>The field will return zero if {@link #JAVA_VERSION} is
> > <code>null</code>.</p>
> > +     *
> > +     * <p>
> > +     * The field will return zero if {@link #JAVA_VERSION} is
> > <code>null</code>.
> > +     * </p>
> >       *
> >       * @since 2.0
> >       */
> >      public static final int JAVA_VERSION_INT = getJavaVersionAsInt();
> >
> >      // Java version checks
> > -
> > //-----------------------------------------------------------------------
> > +    //
> > -----------------------------------------------------------------------
> >      // These MUST be declared after those above as they depend on the
> >      // values being set up
> > -
> > +
> >      /**
> > -     * <p>Is <code>true</code> if this is Java version 1.1 (also 1.1.x
> > versions).</p>
> > -     *
> > -     * <p>The field will return <code>false</code> if {@link #JAVA_VERSION}
> > is
> > -     * <code>null</code>.</p>
> > +     * <p>
> > +     * Is <code>true</code> if this is Java version 1.1 (also 1.1.x
> > versions).
> > +     * </p>
> > +     *
> > +     * <p>
> > +     * The field will return <code>false</code> if {@link #JAVA_VERSION} is
> > <code>null</code>.
> > +     * </p>
> >       */
> >      public static final boolean IS_JAVA_1_1 = getJavaVersionMatches("1.1");
> >
> >      /**
> > -     * <p>Is <code>true</code> if this is Java version 1.2 (also 1.2.x
> > versions).</p>
> > -     *
> > -     * <p>The field will return <code>false</code> if {@link #JAVA_VERSION}
> > is
> > -     * <code>null</code>.</p>
> > +     * <p>
> > +     * Is <code>true</code> if this is Java version 1.2 (also 1.2.x
> > versions).
> > +     * </p>
> > +     *
> > +     * <p>
> > +     * The field will return <code>false</code> if {@link #JAVA_VERSION} is
> > <code>null</code>.
> > +     * </p>
> >       */
> >      public static final boolean IS_JAVA_1_2 = getJavaVersionMatches("1.2");
> >
> >      /**
> > -     * <p>Is <code>true</code> if this is Java version 1.3 (also 1.3.x
> > versions).</p>
> > -     *
> > -     * <p>The field will return <code>false</code> if {@link #JAVA_VERSION}
> > is
> > -     * <code>null</code>.</p>
> > -     */
> > -    public static final boolean IS_JAVA_1_3 = getJavaVersionMatches("1.3");
> > -
> > +     * <p>
> > +     * Is <code>true</code> if this is Java version 1.3 (also 1.3.x
> > versions).
> > +     * </p>
> > +     *
> > +     * <p>
> > +     * The field will return <code>false</code> if {@link #JAVA_VERSION} is
> > <code>null</code>.
> > +     * </p>
> > +     */
> > +    public static final boolean IS_JAVA_1_3 = getJavaVersionMatches("1.3");
> > +
> >      /**
> > -     * <p>Is <code>true</code> if this is Java version 1.4 (also 1.4.x
> > versions).</p>
> > -     *
> > -     * <p>The field will return <code>false</code> if {@link #JAVA_VERSION}
> > is
> > -     * <code>null</code>.</p>
> > +     * <p>
> > +     * Is <code>true</code> if this is Java version 1.4 (also 1.4.x
> > versions).
> > +     * </p>
> > +     *
> > +     * <p>
> > +     * The field will return <code>false</code> if {@link #JAVA_VERSION} is
> > <code>null</code>.
> > +     * </p>
> >       */
> >      public static final boolean IS_JAVA_1_4 = getJavaVersionMatches("1.4");
> >
> >      /**
> > -     * <p>Is <code>true</code> if this is Java version 1.5 (also 1.5.x
> > versions).</p>
> > -     *
> > -     * <p>The field will return <code>false</code> if {@link #JAVA_VERSION}
> > is
> > -     * <code>null</code>.</p>
> > +     * <p>
> > +     * Is <code>true</code> if this is Java version 1.5 (also 1.5.x
> > versions).
> > +     * </p>
> > +     *
> > +     * <p>
> > +     * The field will return <code>false</code> if {@link #JAVA_VERSION} is
> > <code>null</code>.
> > +     * </p>
> >       */
> >      public static final boolean IS_JAVA_1_5 = getJavaVersionMatches("1.5");
> >
> >      /**
> > -     * <p>Is <code>true</code> if this is Java version 1.6 (also 1.6.x
> > versions).</p>
> > -     *
> > -     * <p>The field will return <code>false</code> if {@link #JAVA_VERSION}
> > is
> > -     * <code>null</code>.</p>
> > +     * <p>
> > +     * Is <code>true</code> if this is Java version 1.6 (also 1.6.x
> > versions).
> > +     * </p>
> > +     *
> > +     * <p>
> > +     * The field will return <code>false</code> if {@link #JAVA_VERSION} is
> > <code>null</code>.
> > +     * </p>
> >       */
> >      public static final boolean IS_JAVA_1_6 = getJavaVersionMatches("1.6");
> >
> >      /**
> > -     * <p>Is <code>true</code> if this is Java version 1.7 (also 1.7.x
> > versions).</p>
> > -     *
> > -     * <p>The field will return <code>false</code> if {@link #JAVA_VERSION}
> > is
> > -     * <code>null</code>.</p>
> > +     * <p>
> > +     * Is <code>true</code> if this is Java version 1.7 (also 1.7.x
> > versions).
> > +     * </p>
> > +     *
> > +     * <p>
> > +     * The field will return <code>false</code> if {@link #JAVA_VERSION} is
> > <code>null</code>.
> > +     * </p>
> >       *
> >       * @since 3.0
> >       */
> >      public static final boolean IS_JAVA_1_7 = getJavaVersionMatches("1.7");
> >
> >      // Operating system checks
> > -
> > //-----------------------------------------------------------------------
> > +    //
> > -----------------------------------------------------------------------
> >      // These MUST be declared after those above as they depend on the
> >      // values being set up
> >      // OS names from http://www.vamphq.com/os.html
> > @@ -905,276 +1056,349 @@ public class SystemUtils {
> >      // if you want another added or a mistake corrected
> >
> >      /**
> > -     * <p>Is <code>true</code> if this is AIX.</p>
> > -     *
> > -     * <p>The field will return <code>false</code> if <code>OS_NAME</code>
> > is
> > -     * <code>null</code>.</p>
> > +     * <p>
> > +     * Is <code>true</code> if this is AIX.
> > +     * </p>
> > +     *
> > +     * <p>
> > +     * The field will return <code>false</code> if <code>OS_NAME</code> is
> > <code>null</code>.
> > +     * </p>
> >       *
> >       * @since 2.0
> >       */
> > -    public static final boolean IS_OS_AIX = getOSMatches("AIX");
> > +    public static final boolean IS_OS_AIX = getOSMatchesName("AIX");
> >
> >      /**
> > -     * <p>Is <code>true</code> if this is HP-UX.</p>
> > -     *
> > -     * <p>The field will return <code>false</code> if <code>OS_NAME</code>
> > is
> > -     * <code>null</code>.</p>
> > +     * <p>
> > +     * Is <code>true</code> if this is HP-UX.
> > +     * </p>
> > +     *
> > +     * <p>
> > +     * The field will return <code>false</code> if <code>OS_NAME</code> is
> > <code>null</code>.
> > +     * </p>
> >       *
> >       * @since 2.0
> >       */
> > -    public static final boolean IS_OS_HP_UX = getOSMatches("HP-UX");
> > +    public static final boolean IS_OS_HP_UX = getOSMatchesName("HP-UX");
> >
> >      /**
> > -     * <p>Is <code>true</code> if this is Irix.</p>
> > -     *
> > -     * <p>The field will return <code>false</code> if <code>OS_NAME</code>
> > is
> > -     * <code>null</code>.</p>
> > +     * <p>
> > +     * Is <code>true</code> if this is Irix.
> > +     * </p>
> > +     *
> > +     * <p>
> > +     * The field will return <code>false</code> if <code>OS_NAME</code> is
> > <code>null</code>.
> > +     * </p>
> >       *
> >       * @since 2.0
> >       */
> > -    public static final boolean IS_OS_IRIX = getOSMatches("Irix");
> > +    public static final boolean IS_OS_IRIX = getOSMatchesName("Irix");
> >
> >      /**
> > -     * <p>Is <code>true</code> if this is Linux.</p>
> > -     *
> > -     * <p>The field will return <code>false</code> if <code>OS_NAME</code>
> > is
> > -     * <code>null</code>.</p>
> > +     * <p>
> > +     * Is <code>true</code> if this is Linux.
> > +     * </p>
> > +     *
> > +     * <p>
> > +     * The field will return <code>false</code> if <code>OS_NAME</code> is
> > <code>null</code>.
> > +     * </p>
> >       *
> >       * @since 2.0
> >       */
> > -    public static final boolean IS_OS_LINUX = getOSMatches("Linux") ||
> > getOSMatches("LINUX");
> > +    public static final boolean IS_OS_LINUX = getOSMatchesName("Linux") ||
> > getOSMatchesName("LINUX");
> >
> >      /**
> > -     * <p>Is <code>true</code> if this is Mac.</p>
> > -     *
> > -     * <p>The field will return <code>false</code> if <code>OS_NAME</code>
> > is
> > -     * <code>null</code>.</p>
> > +     * <p>
> > +     * Is <code>true</code> if this is Mac.
> > +     * </p>
> > +     *
> > +     * <p>
> > +     * The field will return <code>false</code> if <code>OS_NAME</code> is
> > <code>null</code>.
> > +     * </p>
> >       *
> >       * @since 2.0
> >       */
> > -    public static final boolean IS_OS_MAC = getOSMatches("Mac");
> > +    public static final boolean IS_OS_MAC = getOSMatchesName("Mac");
> >
> >      /**
> > -     * <p>Is <code>true</code> if this is Mac.</p>
> > -     *
> > -     * <p>The field will return <code>false</code> if <code>OS_NAME</code>
> > is
> > -     * <code>null</code>.</p>
> > +     * <p>
> > +     * Is <code>true</code> if this is Mac.
> > +     * </p>
> > +     *
> > +     * <p>
> > +     * The field will return <code>false</code> if <code>OS_NAME</code> is
> > <code>null</code>.
> > +     * </p>
> >       *
> >       * @since 2.0
> >       */
> > -    public static final boolean IS_OS_MAC_OSX = getOSMatches("Mac OS X");
> > +    public static final boolean IS_OS_MAC_OSX = getOSMatchesName("Mac OS
> > X");
> >
> >      /**
> > -     * <p>Is <code>true</code> if this is OS/2.</p>
> > -     *
> > -     * <p>The field will return <code>false</code> if <code>OS_NAME</code>
> > is
> > -     * <code>null</code>.</p>
> > +     * <p>
> > +     * Is <code>true</code> if this is OS/2.
> > +     * </p>
> > +     *
> > +     * <p>
> > +     * The field will return <code>false</code> if <code>OS_NAME</code> is
> > <code>null</code>.
> > +     * </p>
> >       *
> >       * @since 2.0
> >       */
> > -    public static final boolean IS_OS_OS2 = getOSMatches("OS/2");
> > +    public static final boolean IS_OS_OS2 = getOSMatchesName("OS/2");
> >
> >      /**
> > -     * <p>Is <code>true</code> if this is Solaris.</p>
> > -     *
> > -     * <p>The field will return <code>false</code> if <code>OS_NAME</code>
> > is
> > -     * <code>null</code>.</p>
> > +     * <p>
> > +     * Is <code>true</code> if this is Solaris.
> > +     * </p>
> > +     *
> > +     * <p>
> > +     * The field will return <code>false</code> if <code>OS_NAME</code> is
> > <code>null</code>.
> > +     * </p>
> >       *
> >       * @since 2.0
> >       */
> > -    public static final boolean IS_OS_SOLARIS = getOSMatches("Solaris");
> > +    public static final boolean IS_OS_SOLARIS =
> > getOSMatchesName("Solaris");
> >
> >      /**
> > -     * <p>Is <code>true</code> if this is SunOS.</p>
> > -     *
> > -     * <p>The field will return <code>false</code> if <code>OS_NAME</code>
> > is
> > -     * <code>null</code>.</p>
> > +     * <p>
> > +     * Is <code>true</code> if this is SunOS.
> > +     * </p>
> > +     *
> > +     * <p>
> > +     * The field will return <code>false</code> if <code>OS_NAME</code> is
> > <code>null</code>.
> > +     * </p>
> >       *
> >       * @since 2.0
> >       */
> > -    public static final boolean IS_OS_SUN_OS = getOSMatches("SunOS");
> > +    public static final boolean IS_OS_SUN_OS = getOSMatchesName("SunOS");
> >
> >      /**
> > -     * <p>Is <code>true</code> if this is a POSIX compilant system,
> > -     * as in any of AIX, HP-UX, Irix, Linux, MacOSX, Solaris or SUN OS.</p>
> > -     *
> > -     * <p>The field will return <code>false</code> if <code>OS_NAME</code>
> > is
> > -     * <code>null</code>.</p>
> > +     * <p>
> > +     * Is <code>true</code> if this is a POSIX compilant system, as in any
> > of AIX, HP-UX, Irix, Linux, MacOSX, Solaris or SUN OS.
> > +     * </p>
> > +     *
> > +     * <p>
> > +     * The field will return <code>false</code> if <code>OS_NAME</code> is
> > <code>null</code>.
> > +     * </p>
> >       *
> >       * @since 2.1
> >       */
> > -    public static final boolean IS_OS_UNIX =
> > -        IS_OS_AIX || IS_OS_HP_UX || IS_OS_IRIX || IS_OS_LINUX ||
> > -        IS_OS_MAC_OSX || IS_OS_SOLARIS || IS_OS_SUN_OS;
> > +    public static final boolean IS_OS_UNIX = IS_OS_AIX || IS_OS_HP_UX ||
> > IS_OS_IRIX || IS_OS_LINUX || IS_OS_MAC_OSX || IS_OS_SOLARIS
> > +            || IS_OS_SUN_OS;
> >
> >      /**
> > -     * <p>Is <code>true</code> if this is Windows.</p>
> > -     *
> > -     * <p>The field will return <code>false</code> if <code>OS_NAME</code>
> > is
> > -     * <code>null</code>.</p>
> > +     * <p>
> > +     * Is <code>true</code> if this is Windows.
> > +     * </p>
> > +     *
> > +     * <p>
> > +     * The field will return <code>false</code> if <code>OS_NAME</code> is
> > <code>null</code>.
> > +     * </p>
> >       *
> >       * @since 2.0
> >       */
> > -    public static final boolean IS_OS_WINDOWS =
> > getOSMatches(OS_NAME_WINDOWS_PREFIX);
> > +    public static final boolean IS_OS_WINDOWS =
> > getOSMatchesName(OS_NAME_WINDOWS_PREFIX);
> >
> >      /**
> > -     * <p>Is <code>true</code> if this is Windows 2000.</p>
> > -     *
> > -     * <p>The field will return <code>false</code> if <code>OS_NAME</code>
> > is
> > -     * <code>null</code>.</p>
> > +     * <p>
> > +     * Is <code>true</code> if this is Windows 2000.
> > +     * </p>
> > +     *
> > +     * <p>
> > +     * The field will return <code>false</code> if <code>OS_NAME</code> is
> > <code>null</code>.
> > +     * </p>
> >       *
> >       * @since 2.0
> >       */
> >      public static final boolean IS_OS_WINDOWS_2000 =
> > getOSMatches(OS_NAME_WINDOWS_PREFIX, "5.0");
> >
> >      /**
> > -     * <p>Is <code>true</code> if this is Windows 95.</p>
> > -     *
> > -     * <p>The field will return <code>false</code> if <code>OS_NAME</code>
> > is
> > -     * <code>null</code>.</p>
> > +     * <p>
> > +     * Is <code>true</code> if this is Windows 95.
> > +     * </p>
> > +     *
> > +     * <p>
> > +     * The field will return <code>false</code> if <code>OS_NAME</code> is
> > <code>null</code>.
> > +     * </p>
> >       *
> >       * @since 2.0
> >       */
> >      public static final boolean IS_OS_WINDOWS_95 =
> > getOSMatches(OS_NAME_WINDOWS_PREFIX + " 9", "4.0");
> > -    // JDK 1.2 running on Windows98 returns 'Windows 95', hence the above
> > +    // Java 1.2 running on Windows98 returns 'Windows 95', hence the above
> >
> >      /**
> > -     * <p>Is <code>true</code> if this is Windows 98.</p>
> > -     *
> > -     * <p>The field will return <code>false</code> if <code>OS_NAME</code>
> > is
> > -     * <code>null</code>.</p>
> > +     * <p>
> > +     * Is <code>true</code> if this is Windows 98.
> > +     * </p>
> > +     *
> > +     * <p>
> > +     * The field will return <code>false</code> if <code>OS_NAME</code> is
> > <code>null</code>.
> > +     * </p>
> >       *
> >       * @since 2.0
> >       */
> >      public static final boolean IS_OS_WINDOWS_98 =
> > getOSMatches(OS_NAME_WINDOWS_PREFIX + " 9", "4.1");
> > -    // JDK 1.2 running on Windows98 returns 'Windows 95', hence the above
> > +    // Java 1.2 running on Windows98 returns 'Windows 95', hence the above
> >
> >      /**
> > -     * <p>Is <code>true</code> if this is Windows ME.</p>
> > -     *
> > -     * <p>The field will return <code>false</code> if <code>OS_NAME</code>
> > is
> > -     * <code>null</code>.</p>
> > +     * <p>
> > +     * Is <code>true</code> if this is Windows ME.
> > +     * </p>
> > +     *
> > +     * <p>
> > +     * The field will return <code>false</code> if <code>OS_NAME</code> is
> > <code>null</code>.
> > +     * </p>
> >       *
> >       * @since 2.0
> >       */
> >      public static final boolean IS_OS_WINDOWS_ME =
> > getOSMatches(OS_NAME_WINDOWS_PREFIX, "4.9");
> > -    // JDK 1.2 running on WindowsME may return 'Windows 95', hence the
> > above
> > +    // Java 1.2 running on WindowsME may return 'Windows 95', hence the
> > above
> >
> >      /**
> > -     * <p>Is <code>true</code> if this is Windows NT.</p>
> > -     *
> > -     * <p>The field will return <code>false</code> if <code>OS_NAME</code>
> > is
> > -     * <code>null</code>.</p>
> > +     * <p>
> > +     * Is <code>true</code> if this is Windows NT.
> > +     * </p>
> > +     *
> > +     * <p>
> > +     * The field will return <code>false</code> if <code>OS_NAME</code> is
> > <code>null</code>.
> > +     * </p>
> >       *
> >       * @since 2.0
> >       */
> > -    public static final boolean IS_OS_WINDOWS_NT =
> > getOSMatches(OS_NAME_WINDOWS_PREFIX + " NT");
> > -    // Windows 2000 returns 'Windows 2000' but may suffer from same JDK1.2
> > problem
> > +    public static final boolean IS_OS_WINDOWS_NT =
> > getOSMatchesName(OS_NAME_WINDOWS_PREFIX + " NT");
> > +    // Windows 2000 returns 'Windows 2000' but may suffer from same Java1.2
> > problem
> >
> >      /**
> > -     * <p>Is <code>true</code> if this is Windows XP.</p>
> > -     *
> > -     * <p>The field will return <code>false</code> if <code>OS_NAME</code>
> > is
> > -     * <code>null</code>.</p>
> > +     * <p>
> > +     * Is <code>true</code> if this is Windows XP.
> > +     * </p>
> > +     *
> > +     * <p>
> > +     * The field will return <code>false</code> if <code>OS_NAME</code> is
> > <code>null</code>.
> > +     * </p>
> >       *
> >       * @since 2.0
> >       */
> >      public static final boolean IS_OS_WINDOWS_XP =
> > getOSMatches(OS_NAME_WINDOWS_PREFIX, "5.1");
> >
> > -
> > //-----------------------------------------------------------------------
> > +    //
> > -----------------------------------------------------------------------
> >      /**
> > -     * <p>Is <code>true</code> if this is Windows Vista.</p>
> > -     *
> > -     * <p>The field will return <code>false</code> if <code>OS_NAME</code>
> > is
> > -     * <code>null</code>.</p>
> > -     *
> > +     * <p>
> > +     * Is <code>true</code> if this is Windows Vista.
> > +     * </p>
> > +     *
> > +     * <p>
> > +     * The field will return <code>false</code> if <code>OS_NAME</code> is
> > <code>null</code>.
> > +     * </p>
> > +     *
> >       * @since 2.4
> >       */
> > -    public static final boolean IS_OS_WINDOWS_VISTA =
> > getOSMatches(OS_NAME_WINDOWS_PREFIX, "6.0");
> > +    public static final boolean IS_OS_WINDOWS_VISTA =
> > getOSMatches(OS_NAME_WINDOWS_PREFIX, "6.0");
> >
> >      /**
> > -     * <p>Is <code>true</code> if this is Windows 7.</p>
> > -     *
> > -     * <p>The field will return <code>false</code> if <code>OS_NAME</code>
> > is
> > -     * <code>null</code>.</p>
> > -     *
> > +     * <p>
> > +     * Is <code>true</code> if this is Windows 7.
> > +     * </p>
> > +     *
> > +     * <p>
> > +     * The field will return <code>false</code> if <code>OS_NAME</code> is
> > <code>null</code>.
> > +     * </p>
> > +     *
> >       * @since 3.0
> >       */
> > -    public static final boolean IS_OS_WINDOWS_7 =
> > getOSMatches(OS_NAME_WINDOWS_PREFIX, "6.1");
> > +    public static final boolean IS_OS_WINDOWS_7 =
> > getOSMatches(OS_NAME_WINDOWS_PREFIX, "6.1");
> >
> > -
> > //-----------------------------------------------------------------------
> >      /**
> > -     * <p>SystemUtils instances should NOT be constructed in standard
> > -     * programming. Instead, the class should be used as
> > -     * <code>SystemUtils.FILE_SEPARATOR</code>.</p>
> > -     *
> > -     * <p>This constructor is public to permit tools that require a
> > JavaBean
> > -     * instance to operate.</p>
> > +     * <p>
> > +     * Gets the Java home directory as a <code>File</code>.
> > +     * </p>
> > +     *
> > +     * @return a directory
> > +     * @throws SecurityException
> > +     *             if a security manager exists and its
> > <code>checkPropertyAccess</code> method doesn't allow access to the
> > specified system
> > +     *             property.
> > +     * @see System#getProperty(String)
> > +     * @since 2.1
> >       */
> > -    public SystemUtils() {
> > -        super();
> > +    public static File getJavaHome() {
> > +        return new File(System.getProperty(JAVA_HOME_KEY));
> >      }
> > -
> > -
> > //-----------------------------------------------------------------------
> > +
> >      /**
> > -     * <p>Gets the Java version number as a <code>float</code>.</p>
> > -     *
> > -     * <p>Example return values:</p>
> > +     * <p>
> > +     * Gets the Java IO temporary directory as a <code>File</code>.
> > +     * </p>
> > +     *
> > +     * @return a directory
> > +     * @throws SecurityException
> > +     *             if a security manager exists and its
> > <code>checkPropertyAccess</code> method doesn't allow access to the
> > specified system
> > +     *             property.
> > +     * @see System#getProperty(String)
> > +     * @since 2.1
> > +     */
> > +    public static File getJavaIoTmpDir() {
> > +        return new File(System.getProperty(JAVA_IO_TMPDIR_KEY));
> > +    }
> > +
> > +    /**
> > +     * <p>
> > +     * Gets the Java version number as a <code>float</code>.
> > +     * </p>
> > +     *
> > +     * <p>
> > +     * Example return values:
> > +     * </p>
> >       * <ul>
> > -     *  <li><code>1.2f</code> for JDK 1.2
> > -     *  <li><code>1.31f</code> for JDK 1.3.1
> > +     * <li><code>1.2f</code> for Java 1.2</li>
> > +     * <li><code>1.31f</code> for Java 1.3.1</li>
> > +     * <li><code>1.6f</code> for Java 1.6.0_20</li>
> >       * </ul>
> >       *
> > -     * <p>Patch releases are not reported.
> > -     * Zero is returned if {@link #JAVA_VERSION_TRIMMED} is
> > <code>null</code>.</p>
> > +     * <p>
> > +     * Patch releases are not reported.
> > +     * </p>
> >       *
> > -     * @return the version, for example 1.31f for JDK 1.3.1
> > +     * @return the version, for example 1.31f for Java 1.3.1
> >       */
> >      private static float getJavaVersionAsFloat() {
> > -        if (JAVA_VERSION_TRIMMED == null) {
> > -            return 0f;
> > -        }
> > -        String str = JAVA_VERSION_TRIMMED.substring(0, 3);
> > -        if (JAVA_VERSION_TRIMMED.length() >= 5) {
> > -            str = str + JAVA_VERSION_TRIMMED.substring(4, 5);
> > -        }
> > -        try {
> > -            return Float.parseFloat(str);
> > -        } catch (Exception ex) {
> > -            return 0;
> > -        }
> > +        return
> > toVersionFloat(toJavaVersionIntArray(SystemUtils.JAVA_VERSION,
> > JAVA_VERSION_TRIM_SIZE));
> >      }
> > -
> > +
> >      /**
> > -     * <p>Gets the Java version number as an <code>int</code>.</p>
> > -     *
> > -     * <p>Example return values:</p>
> > +     * <p>
> > +     * Gets the Java version number as an <code>int</code>.
> > +     * </p>
> > +     *
> > +     * <p>
> > +     * Example return values:
> > +     * </p>
> >       * <ul>
> > -     *  <li><code>120</code> for JDK 1.2
> > -     *  <li><code>131</code> for JDK 1.3.1
> > +     * <li><code>120</code> for Java 1.2</li>
> > +     * <li><code>131</code> for Java 1.3.1</li>
> > +     * <li><code>160</code> for Java 1.6.0_20</li>
> >       * </ul>
> >       *
> > -     * <p>Patch releases are not reported.
> > -     * Zero is returned if {@link #JAVA_VERSION_TRIMMED} is
> > <code>null</code>.</p>
> > +     * <p>
> > +     * Patch releases are not reported.
> > +     * </p>
> >       *
> > -     * @return the version, for example 131 for JDK 1.3.1
> > +     * @return the version, for example 131 for Java 1.3.1
> >       */
> >      private static int getJavaVersionAsInt() {
> > -        if (JAVA_VERSION_TRIMMED == null) {
> > -            return 0;
> > -        }
> > -        String str = JAVA_VERSION_TRIMMED.substring(0, 1);
> > -        str = str + JAVA_VERSION_TRIMMED.substring(2, 3);
> > -        if (JAVA_VERSION_TRIMMED.length() >= 5) {
> > -            str = str + JAVA_VERSION_TRIMMED.substring(4, 5);
> > -        } else {
> > -            str = str + "0";
> > -        }
> > -        try {
> > -            return Integer.parseInt(str);
> > -        } catch (Exception ex) {
> > -            return 0;
> > -        }
> > +        return toVersionInt(toJavaVersionIntArray(SystemUtils.JAVA_VERSION,
> > JAVA_VERSION_TRIM_SIZE));
> > +    }
> > +
> > +    /**
> > +     * <p>
> > +     * Decides if the Java version matches.
> > +     * </p>
> > +     *
> > +     * @param versionPrefix
> > +     *            the prefix for the java version
> > +     * @return true if matches, or false if not or can't determine
> > +     */
> > +    private static boolean getJavaVersionMatches(String versionPrefix) {
> > +        return isJavaVersionMatch(JAVA_VERSION_TRIMMED, versionPrefix);
> >      }
> >
> >      /**
> > @@ -1195,54 +1419,42 @@ public class SystemUtils {
> >      }
> >
> >      /**
> > -     * <p>Decides if the java version matches.</p>
> > +     * Decides if the operating system matches.
> >       *
> > -     * @param versionPrefix  the prefix for the java version
> > +     * @param osNamePrefix
> > +     *            the prefix for the os name
> > +     * @param osVersionPrefix
> > +     *            the prefix for the version
> >       * @return true if matches, or false if not or can't determine
> >       */
> > -    private static boolean getJavaVersionMatches(String versionPrefix) {
> > -        if (JAVA_VERSION_TRIMMED == null) {
> > -            return false;
> > -        }
> > -        return JAVA_VERSION_TRIMMED.startsWith(versionPrefix);
> > -    }
> > -
> > -    /**
> > -     * <p>Decides if the operating system matches.</p>
> > -     *
> > -     * @param osNamePrefix  the prefix for the os name
> > -     * @return true if matches, or false if not or can't determine
> > -     */
> > -    private static boolean getOSMatches(String osNamePrefix) {
> > -        if (OS_NAME == null) {
> > -            return false;
> > -        }
> > -        return OS_NAME.startsWith(osNamePrefix);
> > -    }
> > +    private static boolean getOSMatches(String osNamePrefix, String
> > osVersionPrefix) {
> > +        return isOSMatch(OS_NAME, OS_VERSION, osNamePrefix,
> > osVersionPrefix);
> > +    }
> >
> >      /**
> > -     * <p>Decides if the operating system matches.</p>
> > +     * Decides if the operating system matches.
> >       *
> > -     * @param osNamePrefix  the prefix for the os name
> > -     * @param osVersionPrefix  the prefix for the version
> > +     * @param osNamePrefix
> > +     *            the prefix for the os name
> >       * @return true if matches, or false if not or can't determine
> >       */
> > -    private static boolean getOSMatches(String osNamePrefix, String
> > osVersionPrefix) {
> > -        if (OS_NAME == null || OS_VERSION == null) {
> > -            return false;
> > -        }
> > -        return OS_NAME.startsWith(osNamePrefix) &&
> > OS_VERSION.startsWith(osVersionPrefix);
> > -    }
> > +    private static boolean getOSMatchesName(String osNamePrefix) {
> > +        return isOSNameMatch(OS_NAME, osNamePrefix);
> > +    }
> >
> > -
> > //-----------------------------------------------------------------------
> > +    //
> > -----------------------------------------------------------------------
> >      /**
> > -     * <p>Gets a System property, defaulting to <code>null</code> if the
> > property
> > -     * cannot be read.</p>
> > -     *
> > -     * <p>If a <code>SecurityException</code> is caught, the return
> > -     * value is <code>null</code> and a message is written to
> > <code>System.err</code>.</p>
> > +     * <p>
> > +     * Gets a System property, defaulting to <code>null</code> if the
> > property cannot be read.
> > +     * </p>
> >       *
> > -     * @param property the system property name
> > +     * <p>
> > +     * If a <code>SecurityException</code> is caught, the return value is
> > <code>null</code> and a message is written to
> > +     * <code>System.err</code>.
> > +     * </p>
> > +     *
> > +     * @param property
> > +     *            the system property name
> >       * @return the system property value or <code>null</code> if a security
> > problem occurs
> >       */
> >      private static String getSystemProperty(String property) {
> > @@ -1250,43 +1462,94 @@ public class SystemUtils {
> >              return System.getProperty(property);
> >          } catch (SecurityException ex) {
> >              // we are not allowed to look at this property
> > -            System.err.println(
> > -                "Caught a SecurityException reading the system property '"
> > + property
> > -                + "'; the SystemUtils property value will default to null."
> > -            );
> > +            System.err.println("Caught a SecurityException reading the
> > system property '" + property
> > +                    + "'; the SystemUtils property value will default to
> > null.");
> >              return null;
> >          }
> >      }
> > -
> > +
> > +    /**
> > +     * <p>
> > +     * Gets the user directory as a <code>File</code>.
> > +     * </p>
> > +     *
> > +     * @return a directory
> > +     * @throws SecurityException
> > +     *             if a security manager exists and its
> > <code>checkPropertyAccess</code> method doesn't allow access to the
> > specified system
> > +     *             property.
> > +     * @see System#getProperty(String)
> > +     * @since 2.1
> > +     */
> > +    public static File getUserDir() {
> > +        return new File(System.getProperty(USER_DIR_KEY));
> > +    }
> > +
> >      /**
> > -     * <p>Is the Java version at least the requested version.</p>
> > -     *
> > -     * <p>Example input:</p>
> > +     * <p>
> > +     * Gets the user home directory as a <code>File</code>.
> > +     * </p>
> > +     *
> > +     * @return a directory
> > +     * @throws SecurityException
> > +     *             if a security manager exists and its
> > <code>checkPropertyAccess</code> method doesn't allow access to the
> > specified system
> > +     *             property.
> > +     * @see System#getProperty(String)
> > +     * @since 2.1
> > +     */
> > +    public static File getUserHome() {
> > +        return new File(System.getProperty(USER_HOME_KEY));
> > +    }
> > +
> > +    /**
> > +     * Returns whether the {@link #JAVA_AWT_HEADLESS} value is
> > <code>true</code>.
> > +     *
> > +     * @return <code>true</code> if <code>JAVA_AWT_HEADLESS</code> is
> > <code>"true"</code>, <code>false</code> otherwise.
> > +     *
> > +     * @see #JAVA_AWT_HEADLESS
> > +     * @since 2.1
> > +     * @since Java 1.4
> > +     */
> > +    public static boolean isJavaAwtHeadless() {
> > +        return JAVA_AWT_HEADLESS != null ?
> > JAVA_AWT_HEADLESS.equals(Boolean.TRUE.toString()) : false;
> > +    }
> > +
> > +    /**
> > +     * <p>
> > +     * Is the Java version at least the requested version.
> > +     * </p>
> > +     *
> > +     * <p>
> > +     * Example input:
> > +     * </p>
> >       * <ul>
> > -     *  <li><code>1.2f</code> to test for JDK 1.2</li>
> > -     *  <li><code>1.31f</code> to test for JDK 1.3.1</li>
> > +     * <li><code>1.2f</code> to test for Java 1.2</li>
> > +     * <li><code>1.31f</code> to test for Java 1.3.1</li>
> >       * </ul>
> >       *
> > -     * @param requiredVersion  the required version, for example 1.31f
> > -     * @return <code>true</code> if the actual version is equal or greater
> > -     *  than the required version
> > +     * @param requiredVersion
> > +     *            the required version, for example 1.31f
> > +     * @return <code>true</code> if the actual version is equal or greater
> > than the required version
> >       */
> >      public static boolean isJavaVersionAtLeast(float requiredVersion) {
> >          return JAVA_VERSION_FLOAT >= requiredVersion;
> >      }
> > -
> > +
> >      /**
> > -     * <p>Is the Java version at least the requested version.</p>
> > -     *
> > -     * <p>Example input:</p>
> > +     * <p>
> > +     * Is the Java version at least the requested version.
> > +     * </p>
> > +     *
> > +     * <p>
> > +     * Example input:
> > +     * </p>
> >       * <ul>
> > -     *  <li><code>120</code> to test for JDK 1.2 or greater</li>
> > -     *  <li><code>131</code> to test for JDK 1.3.1 or greater</li>
> > +     * <li><code>120</code> to test for Java 1.2 or greater</li>
> > +     * <li><code>131</code> to test for Java 1.3.1 or greater</li>
> >       * </ul>
> >       *
> > -     * @param requiredVersion  the required version, for example 131
> >
> > [... 323 lines stripped ...]
> >
> >
> > --------------- Weitergeleitete Nachricht (Ende)
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
> > For additional commands, e-mail: dev-help@commons.apache.org