Author: bodewig
Date: Mon Jul 25 13:28:31 2011
New Revision: 1150694
URL: http://svn.apache.org/viewvc?rev=1150694&view=rev
Log:
Java5ify ZipArchiveInputStream implementation and related classes
Added:
commons/proper/compress/branches/zip64/src/main/java/org/apache/commons/compress/archivers/zip/ZipConstants.java
(with props)
Modified:
commons/proper/compress/branches/zip64/src/main/java/org/apache/commons/compress/archivers/zip/ExtraFieldUtils.java
commons/proper/compress/branches/zip64/src/main/java/org/apache/commons/compress/archivers/zip/GeneralPurposeBit.java
commons/proper/compress/branches/zip64/src/main/java/org/apache/commons/compress/archivers/zip/Simple8BitZipEncoding.java
commons/proper/compress/branches/zip64/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveEntry.java
commons/proper/compress/branches/zip64/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveInputStream.java
commons/proper/compress/branches/zip64/src/main/java/org/apache/commons/compress/archivers/zip/ZipEightByteInteger.java
commons/proper/compress/branches/zip64/src/main/java/org/apache/commons/compress/archivers/zip/ZipEncodingHelper.java
commons/proper/compress/branches/zip64/src/main/java/org/apache/commons/compress/archivers/zip/ZipLong.java
commons/proper/compress/branches/zip64/src/main/java/org/apache/commons/compress/archivers/zip/ZipShort.java
Modified:
commons/proper/compress/branches/zip64/src/main/java/org/apache/commons/compress/archivers/zip/ExtraFieldUtils.java
URL:
http://svn.apache.org/viewvc/commons/proper/compress/branches/zip64/src/main/java/org/apache/commons/compress/archivers/zip/ExtraFieldUtils.java?rev=1150694&r1=1150693&r2=1150694&view=diff
==============================================================================
---
commons/proper/compress/branches/zip64/src/main/java/org/apache/commons/compress/archivers/zip/ExtraFieldUtils.java
(original)
+++
commons/proper/compress/branches/zip64/src/main/java/org/apache/commons/compress/archivers/zip/ExtraFieldUtils.java
Mon Jul 25 13:28:31 2011
@@ -35,10 +35,10 @@ public class ExtraFieldUtils {
/**
* Static registry of known extra fields.
*/
- private static final Map implementations;
+ private static final Map<ZipShort, Class<?>> implementations;
static {
- implementations = new HashMap();
+ implementations = new HashMap<ZipShort, Class<?>>();
register(AsiExtraField.class);
register(JarMarker.class);
register(UnicodePathExtraField.class);
@@ -53,7 +53,7 @@ public class ExtraFieldUtils {
* the {@link ZipExtraField ZipExtraField interface}.</p>
* @param c the class to register
*/
- public static void register(Class c) {
+ public static void register(Class<?> c) {
try {
ZipExtraField ze = (ZipExtraField) c.newInstance();
implementations.put(ze.getHeaderId(), c);
@@ -76,7 +76,7 @@ public class ExtraFieldUtils {
*/
public static ZipExtraField createExtraField(ZipShort headerId)
throws InstantiationException, IllegalAccessException {
- Class c = (Class) implementations.get(headerId);
+ Class<?> c = implementations.get(headerId);
if (c != null) {
return (ZipExtraField) c.newInstance();
}
@@ -127,7 +127,7 @@ public class ExtraFieldUtils {
public static ZipExtraField[] parse(byte[] data, boolean local,
UnparseableExtraField
onUnparseableData)
throws ZipException {
- List v = new ArrayList();
+ List<ZipExtraField> v = new ArrayList<ZipExtraField>();
int start = 0;
LOOP:
while (start <= data.length - WORD) {
@@ -182,7 +182,7 @@ public class ExtraFieldUtils {
}
ZipExtraField[] result = new ZipExtraField[v.size()];
- return (ZipExtraField[]) v.toArray(result);
+ return v.toArray(result);
}
/**
Modified:
commons/proper/compress/branches/zip64/src/main/java/org/apache/commons/compress/archivers/zip/GeneralPurposeBit.java
URL:
http://svn.apache.org/viewvc/commons/proper/compress/branches/zip64/src/main/java/org/apache/commons/compress/archivers/zip/GeneralPurposeBit.java?rev=1150694&r1=1150693&r2=1150694&view=diff
==============================================================================
---
commons/proper/compress/branches/zip64/src/main/java/org/apache/commons/compress/archivers/zip/GeneralPurposeBit.java
(original)
+++
commons/proper/compress/branches/zip64/src/main/java/org/apache/commons/compress/archivers/zip/GeneralPurposeBit.java
Mon Jul 25 13:28:31 2011
@@ -149,6 +149,7 @@ public final class GeneralPurposeBit {
return b;
}
+ @Override
public int hashCode() {
return 3 * (7 * (13 * (17 * (encryptionFlag ? 1 : 0)
+ (strongEncryptionFlag ? 1 : 0))
@@ -156,6 +157,7 @@ public final class GeneralPurposeBit {
+ (dataDescriptorFlag ? 1 : 0));
}
+ @Override
public boolean equals(Object o) {
if (!(o instanceof GeneralPurposeBit)) {
return false;
Modified:
commons/proper/compress/branches/zip64/src/main/java/org/apache/commons/compress/archivers/zip/Simple8BitZipEncoding.java
URL:
http://svn.apache.org/viewvc/commons/proper/compress/branches/zip64/src/main/java/org/apache/commons/compress/archivers/zip/Simple8BitZipEncoding.java?rev=1150694&r1=1150693&r2=1150694&view=diff
==============================================================================
---
commons/proper/compress/branches/zip64/src/main/java/org/apache/commons/compress/archivers/zip/Simple8BitZipEncoding.java
(original)
+++
commons/proper/compress/branches/zip64/src/main/java/org/apache/commons/compress/archivers/zip/Simple8BitZipEncoding.java
Mon Jul 25 13:28:31 2011
@@ -82,7 +82,7 @@ class Simple8BitZipEncoding implements Z
* field. This list is used to binary search reverse mapping of
* unicode characters with a character code greater than 127.
*/
- private final List reverseMapping;
+ private final List<Simple8BitChar> reverseMapping;
/**
* @param highChars The characters for byte values of 128 to 255
@@ -90,7 +90,7 @@ class Simple8BitZipEncoding implements Z
*/
public Simple8BitZipEncoding(char[] highChars) {
this.highChars = (char[]) highChars.clone();
- List temp = new ArrayList(this.highChars.length);
+ List temp = new ArrayList<Simple8BitChar>(this.highChars.length);
byte code = 127;
@@ -172,7 +172,7 @@ class Simple8BitZipEncoding implements Z
int i = i0 + (i1 - i0) / 2;
- Simple8BitChar m = (Simple8BitChar) this.reverseMapping.get(i);
+ Simple8BitChar m = this.reverseMapping.get(i);
if (m.unicode == c) {
return m;
@@ -189,7 +189,7 @@ class Simple8BitZipEncoding implements Z
return null;
}
- Simple8BitChar r = (Simple8BitChar) this.reverseMapping.get(i0);
+ Simple8BitChar r = this.reverseMapping.get(i0);
if (r.unicode != c) {
return null;
Modified:
commons/proper/compress/branches/zip64/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveEntry.java
URL:
http://svn.apache.org/viewvc/commons/proper/compress/branches/zip64/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveEntry.java?rev=1150694&r1=1150693&r2=1150694&view=diff
==============================================================================
---
commons/proper/compress/branches/zip64/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveEntry.java
(original)
+++
commons/proper/compress/branches/zip64/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveEntry.java
Mon Jul 25 13:28:31 2011
@@ -79,7 +79,7 @@ public class ZipArchiveEntry extends jav
private int internalAttributes = 0;
private int platform = PLATFORM_FAT;
private long externalAttributes = 0;
- private LinkedHashMap/*<ZipShort, ZipExtraField>*/ extraFields = null;
+ private LinkedHashMap<ZipShort, ZipExtraField> extraFields = null;
private UnparseableExtraFieldData unparseableExtra = null;
private String name = null;
private byte[] rawName = null;
@@ -168,6 +168,7 @@ public class ZipArchiveEntry extends jav
* Overwrite clone.
* @return a cloned copy of this ZipArchiveEntry
*/
+ @Override
public Object clone() {
ZipArchiveEntry e = (ZipArchiveEntry) super.clone();
@@ -286,7 +287,7 @@ public class ZipArchiveEntry extends jav
* @param fields an array of extra fields
*/
public void setExtraFields(ZipExtraField[] fields) {
- extraFields = new LinkedHashMap();
+ extraFields = new LinkedHashMap<ZipShort, ZipExtraField>();
for (int i = 0; i < fields.length; i++) {
if (fields[i] instanceof UnparseableExtraFieldData) {
unparseableExtra = (UnparseableExtraFieldData) fields[i];
@@ -320,11 +321,12 @@ public class ZipArchiveEntry extends jav
? new ZipExtraField[0]
: new ZipExtraField[] { unparseableExtra };
}
- List result = new ArrayList(extraFields.values());
+ List<ZipExtraField> result =
+ new ArrayList<ZipExtraField>(extraFields.values());
if (includeUnparseable && unparseableExtra != null) {
result.add(unparseableExtra);
}
- return (ZipExtraField[]) result.toArray(new ZipExtraField[0]);
+ return result.toArray(new ZipExtraField[0]);
}
/**
@@ -340,7 +342,7 @@ public class ZipArchiveEntry extends jav
unparseableExtra = (UnparseableExtraFieldData) ze;
} else {
if (extraFields == null) {
- extraFields = new LinkedHashMap();
+ extraFields = new LinkedHashMap<ZipShort, ZipExtraField>();
}
extraFields.put(ze.getHeaderId(), ze);
}
@@ -359,7 +361,7 @@ public class ZipArchiveEntry extends jav
unparseableExtra = (UnparseableExtraFieldData) ze;
} else {
LinkedHashMap copy = extraFields;
- extraFields = new LinkedHashMap();
+ extraFields = new LinkedHashMap<ZipShort, ZipExtraField>();
extraFields.put(ze.getHeaderId(), ze);
if (copy != null) {
copy.remove(ze.getHeaderId());
@@ -403,7 +405,7 @@ public class ZipArchiveEntry extends jav
*/
public ZipExtraField getExtraField(ZipShort type) {
if (extraFields != null) {
- return (ZipExtraField) extraFields.get(type);
+ return extraFields.get(type);
}
return null;
}
@@ -427,6 +429,7 @@ public class ZipArchiveEntry extends jav
* @throws RuntimeException if the bytes cannot be parsed
* @throws RuntimeException on error
*/
+ @Override
public void setExtra(byte[] extra) throws RuntimeException {
try {
ZipExtraField[] local =
@@ -434,7 +437,7 @@ public class ZipArchiveEntry extends jav
ExtraFieldUtils.UnparseableExtraField.READ);
mergeExtraFields(local, true);
} catch (ZipException e) {
- // actually this is not be possible as of Commons Compress 1.1
+ // actually this is not possible as of Commons Compress 1.1
throw new RuntimeException("Error parsing extra fields for entry: "
+ getName() + " - " + e.getMessage(),
e);
}
@@ -485,6 +488,7 @@ public class ZipArchiveEntry extends jav
* Get the name of the entry.
* @return the entry name
*/
+ @Override
public String getName() {
return name == null ? super.getName() : name;
}
@@ -509,6 +513,7 @@ public class ZipArchiveEntry extends jav
* Gets the uncompressed size of the entry data.
* @return the entry size
*/
+ @Override
public long getSize() {
return size;
}
@@ -519,6 +524,7 @@ public class ZipArchiveEntry extends jav
* @exception IllegalArgumentException if the specified size is less
* than 0
*/
+ @Override
public void setSize(long size) {
if (size < 0) {
throw new IllegalArgumentException("invalid entry size");
@@ -559,6 +565,7 @@ public class ZipArchiveEntry extends jav
* This uses the name as the hashcode.
* @return a hashcode.
*/
+ @Override
public int hashCode() {
// this method has severe consequences on performance. We cannot rely
// on the super.hashCode() method since super.getName() always return
@@ -627,6 +634,7 @@ public class ZipArchiveEntry extends jav
/* (non-Javadoc)
* @see java.lang.Object#equals(java.lang.Object)
*/
+ @Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
Modified:
commons/proper/compress/branches/zip64/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveInputStream.java
URL:
http://svn.apache.org/viewvc/commons/proper/compress/branches/zip64/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveInputStream.java?rev=1150694&r1=1150693&r2=1150694&view=diff
==============================================================================
---
commons/proper/compress/branches/zip64/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveInputStream.java
(original)
+++
commons/proper/compress/branches/zip64/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveInputStream.java
Mon Jul 25 13:28:31 2011
@@ -32,6 +32,9 @@ import java.util.zip.ZipException;
import org.apache.commons.compress.archivers.ArchiveEntry;
import org.apache.commons.compress.archivers.ArchiveInputStream;
+import static org.apache.commons.compress.archivers.zip.ZipConstants.SHORT;
+import static org.apache.commons.compress.archivers.zip.ZipConstants.WORD;
+
/**
* Implements an input stream that can read Zip archives.
* <p>
@@ -45,9 +48,6 @@ import org.apache.commons.compress.archi
*/
public class ZipArchiveInputStream extends ArchiveInputStream {
- private static final int SHORT = 2;
- private static final int WORD = 4;
-
/**
* The zip encoding to use for filenames and the file comment.
*/
@@ -208,6 +208,7 @@ public class ZipArchiveInputStream exten
}
/** {@inheritDoc} */
+ @Override
public ArchiveEntry getNextEntry() throws IOException {
return getNextZipEntry();
}
@@ -219,6 +220,7 @@ public class ZipArchiveInputStream exten
* compression method that hasn't been implemented yet.</p>
* @since Apache Commons Compress 1.1
*/
+ @Override
public boolean canReadEntryData(ArchiveEntry ae) {
if (ae instanceof ZipArchiveEntry) {
ZipArchiveEntry ze = (ZipArchiveEntry) ae;
@@ -229,6 +231,7 @@ public class ZipArchiveInputStream exten
return false;
}
+ @Override
public int read(byte[] buffer, int start, int length) throws IOException {
if (closed) {
throw new IOException("The stream is closed");
@@ -307,6 +310,7 @@ public class ZipArchiveInputStream exten
throw new ArrayIndexOutOfBoundsException();
}
+ @Override
public void close() throws IOException {
if (!closed) {
closed = true;
@@ -329,6 +333,7 @@ public class ZipArchiveInputStream exten
* @throws IOException - if an I/O error occurs.
* @throws IllegalArgumentException - if value is negative.
*/
+ @Override
public long skip(long value) throws IOException {
if (value >= 0) {
long skipped = 0;
Added:
commons/proper/compress/branches/zip64/src/main/java/org/apache/commons/compress/archivers/zip/ZipConstants.java
URL:
http://svn.apache.org/viewvc/commons/proper/compress/branches/zip64/src/main/java/org/apache/commons/compress/archivers/zip/ZipConstants.java?rev=1150694&view=auto
==============================================================================
---
commons/proper/compress/branches/zip64/src/main/java/org/apache/commons/compress/archivers/zip/ZipConstants.java
(added)
+++
commons/proper/compress/branches/zip64/src/main/java/org/apache/commons/compress/archivers/zip/ZipConstants.java
Mon Jul 25 13:28:31 2011
@@ -0,0 +1,36 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.commons.compress.archivers.zip;
+
+/**
+ * Various constants used throughout the package.
+ *
+ * @since Apache Commons Compress 1.3
+ */
+final class ZipConstants {
+ private ZipConstants() { }
+
+ /** Masks last eight bits */
+ static final int BYTE_MASK = 0xFF;
+
+ /** length of a ZipShort in bytes */
+ static final int SHORT = 2;
+
+ /** length of a ZipLong in bytes */
+ static final int WORD = 4;
+}
Propchange:
commons/proper/compress/branches/zip64/src/main/java/org/apache/commons/compress/archivers/zip/ZipConstants.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified:
commons/proper/compress/branches/zip64/src/main/java/org/apache/commons/compress/archivers/zip/ZipEightByteInteger.java
URL:
http://svn.apache.org/viewvc/commons/proper/compress/branches/zip64/src/main/java/org/apache/commons/compress/archivers/zip/ZipEightByteInteger.java?rev=1150694&r1=1150693&r2=1150694&view=diff
==============================================================================
---
commons/proper/compress/branches/zip64/src/main/java/org/apache/commons/compress/archivers/zip/ZipEightByteInteger.java
(original)
+++
commons/proper/compress/branches/zip64/src/main/java/org/apache/commons/compress/archivers/zip/ZipEightByteInteger.java
Mon Jul 25 13:28:31 2011
@@ -19,6 +19,8 @@ package org.apache.commons.compress.arch
import java.math.BigInteger;
+import static org.apache.commons.compress.archivers.zip.ZipConstants.BYTE_MASK;
+
/**
* Utility class that represents an eight byte integer with conversion
* rules for the big endian byte order of ZIP files.
@@ -28,8 +30,6 @@ import java.math.BigInteger;
*/
public final class ZipEightByteInteger {
- private static final int BYTE_MASK = 0xFF;
-
private static final int BYTE_1 = 1;
private static final int BYTE_1_MASK = 0xFF00;
private static final int BYTE_1_SHIFT = 8;
@@ -206,6 +206,7 @@ public final class ZipEightByteInteger {
* @param o an object to compare
* @return true if the objects are equal
*/
+ @Override
public boolean equals(Object o) {
if (o == null || !(o instanceof ZipEightByteInteger)) {
return false;
@@ -217,10 +218,12 @@ public final class ZipEightByteInteger {
* Override to make two instances with same value equal.
* @return the hashCode of the value stored in the ZipEightByteInteger
*/
+ @Override
public int hashCode() {
return value.hashCode();
}
+ @Override
public String toString() {
return "ZipEightByteInteger value: " + value;
}
Modified:
commons/proper/compress/branches/zip64/src/main/java/org/apache/commons/compress/archivers/zip/ZipEncodingHelper.java
URL:
http://svn.apache.org/viewvc/commons/proper/compress/branches/zip64/src/main/java/org/apache/commons/compress/archivers/zip/ZipEncodingHelper.java?rev=1150694&r1=1150693&r2=1150694&view=diff
==============================================================================
---
commons/proper/compress/branches/zip64/src/main/java/org/apache/commons/compress/archivers/zip/ZipEncodingHelper.java
(original)
+++
commons/proper/compress/branches/zip64/src/main/java/org/apache/commons/compress/archivers/zip/ZipEncodingHelper.java
Mon Jul 25 13:28:31 2011
@@ -62,10 +62,10 @@ abstract class ZipEncodingHelper {
}
}
- private static final Map simpleEncodings;
+ private static final Map<String, SimpleEncodingHolder> simpleEncodings;
static {
- simpleEncodings = new HashMap();
+ simpleEncodings = new HashMap<String, SimpleEncodingHolder>();
char[] cp437_high_chars =
new char[] { 0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0,
@@ -218,8 +218,7 @@ abstract class ZipEncodingHelper {
return new FallbackZipEncoding();
}
- SimpleEncodingHolder h =
- (SimpleEncodingHolder) simpleEncodings.get(name);
+ SimpleEncodingHolder h = simpleEncodings.get(name);
if (h!=null) {
return h.getEncoding();
Modified:
commons/proper/compress/branches/zip64/src/main/java/org/apache/commons/compress/archivers/zip/ZipLong.java
URL:
http://svn.apache.org/viewvc/commons/proper/compress/branches/zip64/src/main/java/org/apache/commons/compress/archivers/zip/ZipLong.java?rev=1150694&r1=1150693&r2=1150694&view=diff
==============================================================================
---
commons/proper/compress/branches/zip64/src/main/java/org/apache/commons/compress/archivers/zip/ZipLong.java
(original)
+++
commons/proper/compress/branches/zip64/src/main/java/org/apache/commons/compress/archivers/zip/ZipLong.java
Mon Jul 25 13:28:31 2011
@@ -17,6 +17,9 @@
*/
package org.apache.commons.compress.archivers.zip;
+import static org.apache.commons.compress.archivers.zip.ZipConstants.BYTE_MASK;
+import static org.apache.commons.compress.archivers.zip.ZipConstants.WORD;
+
/**
* Utility class that represents a four byte integer with conversion
* rules for the big endian byte order of ZIP files.
@@ -24,9 +27,7 @@ package org.apache.commons.compress.arch
*/
public final class ZipLong implements Cloneable {
- private static final int WORD = 4;
//private static final int BYTE_BIT_SIZE = 8;
- private static final int BYTE_MASK = 0xFF;
private static final int BYTE_1 = 1;
private static final int BYTE_1_MASK = 0xFF00;
@@ -137,6 +138,7 @@ public final class ZipLong implements Cl
* @param o an object to compare
* @return true if the objects are equal
*/
+ @Override
public boolean equals(Object o) {
if (o == null || !(o instanceof ZipLong)) {
return false;
@@ -148,10 +150,12 @@ public final class ZipLong implements Cl
* Override to make two instances with same value equal.
* @return the value stored in the ZipLong
*/
+ @Override
public int hashCode() {
return (int) value;
}
+ @Override
public Object clone() {
try {
return super.clone();
@@ -161,6 +165,7 @@ public final class ZipLong implements Cl
}
}
+ @Override
public String toString() {
return "ZipLong value: " + value;
}
Modified:
commons/proper/compress/branches/zip64/src/main/java/org/apache/commons/compress/archivers/zip/ZipShort.java
URL:
http://svn.apache.org/viewvc/commons/proper/compress/branches/zip64/src/main/java/org/apache/commons/compress/archivers/zip/ZipShort.java?rev=1150694&r1=1150693&r2=1150694&view=diff
==============================================================================
---
commons/proper/compress/branches/zip64/src/main/java/org/apache/commons/compress/archivers/zip/ZipShort.java
(original)
+++
commons/proper/compress/branches/zip64/src/main/java/org/apache/commons/compress/archivers/zip/ZipShort.java
Mon Jul 25 13:28:31 2011
@@ -17,13 +17,14 @@
*/
package org.apache.commons.compress.archivers.zip;
+import static org.apache.commons.compress.archivers.zip.ZipConstants.BYTE_MASK;
+
/**
* Utility class that represents a two byte integer with conversion
* rules for the big endian byte order of ZIP files.
* @Immutable
*/
public final class ZipShort implements Cloneable {
- private static final int BYTE_MASK = 0xFF;
private static final int BYTE_1_MASK = 0xFF00;
private static final int BYTE_1_SHIFT = 8;
@@ -111,6 +112,7 @@ public final class ZipShort implements C
* @param o an object to compare
* @return true if the objects are equal
*/
+ @Override
public boolean equals(Object o) {
if (o == null || !(o instanceof ZipShort)) {
return false;
@@ -122,10 +124,12 @@ public final class ZipShort implements C
* Override to make two instances with same value equal.
* @return the value stored in the ZipShort
*/
+ @Override
public int hashCode() {
return value;
}
+ @Override
public Object clone() {
try {
return super.clone();
@@ -135,6 +139,7 @@ public final class ZipShort implements C
}
}
+ @Override
public String toString() {
return "ZipShort value: " + value;
}