aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGary Gregory <garydgregory@gmail.com>2024-05-30 08:28:38 -0400
committerGary Gregory <garydgregory@gmail.com>2024-05-30 08:28:38 -0400
commitd0bb31bc10ac0e16f47840550860ca26f01c5595 (patch)
tree40faac81190163327d3cc9cf7a631160be101f23
parent28e826894c359fcb993b598dce7633dcc593c8a9 (diff)
downloadapache-commons-lang-d0bb31bc10ac0e16f47840550860ca26f01c5595.tar.gz
Add SystemUtils.IS_OS_ANDROID
-rw-r--r--src/changes/changes.xml1
-rw-r--r--src/main/java/org/apache/commons/lang3/SystemUtils.java14
-rw-r--r--src/test/java/org/apache/commons/lang3/SystemUtilsTest.java10
3 files changed, 23 insertions, 2 deletions
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 30d88df81..129bb71ea 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -66,6 +66,7 @@ The <action> type attribute can be add,update,fix,remove.
<action type="add" dev="ggregory" due-to="Gary Gregory">Add SystemProperties constants and methods for system properties as of Java 22.</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add MethodUtils.getMethodObject(Class, String, Class...).</action>
<action issue="LANG-1733" type="add" dev="ggregory" due-to="Jongjin Bae, Gary Gregory">Add null-safe Consumers.accept() and Functions.apply() #1215.</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add SystemUtils.IS_OS_ANDROID.</action>
<!-- FIX -->
<action type="fix" dev="ggregory" due-to="Miklós Karakó, Gary Gregory">Improve Javadoc in ExceptionUtils #1136.</action>
<action type="fix" dev="ggregory" due-to="Saiharshith Karuneegar Ramesh, Gary Gregory">Fixed two non-deterministic tests in EnumUtilsTest.java #1131.</action>
diff --git a/src/main/java/org/apache/commons/lang3/SystemUtils.java b/src/main/java/org/apache/commons/lang3/SystemUtils.java
index 6dbdffc22..70c9a8d2c 100644
--- a/src/main/java/org/apache/commons/lang3/SystemUtils.java
+++ b/src/main/java/org/apache/commons/lang3/SystemUtils.java
@@ -1145,6 +1145,20 @@ public class SystemUtils {
public static final boolean IS_OS_AIX = getOsMatchesName("AIX");
/**
+ * Is {@code true} if this is Android.
+ *
+ * <p>
+ * See https://developer.android.com/reference/java/lang/System#getProperties().
+ * </p>
+ * <p>
+ * This value is initialized when the class is loaded.
+ * </p>
+ *
+ * @since 3.15.0
+ */
+ public static final boolean IS_OS_ANDROID = SystemProperties.getJavaVendor().contains("Android");
+
+ /**
* Is {@code true} if this is HP-UX.
*
* <p>
diff --git a/src/test/java/org/apache/commons/lang3/SystemUtilsTest.java b/src/test/java/org/apache/commons/lang3/SystemUtilsTest.java
index a27c7c3ca..8618d6744 100644
--- a/src/test/java/org/apache/commons/lang3/SystemUtilsTest.java
+++ b/src/test/java/org/apache/commons/lang3/SystemUtilsTest.java
@@ -151,11 +151,13 @@ public class SystemUtilsTest extends AbstractLangTest {
assertFalse(SystemUtils.IS_OS_LINUX);
assertFalse(SystemUtils.IS_OS_MAC_OSX);
} else if (osName.startsWith("Windows")) {
- assertFalse(SystemUtils.IS_OS_UNIX);
assertTrue(SystemUtils.IS_OS_WINDOWS);
+ assertFalse(SystemUtils.IS_OS_ANDROID);
+ assertFalse(SystemUtils.IS_OS_UNIX);
} else if (osName.startsWith("Solaris")) {
assertTrue(SystemUtils.IS_OS_SOLARIS);
assertTrue(SystemUtils.IS_OS_UNIX);
+ assertFalse(SystemUtils.IS_OS_ANDROID);
assertFalse(SystemUtils.IS_OS_WINDOWS);
} else if (osName.toLowerCase(Locale.ENGLISH).startsWith("linux")) {
assertTrue(SystemUtils.IS_OS_LINUX);
@@ -164,21 +166,25 @@ public class SystemUtilsTest extends AbstractLangTest {
} else if (osName.startsWith("Mac OS X")) {
assertTrue(SystemUtils.IS_OS_MAC_OSX);
assertTrue(SystemUtils.IS_OS_UNIX);
+ assertFalse(SystemUtils.IS_OS_ANDROID);
assertFalse(SystemUtils.IS_OS_WINDOWS);
} else if (osName.startsWith("OS/2")) {
assertTrue(SystemUtils.IS_OS_OS2);
assertFalse(SystemUtils.IS_OS_UNIX);
+ assertFalse(SystemUtils.IS_OS_ANDROID);
assertFalse(SystemUtils.IS_OS_WINDOWS);
} else if (osName.startsWith("SunOS")) {
assertTrue(SystemUtils.IS_OS_SUN_OS);
assertTrue(SystemUtils.IS_OS_UNIX);
+ assertFalse(SystemUtils.IS_OS_ANDROID);
assertFalse(SystemUtils.IS_OS_WINDOWS);
} else if (osName.startsWith("FreeBSD")) {
assertTrue(SystemUtils.IS_OS_FREE_BSD);
assertTrue(SystemUtils.IS_OS_UNIX);
+ assertFalse(SystemUtils.IS_OS_ANDROID);
assertFalse(SystemUtils.IS_OS_WINDOWS);
} else {
- System.out.println("Can't test IS_OS value: " + osName);
+ System.err.println("Can't test IS_OS_ value: " + osName);
}
}