diff --git a/src/main/org/apache/tools/ant/types/Commandline.java b/src/main/org/apache/tools/ant/types/Commandline.java index 312e45867..06afcdfdd 100644 --- a/src/main/org/apache/tools/ant/types/Commandline.java +++ b/src/main/org/apache/tools/ant/types/Commandline.java @@ -82,7 +82,7 @@ import java.util.StringTokenizer; * @author thomas.haas@softwired-inc.com * @author Stefan Bodewig */ -public class Commandline { +public class Commandline implements Clonable { private Vector arguments = new Vector(); private String executable = null; @@ -335,4 +335,11 @@ public class Commandline { return getCommandline().length; } + public Object clone() { + Commandline c = new Commandline(); + c.setExecutable(executable); + c.addArguments(getArguments()); + return c; + } + } diff --git a/src/main/org/apache/tools/ant/types/CommandlineJava.java b/src/main/org/apache/tools/ant/types/CommandlineJava.java index d5ec108da..6df59af97 100644 --- a/src/main/org/apache/tools/ant/types/CommandlineJava.java +++ b/src/main/org/apache/tools/ant/types/CommandlineJava.java @@ -60,7 +60,7 @@ import org.apache.tools.ant.Project; * * @author thomas.haas@softwired-inc.com */ -public class CommandlineJava { +public class CommandlineJava implements Cloneable { private Commandline vmCommand = new Commandline(); private Commandline javaCommand = new Commandline(); @@ -151,4 +151,13 @@ public class CommandlineJava { public Path getClasspath() { return classpath; } + + public Object clone() { + CommandlineJava c = new CommandlineJava(); + c.vmCommand = (Commandline) vmCommand.clone(); + c.javaCommand = (Commandline) javaCommand.clone(); + c.classpath = (Path) classpath.clone(); + c.vmVersion = vmVersion; + return c; + } } diff --git a/src/main/org/apache/tools/ant/types/Path.java b/src/main/org/apache/tools/ant/types/Path.java index 8bdfd0b23..7ee1452e4 100644 --- a/src/main/org/apache/tools/ant/types/Path.java +++ b/src/main/org/apache/tools/ant/types/Path.java @@ -93,7 +93,7 @@ import java.text.StringCharacterIterator; * @author Stefan Bodewig */ -public class Path { +public class Path implements Cloneable { private Vector elements; private Project project; @@ -309,6 +309,12 @@ public class Path { return list().length; } + public Object clone() { + Path p = new Path(project); + p.append(this); + return p; + } + private static String resolveFile(Project project, String relativeName) { if (project != null) { return project.resolveFile(relativeName).getAbsolutePath();