diff --git a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexBackedAnnotation.java b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexBackedAnnotation.java index 371fcfd0..e5eaa559 100644 --- a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexBackedAnnotation.java +++ b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexBackedAnnotation.java @@ -41,7 +41,7 @@ import javax.annotation.Nonnull; import java.util.List; public class DexBackedAnnotation implements Annotation { - public final DexFile dexFile; + @Nonnull public final DexFile dexFile; public final int visibility; @Nonnull public final String type; @@ -67,6 +67,7 @@ public class DexBackedAnnotation implements Annotation { final int size = reader.readSmallUleb128(); return new VariableSizeList(dexFile, reader.getOffset()) { + @Nonnull @Override protected AnnotationElement readItem(DexFileReader dexFileReader, int index) { return new DexBackedAnnotationElement(dexFileReader); diff --git a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexBackedClassDef.java b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexBackedClassDef.java index adf6519e..607f7fe9 100644 --- a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexBackedClassDef.java +++ b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexBackedClassDef.java @@ -65,7 +65,7 @@ public class DexBackedClassDef implements ClassDef { private static final int CLASS_DATA_OFFSET = 24; private static final int STATIC_INITIAL_VALUES_OFFSET = 28; - public DexBackedClassDef(DexFile dexFile, + public DexBackedClassDef(@Nonnull DexFile dexFile, int classDefOffset) { this.dexFile = dexFile; diff --git a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexBackedField.java b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexBackedField.java index 7576a244..e3026d72 100644 --- a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexBackedField.java +++ b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexBackedField.java @@ -43,7 +43,7 @@ import javax.annotation.Nullable; import java.util.List; public class DexBackedField implements Field { - public final DexFile dexFile; + @Nonnull public final DexFile dexFile; @Nonnull public final String name; @Nonnull public final String type; diff --git a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexBackedTryBlock.java b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexBackedTryBlock.java index 8a5d60c6..2c966ca1 100644 --- a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexBackedTryBlock.java +++ b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexBackedTryBlock.java @@ -69,6 +69,7 @@ public class DexBackedTryBlock implements TryBlock { if (encodedSize > 0) { //no catch-all return new VariableSizeList(dexFile, reader.getOffset()) { + @Nonnull @Override protected ExceptionHandler readItem(DexFileReader dexFileReader, int index) { return new DexBackedExceptionHandler(dexFileReader); @@ -79,6 +80,7 @@ public class DexBackedTryBlock implements TryBlock { //with catch-all final int sizeWithCatchAll = (-1 * encodedSize) + 1; return new VariableSizeList(dexFile, reader.getOffset()) { + @Nonnull @Override protected ExceptionHandler readItem(DexFileReader dexFileReader, int index) { if (index == sizeWithCatchAll-1) { diff --git a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/util/StaticInitialValueIterator.java b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/util/StaticInitialValueIterator.java index 8aabf9f6..bfccc3ca 100644 --- a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/util/StaticInitialValueIterator.java +++ b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/util/StaticInitialValueIterator.java @@ -36,6 +36,7 @@ import org.jf.dexlib2.DexFileReader; import org.jf.dexlib2.dexbacked.value.DexBackedEncodedValue; import javax.annotation.Nonnull; +import javax.annotation.Nullable; public abstract class StaticInitialValueIterator { public static final StaticInitialValueIterator EMPTY = new StaticInitialValueIterator() { @@ -43,9 +44,10 @@ public abstract class StaticInitialValueIterator { @Override public void skipNext() {} }; - public abstract DexBackedEncodedValue getNextOrNull(); + @Nullable public abstract DexBackedEncodedValue getNextOrNull(); public abstract void skipNext(); + @Nonnull public static StaticInitialValueIterator newOrEmpty(@Nonnull DexFile dexFile, int offset) { if (offset == 0) { return EMPTY; @@ -63,6 +65,7 @@ public abstract class StaticInitialValueIterator { this.size = reader.readSmallUleb128(); } + @Nullable public DexBackedEncodedValue getNextOrNull() { if (index < size) { index++; diff --git a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/util/VariableSizeList.java b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/util/VariableSizeList.java index fcc0cede..fb95ee31 100644 --- a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/util/VariableSizeList.java +++ b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/util/VariableSizeList.java @@ -35,6 +35,7 @@ import org.jf.dexlib2.DexFile; import org.jf.dexlib2.DexFileReader; import org.jf.util.AbstractListIterator; +import javax.annotation.Nonnull; import java.util.AbstractSequentialList; import java.util.NoSuchElementException; @@ -43,20 +44,22 @@ import java.util.NoSuchElementException; * @param The type of the item that this list contains */ public abstract class VariableSizeList extends AbstractSequentialList { - private final DexFile dexFile; + @Nonnull private final DexFile dexFile; private final int offset; - public VariableSizeList(DexFile dexFile, int offset) { + public VariableSizeList(@Nonnull DexFile dexFile, int offset) { this.dexFile = dexFile; this.offset = offset; } + @Nonnull protected abstract T readItem(DexFileReader dexFileReader, int index); protected void skipItem(DexFileReader dexFileReader, int index) { readItem(dexFileReader, index); } + @Nonnull @Override public Iterator listIterator(int startIndex) { Iterator iterator = listIterator(); @@ -69,6 +72,7 @@ public abstract class VariableSizeList extends AbstractSequentialList { return iterator; } + @Nonnull @Override public Iterator listIterator() { return new Iterator(); @@ -76,11 +80,12 @@ public abstract class VariableSizeList extends AbstractSequentialList { public class Iterator extends AbstractListIterator { private int index = 0; - private final DexFileReader dexFileReader = dexFile.readerAt(offset); + @Nonnull private final DexFileReader dexFileReader = dexFile.readerAt(offset); @Override public boolean hasNext() { return index < size(); } @Override public int nextIndex() { return index; } + @Nonnull @Override public T next() { if (index >= size()) { diff --git a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/util/VariableSizeListWithContext.java b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/util/VariableSizeListWithContext.java index 6fd13243..6729f15a 100644 --- a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/util/VariableSizeListWithContext.java +++ b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/util/VariableSizeListWithContext.java @@ -66,7 +66,7 @@ public abstract class VariableSizeListWithContext extends AbstractSequentialL public abstract class Iterator extends AbstractListIterator { private int index = 0; - private final DexFileReader reader; + @Nonnull private final DexFileReader reader; public Iterator(DexFile dexFile, int offset) { this.reader = dexFile.readerAt(offset);