From f730ada9829a6fb092ed435dcbd38af6fdf0f162 Mon Sep 17 00:00:00 2001 From: "JesusFreke@JesusFreke.com" Date: Sun, 21 Jun 2009 08:22:27 +0000 Subject: [PATCH] Misc cleanup git-svn-id: https://smali.googlecode.com/svn/trunk@202 55b6fa8a-2a1e-11de-a435-ffa8d773f76a --- .../org/jf/dexlib/AnnotationDirectoryItem.java | 6 +++--- .../src/main/java/org/jf/dexlib/CodeItem.java | 17 ++++------------- .../main/java/org/jf/dexlib/DebugInfoItem.java | 3 ++- .../AnnotationEncodedValueSubField.java | 2 +- .../EncodedValue/ArrayEncodedValueSubField.java | 3 ++- ...yField.java => FixedSizeByteArrayField.java} | 15 ++++----------- .../src/main/java/org/jf/dexlib/HeaderItem.java | 8 ++++---- .../jf/dexlib/NullTerminatedByteArrayField.java | 6 ------ .../java/org/jf/dexlib/OffsettedSection.java | 1 - dexlib/src/test/java/TryListBuilderTest.java | 6 ++++-- 10 files changed, 24 insertions(+), 43 deletions(-) rename dexlib/src/main/java/org/jf/dexlib/{FixedByteArrayField.java => FixedSizeByteArrayField.java} (79%) diff --git a/dexlib/src/main/java/org/jf/dexlib/AnnotationDirectoryItem.java b/dexlib/src/main/java/org/jf/dexlib/AnnotationDirectoryItem.java index 568399a7..21c5f7b1 100644 --- a/dexlib/src/main/java/org/jf/dexlib/AnnotationDirectoryItem.java +++ b/dexlib/src/main/java/org/jf/dexlib/AnnotationDirectoryItem.java @@ -124,15 +124,15 @@ public class AnnotationDirectoryItem extends OffsettedItem getMethodAnnotations() { - return (List)methodAnnotationList.clone(); + return Collections.unmodifiableList(methodAnnotationList); } public List getFieldAnnotations() { - return (List)fieldAnnotationList.clone(); + return Collections.unmodifiableList(fieldAnnotationList); } public List getParameterAnnotations() { - return (List)parameterAnnotationList.clone(); + return Collections.unmodifiableList(parameterAnnotationList); } diff --git a/dexlib/src/main/java/org/jf/dexlib/CodeItem.java b/dexlib/src/main/java/org/jf/dexlib/CodeItem.java index 28173848..a9ca13fe 100644 --- a/dexlib/src/main/java/org/jf/dexlib/CodeItem.java +++ b/dexlib/src/main/java/org/jf/dexlib/CodeItem.java @@ -36,6 +36,7 @@ import org.jf.dexlib.util.Input; import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import java.util.Collections; public class CodeItem extends OffsettedItem { private final ArrayList instructionList; @@ -119,11 +120,11 @@ public class CodeItem extends OffsettedItem { } public List getInstructions() { - return (List)instructionList.clone(); + return Collections.unmodifiableList(instructionList); } public List getTries() { - return (List)tryItems.clone(); + return Collections.unmodifiableList(tryItems); } public DebugInfoItem getDebugInfo() { @@ -437,18 +438,8 @@ public class CodeItem extends OffsettedItem { } } - //TODO: GROT - public int getHandlerCount() { - return list.size(); - } - - //TODO: GROT - public EncodedTypeAddrPair getHandler(int index) { - return list.get(index); - } - public List getHandlers() { - return (List)list.clone(); + return Collections.unmodifiableList(list); } } diff --git a/dexlib/src/main/java/org/jf/dexlib/DebugInfoItem.java b/dexlib/src/main/java/org/jf/dexlib/DebugInfoItem.java index 675a9eaa..f70ef053 100644 --- a/dexlib/src/main/java/org/jf/dexlib/DebugInfoItem.java +++ b/dexlib/src/main/java/org/jf/dexlib/DebugInfoItem.java @@ -36,6 +36,7 @@ import org.jf.dexlib.util.Input; import java.util.ArrayList; import java.util.List; +import java.util.Collections; public class DebugInfoItem extends OffsettedItem { private final ArrayList> parameterNames = @@ -95,7 +96,7 @@ public class DebugInfoItem extends OffsettedItem { } public List getDebugInstructions() { - return (List)instructionFields.clone(); + return Collections.unmodifiableList(instructionFields); } public List getParameterNames() { diff --git a/dexlib/src/main/java/org/jf/dexlib/EncodedValue/AnnotationEncodedValueSubField.java b/dexlib/src/main/java/org/jf/dexlib/EncodedValue/AnnotationEncodedValueSubField.java index e9cd8070..b8d94625 100644 --- a/dexlib/src/main/java/org/jf/dexlib/EncodedValue/AnnotationEncodedValueSubField.java +++ b/dexlib/src/main/java/org/jf/dexlib/EncodedValue/AnnotationEncodedValueSubField.java @@ -86,6 +86,6 @@ public class AnnotationEncodedValueSubField extends CompositeField getAnnotationElements() { - return (List)annotationElementList.clone(); + return Collections.unmodifiableList(annotationElementList); } } diff --git a/dexlib/src/main/java/org/jf/dexlib/EncodedValue/ArrayEncodedValueSubField.java b/dexlib/src/main/java/org/jf/dexlib/EncodedValue/ArrayEncodedValueSubField.java index 84d15137..c9d26812 100644 --- a/dexlib/src/main/java/org/jf/dexlib/EncodedValue/ArrayEncodedValueSubField.java +++ b/dexlib/src/main/java/org/jf/dexlib/EncodedValue/ArrayEncodedValueSubField.java @@ -32,6 +32,7 @@ import org.jf.dexlib.*; import java.util.ArrayList; import java.util.List; +import java.util.Collections; public class ArrayEncodedValueSubField extends CompositeField implements EncodedValueSubField @@ -85,6 +86,6 @@ public class ArrayEncodedValueSubField extends CompositeField getValues() { - return (List)encodedValues.clone(); + return Collections.unmodifiableList(encodedValues); } } diff --git a/dexlib/src/main/java/org/jf/dexlib/FixedByteArrayField.java b/dexlib/src/main/java/org/jf/dexlib/FixedSizeByteArrayField.java similarity index 79% rename from dexlib/src/main/java/org/jf/dexlib/FixedByteArrayField.java rename to dexlib/src/main/java/org/jf/dexlib/FixedSizeByteArrayField.java index 08f5a080..e5a4fa76 100644 --- a/dexlib/src/main/java/org/jf/dexlib/FixedByteArrayField.java +++ b/dexlib/src/main/java/org/jf/dexlib/FixedSizeByteArrayField.java @@ -29,29 +29,22 @@ package org.jf.dexlib; import org.jf.dexlib.util.AnnotatedOutput; -import org.jf.dexlib.util.ByteArray; import org.jf.dexlib.util.Input; -public class FixedByteArrayField implements Field { +public class FixedSizeByteArrayField implements Field { protected byte[] value; private final String fieldName; - public FixedByteArrayField(int size, String fieldName) { + public FixedSizeByteArrayField(int size, String fieldName) { value = new byte[size]; this.fieldName = fieldName; } - public FixedByteArrayField(byte[] bytes, String fieldName) { + public FixedSizeByteArrayField(byte[] bytes, String fieldName) { this.value = bytes.clone(); this.fieldName = fieldName; } - public FixedByteArrayField(ByteArray byteArray, String fieldName) { - value = new byte[byteArray.size()]; - byteArray.getBytes(value, 0); - this.fieldName = fieldName; - } - public void writeTo(AnnotatedOutput out) { if (fieldName != null) { out.annotate(fieldName); @@ -67,7 +60,7 @@ public class FixedByteArrayField implements Field { return offset + value.length; } - public void copyTo(DexFile dexFile, FixedByteArrayField copy) { + public void copyTo(DexFile dexFile, FixedSizeByteArrayField copy) { copy.value = value.clone(); } } diff --git a/dexlib/src/main/java/org/jf/dexlib/HeaderItem.java b/dexlib/src/main/java/org/jf/dexlib/HeaderItem.java index 35ce4244..a59a233a 100644 --- a/dexlib/src/main/java/org/jf/dexlib/HeaderItem.java +++ b/dexlib/src/main/java/org/jf/dexlib/HeaderItem.java @@ -45,9 +45,9 @@ public class HeaderItem extends IndexedItem { /** the endianness tag */ private static final int ENDIAN_TAG = 0x12345678; - private final FixedByteArrayField magicField; + private final FixedSizeByteArrayField magicField; private final IntegerField checksumField; - private final FixedByteArrayField signatureField; + private final FixedSizeByteArrayField signatureField; private final IntegerField fileSizeField; private final IntegerField headerSizeField; private final IntegerField endianTagField; @@ -69,14 +69,14 @@ public class HeaderItem extends IndexedItem { try { fields = new Field[] { - magicField = new FixedByteArrayField(MAGIC.getBytes("US-ASCII"), "magic"), + magicField = new FixedSizeByteArrayField(MAGIC.getBytes("US-ASCII"), "magic"), checksumField = new IntegerField("checksum") { public void writeTo(AnnotatedOutput out) { cacheValue(0); super.writeTo(out); } }, - signatureField = new FixedByteArrayField(20, "signature") { + signatureField = new FixedSizeByteArrayField(20, "signature") { public void writeTo(AnnotatedOutput out) { for (int i = 0; i < value.length; i++) { value[i] = 0; diff --git a/dexlib/src/main/java/org/jf/dexlib/NullTerminatedByteArrayField.java b/dexlib/src/main/java/org/jf/dexlib/NullTerminatedByteArrayField.java index a35829a6..34994f97 100644 --- a/dexlib/src/main/java/org/jf/dexlib/NullTerminatedByteArrayField.java +++ b/dexlib/src/main/java/org/jf/dexlib/NullTerminatedByteArrayField.java @@ -45,12 +45,6 @@ public class NullTerminatedByteArrayField implements Field> extends Secti T item = getByOffset(in.getCursor()); item.readFrom(in, i); - //TODO: why are we aligning afterwards? in.alignTo(item.getAlignment()); } //sort the items list by offset diff --git a/dexlib/src/test/java/TryListBuilderTest.java b/dexlib/src/test/java/TryListBuilderTest.java index 7d31d170..d172dee0 100644 --- a/dexlib/src/test/java/TryListBuilderTest.java +++ b/dexlib/src/test/java/TryListBuilderTest.java @@ -65,10 +65,12 @@ public class TryListBuilderTest Assert.assertTrue(encodedCatchHandler.getCatchAllAddress() == catchAllAddress); - Assert.assertTrue(encodedCatchHandler.getHandlerCount() == handlers.length); + List typeAddrPairs = encodedCatchHandler.getHandlers(); + + Assert.assertTrue(typeAddrPairs.size() == handlers.length); for (int i=0; i