package org.robobinding.binder; import java.util.List; import org.robobinding.util.Lists; import org.robobinding.viewattribute.grouped.ViewAttributeBinderFactories; import org.robobinding.viewattribute.grouped.ViewAttributeBinderFactory; import org.robobinding.viewbinding.InitailizedBindingAttributeMappings; import org.robobinding.viewbinding.InitializedBindingAttributeMappingsProvider; import org.robobinding.viewbinding.InitializedBindingAttributeMappingsProviders; /** * * @since 1.0 * @version $Revision: 1.0 $ * @author Cheng Wei */ public class ByBindingAttributeMappingsResolverFinder { private final InitializedBindingAttributeMappingsProviders initializedBindingAttributeMappingsProviders; private final ViewAttributeBinderFactories viewAttributeBinderFactories; public ByBindingAttributeMappingsResolverFinder( InitializedBindingAttributeMappingsProviders initializedBindingAttributeMappingsProviders, ViewAttributeBinderFactories viewAttributeBinderFactories) { this.initializedBindingAttributeMappingsProviders = initializedBindingAttributeMappingsProviders; this.viewAttributeBinderFactories = viewAttributeBinderFactories; } public Iterable<ByBindingAttributeMappingsResolver> findCandidates(Object view) { List<ByBindingAttributeMappingsResolver> resolvers = Lists.newArrayList(); Iterable<InitializedBindingAttributeMappingsProvider> providers = initializedBindingAttributeMappingsProviders.findCandidates( view.getClass()); ViewAttributeBinderFactory viewAttributeBinderFactory = viewAttributeBinderFactories.create(view); for (InitializedBindingAttributeMappingsProvider provider : providers) { InitailizedBindingAttributeMappings bindingAttributeMappings = provider.create(viewAttributeBinderFactory); resolvers.add(new ByBindingAttributeMappingsResolver(bindingAttributeMappings)); } return resolvers; } }