Browse Source

Add nested <propertyset>s to <java> and <junit>.

git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@274562 13f79535-47bb-0310-9956-ffa450edef68
master
Stefan Bodewig 22 years ago
parent
commit
08c47d7e62
6 changed files with 85 additions and 11 deletions
  1. +2
    -1
      WHATSNEW
  2. +10
    -0
      src/main/org/apache/tools/ant/taskdefs/Java.java
  3. +14
    -0
      src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java
  4. +40
    -6
      src/main/org/apache/tools/ant/types/CommandlineJava.java
  5. +8
    -3
      src/main/org/apache/tools/ant/types/PropertySet.java
  6. +11
    -1
      src/testcases/org/apache/tools/ant/types/CommandlineJavaTest.java

+ 2
- 1
WHATSNEW View File

@@ -306,7 +306,8 @@ Other changes:
defaultexcludes task. Bugzilla Report 12700.

* There is a new data type <propertyset> that can be used to collect
properties.
properties. It is supported by <ant>, <antcall>, <subant>, <java>
and <junit>.

* <concat> can now control the encoding of the output as well and optionally
add new-line characters at the end of files that get concatenated but


+ 10
- 0
src/main/org/apache/tools/ant/taskdefs/Java.java View File

@@ -65,6 +65,7 @@ import org.apache.tools.ant.types.Commandline;
import org.apache.tools.ant.types.CommandlineJava;
import org.apache.tools.ant.types.Environment;
import org.apache.tools.ant.types.Path;
import org.apache.tools.ant.types.PropertySet;
import org.apache.tools.ant.types.Reference;

/**
@@ -303,6 +304,15 @@ public class Java extends Task {
cmdl.addSysproperty(sysp);
}

/**
* Adds a set of properties as system properties.
*
* @since Ant 1.6
*/
public void addSyspropertyset(PropertySet sysp) {
cmdl.addSyspropertyset(sysp);
}

/**
* If true, then fail if the command exits with a
* returncode other than 0


+ 14
- 0
src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java View File

@@ -75,6 +75,7 @@ import org.apache.tools.ant.types.CommandlineJava;
import org.apache.tools.ant.types.EnumeratedAttribute;
import org.apache.tools.ant.types.Environment;
import org.apache.tools.ant.types.Path;
import org.apache.tools.ant.types.PropertySet;
import org.apache.tools.ant.util.FileUtils;
import org.apache.tools.ant.util.LoaderUtils;
import junit.framework.AssertionFailedError;
@@ -402,6 +403,19 @@ public class JUnitTask extends Task {
commandline.addSysproperty(sysp);
}

/**
* Adds a set of properties that will be used as system properties
* that tests can access.
*
* This might be useful to tranfer Ant properties to the
* testcases when JVM forking is not enabled.
*
* @since Ant 1.6
*/
public void addSyspropertyset(PropertySet sysp) {
commandline.addSyspropertyset(sysp);
}

