package org.dayatang.domain.internal.bean; import org.dayatang.domain.InstanceLocator; import java.lang.annotation.Annotation; import java.util.HashMap; import java.util.Map; /** * Created by yyang on 15/1/14. */ public class MapInstanceLocator implements InstanceLocator { private Map<Object, Object> instances = new HashMap<Object, Object>(); public MapInstanceLocator(Map<Object, Object> instances) { this.instances = instances; } @Override public <T> T getInstance(Class<T> beanType) { return (T) instances.get(beanType); } @Override public <T> T getInstance(Class<T> beanType, String beanName) { return (T) instances.get(toName(beanType, beanName)); } @Override public <T> T getInstance(Class<T> beanType, Class<? extends Annotation> annotationType) { return (T) instances.get(toName(beanType, annotationType)); } private static String toName(Class<?> beanType, String beanName) { return beanType.getName() + ":" + beanName; } private static String toName(Class<?> beanType, Class<? extends Annotation> annotationType) { return beanType.getName() + ":" + annotationType.getName(); } }