bodewig 2003/05/27 02:30:17
Modified: src/main/org/apache/tools/ant/types AbstractFileSet.java Commandline.java CommandlineJava.java DirSet.java FileSet.java FilterSet.java Path.java ZipFileSet.java Log: fix the completely broken clone() implementations. Revision Changes Path 1.20 +13 -0 ant/src/main/org/apache/tools/ant/types/AbstractFileSet.java Index: AbstractFileSet.java =================================================================== RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/types/AbstractFileSet.java,v retrieving revision 1.19 retrieving revision 1.20 diff -u -r1.19 -r1.20 --- AbstractFileSet.java 25 May 2003 11:40:54 -0000 1.19 +++ AbstractFileSet.java 27 May 2003 09:30:17 -0000 1.20 @@ -668,4 +668,17 @@ return sb.toString(); } + /** + * @since Ant 1.6 + */ + public Object clone() { + try { + AbstractFileSet fs = (AbstractFileSet) super.clone(); + fs.setProject(getProject()); + return fs; + } catch (CloneNotSupportedException e) { + throw new BuildException(e); + } + } + } 1.29 +7 -4 ant/src/main/org/apache/tools/ant/types/Commandline.java Index: Commandline.java =================================================================== RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/types/Commandline.java,v retrieving revision 1.28 retrieving revision 1.29 diff -u -r1.28 -r1.29 --- Commandline.java 4 Apr 2003 13:51:12 -0000 1.28 +++ Commandline.java 27 May 2003 09:30:17 -0000 1.29 @@ -427,10 +427,13 @@ } public Object clone() { - Commandline c = new Commandline(); - c.setExecutable(executable); - c.addArguments(getArguments()); - return c; + try { + Commandline c = (Commandline) super.clone(); + c.arguments = (Vector) arguments.clone(); + return c; + } catch (CloneNotSupportedException e) { + throw new BuildException(e); + } } /** 1.40 +14 -13 ant/src/main/org/apache/tools/ant/types/CommandlineJava.java Index: CommandlineJava.java =================================================================== RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/types/CommandlineJava.java,v retrieving revision 1.39 retrieving revision 1.40 diff -u -r1.39 -r1.40 --- CommandlineJava.java 27 May 2003 08:49:42 -0000 1.39 +++ CommandlineJava.java 27 May 2003 09:30:17 -0000 1.40 @@ -440,20 +440,21 @@ * @return a CommandlineJava object */ public Object clone() { - CommandlineJava c = new CommandlineJava(); - c.vmCommand = (Commandline) vmCommand.clone(); - c.javaCommand = (Commandline) javaCommand.clone(); - c.sysProperties = (SysProperties) sysProperties.clone(); - c.maxMemory = maxMemory; - if (classpath != null) { - c.classpath = (Path) classpath.clone(); + try { + CommandlineJava c = (CommandlineJava) super.clone(); + c.vmCommand = (Commandline) vmCommand.clone(); + c.javaCommand = (Commandline) javaCommand.clone(); + c.sysProperties = (SysProperties) sysProperties.clone(); + if (classpath != null) { + c.classpath = (Path) classpath.clone(); + } + if (bootclasspath != null) { + c.bootclasspath = (Path) bootclasspath.clone(); + } + return c; + } catch (CloneNotSupportedException e) { + throw new BuildException(e); } - if (bootclasspath != null) { - c.bootclasspath = (Path) bootclasspath.clone(); - } - c.vmVersion = vmVersion; - c.executeJar = executeJar; - return c; } /** 1.9 +3 -3 ant/src/main/org/apache/tools/ant/types/DirSet.java Index: DirSet.java =================================================================== RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/types/DirSet.java,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- DirSet.java 10 Feb 2003 14:14:30 -0000 1.8 +++ DirSet.java 27 May 2003 09:30:17 -0000 1.9 @@ -1,7 +1,7 @@ /* * The Apache Software License, Version 1.1 * - * Copyright (c) 2002 The Apache Software Foundation. All rights + * Copyright (c) 2002-2003 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without @@ -76,9 +76,9 @@ */ public Object clone() { if (isReference()) { - return new DirSet((DirSet) getRef(getProject())); + return ((DirSet) getRef(getProject())).clone(); } else { - return new DirSet(this); + return super.clone(); } } 1.33 +3 -3 ant/src/main/org/apache/tools/ant/types/FileSet.java Index: FileSet.java =================================================================== RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/types/FileSet.java,v retrieving revision 1.32 retrieving revision 1.33 diff -u -r1.32 -r1.33 --- FileSet.java 7 Mar 2003 11:23:07 -0000 1.32 +++ FileSet.java 27 May 2003 09:30:17 -0000 1.33 @@ -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 @@ -81,9 +81,9 @@ */ public Object clone() { if (isReference()) { - return new FileSet((FileSet) getRef(getProject())); + return ((FileSet) getRef(getProject())).clone(); } else { - return new FileSet(this); + return super.clone(); } } 1.20 +9 -2 ant/src/main/org/apache/tools/ant/types/FilterSet.java Index: FilterSet.java =================================================================== RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/types/FilterSet.java,v retrieving revision 1.19 retrieving revision 1.20 diff -u -r1.19 -r1.20 --- FilterSet.java 10 Feb 2003 14:14:30 -0000 1.19 +++ FilterSet.java 27 May 2003 09:30:17 -0000 1.20 @@ -487,9 +487,16 @@ public Object clone() throws BuildException { if (isReference()) { - return new FilterSet(getRef()); + return ((FilterSet) getRef()).clone(); } else { - return new FilterSet(this); + try { + FilterSet fs = (FilterSet) super.clone(); + fs.filters = (Vector) getFilters().clone(); + fs.setProject(getProject()); + return fs; + } catch (CloneNotSupportedException e) { + throw new BuildException(e); + } } } 1.49 +7 -3 ant/src/main/org/apache/tools/ant/types/Path.java Index: Path.java =================================================================== RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/types/Path.java,v retrieving revision 1.48 retrieving revision 1.49 diff -u -r1.48 -r1.49 --- Path.java 4 Apr 2003 13:51:12 -0000 1.48 +++ Path.java 27 May 2003 09:30:17 -0000 1.49 @@ -457,9 +457,13 @@ * Return a Path that holds the same elements as this instance. */ public Object clone() { - Path p = new Path(getProject()); - p.append(this); - return p; + try { + Path p = (Path) super.clone(); + p.elements = (Vector) elements.clone(); + return p; + } catch (CloneNotSupportedException e) { + throw new BuildException(e); + } } /** 1.20 +2 -2 ant/src/main/org/apache/tools/ant/types/ZipFileSet.java Index: ZipFileSet.java =================================================================== RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/types/ZipFileSet.java,v retrieving revision 1.19 retrieving revision 1.20 diff -u -r1.19 -r1.20 --- ZipFileSet.java 23 Apr 2003 07:20:17 -0000 1.19 +++ ZipFileSet.java 27 May 2003 09:30:17 -0000 1.20 @@ -310,9 +310,9 @@ */ public Object clone() { if (isReference()) { - return new ZipFileSet((ZipFileSet) getRef(getProject())); + return ((ZipFileSet) getRef(getProject())).clone(); } else { - return new ZipFileSet(this); + return super.clone(); } } }