Browse Source

Apply some reflection to become JDepend version independent

git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@274389 13f79535-47bb-0310-9956-ffa450edef68
master
Stefan Bodewig 22 years ago
parent
commit
0396f77f99
2 changed files with 49 additions and 18 deletions
  1. +1
    -1
      docs/manual/OptionalTasks/jdepend.html
  2. +48
    -17
      src/main/org/apache/tools/ant/taskdefs/optional/jdepend/JDependTask.java

+ 1
- 1
docs/manual/OptionalTasks/jdepend.html View File

@@ -93,7 +93,7 @@ JDepend, only class files are analyzed. The nested element
the paths of compiled class code to analyze; the <sourcespath> the paths of compiled class code to analyze; the <sourcespath>
variable is still available in case you are using an earlier version variable is still available in case you are using an earlier version
of JDepend. The <exclude> element can be used to set packages of JDepend. The <exclude> element can be used to set packages
to ignore.</p>
to ignore (requires JDepend 2.5 or above).</p>


<h3>Examples</h3> <h3>Examples</h3>




+ 48
- 17
src/main/org/apache/tools/ant/taskdefs/optional/jdepend/JDependTask.java View File

@@ -58,6 +58,8 @@ import java.io.File;
import java.io.FileWriter; import java.io.FileWriter;
import java.io.IOException; import java.io.IOException;
import java.io.PrintWriter; import java.io.PrintWriter;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.util.Vector; import java.util.Vector;
import org.apache.tools.ant.BuildException; import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.PathTokenizer; import org.apache.tools.ant.PathTokenizer;
@@ -104,19 +106,37 @@ public class JDependTask extends Task {
private String format = "text"; private String format = "text";
private PatternSet defaultPatterns = new PatternSet(); private PatternSet defaultPatterns = new PatternSet();


public JDependTask() {
private static Constructor packageFilterC;
private static Method setFilter;


static {
try {
Class packageFilter =
Class.forName("jdepend.framework.PackageFilter");
packageFilterC =
packageFilter.getConstructor(new Class[] {java.util.Collection.class});
setFilter =
jdepend.textui.JDepend.class.getDeclaredMethod("setFilter",
new Class[] {packageFilter});
} catch (Throwable t) {
if (setFilter == null) {
packageFilterC = null;
}
}
} }


/*
public void setTimeout(Integer value) {
_timeout = value;
public JDependTask() {
} }


public Integer getTimeout() {
return _timeout;
}
*/
/*
public void setTimeout(Integer value) {
_timeout = value;
}

public Integer getTimeout() {
return _timeout;
}
*/


/** /**
* The output file name. * The output file name.
@@ -305,9 +325,9 @@ public class JDependTask extends Task {
if ("text".equals(format)) { if ("text".equals(format)) {
commandline.setClassname("jdepend.textui.JDepend"); commandline.setClassname("jdepend.textui.JDepend");
} else } else
if ("xml".equals(format)) {
commandline.setClassname("jdepend.xmlui.JDepend");
}
if ("xml".equals(format)) {
commandline.setClassname("jdepend.xmlui.JDepend");
}


if (_jvm != null) { if (_jvm != null) {
commandline.setVm(_jvm); commandline.setVm(_jvm);
@@ -443,11 +463,22 @@ public class JDependTask extends Task {
// This bit turns <exclude> child tags into patters to ignore // This bit turns <exclude> child tags into patters to ignore
String[] patterns = defaultPatterns.getExcludePatterns(getProject()); String[] patterns = defaultPatterns.getExcludePatterns(getProject());
if (patterns != null && patterns.length > 0) { if (patterns != null && patterns.length > 0) {
Vector v = new Vector();
for (int i = 0; i < patterns.length; i++) {
v.addElement(patterns[i]);
if (setFilter != null) {
Vector v = new Vector();
for (int i = 0; i < patterns.length; i++) {
v.addElement(patterns[i]);
}
try {
Object o = packageFilterC.newInstance(new Object[] {v});
setFilter.invoke(jdepend, new Object[] {o});
} catch (Throwable e) {
log("excludes will be ignored as JDepend doesn't like me: "
+ e.getMessage(), Project.MSG_WARN);
}
} else {
log("Sorry, your version of JDepend doesn't support excludes",
Project.MSG_WARN);
} }
jdepend.setFilter(new jdepend.framework.PackageFilter(v));
} }


jdepend.analyze(); jdepend.analyze();
@@ -493,7 +524,7 @@ public class JDependTask extends Task {
// not necessary as JDepend would fail, but why loose some time? // not necessary as JDepend would fail, but why loose some time?
if (!f.exists() || !f.isDirectory()) { if (!f.exists() || !f.isDirectory()) {
throw new BuildException("\"" + f.getPath() + "\" does not " throw new BuildException("\"" + f.getPath() + "\" does not "
+ "represent a valid directory. JDepend would fail.");
+ "represent a valid directory. JDepend would fail.");
} }
commandline.createArgument().setValue(f.getPath()); commandline.createArgument().setValue(f.getPath());
} }
@@ -505,7 +536,7 @@ public class JDependTask extends Task {
// not necessary as JDepend would fail, but why loose some time? // not necessary as JDepend would fail, but why loose some time?
if (!f.exists() || !f.isDirectory()) { if (!f.exists() || !f.isDirectory()) {
throw new BuildException("\"" + f.getPath() + "\" does not " throw new BuildException("\"" + f.getPath() + "\" does not "
+ "represent a valid directory. JDepend would fail.");
+ "represent a valid directory. JDepend would fail.");
} }
commandline.createArgument().setValue(f.getPath()); commandline.createArgument().setValue(f.getPath());
} }


Loading…
Cancel
Save