001 /*
002 * Licensed to the Apache Software Foundation (ASF) under one
003 * or more contributor license agreements. See the NOTICE file
004 * distributed with this work for additional information
005 * regarding copyright ownership. The ASF licenses this file
006 * to you under the Apache License, Version 2.0 (the
007 * "License"); you may not use this file except in compliance
008 * with the License. You may obtain a copy of the License at
009 *
010 * http://www.apache.org/licenses/LICENSE-2.0
011 *
012 * Unless required by applicable law or agreed to in writing,
013 * software distributed under the License is distributed on an
014 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
015 * KIND, either express or implied. See the License for the
016 * specific language governing permissions and limitations
017 * under the License.
018 */
019
020 package org.apache.geronimo.system.configuration.condition;
021
022 import org.apache.commons.logging.Log;
023 import org.apache.commons.logging.LogFactory;
024
025 /**
026 * Provides access to Java version details for use in condition expressions.
027 *
028 * @version $Rev: 454037 $ $Date: 2006-10-07 15:26:46 -0700 (Sat, 07 Oct 2006) $
029 */
030 public class JavaVariable
031 {
032 private static final Log log = LogFactory.getLog(JavaVariable.class);
033
034 public String getVendor() {
035 return SystemUtils.JAVA_VENDOR;
036 }
037
038 public String getVresion() {
039 return SystemUtils.JAVA_VERSION;
040 }
041
042 public String getVmVendor() {
043 return SystemUtils.JAVA_VM_VENDOR;
044 }
045
046 public String getVmVersion() {
047 return SystemUtils.JAVA_VM_VERSION;
048 }
049
050 public boolean getIs1_1() {
051 return SystemUtils.IS_JAVA_1_1;
052 }
053
054 public boolean getIs1_2() {
055 return SystemUtils.IS_JAVA_1_2;
056 }
057
058 public boolean getIs1_3() {
059 return SystemUtils.IS_JAVA_1_3;
060 }
061
062 public boolean getIs1_4() {
063 return SystemUtils.IS_JAVA_1_4;
064 }
065
066 public boolean getIs1_5() {
067 return SystemUtils.IS_JAVA_1_5;
068 }
069
070 public boolean getIs1_6() {
071 return SystemUtils.IS_JAVA_1_6;
072 }
073
074 public boolean getIsVersionAtLeast(final float requiredVersion) {
075 return SystemUtils.isJavaVersionAtLeast(requiredVersion);
076 }
077
078 public boolean getIsVersionAtLeast(final int requiredVersion) {
079 return SystemUtils.isJavaVersionAtLeast(requiredVersion);
080 }
081
082 public boolean getVersionMatches(String version) {
083 version = version.trim();
084
085 boolean debug = log.isDebugEnabled();
086 boolean result = false;
087
088 if (version.endsWith("*")) {
089 version = version.substring(0, version.length() - 1).trim();
090
091 if (debug) {
092 log.debug("Checking Java version is in the same group as: " + version);
093 }
094
095 String tmp = SystemUtils.JAVA_VERSION_TRIMMED;
096
097 if (debug) {
098 log.debug("Requested version: " + tmp);
099 log.debug("JVM version: " + SystemUtils.JAVA_VERSION_FLOAT);
100 }
101
102 result = tmp.startsWith(version);
103 }
104 else if (version.endsWith("+")) {
105 version = version.substring(0, version.length() - 1).trim();
106
107 if (debug) {
108 log.debug("Checking Java version is greater than: " + version);
109 }
110
111 float tmp = Float.parseFloat(version);
112
113 if (debug) {
114 log.debug("Requested version: " + tmp);
115 log.debug("JVM version: " + SystemUtils.JAVA_VERSION_FLOAT);
116 }
117
118 result = tmp <= SystemUtils.JAVA_VERSION_FLOAT;
119 }
120 else {
121 if (debug) {
122 log.debug("Checking Java version is equal to: " + version);
123 }
124
125 float tmp = Float.parseFloat(version);
126
127 if (debug) {
128 log.debug("Requested version: " + tmp);
129 log.debug("JVM version: " + SystemUtils.JAVA_VERSION_FLOAT);
130 }
131
132 result = tmp == SystemUtils.JAVA_VERSION_FLOAT;
133 }
134
135 return result;
136 }
137 }