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

it.espr.injector.Configuration Maven / Gradle / Ivy

package it.espr.injector;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

public class Configuration {

	protected final Utils utils = new Utils();

	final Map, Collection>> bindings = new HashMap<>();

	public  void bind(Class i, Collection> classes) {
		if (classes == null || classes.size() == 0) {
			return;
		}

		if (!this.bindings.containsKey(i)) {
			this.bindings.put(i, new ArrayList<>());
		}
		this.bindings.get(i).addAll(classes);
	}

	@SuppressWarnings("unchecked")
	 Collection> getBindings(Class i) {
		Collection> result = new ArrayList<>();
		Collection> content = bindings.get(i);
		for (Class c : content) {
			result.add((Class) c);
		}
		return result;
	}

	boolean isBound(Class i) {
		return bindings.containsKey(i);
	}

	final Map instances = new HashMap<>();

	public void add(String name, Object instance) {
		this.add(name, instance.getClass(), instance);
		if (instance instanceof Map) {
			this.add(name, Map.class, instance);
		} else if (instance instanceof List) {
			this.add(name, List.class, instance);
		} else if (instance instanceof Set) {
			this.add(name, Set.class, instance);
		}
	}

	public void add(String name, Class clazz, Object instance) {
		this.instances.put(utils.key(name, clazz), instance);
	}
}