You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by jk...@apache.org on 2005/05/22 19:32:08 UTC
cvs commit: ant/src/main/org/apache/tools/zip ZipEntry.java ZipOutputStream.java
jkf 2005/05/22 10:32:08
Modified: src/main/org/apache/tools/zip ZipEntry.java
ZipOutputStream.java
Log:
Removed reflection for 1.1 purposes
Revision Changes Path
1.28 +11 -169 ant/src/main/org/apache/tools/zip/ZipEntry.java
Index: ZipEntry.java
===================================================================
RCS file: /home/cvs/ant/src/main/org/apache/tools/zip/ZipEntry.java,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -r1.27 -r1.28
--- ZipEntry.java 22 May 2005 15:56:45 -0000 1.27
+++ ZipEntry.java 22 May 2005 17:32:08 -0000 1.28
@@ -17,8 +17,6 @@
package org.apache.tools.zip;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
import java.util.Vector;
import java.util.zip.ZipException;
@@ -54,29 +52,7 @@
* @throws ZipException on error
*/
public ZipEntry(java.util.zip.ZipEntry entry) throws ZipException {
- /*
- * 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);
- }
-
+ super(entry);
byte[] extra = entry.getExtra();
if (extra != null) {
setExtraFields(ExtraFieldUtils.parse(extra));
@@ -112,34 +88,18 @@
* @since 1.1
*/
public Object clone() {
- ZipEntry e = (ZipEntry) super.clone();
-
- e.setName(getName());
- e.setComment(getComment());
- e.setMethod(getMethod());
- e.setTime(getTime());
- long size = getSize();
- if (size > 0) {
- e.setSize(size);
- }
- long cSize = getCompressedSize();
- if (cSize > 0) {
- e.setComprSize(cSize);
- }
- long crc = getCrc();
- if (crc > 0) {
- e.setCrc(crc);
- }
+ ZipEntry e = (ZipEntry) super.clone();
- e.extraFields = (Vector) extraFields.clone();
- e.setInternalAttributes(getInternalAttributes());
- e.setExternalAttributes(getExternalAttributes());
- e.setExtraFields(getExtraFields());
- return e;
+ e.extraFields = (Vector) extraFields.clone();
+ e.setInternalAttributes(getInternalAttributes());
+ e.setExternalAttributes(getExternalAttributes());
+ e.setExtraFields(getExtraFields());
+ return e;
}
/**
* Retrieves the internal file attributes.
+ *
* @return the internal file attributes
* @since 1.1
*/
@@ -331,39 +291,16 @@
}
/**
- * 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>
* @param size the size to use
+ * @deprecated use setCompressedSize directly.
* @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.
- * @return the compressed size
- * @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();
+ setCompressedSize(size);
}
/**
@@ -410,106 +347,11 @@
* The equality method. In this case, the implementation returns 'this == o'
* which is basically the equals method of the Object class.
* @param o the object to compare to
- * @return true if this object has the same name as <code>o</code>
+ * @return true if this object is the same as <code>o</code>
* @since Ant 1.7
*/
public boolean equals(Object o) {
return (this == o);
}
- /**
- * 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, (Object[]) s);
- } catch (InvocationTargetException ite) {
- Throwable nested = ite.getTargetException();
- String msg = getDisplayableMessage(nested);
- if (msg == null) {
- msg = getDisplayableMessage(ite);
- }
- if (nested != null) {
- nested.printStackTrace();
- } else {
- ite.printStackTrace();
- }
- throw new RuntimeException("InvocationTargetException setting the "
- + "compressed size of " + ze + ": "
- + msg);
- } catch (Exception other) {
- throw new RuntimeException("Exception setting the compressed size "
- + "of " + ze + ": "
- + getDisplayableMessage(other));
- }
- }
-
- /**
- * 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) {
- // Ignore the exception
- }
- }
- }
- }
-
- /**
- * try to get as much single-line information out of the exception
- * as possible.
- */
- private static String getDisplayableMessage(Throwable e) {
- String msg = null;
- if (e != null) {
- if (e.getMessage() != null) {
- msg = e.getClass().getName() + ": " + e.getMessage();
- } else {
- msg = e.getClass().getName();
- }
- }
- return msg;
- }
-
}
1.36 +3 -3 ant/src/main/org/apache/tools/zip/ZipOutputStream.java
Index: ZipOutputStream.java
===================================================================
RCS file: /home/cvs/ant/src/main/org/apache/tools/zip/ZipOutputStream.java,v
retrieving revision 1.35
retrieving revision 1.36
diff -u -r1.35 -r1.36
--- ZipOutputStream.java 9 Mar 2005 00:20:39 -0000 1.35
+++ ZipOutputStream.java 22 May 2005 17:32:08 -0000 1.36
@@ -336,7 +336,7 @@
}
entry.setSize(adjustToLong(def.getTotalIn()));
- entry.setComprSize(adjustToLong(def.getTotalOut()));
+ entry.setCompressedSize(adjustToLong(def.getTotalOut()));
entry.setCrc(realCrc);
def.reset();
@@ -362,7 +362,7 @@
long size = written - dataStart;
entry.setSize(size);
- entry.setComprSize(size);
+ entry.setCompressedSize(size);
entry.setCrc(realCrc);
}
@@ -413,7 +413,7 @@
throw new ZipException("crc checksum is required for STORED"
+ " method when not writing to a file");
}
- entry.setComprSize(entry.getSize());
+ entry.setCompressedSize(entry.getSize());
}
if (entry.getMethod() == DEFLATED && hasCompressionLevelChanged) {
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org