diff --git a/WHATSNEW b/WHATSNEW index 18aa0c68c..1a712b8f3 100644 --- a/WHATSNEW +++ b/WHATSNEW @@ -216,6 +216,8 @@ Other changes: elements can be used to exclude certain packages from being parsed. Bugzilla Report 17134. +* The JProbe tasks now also work with JProbe 4.x. Bugzilla Report 14849. + Changes from Ant 1.5.2 to Ant 1.5.3 =================================== diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/CovBase.java b/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/CovBase.java index 5fa333ad6..85f9484d0 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/CovBase.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/CovBase.java @@ -56,6 +56,7 @@ package org.apache.tools.ant.taskdefs.optional.sitraka; import java.io.File; import org.apache.tools.ant.Task; +import org.apache.tools.ant.taskdefs.condition.Os; import org.apache.tools.ant.util.FileUtils; /** @@ -68,6 +69,8 @@ import org.apache.tools.ant.util.FileUtils; public abstract class CovBase extends Task { private File home; private static FileUtils fu = FileUtils.newFileUtils(); + private boolean isJProbe4 = false; + private static boolean isDos = Os.isFamily("dos"); /** * The directory where JProbe is installed. @@ -80,12 +83,43 @@ public abstract class CovBase extends Task { return home; } - protected File findJar(String relativePath) { - return fu.resolveFile(home, relativePath); + protected File findCoverageJar() { + File loc = null; + if (isJProbe4) { + loc = fu.resolveFile(home, "lib/coverage.jar"); + } else { + loc = fu.resolveFile(home, "coverage/coverage.jar"); + if (!loc.canRead()) { + File newLoc = fu.resolveFile(home, "lib/coverage.jar"); + if (newLoc.canRead()) { + isJProbe4 = true; + loc = newLoc; + } + } + } + + return loc; } protected String findExecutable(String relativePath) { - return fu.resolveFile(home, relativePath).getAbsolutePath(); + if (isDos) { + relativePath += ".exe"; + } + + File loc = null; + if (isJProbe4) { + loc = fu.resolveFile(home, "bin/" + relativePath); + } else { + loc = fu.resolveFile(home, relativePath); + if (!loc.canRead()) { + File newLoc = fu.resolveFile(home, "bin/" + relativePath); + if (newLoc.canRead()) { + isJProbe4 = true; + loc = newLoc; + } + } + } + return loc.getAbsolutePath(); } protected File createTempFile(String prefix) { @@ -93,6 +127,6 @@ public abstract class CovBase extends Task { } protected String getParamFileArgument() { - return "-jp_paramfile="; + return (!isJProbe4 ? "-jp_" : "") + "paramfile="; } } diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/CovMerge.java b/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/CovMerge.java index bc78b698a..57e94b539 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/CovMerge.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/CovMerge.java @@ -154,7 +154,7 @@ public class CovMerge extends CovBase { if (getHome() == null || !getHome().isDirectory()) { throw new BuildException("Invalid home directory. Must point to JProbe home directory"); } - File jar = findJar("coverage/coverage.jar"); + File jar = findCoverageJar(); if (!jar.exists()) { throw new BuildException("Cannot find Coverage directory: " + getHome()); } diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/CovReport.java b/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/CovReport.java index c144c9c9e..538c4acf0 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/CovReport.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/CovReport.java @@ -271,7 +271,7 @@ public class CovReport extends CovBase { if (getHome() == null) { throw new BuildException("'home' attribute must be set to JProbe home directory"); } - File jar = findJar("coverage/coverage.jar"); + File jar = findCoverageJar(); if (!jar.exists()) { throw new BuildException("Cannot find Coverage directory: " + getHome()); } diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/Coverage.java b/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/Coverage.java index 70e299172..d89ad312d 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/Coverage.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/Coverage.java @@ -351,7 +351,7 @@ public class Coverage extends CovBase { if (getHome() == null || !getHome().isDirectory()) { throw new BuildException("Invalid home directory. Must point to JProbe home directory"); } - File jar = findJar("coverage/coverage.jar"); + File jar = findCoverageJar(); if (!jar.exists()) { throw new BuildException("Cannot find Coverage directory: " + getHome()); }