Browse Source

More JDK 1.1 issues. Culprits have been <pvcs>, <record> and the new

zip package.


git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@268962 13f79535-47bb-0310-9956-ffa450edef68
master
Stefan Bodewig 24 years ago
parent
commit
c3714c50a1
10 changed files with 158 additions and 13 deletions
  1. +1
    -1
      bootstrap.bat
  2. +1
    -1
      bootstrap.sh
  3. +1
    -1
      src/main/org/apache/tools/ant/taskdefs/Recorder.java
  4. +1
    -1
      src/main/org/apache/tools/ant/taskdefs/RecorderEntry.java
  5. +7
    -2
      src/main/org/apache/tools/ant/taskdefs/optional/Pvcs.java
  6. +0
    -1
      src/main/org/apache/tools/ant/taskdefs/optional/ejb/BorlandGenerateClient.java
  7. +1
    -1
      src/main/org/apache/tools/ant/taskdefs/rmic/DefaultRmicAdapter.java
  8. +133
    -3
      src/main/org/apache/tools/zip/ZipEntry.java
  9. +2
    -2
      src/main/org/apache/tools/zip/ZipOutputStream.java
  10. +11
    -0
      src/testcases/org/apache/tools/ant/taskdefs/ExecuteWatchdogTest.java

+ 1
- 1
bootstrap.bat View File

@@ -48,7 +48,7 @@ if not exist build\classes mkdir build\classes
echo.
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 ... Copying Required Files


+ 1
- 1
bootstrap.sh View File

@@ -74,7 +74,7 @@ mkdir -p build

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/RegexpMatcherFactory.java \
${TOOLS}/ant/util/*.java ${TOOLS}/ant/types/*.java \


+ 1
- 1
src/main/org/apache/tools/ant/taskdefs/Recorder.java View File

@@ -93,7 +93,7 @@ public class Recorder extends Task {
/** What level to log? -1 means not initialized yet. */
private int loglevel = -1;
/** The list of recorder entries. */
private static HashMap recorderEntries = new HashMap();
private static Hashtable recorderEntries = new Hashtable();

//////////////////////////////////////////////////////////////////////
// CONSTRUCTORS / INITIALIZERS


+ 1
- 1
src/main/org/apache/tools/ant/taskdefs/RecorderEntry.java View File

@@ -203,7 +203,7 @@ public class RecorderEntry implements BuildLogger {
}

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) {


+ 7
- 2
src/main/org/apache/tools/ant/taskdefs/optional/Pvcs.java View File

@@ -59,6 +59,7 @@ package org.apache.tools.ant.taskdefs.optional;

import java.io.*;
import java.text.*;
import java.util.Random;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.taskdefs.Execute;
@@ -150,9 +151,9 @@ public class Pvcs extends org.apache.tools.ant.Task {
if(getPvcsproject()!=null)
commandLine.createArgument().setValue(getPvcsproject());

File tmp;
File tmp = null;
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)));
if ( result != 0 && !ignorerc) {
String msg = "Failed executing: " + commandLine.toString();
@@ -196,6 +197,10 @@ public class Pvcs extends org.apache.tools.ant.Task {
} catch(ParseException e) {
String msg = "Failed executing: " + commandLine.toString();
throw new BuildException(e.getMessage(),location);
} finally {
if (tmp != null) {
tmp.delete();
}
}
}



+ 0
- 1
src/main/org/apache/tools/ant/taskdefs/optional/ejb/BorlandGenerateClient.java View File

@@ -58,7 +58,6 @@ package org.apache.tools.ant.taskdefs.optional.ejb;
import java.io.*;
import java.net.*;
import java.util.*;
import java.util.jar.*;
import javax.xml.parsers.*;

import org.apache.tools.ant.*;


+ 1
- 1
src/main/org/apache/tools/ant/taskdefs/rmic/DefaultRmicAdapter.java View File

@@ -260,7 +260,7 @@ public abstract class DefaultRmicAdapter implements RmicAdapter {
niceSourceList.append(" to be compiled:");

for (int i=0; i < compileList.size(); i++) {
String arg = (String)compileList.get(i);
String arg = (String)compileList.elementAt(i);
cmd.createArgument().setValue(arg);
niceSourceList.append(" " + arg);
}


+ 133
- 3
src/main/org/apache/tools/zip/ZipEntry.java View File

@@ -54,6 +54,8 @@

package org.apache.tools.zip;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Vector;
import java.util.zip.ZipException;

@@ -85,7 +87,29 @@ public class ZipEntry extends java.util.zip.ZipEntry {
* @since 1.1
*/
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();
if (extra != null) {
setExtraFields(ExtraFieldUtils.parse(extra));
@@ -100,8 +124,8 @@ public class ZipEntry extends java.util.zip.ZipEntry {
*
* @since 1.1
*/
public ZipEntry(ZipEntry entry) {
super(entry);
public ZipEntry(ZipEntry entry) throws ZipException {
this((java.util.zip.ZipEntry) entry);
setInternalAttributes(entry.getInternalAttributes());
setExternalAttributes(entry.getExternalAttributes());
setExtraFields(entry.getExtraFields());
@@ -269,4 +293,110 @@ public class ZipEntry extends java.util.zip.ZipEntry {
public byte[] getCentralDirectoryExtra() {
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) {
}
}
}
}

}

+ 2
- 2
src/main/org/apache/tools/zip/ZipOutputStream.java View File

@@ -240,7 +240,7 @@ public class ZipOutputStream extends DeflaterOutputStream {
}

entry.setSize(def.getTotalIn());
entry.setCompressedSize(def.getTotalOut());
entry.setComprSize(def.getTotalOut());
entry.setCrc(realCrc);

def.reset();
@@ -295,7 +295,7 @@ public class ZipOutputStream extends DeflaterOutputStream {
if (entry.getCrc() == -1) {
throw new ZipException("crc checksum is required for STORED method");
}
entry.setCompressedSize(entry.getSize());
entry.setComprSize(entry.getSize());
} else {
def.setLevel(level);
}


+ 11
- 0
src/testcases/org/apache/tools/ant/taskdefs/ExecuteWatchdogTest.java View File

@@ -54,6 +54,8 @@

package org.apache.tools.ant.taskdefs;

import org.apache.tools.ant.Project;

import java.net.*;
import junit.framework.*;
import java.io.*;
@@ -89,6 +91,15 @@ public class ExecuteWatchdogTest extends TestCase {
System.err.println("WARNING: 'build.tests' property is not available !");
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;
}



Loading…
Cancel
Save