@Override public Object getComponent(Class<?> clazz) { Object objectToReturn = preparedComponents.get(clazz.getName()).getInstance(); if (objectToReturn != null) { return objectToReturn; } else { for (BeanDefinition definition : preparedComponents.values()) { if (Arrays.asList(definition.getClazz().getInterfaces()).contains(clazz)) { if (objectToReturn == null) { objectToReturn = definition.getInstance(); } else { throw new FailureComponentCreationException( "Can't resolve component to return, more than one component found, for class: " + clazz.getName()); } } } if (objectToReturn != null) { return objectToReturn; } else { throw new ComponentNotFoundException("Can't find component for class: " + clazz.getName()); } } }
private BeanDefinition findBeenByClass(Class<?> clazz) { BeanDefinition definitionToReturn = beans.get(clazz.getName()); if (definitionToReturn != null) { return definitionToReturn; // TODO Resolve more than one bean to inject bug in this case } else { for (BeanDefinition definition : beans.values()) { if (Arrays.asList(definition.getClazz().getInterfaces()).contains(clazz)) { if (definitionToReturn == null) { definitionToReturn = definition; } else { throw new FailureBeanInjectionException( "Can't resolve bean injection, more than one beanDefinition found, for class: " + clazz.getName()); } } } if (definitionToReturn != null) { return definitionToReturn; } else { throw new FailureBeanInjectionException( "Can't find bean to inject for class: " + clazz.getName()); } } }