package org.robobinding.viewbinding; import java.util.Map; import java.util.Queue; import org.robobinding.util.Lists; import org.robobinding.util.Maps; import org.robobinding.util.SearchableClasses; /** * * @since 1.0 * @version $Revision: 1.0 $ * @author Cheng Wei */ public class InitializedBindingAttributeMappingsProviders { private final Map<Class<?>, ViewBinding<?>> mappings; private final SearchableClasses searchableViewClasses; public InitializedBindingAttributeMappingsProviders(Map<Class<?>, ViewBinding<?>> mappings) { this.mappings = Maps.newHashMap(mappings); searchableViewClasses = new SearchableClasses(mappings.keySet()); } public Iterable<InitializedBindingAttributeMappingsProvider> findCandidates(Class<?> viewClass) { Queue<InitializedBindingAttributeMappingsProvider> candidates = Lists.newLinkedList(); Queue<Class<?>> foundViewClasses = searchableViewClasses.findAssignablesInOrderFrom(viewClass); for (Class<?> foundViewClass : foundViewClasses) { ViewBinding<?> viewBinding = mappings.get(foundViewClass); candidates.add(new ViewBindingAdapter(viewBinding)); } return candidates; } }