All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.robobinding.binder.ByBindingAttributeMappingsResolverFinder Maven / Gradle / Ivy

package org.robobinding.binder;

import java.util.List;

import org.robobinding.internal.guava.Lists;
import org.robobinding.viewattribute.grouped.ViewAttributeBinderFactory;
import org.robobinding.viewattribute.impl.BindingAttributeMappingsProvider;
import org.robobinding.viewattribute.impl.BindingAttributeMappingsProviderMap;
import org.robobinding.viewattribute.impl.InitailizedBindingAttributeMappings;


/**
 *
 * @since 1.0
 * @version $Revision: 1.0 $
 * @author Cheng Wei
 */
public class ByBindingAttributeMappingsResolverFinder {
    private final BindingAttributeMappingsProviderMap bindingAttributeMappingsProviderMap;
    private final ViewAttributeBinderFactoryProvider viewAttributeBinderFactoryProvider;

    public ByBindingAttributeMappingsResolverFinder(
	    BindingAttributeMappingsProviderMap bindingAttributeMappingsProviderMap,
	    ViewAttributeBinderFactoryProvider viewAttributeBinderFactoryProvider) {
	this.bindingAttributeMappingsProviderMap = bindingAttributeMappingsProviderMap;
	this.viewAttributeBinderFactoryProvider = viewAttributeBinderFactoryProvider;
    }

    public Iterable findCandidates(Object view) {
	ViewAttributeBinderFactory viewAttributeBinderFactory = viewAttributeBinderFactoryProvider.create(view);

	List resolvers = Lists.newArrayList();
	Iterable> providers = bindingAttributeMappingsProviderMap.findCandidates(view.getClass());
	for (BindingAttributeMappingsProvider provider : providers) {
	    @SuppressWarnings("unchecked")
	    BindingAttributeMappingsProvider bindingAttributeProvider = (BindingAttributeMappingsProvider) provider;
	    InitailizedBindingAttributeMappings bindingAttributeMappings = bindingAttributeProvider.createBindingAttributeMappings();
	    resolvers.add(new ByBindingAttributeMappingsResolver(bindingAttributeMappings, viewAttributeBinderFactory));
	}

	return resolvers;
    }
}