From 5a75c735358493a5eba4c56fcd696dfeda47e8df Mon Sep 17 00:00:00 2001 From: Stefan Bodewig Date: Fri, 4 Aug 2000 13:30:56 +0000 Subject: [PATCH] Removed possible NullPointerException in . Cleaned up JDK version detection in Project. Submitted by: Jeff Martin git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@267887 13f79535-47bb-0310-9956-ffa450edef68 --- src/main/org/apache/tools/ant/Project.java | 47 ++++++++++--------- .../org/apache/tools/ant/taskdefs/Ant.java | 2 +- .../ant/taskdefs/optional/vss/MSVSS.java | 2 +- 3 files changed, 27 insertions(+), 24 deletions(-) diff --git a/src/main/org/apache/tools/ant/Project.java b/src/main/org/apache/tools/ant/Project.java index 556de84f0..083ea4a0b 100644 --- a/src/main/org/apache/tools/ant/Project.java +++ b/src/main/org/apache/tools/ant/Project.java @@ -105,6 +105,28 @@ public class Project { private Vector listeners = new Vector(); + static { + + // Determine the Java version by looking at available classes + // java.lang.StrictMath was introduced in JDK 1.3 + // java.lang.ThreadLocal was introduced in JDK 1.2 + // java.lang.Void was introduced in JDK 1.1 + // Count up version until a NoClassDefFoundError ends the try + + try { + javaVersion = JAVA_1_0; + Class.forName("java.lang.Void"); + javaVersion = JAVA_1_1; + Class.forName("java.lang.ThreadLocal"); + javaVersion = JAVA_1_2; + Class.forName("java.lang.StrictMath"); + javaVersion = JAVA_1_3; + } catch (ClassNotFoundException cnfe) { + // swallow as we've hit the max class version that + // we have + } + } + public Project() { } @@ -115,8 +137,8 @@ public class Project { * system properties. */ public void init() throws BuildException { - detectJavaVersion(); - + setJavaVersionProperty(); + String defs = "/org/apache/tools/ant/taskdefs/defaults.properties"; try { @@ -281,26 +303,7 @@ public class Project { return javaVersion; } - public void detectJavaVersion() { - - // Determine the Java version by looking at available classes - // java.lang.StrictMath was introduced in JDK 1.3 - // java.lang.ThreadLocal was introduced in JDK 1.2 - // java.lang.Void was introduced in JDK 1.1 - // Count up version until a NoClassDefFoundError ends the try - - try { - javaVersion = JAVA_1_0; - Class.forName("java.lang.Void"); - javaVersion = JAVA_1_1; - Class.forName("java.lang.ThreadLocal"); - javaVersion = JAVA_1_2; - Class.forName("java.lang.StrictMath"); - javaVersion = JAVA_1_3; - } catch (ClassNotFoundException cnfe) { - // swallow as we've hit the max class version that - // we have - } + public void setJavaVersionProperty() { setProperty("ant.java.version", javaVersion); // sanity check diff --git a/src/main/org/apache/tools/ant/taskdefs/Ant.java b/src/main/org/apache/tools/ant/taskdefs/Ant.java index 7072c4c58..7f312c524 100644 --- a/src/main/org/apache/tools/ant/taskdefs/Ant.java +++ b/src/main/org/apache/tools/ant/taskdefs/Ant.java @@ -89,7 +89,7 @@ public class Ant extends Task { public void init() { p1 = new Project(); - p1.detectJavaVersion(); + p1.setJavaVersionProperty(); p1.addTaskDefinition("property", (Class)project.getTaskDefinitions().get("property")); } diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/vss/MSVSS.java b/src/main/org/apache/tools/ant/taskdefs/optional/vss/MSVSS.java index 83dab88bb..b11985ed3 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/vss/MSVSS.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/vss/MSVSS.java @@ -146,7 +146,7 @@ public abstract class MSVSS extends Task { * @return m_vssPath */ public String getVsspath() { - return new String(m_vssPath); + return m_vssPath; }