Author: bodewig
Date: Thu Aug 27 03:06:55 2009
New Revision: 808265
URL: http://svn.apache.org/viewvc?rev=808265&view=rev
Log:
port keepCompression from <zip>
Modified:
ant/sandbox/antlibs/compress/trunk/src/main/org/apache/ant/compress/resources/ZipResource.java
ant/sandbox/antlibs/compress/trunk/src/main/org/apache/ant/compress/taskdefs/ArchiveBase.java
ant/sandbox/antlibs/compress/trunk/src/main/org/apache/ant/compress/taskdefs/Zip.java
Modified:
ant/sandbox/antlibs/compress/trunk/src/main/org/apache/ant/compress/resources/ZipResource.java
URL:
http://svn.apache.org/viewvc/ant/sandbox/antlibs/compress/trunk/src/main/org/apache/ant/compress/resources/ZipResource.java?rev=808265&r1=808264&r2=808265&view=diff
==============================================================================
---
ant/sandbox/antlibs/compress/trunk/src/main/org/apache/ant/compress/resources/ZipResource.java
(original)
+++
ant/sandbox/antlibs/compress/trunk/src/main/org/apache/ant/compress/resources/ZipResource.java
Thu Aug 27 03:06:55 2009
@@ -41,6 +41,7 @@
public final class ZipResource extends CommonsCompressArchiveResource {
private ZipExtraField[] extras;
+ private int method;
/**
* Default constructor.
@@ -153,6 +154,13 @@
}
/**
+ * The compression method that has been used.
+ */
+ public int getMethod() {
+ return method;
+ }
+
+ /**
* fetches information from the named entry inside the archive.
*/
protected void fetchEntry() {
@@ -177,7 +185,9 @@
protected void setEntry(ArchiveEntry e) {
super.setEntry(e);
if (e != null) {
- extras = ((ZipArchiveEntry) e).getExtraFields();
+ ZipArchiveEntry ze = (ZipArchiveEntry) e;
+ extras = ze.getExtraFields();
+ method = ze.getMethod();
}
}
Modified:
ant/sandbox/antlibs/compress/trunk/src/main/org/apache/ant/compress/taskdefs/ArchiveBase.java
URL:
http://svn.apache.org/viewvc/ant/sandbox/antlibs/compress/trunk/src/main/org/apache/ant/compress/taskdefs/ArchiveBase.java?rev=808265&r1=808264&r2=808265&view=diff
==============================================================================
---
ant/sandbox/antlibs/compress/trunk/src/main/org/apache/ant/compress/taskdefs/ArchiveBase.java
(original)
+++
ant/sandbox/antlibs/compress/trunk/src/main/org/apache/ant/compress/taskdefs/ArchiveBase.java
Thu Aug 27 03:06:55 2009
@@ -373,7 +373,8 @@
tr.getGroup());
} else if (r instanceof ZipResource) {
ZipResource zr = (ZipResource) r;
- return new ResourceFlags(zr.getMode(),
zr.getExtraFields());
+ return new ResourceFlags(zr.getMode(), zr.getExtraFields(),
+ zr.getMethod());
} else {
CommonsCompressArchiveResource cr =
(CommonsCompressArchiveResource) r;
@@ -414,7 +415,7 @@
}
}
- return new ResourceFlags(zr.getMode(), ex);
+ return new ResourceFlags(zr.getMode(), ex, zr.getMethod());
} else {
ArchiveResource ar = (ArchiveResource) r;
return new ResourceFlags(ar.getMode());
@@ -648,32 +649,36 @@
private final ZipExtraField[] extraFields;
private final String userName;
private final String groupName;
+ private final int compressionMethod;
public ResourceFlags() {
this(-1);
}
public ResourceFlags(int mode) {
- this(mode, new ZipExtraField[0]);
+ this(mode, new ZipExtraField[0], -1);
}
- public ResourceFlags(int mode, ZipExtraField[] extraFields) {
+ public ResourceFlags(int mode, ZipExtraField[] extraFields,
+ int compressionMethod) {
this(mode, extraFields, EntryHelper.UNKNOWN_ID,
- EntryHelper.UNKNOWN_ID, null, null);
+ EntryHelper.UNKNOWN_ID, null, null,
+ compressionMethod);
}
public ResourceFlags(int mode, int uid, int gid) {
- this(mode, new ZipExtraField[0], uid, gid, null, null);
+ this(mode, new ZipExtraField[0], uid, gid, null, null, -1);
}
public ResourceFlags(int mode, int uid, int gid, String userName,
String groupName) {
- this(mode, new ZipExtraField[0], uid, gid, userName, groupName);
+ this(mode, new ZipExtraField[0], uid, gid, userName, groupName,
-1);
}
private ResourceFlags(int mode, ZipExtraField[] extraFields,
int uid, int gid,
- String userName, String groupName) {
+ String userName, String groupName,
+ int compressionMethod) {
this.mode = mode;
this.extraFields = extraFields;
this.gid = gid;
@@ -682,6 +687,7 @@
this.groupName = groupName;
int m = mode & UnixStat.PERM_MASK;
modeSet = mode >= 0 && (m > 0 || (m == 0 && preserve0permissions));
+ this.compressionMethod = compressionMethod;
}
public boolean hasModeBeenSet() { return modeSet; }
@@ -704,6 +710,9 @@
public boolean hasGroupNameBeenSet() { return groupName != null; }
public String getGroupName() { return groupName; }
+
+ public boolean hasCompressionMethod() { return compressionMethod >= 0;
}
+ public int getCompressionMethod() { return compressionMethod; }
}
/**
Modified:
ant/sandbox/antlibs/compress/trunk/src/main/org/apache/ant/compress/taskdefs/Zip.java
URL:
http://svn.apache.org/viewvc/ant/sandbox/antlibs/compress/trunk/src/main/org/apache/ant/compress/taskdefs/Zip.java?rev=808265&r1=808264&r2=808265&view=diff
==============================================================================
---
ant/sandbox/antlibs/compress/trunk/src/main/org/apache/ant/compress/taskdefs/Zip.java
(original)
+++
ant/sandbox/antlibs/compress/trunk/src/main/org/apache/ant/compress/taskdefs/Zip.java
Thu Aug 27 03:06:55 2009
@@ -35,6 +35,7 @@
public class Zip extends ArchiveBase {
private int level = Deflater.DEFAULT_COMPRESSION;
private String comment = "";
+ private boolean keepCompression = false;
public Zip() {
setFactory(new ZipStreamFactory() {
@@ -75,6 +76,12 @@
.getZipExtraFields());
}
+ if (keepCompression
+ && r.getResourceFlags().hasCompressionMethod()) {
+ ent.setMethod(r.getResourceFlags()
+ .getCompressionMethod());
+ }
+
return ent;
}
});
@@ -97,4 +104,14 @@
public void setComment(String comment) {
this.comment = comment;
}
+
+ /**
+ * Whether the original compression of entries coming from a ZIP
+ * archive should be kept (for example when updating an archive).
+ * Default is false.
+ * @param keep if true, keep the original compression
+ */
+ public void setKeepCompression(boolean keep) {
+ keepCompression = keep;
+ }
}
\ No newline at end of file