You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by jd...@apache.org on 2006/10/08 00:26:52 UTC

svn commit: r454037 - /geronimo/server/trunk/modules/geronimo-system/src/main/java/org/apache/geronimo/system/configuration/condition/JavaVariable.java

Author: jdillon
Date: Sat Oct  7 15:26:46 2006
New Revision: 454037

URL: http://svn.apache.org/viewvc?view=rev&rev=454037
Log:
(GERONIMO-2463) Added java.versionMatches() which provides OSX-like version matching

Modified:
    geronimo/server/trunk/modules/geronimo-system/src/main/java/org/apache/geronimo/system/configuration/condition/JavaVariable.java

Modified: geronimo/server/trunk/modules/geronimo-system/src/main/java/org/apache/geronimo/system/configuration/condition/JavaVariable.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-system/src/main/java/org/apache/geronimo/system/configuration/condition/JavaVariable.java?view=diff&rev=454037&r1=454036&r2=454037
==============================================================================
--- geronimo/server/trunk/modules/geronimo-system/src/main/java/org/apache/geronimo/system/configuration/condition/JavaVariable.java (original)
+++ geronimo/server/trunk/modules/geronimo-system/src/main/java/org/apache/geronimo/system/configuration/condition/JavaVariable.java Sat Oct  7 15:26:46 2006
@@ -19,6 +19,9 @@
 
 package org.apache.geronimo.system.configuration.condition;
 
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
 /**
  * Provides access to Java version details for use in condition expressions.
  *
@@ -26,6 +29,8 @@
  */
 public class JavaVariable
 {
+    private static final Log log = LogFactory.getLog(JavaVariable.class);
+    
     public String getVendor() {
         return SystemUtils.JAVA_VENDOR;
     }
@@ -66,11 +71,67 @@
         return SystemUtils.IS_JAVA_1_6;
     }
 
-    public boolean isVersionAtLeast(final float requiredVersion) {
+    public boolean getIsVersionAtLeast(final float requiredVersion) {
         return SystemUtils.isJavaVersionAtLeast(requiredVersion);
     }
 
-    public boolean isVersionAtLeast(final int requiredVersion) {
+    public boolean getIsVersionAtLeast(final int requiredVersion) {
         return SystemUtils.isJavaVersionAtLeast(requiredVersion);
+    }
+    
+    public boolean getVersionMatches(String version) {
+        version = version.trim();
+        
+        boolean debug = log.isDebugEnabled();
+        boolean result = false;
+        
+        if (version.endsWith("*")) {
+            version = version.substring(0, version.length() - 1).trim();
+            
+            if (debug) {
+                log.debug("Checking Java version is in the same group as: " + version);
+            }
+            
+            String tmp = SystemUtils.JAVA_VERSION_TRIMMED;
+            
+            if (debug) {
+                log.debug("Requested version: " + tmp);
+                log.debug("JVM version: " + SystemUtils.JAVA_VERSION_FLOAT);
+            }
+            
+            result = tmp.startsWith(version);
+        }
+        else if (version.endsWith("+")) {
+            version = version.substring(0, version.length() - 1).trim();
+            
+            if (debug) {
+                log.debug("Checking Java version is greater than: " + version);
+            }
+            
+            float tmp = Float.parseFloat(version);
+            
+            if (debug) {
+                log.debug("Requested version: " + tmp);
+                log.debug("JVM version: " + SystemUtils.JAVA_VERSION_FLOAT);
+            }
+            
+            result = tmp <= SystemUtils.JAVA_VERSION_FLOAT;
+        }
+        else {
+            if (debug) {
+                log.debug("Checking Java version is equal to: " + version);
+            }
+            
+            float tmp = Float.parseFloat(version);
+            
+            if (debug) {
+                log.debug("Requested version: " + tmp);
+                log.debug("JVM version: " + SystemUtils.JAVA_VERSION_FLOAT);
+            }
+            
+            result = tmp == SystemUtils.JAVA_VERSION_FLOAT;
+        }
+        
+        return result;
     }
 }