From e56332a3202fcbc18d77e7c5562c366ca9a8fb6a Mon Sep 17 00:00:00 2001 From: Benedikt Ritter Date: Fri, 3 Apr 2015 12:01:59 +0000 Subject: [PATCH] LANG-794: SystemUtils.IS_OS_WINDOWS_2008, VISTA are incorrect. This also fixes #60 from github. Thanks to Timo Kockert. git-svn-id: https://svn.apache.org/repos/asf/commons/proper/lang/trunk@1671040 13f79535-47bb-0310-9956-ffa450edef68 --- RELEASE-NOTES.txt | 2 + src/changes/changes.xml | 1 + .../org/apache/commons/lang3/SystemUtils.java | 38 +++++++++++-------- 3 files changed, 26 insertions(+), 15 deletions(-) diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt index 6adf6a2762a..419c3f274ca 100644 --- a/RELEASE-NOTES.txt +++ b/RELEASE-NOTES.txt @@ -60,6 +60,8 @@ o LANG-1045: Add method MethodUtils.invokeMethod(Object, String) FIXED BUGS ============ +o LANG-794: SystemUtils.IS_OS_WINDOWS_2008, VISTA are incorrect. Thanks to + Timo Kockert. o LANG-1104: Parse test fails for TimeZone America/Sao_Paulo o LANG-948: Exception while using ExtendedMessageFormat and escaping braces. Thanks to Andrey Khobnya. diff --git a/src/changes/changes.xml b/src/changes/changes.xml index 84b256b86be..d798fedd907 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -22,6 +22,7 @@ + SystemUtils.IS_OS_WINDOWS_2008, VISTA are incorrect Parse test fails for TimeZone America/Sao_Paulo Add SystemUtils.IS_JAVA_1_9 Make logic for comparing OS versions in SystemUtils smarter diff --git a/src/main/java/org/apache/commons/lang3/SystemUtils.java b/src/main/java/org/apache/commons/lang3/SystemUtils.java index c23450b195e..aa25dc9cb6d 100644 --- a/src/main/java/org/apache/commons/lang3/SystemUtils.java +++ b/src/main/java/org/apache/commons/lang3/SystemUtils.java @@ -1150,7 +1150,7 @@ public class SystemUtils { * * @since 2.0 */ - public static final boolean IS_OS_WINDOWS_2000 = getOSMatches(OS_NAME_WINDOWS_PREFIX, "5.0"); + public static final boolean IS_OS_WINDOWS_2000 = getOSMatchesName(OS_NAME_WINDOWS_PREFIX + " 2000"); /** *

@@ -1162,11 +1162,11 @@ public class SystemUtils { * * @since 3.1 */ - public static final boolean IS_OS_WINDOWS_2003 = getOSMatches(OS_NAME_WINDOWS_PREFIX, "5.2"); + public static final boolean IS_OS_WINDOWS_2003 = getOSMatchesName(OS_NAME_WINDOWS_PREFIX + " 2003"); /** *

- * Is {@code true} if this is Windows 2008. + * Is {@code true} if this is Windows Server 2008. *

*

* The field will return {@code false} if {@code OS_NAME} is {@code null}. @@ -1174,7 +1174,19 @@ public class SystemUtils { * * @since 3.1 */ - public static final boolean IS_OS_WINDOWS_2008 = getOSMatches(OS_NAME_WINDOWS_PREFIX + " Server 2008", "6.1"); + public static final boolean IS_OS_WINDOWS_2008 = getOSMatchesName(OS_NAME_WINDOWS_PREFIX + " Server 2008"); + + /** + *

+ * Is {@code true} if this is Windows Server 2012. + *

+ *

+ * The field will return {@code false} if {@code OS_NAME} is {@code null}. + *

+ * + * @since 3.4 + */ + public static final boolean IS_OS_WINDOWS_2012 = getOSMatchesName(OS_NAME_WINDOWS_PREFIX + " Server 2012"); /** *

@@ -1186,8 +1198,7 @@ public class SystemUtils { * * @since 2.0 */ - public static final boolean IS_OS_WINDOWS_95 = getOSMatches(OS_NAME_WINDOWS_PREFIX + " 9", "4.0"); - // Java 1.2 running on Windows98 returns 'Windows 95', hence the above + public static final boolean IS_OS_WINDOWS_95 = getOSMatchesName(OS_NAME_WINDOWS_PREFIX + " 95"); /** *

@@ -1199,8 +1210,7 @@ public class SystemUtils { * * @since 2.0 */ - public static final boolean IS_OS_WINDOWS_98 = getOSMatches(OS_NAME_WINDOWS_PREFIX + " 9", "4.1"); - // Java 1.2 running on Windows98 returns 'Windows 95', hence the above + public static final boolean IS_OS_WINDOWS_98 = getOSMatchesName(OS_NAME_WINDOWS_PREFIX + " 98"); /** *

@@ -1212,8 +1222,7 @@ public class SystemUtils { * * @since 2.0 */ - public static final boolean IS_OS_WINDOWS_ME = getOSMatches(OS_NAME_WINDOWS_PREFIX, "4.9"); - // Java 1.2 running on WindowsME may return 'Windows 95', hence the above + public static final boolean IS_OS_WINDOWS_ME = getOSMatchesName(OS_NAME_WINDOWS_PREFIX + " Me"); /** *

@@ -1226,7 +1235,6 @@ public class SystemUtils { * @since 2.0 */ public static final boolean IS_OS_WINDOWS_NT = getOSMatchesName(OS_NAME_WINDOWS_PREFIX + " NT"); - // Windows 2000 returns 'Windows 2000' but may suffer from same Java1.2 problem /** *

@@ -1238,7 +1246,7 @@ public class SystemUtils { * * @since 2.0 */ - public static final boolean IS_OS_WINDOWS_XP = getOSMatches(OS_NAME_WINDOWS_PREFIX, "5.1"); + public static final boolean IS_OS_WINDOWS_XP = getOSMatchesName(OS_NAME_WINDOWS_PREFIX + " XP"); // ----------------------------------------------------------------------- /** @@ -1251,7 +1259,7 @@ public class SystemUtils { * * @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 = getOSMatchesName(OS_NAME_WINDOWS_PREFIX + " Vista"); /** *

@@ -1263,7 +1271,7 @@ public class SystemUtils { * * @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 = getOSMatchesName(OS_NAME_WINDOWS_PREFIX + " 7"); /** *

@@ -1275,7 +1283,7 @@ public class SystemUtils { * * @since 3.2 */ - public static final boolean IS_OS_WINDOWS_8 = getOSMatches(OS_NAME_WINDOWS_PREFIX, "6.2"); + public static final boolean IS_OS_WINDOWS_8 = getOSMatchesName(OS_NAME_WINDOWS_PREFIX + " 8"); /** *