From 81e0adbbcd12ecd55146ae7e4177da622b2d50b1 Mon Sep 17 00:00:00 2001 From: Adam Murdoch Date: Tue, 10 Dec 2013 14:28:48 +1100 Subject: [PATCH] Replaced SystemInfo.getMachineArchitecture() with getArchitecture() and getArchitectureName(). --- .../net/rubygrapefruit/platform/SystemInfo.java | 10 +++++++++- .../platform/internal/DefaultSystemInfo.java | 11 ++++++----- .../platform/internal/MutableSystemInfo.java | 14 +++++++++++++- .../rubygrapefruit/platform/SystemInfoTest.groovy | 3 ++- .../net/rubygrapefruit/platform/test/Main.java | 2 +- 5 files changed, 31 insertions(+), 9 deletions(-) diff --git a/src/main/java/net/rubygrapefruit/platform/SystemInfo.java b/src/main/java/net/rubygrapefruit/platform/SystemInfo.java index 59d1a70..393ecc5 100644 --- a/src/main/java/net/rubygrapefruit/platform/SystemInfo.java +++ b/src/main/java/net/rubygrapefruit/platform/SystemInfo.java @@ -21,6 +21,8 @@ package net.rubygrapefruit.platform; */ @ThreadSafe public interface SystemInfo extends NativeIntegration { + enum Architecture { i386, amd64 } + /** * Returns the name of the kernel for the current operating system. */ @@ -33,9 +35,15 @@ public interface SystemInfo extends NativeIntegration { @ThreadSafe String getKernelVersion(); + /** + * Returns the machine architecture name, as reported by the operating system. + */ + @ThreadSafe + String getArchitectureName(); + /** * Returns the machine architecture, as reported by the operating system. */ @ThreadSafe - String getMachineArchitecture(); + Architecture getArchitecture(); } diff --git a/src/main/java/net/rubygrapefruit/platform/internal/DefaultSystemInfo.java b/src/main/java/net/rubygrapefruit/platform/internal/DefaultSystemInfo.java index dcd0af0..91da096 100644 --- a/src/main/java/net/rubygrapefruit/platform/internal/DefaultSystemInfo.java +++ b/src/main/java/net/rubygrapefruit/platform/internal/DefaultSystemInfo.java @@ -32,18 +32,19 @@ public class DefaultSystemInfo implements SystemInfo { } } - @Override public String getKernelName() { return systemInfo.getKernelName(); } - @Override public String getKernelVersion() { return systemInfo.getKernelVersion(); } - @Override - public String getMachineArchitecture() { - return systemInfo.getMachineArchitecture(); + public String getArchitectureName() { + return systemInfo.getArchitectureName(); + } + + public Architecture getArchitecture() { + return systemInfo.getArchitecture(); } } diff --git a/src/main/java/net/rubygrapefruit/platform/internal/MutableSystemInfo.java b/src/main/java/net/rubygrapefruit/platform/internal/MutableSystemInfo.java index 4e5ec5a..2a3a557 100755 --- a/src/main/java/net/rubygrapefruit/platform/internal/MutableSystemInfo.java +++ b/src/main/java/net/rubygrapefruit/platform/internal/MutableSystemInfo.java @@ -16,6 +16,7 @@ package net.rubygrapefruit.platform.internal; +import net.rubygrapefruit.platform.NativeException; import net.rubygrapefruit.platform.SystemInfo; public class MutableSystemInfo implements SystemInfo { @@ -32,10 +33,21 @@ public class MutableSystemInfo implements SystemInfo { return osVersion; } - public String getMachineArchitecture() { + public String getArchitectureName() { return machineArchitecture; } + public Architecture getArchitecture() { + if (machineArchitecture.equals("amd64") || machineArchitecture.equals("x86_64")) { + return Architecture.amd64; + } + if (machineArchitecture.equals("i386") || machineArchitecture.equals("x86")) { + return Architecture.i386; + } + throw new NativeException(String.format("Cannot determine architecture from kernel architecture name '%s'.", + machineArchitecture)); + } + // Called from native code void windows(int major, int minor, int build, boolean workstation, String arch) { osName = toWindowsVersionName(major, minor, workstation); diff --git a/src/test/groovy/net/rubygrapefruit/platform/SystemInfoTest.groovy b/src/test/groovy/net/rubygrapefruit/platform/SystemInfoTest.groovy index 18d20f2..a7316bc 100755 --- a/src/test/groovy/net/rubygrapefruit/platform/SystemInfoTest.groovy +++ b/src/test/groovy/net/rubygrapefruit/platform/SystemInfoTest.groovy @@ -33,6 +33,7 @@ class SystemInfoTest extends Specification { expect: systemInfo.kernelName systemInfo.kernelVersion - systemInfo.machineArchitecture + systemInfo.architectureName + systemInfo.architecture } } diff --git a/test-app/src/main/java/net/rubygrapefruit/platform/test/Main.java b/test-app/src/main/java/net/rubygrapefruit/platform/test/Main.java index 6eb4dea..8c9d547 100755 --- a/test-app/src/main/java/net/rubygrapefruit/platform/test/Main.java +++ b/test-app/src/main/java/net/rubygrapefruit/platform/test/Main.java @@ -50,7 +50,7 @@ public class Main { System.out.println("* Encoding: " + System.getProperty("file.encoding")); SystemInfo systemInfo = Native.get(SystemInfo.class); - System.out.println("* Kernel: " + systemInfo.getKernelName() + ' ' + systemInfo.getKernelVersion() + ' ' + systemInfo.getMachineArchitecture()); + System.out.println("* Kernel: " + systemInfo.getKernelName() + ' ' + systemInfo.getKernelVersion() + ' ' + systemInfo.getArchitectureName() + " (" + systemInfo.getArchitecture() + ")"); Process process = Native.get(Process.class); System.out.println("* PID: " + process.getProcessId());