Misc cleanup

git-svn-id: https://smali.googlecode.com/svn/trunk@202 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
diff --git a/dexlib/src/main/java/org/jf/dexlib/AnnotationDirectoryItem.java b/dexlib/src/main/java/org/jf/dexlib/AnnotationDirectoryItem.java
index 568399a..21c5f7b 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 List<MethodAnnotation> getMethodAnnotations() {

-        return (List<MethodAnnotation>)methodAnnotationList.clone();

+        return Collections.unmodifiableList(methodAnnotationList);

     }

 

     public List<FieldAnnotation> getFieldAnnotations() {

-        return (List<FieldAnnotation>)fieldAnnotationList.clone();

+        return Collections.unmodifiableList(fieldAnnotationList);

     }

 

     public List<ParameterAnnotation> getParameterAnnotations() {

-        return (List<ParameterAnnotation>)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 2817384..a9ca13f 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 java.util.ArrayList;

 import java.util.HashMap;

 import java.util.List;

+import java.util.Collections;

 

 public class CodeItem extends OffsettedItem<CodeItem> {

     private final ArrayList<InstructionField> instructionList;

@@ -119,11 +120,11 @@
     }

 

     public List<InstructionField> getInstructions() {

-        return (List<InstructionField>)instructionList.clone();

+        return Collections.unmodifiableList(instructionList);

     }

 

     public List<TryItem> getTries() {

-        return (List<TryItem>)tryItems.clone();

+        return Collections.unmodifiableList(tryItems);

     }

 

     public DebugInfoItem getDebugInfo() {

@@ -437,18 +438,8 @@
             }

         }

 

-        //TODO: GROT

-        public int getHandlerCount() {

-            return list.size();

-        }

-

-        //TODO: GROT

-        public EncodedTypeAddrPair getHandler(int index) {

-            return list.get(index);

-        }

-

         public List<EncodedTypeAddrPair> getHandlers() {

-            return (List<EncodedTypeAddrPair>)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 675a9ea..f70ef05 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 java.util.ArrayList;

 import java.util.List;

+import java.util.Collections;

 

 public class DebugInfoItem extends OffsettedItem<DebugInfoItem> {

     private final ArrayList<IndexedItemReference<StringIdItem>> parameterNames =

@@ -95,7 +96,7 @@
     }

 

     public List<DebugInstruction> getDebugInstructions() {

-        return (List<DebugInstruction>)instructionFields.clone();

+        return Collections.unmodifiableList(instructionFields);

     }

 

     public List<String> 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 e9cd807..b8d9462 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 List<AnnotationElement> getAnnotationElements() {

-        return (List<AnnotationElement>)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 84d1513..c9d2681 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 java.util.ArrayList;

 import java.util.List;

+import java.util.Collections;

 

 public class ArrayEncodedValueSubField extends CompositeField<ArrayEncodedValueSubField>

         implements  EncodedValueSubField<ArrayEncodedValueSubField>

@@ -85,6 +86,6 @@
     }

 

     public List<EncodedValue> getValues() {

-        return (List<EncodedValue>)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 81%
rename from dexlib/src/main/java/org/jf/dexlib/FixedByteArrayField.java
rename to dexlib/src/main/java/org/jf/dexlib/FixedSizeByteArrayField.java
index 08f5a08..e5a4fa7 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<FixedByteArrayField> {

+public class FixedSizeByteArrayField implements Field<FixedSizeByteArrayField> {

     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 @@
         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 35ce424..a59a233 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 @@
     /** 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 @@
         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 a35829a..34994f9 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 @@
         this.value = value.clone();

     }

 

-    public NullTerminatedByteArrayField(ByteArray byteArray, String fieldName) {

-        this(fieldName);

-        value = new byte[byteArray.size()];

-        byteArray.getBytes(value, 0);

-    }

-

     public void writeTo(AnnotatedOutput out) {

         out.annotate(fieldName);

         out.write(value);

diff --git a/dexlib/src/main/java/org/jf/dexlib/OffsettedSection.java b/dexlib/src/main/java/org/jf/dexlib/OffsettedSection.java
index 20b851c..74ce197 100644
--- a/dexlib/src/main/java/org/jf/dexlib/OffsettedSection.java
+++ b/dexlib/src/main/java/org/jf/dexlib/OffsettedSection.java
@@ -65,7 +65,6 @@
             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 7d31d17..d172dee 100644
--- a/dexlib/src/test/java/TryListBuilderTest.java
+++ b/dexlib/src/test/java/TryListBuilderTest.java
@@ -65,10 +65,12 @@
 

         Assert.assertTrue(encodedCatchHandler.getCatchAllAddress() == catchAllAddress);

 

-        Assert.assertTrue(encodedCatchHandler.getHandlerCount() == handlers.length);

+        List<CodeItem.EncodedTypeAddrPair> typeAddrPairs = encodedCatchHandler.getHandlers();

+

+        Assert.assertTrue(typeAddrPairs.size() == handlers.length);

 

         for (int i=0; i<handlers.length; i++) {

-            CodeItem.EncodedTypeAddrPair typeAddrPair = encodedCatchHandler.getHandler(i);

+            CodeItem.EncodedTypeAddrPair typeAddrPair = typeAddrPairs.get(i);

             Handler handler = handlers[i];

 

             Assert.assertTrue(typeAddrPair.getTypeReferenceField().getTypeDescriptor().compareTo(handler.type) == 0);