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; | ||||
} | } | ||||