scolebourne 2004/11/11 16:48:41
Modified: lang/src/java/org/apache/commons/lang SystemUtils.java
lang/src/test/org/apache/commons/lang SystemUtilsTest.java
lang project.xml
Log:
Handle Java version with text prefix, as found on HP-UX
bug 32123, from Jason Gritman
Revision Changes Path
1.38 +48 -16
jakarta-commons/lang/src/java/org/apache/commons/lang/SystemUtils.java
Index: SystemUtils.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/lang/src/java/org/apache/commons/lang/SystemUtils.java,v
retrieving revision 1.37
retrieving revision 1.38
diff -u -r1.37 -r1.38
--- SystemUtils.java 6 Nov 2004 01:27:59 -0000 1.37
+++ SystemUtils.java 12 Nov 2004 00:48:41 -0000 1.38
@@ -32,6 +32,7 @@
* @author Michael Becke
* @author Tetsuya Kaneuchi
* @author Rafal Krupinski
+ * @author Jason Gritman
* @since 1.0
* @version $Id$
*/
@@ -782,9 +783,23 @@
// Java version
//-----------------------------------------------------------------------
- // These MUST be declared after those above as they depend on the
+ // 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 [EMAIL PROTECTED]
#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>
*
@@ -1086,17 +1101,17 @@
* </ul>
*
* <p>Patch releases are not reported.
- * Zero is returned if [EMAIL PROTECTED] #JAVA_VERSION} is
<code>null</code>.</p>
+ * Zero is returned if [EMAIL PROTECTED] #JAVA_VERSION_TRIMMED} is
<code>null</code>.</p>
*
* @return the version, for example 1.31f for JDK 1.3.1
*/
private static float getJavaVersionAsFloat() {
- if (JAVA_VERSION == null) {
+ if (JAVA_VERSION_TRIMMED == null) {
return 0f;
}
- String str = JAVA_VERSION.substring(0, 3);
- if (JAVA_VERSION.length() >= 5) {
- str = str + JAVA_VERSION.substring(4, 5);
+ String str = JAVA_VERSION_TRIMMED.substring(0, 3);
+ if (JAVA_VERSION_TRIMMED.length() >= 5) {
+ str = str + JAVA_VERSION_TRIMMED.substring(4, 5);
}
return Float.parseFloat(str);
}
@@ -1111,18 +1126,18 @@
* </ul>
*
* <p>Patch releases are not reported.
- * Zero is returned if [EMAIL PROTECTED] #JAVA_VERSION} is
<code>null</code>.</p>
+ * Zero is returned if [EMAIL PROTECTED] #JAVA_VERSION_TRIMMED} is
<code>null</code>.</p>
*
* @return the version, for example 131 for JDK 1.3.1
*/
private static int getJavaVersionAsInt() {
- if (JAVA_VERSION == null) {
+ if (JAVA_VERSION_TRIMMED == null) {
return 0;
}
- String str = JAVA_VERSION.substring(0, 1);
- str = str + JAVA_VERSION.substring(2, 3);
- if (JAVA_VERSION.length() >= 5) {
- str = str + JAVA_VERSION.substring(4, 5);
+ 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";
}
@@ -1130,16 +1145,33 @@
}
/**
+ * Trims the text of the java version to start with numbers.
+ *
+ * @return the trimmed java version
+ */
+ private static String getJavaVersionTrimmed() {
+ if (JAVA_VERSION != null) {
+ for (int i = 0; i < JAVA_VERSION.length(); i++) {
+ char ch = JAVA_VERSION.charAt(i);
+ if (ch >= '0' && ch <= '9') {
+ return JAVA_VERSION.substring(i);
+ }
+ }
+ }
+ return null;
+ }
+
+ /**
* <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) {
- if (JAVA_VERSION == null) {
+ if (JAVA_VERSION_TRIMMED == null) {
return false;
}
- return JAVA_VERSION.startsWith(versionPrefix);
+ return JAVA_VERSION_TRIMMED.startsWith(versionPrefix);
}
/**
1.11 +77 -35
jakarta-commons/lang/src/test/org/apache/commons/lang/SystemUtilsTest.java
Index: SystemUtilsTest.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/lang/src/test/org/apache/commons/lang/SystemUtilsTest.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- SystemUtilsTest.java 25 Feb 2004 00:25:29 -0000 1.10
+++ SystemUtilsTest.java 12 Nov 2004 00:48:41 -0000 1.11
@@ -51,6 +51,8 @@
//-----------------------------------------------------------------------
private String JAVA_VERSION;
+ private String JAVA_VERSION_TRIMMED;
+
private String OS_NAME;
private String OS_VERSION;
@@ -60,51 +62,41 @@
}
/**
- * <p>
- * Get the Java version number as a <code>float</code>.
- * </p>
- *
- * <p>
- * Example output:
- * </p>
+ * <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 JDK 1.2
+ * <li><code>1.31f</code> for JDK 1.3.1
* </ul>
*
- * <p>
- * Patch releases are not reported. Zero is returned if JAVA_VERSION is
<code>null</code>.
- * </p>
+ * <p>Patch releases are not reported.
+ * Zero is returned if [EMAIL PROTECTED] #JAVA_VERSION_TRIMMED} is
<code>null</code>.</p>
*
* @return the version, for example 1.31f for JDK 1.3.1
*/
private float getJavaVersionAsFloat() {
- if (JAVA_VERSION == null) {
+ if (JAVA_VERSION_TRIMMED == null) {
return 0f;
}
- String str = JAVA_VERSION.substring(0, 3);
- if (JAVA_VERSION.length() >= 5) {
- str = str + JAVA_VERSION.substring(4, 5);
+ String str = JAVA_VERSION_TRIMMED.substring(0, 3);
+ if (JAVA_VERSION_TRIMMED.length() >= 5) {
+ str = str + JAVA_VERSION_TRIMMED.substring(4, 5);
}
return Float.parseFloat(str);
}
/**
- * <p>
- * Get the Java version number as an <code>int</code>.
- * </p>
- *
- * <p>
- * Example output:
- * </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 JDK 1.2
+ * <li><code>131</code> for JDK 1.3.1
* </ul>
*
- * <p>
- * Patch releases are not reported. Zero is returned if JAVA_VERSION is
<code>null</code>.
- * </p>
+ * <p>Patch releases are not reported.
+ * Zero is returned if [EMAIL PROTECTED] #JAVA_VERSION_TRIMMED} is
<code>null</code>.</p>
*
* @return the version, for example 131 for JDK 1.3.1
*/
@@ -112,10 +104,10 @@
if (JAVA_VERSION == null) {
return 0;
}
- String str = JAVA_VERSION.substring(0, 1);
- str = str + JAVA_VERSION.substring(2, 3);
- if (JAVA_VERSION.length() >= 5) {
- str = str + JAVA_VERSION.substring(4, 5);
+ 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";
}
@@ -123,6 +115,23 @@
}
/**
+ * Trims the text of the java version to start with numbers.
+ *
+ * @return the trimmed java version
+ */
+ private String getJavaVersionTrimmed() {
+ if (JAVA_VERSION != null) {
+ for (int i = 0; i < JAVA_VERSION.length(); i++) {
+ char ch = JAVA_VERSION.charAt(i);
+ if (ch >= '0' && ch <= '9') {
+ return JAVA_VERSION.substring(i);
+ }
+ }
+ }
+ return null;
+ }
+
+ /**
* Decides if the java version matches.
*
* @param versionPrefix
@@ -130,10 +139,10 @@
* @return true if matches, or false if not or can't determine
*/
private boolean getJavaVersionMatches(String versionPrefix) {
- if (JAVA_VERSION == null) {
+ if (JAVA_VERSION_TRIMMED == null) {
return false;
}
- return JAVA_VERSION.startsWith(versionPrefix);
+ return JAVA_VERSION_TRIMMED.startsWith(versionPrefix);
}
/**
@@ -286,44 +295,68 @@
public void testJavaVersionAsFloat() {
JAVA_VERSION = null;
+ JAVA_VERSION_TRIMMED = getJavaVersionTrimmed();
assertEquals(0f, getJavaVersionAsFloat(), 0.000001f);
JAVA_VERSION = "1.1";
+ JAVA_VERSION_TRIMMED = getJavaVersionTrimmed();
assertEquals(1.1f, getJavaVersionAsFloat(), 0.000001f);
JAVA_VERSION = "1.2";
+ JAVA_VERSION_TRIMMED = getJavaVersionTrimmed();
assertEquals(1.2f, getJavaVersionAsFloat(), 0.000001f);
JAVA_VERSION = "1.3.0";
+ JAVA_VERSION_TRIMMED = getJavaVersionTrimmed();
assertEquals(1.3f, getJavaVersionAsFloat(), 0.000001f);
JAVA_VERSION = "1.3.1";
+ JAVA_VERSION_TRIMMED = getJavaVersionTrimmed();
assertEquals(1.31f, getJavaVersionAsFloat(), 0.000001f);
JAVA_VERSION = "1.4.0";
+ JAVA_VERSION_TRIMMED = getJavaVersionTrimmed();
assertEquals(1.4f, getJavaVersionAsFloat(), 0.000001f);
JAVA_VERSION = "1.4.1";
+ JAVA_VERSION_TRIMMED = getJavaVersionTrimmed();
assertEquals(1.41f, getJavaVersionAsFloat(), 0.000001f);
JAVA_VERSION = "1.5.0";
+ JAVA_VERSION_TRIMMED = getJavaVersionTrimmed();
assertEquals(1.5f, getJavaVersionAsFloat(), 0.000001f);
JAVA_VERSION = "1.6.0";
+ JAVA_VERSION_TRIMMED = getJavaVersionTrimmed();
assertEquals(1.6f, getJavaVersionAsFloat(), 0.000001f);
+ JAVA_VERSION = "JavaVM-1.3.1"; //HP-UX
+ JAVA_VERSION_TRIMMED = getJavaVersionTrimmed();
+ assertEquals(1.31f, getJavaVersionAsFloat(), 0.000001f);
}
public void testJavaVersionAsInt() {
JAVA_VERSION = null;
+ JAVA_VERSION_TRIMMED = getJavaVersionTrimmed();
assertEquals(0, getJavaVersionAsInt());
JAVA_VERSION = "1.1";
+ JAVA_VERSION_TRIMMED = getJavaVersionTrimmed();
assertEquals(110, getJavaVersionAsInt());
JAVA_VERSION = "1.2";
+ JAVA_VERSION_TRIMMED = getJavaVersionTrimmed();
assertEquals(120, getJavaVersionAsInt());
JAVA_VERSION = "1.3.0";
+ JAVA_VERSION_TRIMMED = getJavaVersionTrimmed();
assertEquals(130, getJavaVersionAsInt());
JAVA_VERSION = "1.3.1";
+ JAVA_VERSION_TRIMMED = getJavaVersionTrimmed();
assertEquals(131, getJavaVersionAsInt());
JAVA_VERSION = "1.4.0";
+ JAVA_VERSION_TRIMMED = getJavaVersionTrimmed();
assertEquals(140, getJavaVersionAsInt());
JAVA_VERSION = "1.4.1";
+ JAVA_VERSION_TRIMMED = getJavaVersionTrimmed();
assertEquals(141, getJavaVersionAsInt());
JAVA_VERSION = "1.5.0";
+ JAVA_VERSION_TRIMMED = getJavaVersionTrimmed();
assertEquals(150, getJavaVersionAsInt());
JAVA_VERSION = "1.6.0";
+ JAVA_VERSION_TRIMMED = getJavaVersionTrimmed();
assertEquals(160, getJavaVersionAsInt());
+ JAVA_VERSION = "JavaVM-1.3.1"; //HP-UX
+ JAVA_VERSION_TRIMMED = getJavaVersionTrimmed();
+ assertEquals(131, getJavaVersionAsInt());
}
public void testJavaVersionAtLeastFloat() {
@@ -347,54 +380,63 @@
//-----------------------------------------------------------------------
public void testJavaVersionMatches() {
JAVA_VERSION = null;
+ JAVA_VERSION_TRIMMED = getJavaVersionTrimmed();
assertEquals(false, getJavaVersionMatches("1.1"));
assertEquals(false, getJavaVersionMatches("1.2"));
assertEquals(false, getJavaVersionMatches("1.3"));
assertEquals(false, getJavaVersionMatches("1.4"));
assertEquals(false, getJavaVersionMatches("1.5"));
JAVA_VERSION = "1.1";
+ JAVA_VERSION_TRIMMED = getJavaVersionTrimmed();
assertEquals(true, getJavaVersionMatches("1.1"));
assertEquals(false, getJavaVersionMatches("1.2"));
assertEquals(false, getJavaVersionMatches("1.3"));
assertEquals(false, getJavaVersionMatches("1.4"));
assertEquals(false, getJavaVersionMatches("1.5"));
JAVA_VERSION = "1.2";
+ JAVA_VERSION_TRIMMED = getJavaVersionTrimmed();
assertEquals(false, getJavaVersionMatches("1.1"));
assertEquals(true, getJavaVersionMatches("1.2"));
assertEquals(false, getJavaVersionMatches("1.3"));
assertEquals(false, getJavaVersionMatches("1.4"));
assertEquals(false, getJavaVersionMatches("1.5"));
JAVA_VERSION = "1.3.0";
+ JAVA_VERSION_TRIMMED = getJavaVersionTrimmed();
assertEquals(false, getJavaVersionMatches("1.1"));
assertEquals(false, getJavaVersionMatches("1.2"));
assertEquals(true, getJavaVersionMatches("1.3"));
assertEquals(false, getJavaVersionMatches("1.4"));
assertEquals(false, getJavaVersionMatches("1.5"));
JAVA_VERSION = "1.3.1";
+ JAVA_VERSION_TRIMMED = getJavaVersionTrimmed();
assertEquals(false, getJavaVersionMatches("1.1"));
assertEquals(false, getJavaVersionMatches("1.2"));
assertEquals(true, getJavaVersionMatches("1.3"));
assertEquals(false, getJavaVersionMatches("1.4"));
assertEquals(false, getJavaVersionMatches("1.5"));
JAVA_VERSION = "1.4.0";
+ JAVA_VERSION_TRIMMED = getJavaVersionTrimmed();
assertEquals(false, getJavaVersionMatches("1.1"));
assertEquals(false, getJavaVersionMatches("1.2"));
assertEquals(false, getJavaVersionMatches("1.3"));
assertEquals(true, getJavaVersionMatches("1.4"));
assertEquals(false, getJavaVersionMatches("1.5"));
JAVA_VERSION = "1.4.1";
+ JAVA_VERSION_TRIMMED = getJavaVersionTrimmed();
assertEquals(false, getJavaVersionMatches("1.1"));
assertEquals(false, getJavaVersionMatches("1.2"));
assertEquals(false, getJavaVersionMatches("1.3"));
assertEquals(true, getJavaVersionMatches("1.4"));
assertEquals(false, getJavaVersionMatches("1.5"));
JAVA_VERSION = "1.5.0";
+ JAVA_VERSION_TRIMMED = getJavaVersionTrimmed();
assertEquals(false, getJavaVersionMatches("1.1"));
assertEquals(false, getJavaVersionMatches("1.2"));
assertEquals(false, getJavaVersionMatches("1.3"));
assertEquals(false, getJavaVersionMatches("1.4"));
assertEquals(true, getJavaVersionMatches("1.5"));
JAVA_VERSION = "1.6.0";
+ JAVA_VERSION_TRIMMED = getJavaVersionTrimmed();
assertEquals(false, getJavaVersionMatches("1.1"));
assertEquals(false, getJavaVersionMatches("1.2"));
assertEquals(false, getJavaVersionMatches("1.3"));
1.37 +3 -0 jakarta-commons/lang/project.xml
Index: project.xml
===================================================================
RCS file: /home/cvs/jakarta-commons/lang/project.xml,v
retrieving revision 1.36
retrieving revision 1.37
diff -u -r1.36 -r1.37
--- project.xml 13 Jul 2004 12:46:02 -0000 1.36
+++ project.xml 12 Nov 2004 00:48:41 -0000 1.37
@@ -222,6 +222,9 @@
<name>Pete Gieser</name>
</contributor>
<contributor>
+ <name>Jason Gritman</name>
+ </contributor>
+ <contributor>
<name>Matthew Hawthorne</name>
</contributor>
<contributor>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]