/**
* Adds path to classpath used for tests.
*


+ 40
- 6
src/main/org/apache/tools/ant/types/CommandlineJava.java View File

@@ -1,7 +1,7 @@
/*
* The Apache Software License, Version 1.1
*
* Copyright (c) 2000-2002 The Apache Software Foundation. All rights
* Copyright (c) 2000-2003 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -99,22 +99,37 @@ public class CommandlineJava implements Cloneable {
*/
public static class SysProperties extends Environment implements Cloneable {
Properties sys = null;
private Vector propertySets = new Vector();

public String[] getVariables() throws BuildException {
String[] props = super.getVariables();
Properties p = mergePropertySets();
if (props == null) {
return null;
if (p.size() == 0) {
return null;
} else {
props = new String[0];
}
}

for (int i = 0; i < props.length; i++) {
props[i] = "-D" + props[i];
String[] result = new String[props.length + p.size()];
int i = 0;
for (; i < props.length; i++) {
result[i] = "-D" + props[i];
}
for (Enumeration enum = p.keys(); enum.hasMoreElements();) {
String key = (String) enum.nextElement();
String value = p.getProperty(key);
result[i++] = "-D" + key + "=" + value;
}
return props;
return result;
}

public int size() {
return variables.size();
Properties p = mergePropertySets();
return variables.size() + p.size();
}

public void setSystem() throws BuildException {
@@ -125,6 +140,7 @@ public class CommandlineJava implements Cloneable {
Object o = e.nextElement();
p.put(o, sys.get(o));
}
p.putAll(mergePropertySets());
for (Enumeration e = variables.elements(); e.hasMoreElements();) {
Environment.Variable v = (Environment.Variable) e.nextElement();
p.put(v.getKey(), v.getValue());
@@ -152,12 +168,26 @@ public class CommandlineJava implements Cloneable {
try {
SysProperties c = (SysProperties) super.clone();
c.variables = (Vector) variables.clone();
c.propertySets = (Vector) propertySets.clone();
return c;
} catch (CloneNotSupportedException e) {
return null;
}
}

public void addSyspropertyset(PropertySet ps) {
propertySets.addElement(ps);
}

private Properties mergePropertySets() {
Properties p = new Properties();
for (Enumeration e = propertySets.elements();
e.hasMoreElements();) {
PropertySet ps = (PropertySet) e.nextElement();
p.putAll(ps.getProperties());
}
return p;
}
}

/**
@@ -180,6 +210,10 @@ public class CommandlineJava implements Cloneable {
sysProperties.addVariable(sysp);
}

public void addSyspropertyset(PropertySet sysp) {
sysProperties.addSyspropertyset(sysp);
}

public void setVm(String vm) {
vmCommand.setExecutable(vm);
}


+ 8
- 3
src/main/org/apache/tools/ant/types/PropertySet.java View File

@@ -174,11 +174,11 @@ public class PropertySet extends DataType {
}

public boolean getDynamic() {
return getRef().dynamic;
return isReference() ? getRef().dynamic : dynamic;
}

public Mapper getMapper() {
return getRef()._mapper;
return isReference() ? getRef()._mapper : _mapper;
}

public Properties getProperties() {
@@ -187,7 +187,12 @@ public class PropertySet extends DataType {

if (getDynamic() || cachedNames == null) {
names = new Vector(); // :TODO: should be a Set!
getRef().addPropertyNames(names, prj.getProperties());
if (isReference()) {
getRef().addPropertyNames(names, prj.getProperties());
} else {
addPropertyNames(names, prj.getProperties());
}

if (!getDynamic()) {
cachedNames = names;
}


+ 11
- 1
src/testcases/org/apache/tools/ant/types/CommandlineJavaTest.java View File

@@ -1,7 +1,7 @@
/*
* The Apache Software License, Version 1.1
*
* Copyright (c) 2000-2002 The Apache Software Foundation. All rights
* Copyright (c) 2000-2003 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -143,6 +143,13 @@ public class CommandlineJavaTest extends TestCase {
v.setKey("key");
v.setValue("value");
c.addSysproperty(v);

project.setProperty("key2", "value2");
PropertySet ps = new PropertySet();
ps.setProject(project);
ps.appendName("key2");
c.addSyspropertyset(ps);

try {
c.setSystemProperties();
String newClasspath = System.getProperty("java.class.path");
@@ -151,10 +158,13 @@ public class CommandlineJavaTest extends TestCase {
assertNotNull(System.getProperty("key"));
assertEquals("value", System.getProperty("key"));
assertTrue(System.getProperties().containsKey("java.class.path"));
assertNotNull(System.getProperty("key2"));
assertEquals("value2", System.getProperty("key2"));
} finally {
c.restoreSystemProperties();
}
assertNull(System.getProperty("key"));
assertNull(System.getProperty("key2"));
}

}

Loading…
Cancel
Save