commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Gary Gregory <GGreg...@seagullsoftware.com>
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
Date Fri, 28 May 2010 16:49:40 GMT
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

Mime
View raw message