From b16caa690dcc1a4772748534b1517b10adb894aa Mon Sep 17 00:00:00 2001 From: Izzat Bahadirov Date: Mon, 6 May 2013 14:46:59 -0400 Subject: [PATCH] More elegant way of getting direct interfaces, now using FluentIterable. --- .../java/org/jf/dexlib2/analysis/ClassProto.java | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/dexlib2/src/main/java/org/jf/dexlib2/analysis/ClassProto.java b/dexlib2/src/main/java/org/jf/dexlib2/analysis/ClassProto.java index 7478819a..d01887ad 100644 --- a/dexlib2/src/main/java/org/jf/dexlib2/analysis/ClassProto.java +++ b/dexlib2/src/main/java/org/jf/dexlib2/analysis/ClassProto.java @@ -31,6 +31,8 @@ package org.jf.dexlib2.analysis; +import com.google.common.base.Predicate; +import com.google.common.collect.FluentIterable; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; import com.google.common.collect.Maps; @@ -173,13 +175,12 @@ public class ClassProto implements TypeProto { } @Nonnull - protected LinkedHashMap getInterfacesFull() { - LinkedHashMap interfaces = getInterfaces(); - + protected Iterable getDirectInterfaces() { if (!interfacesFullyResolved) { throw new UnresolvedClassException("Interfaces for class %s not fully resolved", getType()); } - return interfaces; + + return FluentIterable.from(getInterfaces().values()).filter(ClassDef.class); } /** @@ -553,10 +554,8 @@ public class ClassProto implements TypeProto { if (!isInterface()) { addToVtable(getClassDef().getVirtualMethods(), virtualMethodList); - for (ClassDef interfaceDef: getInterfacesFull().values()) { - if (interfaceDef != null) { - addToVtable(interfaceDef.getVirtualMethods(), virtualMethodList); - } + for (ClassDef interfaceDef: getDirectInterfaces()) { + addToVtable(interfaceDef.getVirtualMethods(), virtualMethodList); } }