zip package. git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@268962 13f79535-47bb-0310-9956-ffa450edef68master
| @@ -48,7 +48,7 @@ if not exist build\classes mkdir build\classes | |||||
| echo. | echo. | ||||
| echo ... Compiling Ant Classes | echo ... Compiling Ant Classes | ||||
| %JAVAC% -d %CLASSDIR% %TOOLS%\tar\*.java %TOOLS%\ant\*.java %TOOLS%\ant\types\*.java %TOOLS%\ant\taskdefs\*.java %TOOLS%\ant\util\*.java %TOOLS%\ant\util\regexp\RegexpMatcher.java %TOOLS%\ant\util\regexp\RegexpMatcherFactory.java | |||||
| %JAVAC% -d %CLASSDIR% %TOOLS%\tar\*.java %TOOLS%\zip\*.java %TOOLS%\ant\*.java %TOOLS%\ant\types\*.java %TOOLS%\ant\taskdefs\*.java %TOOLS%\ant\util\*.java %TOOLS%\ant\util\regexp\RegexpMatcher.java %TOOLS%\ant\util\regexp\RegexpMatcherFactory.java | |||||
| echo. | echo. | ||||
| echo ... Copying Required Files | echo ... Copying Required Files | ||||
| @@ -74,7 +74,7 @@ mkdir -p build | |||||
| echo ... Compiling Ant Classes | echo ... Compiling Ant Classes | ||||
| ${JAVAC} -d ${CLASSDIR} ${TOOLS}/tar/*.java \ | |||||
| ${JAVAC} -d ${CLASSDIR} ${TOOLS}/tar/*.java ${TOOLS}/zip/*.java \ | |||||
| ${TOOLS}/ant/util/regexp/RegexpMatcher.java \ | ${TOOLS}/ant/util/regexp/RegexpMatcher.java \ | ||||
| ${TOOLS}/ant/util/regexp/RegexpMatcherFactory.java \ | ${TOOLS}/ant/util/regexp/RegexpMatcherFactory.java \ | ||||
| ${TOOLS}/ant/util/*.java ${TOOLS}/ant/types/*.java \ | ${TOOLS}/ant/util/*.java ${TOOLS}/ant/types/*.java \ | ||||
| @@ -93,7 +93,7 @@ public class Recorder extends Task { | |||||
| /** What level to log? -1 means not initialized yet. */ | /** What level to log? -1 means not initialized yet. */ | ||||
| private int loglevel = -1; | private int loglevel = -1; | ||||
| /** The list of recorder entries. */ | /** The list of recorder entries. */ | ||||
| private static HashMap recorderEntries = new HashMap(); | |||||
| private static Hashtable recorderEntries = new Hashtable(); | |||||
| ////////////////////////////////////////////////////////////////////// | ////////////////////////////////////////////////////////////////////// | ||||
| // CONSTRUCTORS / INITIALIZERS | // CONSTRUCTORS / INITIALIZERS | ||||
| @@ -203,7 +203,7 @@ public class RecorderEntry implements BuildLogger { | |||||
| } | } | ||||
| public void setEmacsMode(boolean emacsMode) { | public void setEmacsMode(boolean emacsMode) { | ||||
| throw new java.lang.UnsupportedOperationException("Method setEmacsMode() not yet implemented."); | |||||
| throw new java.lang.RuntimeException("Method setEmacsMode() not yet implemented."); | |||||
| } | } | ||||
| public void setErrorPrintStream(PrintStream err) { | public void setErrorPrintStream(PrintStream err) { | ||||
| @@ -59,6 +59,7 @@ package org.apache.tools.ant.taskdefs.optional; | |||||
| import java.io.*; | import java.io.*; | ||||
| import java.text.*; | import java.text.*; | ||||
| import java.util.Random; | |||||
| import org.apache.tools.ant.BuildException; | import org.apache.tools.ant.BuildException; | ||||
| import org.apache.tools.ant.Project; | import org.apache.tools.ant.Project; | ||||
| import org.apache.tools.ant.taskdefs.Execute; | import org.apache.tools.ant.taskdefs.Execute; | ||||
| @@ -150,9 +151,9 @@ public class Pvcs extends org.apache.tools.ant.Task { | |||||
| if(getPvcsproject()!=null) | if(getPvcsproject()!=null) | ||||
| commandLine.createArgument().setValue(getPvcsproject()); | commandLine.createArgument().setValue(getPvcsproject()); | ||||
| File tmp; | |||||
| File tmp = null; | |||||
| try { | try { | ||||
| tmp = File.createTempFile("pvcs_ant_",".log"); | |||||
| tmp = new File("pvcs_ant_"+(new Random(System.currentTimeMillis())).nextLong()+".log"); | |||||
| result = runCmd(commandLine, new PumpStreamHandler(new FileOutputStream(tmp), new LogOutputStream(this,Project.MSG_WARN))); | result = runCmd(commandLine, new PumpStreamHandler(new FileOutputStream(tmp), new LogOutputStream(this,Project.MSG_WARN))); | ||||
| if ( result != 0 && !ignorerc) { | if ( result != 0 && !ignorerc) { | ||||
| String msg = "Failed executing: " + commandLine.toString(); | String msg = "Failed executing: " + commandLine.toString(); | ||||
| @@ -196,6 +197,10 @@ public class Pvcs extends org.apache.tools.ant.Task { | |||||
| } catch(ParseException e) { | } catch(ParseException e) { | ||||
| String msg = "Failed executing: " + commandLine.toString(); | String msg = "Failed executing: " + commandLine.toString(); | ||||
| throw new BuildException(e.getMessage(),location); | throw new BuildException(e.getMessage(),location); | ||||
| } finally { | |||||
| if (tmp != null) { | |||||
| tmp.delete(); | |||||
| } | |||||
| } | } | ||||
| } | } | ||||
| @@ -58,7 +58,6 @@ package org.apache.tools.ant.taskdefs.optional.ejb; | |||||
| import java.io.*; | import java.io.*; | ||||
| import java.net.*; | import java.net.*; | ||||
| import java.util.*; | import java.util.*; | ||||
| import java.util.jar.*; | |||||
| import javax.xml.parsers.*; | import javax.xml.parsers.*; | ||||
| import org.apache.tools.ant.*; | import org.apache.tools.ant.*; | ||||
| @@ -260,7 +260,7 @@ public abstract class DefaultRmicAdapter implements RmicAdapter { | |||||
| niceSourceList.append(" to be compiled:"); | niceSourceList.append(" to be compiled:"); | ||||
| for (int i=0; i < compileList.size(); i++) { | for (int i=0; i < compileList.size(); i++) { | ||||
| String arg = (String)compileList.get(i); | |||||
| String arg = (String)compileList.elementAt(i); | |||||
| cmd.createArgument().setValue(arg); | cmd.createArgument().setValue(arg); | ||||
| niceSourceList.append(" " + arg); | niceSourceList.append(" " + arg); | ||||
| } | } | ||||
| @@ -54,6 +54,8 @@ | |||||
| package org.apache.tools.zip; | package org.apache.tools.zip; | ||||
| import java.lang.reflect.InvocationTargetException; | |||||
| import java.lang.reflect.Method; | |||||
| import java.util.Vector; | import java.util.Vector; | ||||
| import java.util.zip.ZipException; | import java.util.zip.ZipException; | ||||
| @@ -85,7 +87,29 @@ public class ZipEntry extends java.util.zip.ZipEntry { | |||||
| * @since 1.1 | * @since 1.1 | ||||
| */ | */ | ||||
| public ZipEntry(java.util.zip.ZipEntry entry) throws ZipException { | public ZipEntry(java.util.zip.ZipEntry entry) throws ZipException { | ||||
| super(entry); | |||||
| /* | |||||
| * REVISIT: call super(entry) instead of this stuff in Ant2, | |||||
| * "copy constructor" has not been available in JDK 1.1 | |||||
| */ | |||||
| super(entry.getName()); | |||||
| setComment(entry.getComment()); | |||||
| setMethod(entry.getMethod()); | |||||
| setTime(entry.getTime()); | |||||
| long size = entry.getSize(); | |||||
| if (size > 0) { | |||||
| setSize(size); | |||||
| } | |||||
| long cSize = entry.getCompressedSize(); | |||||
| if (cSize > 0) { | |||||
| setComprSize(cSize); | |||||
| } | |||||
| long crc = entry.getCrc(); | |||||
| if (crc > 0) { | |||||
| setCrc(crc); | |||||
| } | |||||
| byte[] extra = entry.getExtra(); | byte[] extra = entry.getExtra(); | ||||
| if (extra != null) { | if (extra != null) { | ||||
| setExtraFields(ExtraFieldUtils.parse(extra)); | setExtraFields(ExtraFieldUtils.parse(extra)); | ||||
| @@ -100,8 +124,8 @@ public class ZipEntry extends java.util.zip.ZipEntry { | |||||
| * | * | ||||
| * @since 1.1 | * @since 1.1 | ||||
| */ | */ | ||||
| public ZipEntry(ZipEntry entry) { | |||||
| super(entry); | |||||
| public ZipEntry(ZipEntry entry) throws ZipException { | |||||
| this((java.util.zip.ZipEntry) entry); | |||||
| setInternalAttributes(entry.getInternalAttributes()); | setInternalAttributes(entry.getInternalAttributes()); | ||||
| setExternalAttributes(entry.getExternalAttributes()); | setExternalAttributes(entry.getExternalAttributes()); | ||||
| setExtraFields(entry.getExtraFields()); | setExtraFields(entry.getExtraFields()); | ||||
| @@ -269,4 +293,110 @@ public class ZipEntry extends java.util.zip.ZipEntry { | |||||
| public byte[] getCentralDirectoryExtra() { | public byte[] getCentralDirectoryExtra() { | ||||
| return ExtraFieldUtils.mergeCentralDirectoryData(getExtraFields()); | return ExtraFieldUtils.mergeCentralDirectoryData(getExtraFields()); | ||||
| } | } | ||||
| /** | |||||
| * Helper for JDK 1.1 <-> 1.2 incompatibility. | |||||
| * | |||||
| * @since 1.2 | |||||
| */ | |||||
| private Long compressedSize = null; | |||||
| /** | |||||
| * Make this class work in JDK 1.1 like a 1.2 class. | |||||
| * | |||||
| * <p>This either stores the size for later usage or invokes | |||||
| * setCompressedSize via reflection.</p> | |||||
| * | |||||
| * @since 1.2 | |||||
| */ | |||||
| public void setComprSize(long size) { | |||||
| if (haveSetCompressedSize()) { | |||||
| performSetCompressedSize(this, size); | |||||
| } else { | |||||
| compressedSize = new Long(size); | |||||
| } | |||||
| } | |||||
| /** | |||||
| * Override to make this class work in JDK 1.1 like a 1.2 class. | |||||
| * | |||||
| * @since 1.2 | |||||
| */ | |||||
| public long getCompressedSize() { | |||||
| if (compressedSize != null) { | |||||
| // has been set explicitly and we are running in a 1.1 VM | |||||
| return compressedSize.longValue(); | |||||
| } | |||||
| return super.getCompressedSize(); | |||||
| } | |||||
| /** | |||||
| * Helper for JDK 1.1 | |||||
| * | |||||
| * @since 1.2 | |||||
| */ | |||||
| private static Method setCompressedSizeMethod = null; | |||||
| /** | |||||
| * Helper for JDK 1.1 | |||||
| * | |||||
| * @since 1.2 | |||||
| */ | |||||
| private static Object lockReflection = new Object(); | |||||
| /** | |||||
| * Helper for JDK 1.1 | |||||
| * | |||||
| * @since 1.2 | |||||
| */ | |||||
| private static boolean triedToGetMethod = false; | |||||
| /** | |||||
| * Are we running JDK 1.2 or higher? | |||||
| * | |||||
| * @since 1.2 | |||||
| */ | |||||
| private static boolean haveSetCompressedSize() { | |||||
| checkSCS(); | |||||
| return setCompressedSizeMethod != null; | |||||
| } | |||||
| /** | |||||
| * Invoke setCompressedSize via reflection. | |||||
| * | |||||
| * @since 1.2 | |||||
| */ | |||||
| private static void performSetCompressedSize(ZipEntry ze, long size) { | |||||
| Long[] s = {new Long(size)}; | |||||
| try { | |||||
| setCompressedSizeMethod.invoke(ze, s); | |||||
| } catch (InvocationTargetException ite) { | |||||
| Throwable nested = ite.getTargetException(); | |||||
| throw new RuntimeException("Exception setting the compressed size " | |||||
| + "of " + ze + ": " | |||||
| + nested.getMessage()); | |||||
| } catch (Throwable other) { | |||||
| throw new RuntimeException("Exception setting the compressed size " | |||||
| + "of " + ze + ": " | |||||
| + other.getMessage()); | |||||
| } | |||||
| } | |||||
| /** | |||||
| * Try to get a handle to the setCompressedSize method. | |||||
| * | |||||
| * @since 1.2 | |||||
| */ | |||||
| private static void checkSCS() { | |||||
| if (!triedToGetMethod) { | |||||
| synchronized (lockReflection) { | |||||
| triedToGetMethod = true; | |||||
| try { | |||||
| setCompressedSizeMethod = | |||||
| java.util.zip.ZipEntry.class.getMethod("setCompressedSize", | |||||
| new Class[] {Long.TYPE}); | |||||
| } catch (NoSuchMethodException nse) { | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| } | } | ||||
| @@ -240,7 +240,7 @@ public class ZipOutputStream extends DeflaterOutputStream { | |||||
| } | } | ||||
| entry.setSize(def.getTotalIn()); | entry.setSize(def.getTotalIn()); | ||||
| entry.setCompressedSize(def.getTotalOut()); | |||||
| entry.setComprSize(def.getTotalOut()); | |||||
| entry.setCrc(realCrc); | entry.setCrc(realCrc); | ||||
| def.reset(); | def.reset(); | ||||
| @@ -295,7 +295,7 @@ public class ZipOutputStream extends DeflaterOutputStream { | |||||
| if (entry.getCrc() == -1) { | if (entry.getCrc() == -1) { | ||||
| throw new ZipException("crc checksum is required for STORED method"); | throw new ZipException("crc checksum is required for STORED method"); | ||||
| } | } | ||||
| entry.setCompressedSize(entry.getSize()); | |||||
| entry.setComprSize(entry.getSize()); | |||||
| } else { | } else { | ||||
| def.setLevel(level); | def.setLevel(level); | ||||
| } | } | ||||
| @@ -54,6 +54,8 @@ | |||||
| package org.apache.tools.ant.taskdefs; | package org.apache.tools.ant.taskdefs; | ||||
| import org.apache.tools.ant.Project; | |||||
| import java.net.*; | import java.net.*; | ||||
| import junit.framework.*; | import junit.framework.*; | ||||
| import java.io.*; | import java.io.*; | ||||
| @@ -89,6 +91,15 @@ public class ExecuteWatchdogTest extends TestCase { | |||||
| System.err.println("WARNING: 'build.tests' property is not available !"); | System.err.println("WARNING: 'build.tests' property is not available !"); | ||||
| classpath = System.getProperty("java.class.path"); | classpath = System.getProperty("java.class.path"); | ||||
| } | } | ||||
| // JDK 1.1 needs classes.zip in -classpath argument | |||||
| if (Project.getJavaVersion() == Project.JAVA_1_1) { | |||||
| classpath += File.pathSeparator | |||||
| + System.getProperty("java.home") | |||||
| + File.separator + "lib" | |||||
| + File.separator + "classes.zip"; | |||||
| } | |||||
| return classpath; | return classpath; | ||||
| } | } | ||||