public String[] getBeanNamesForType(Class clazz, boolean includePrototypes, boolean allowEagerInit) { List<String> result = new ArrayList<String>(); Set<ControllerContext> contexts = kernelController.getInstantiatedContexts(clazz); if (contexts != null && !contexts.isEmpty()) { for (ControllerContext context : contexts) { result.add(context.getName().toString()); } } if (includePrototypes) { Set<ControllerContext> factories = kernelController.getInstantiatedContexts(AbstractBeanFactory.class); if (factories != null && !factories.isEmpty()) { for (ControllerContext kcc : factories) { Class<?> prototypeClass = getPrototypeClass(kcc); if (prototypeClass != null) { if (clazz.isAssignableFrom(prototypeClass)) { result.add(kcc.getName().toString()); } } else if (allowEagerInit) { Object bean = createBean(kcc.getTarget()); if (clazz.isInstance(bean)) { result.add(kcc.getName().toString()); } } } } } return result.toArray(new String[result.size()]); }
public Set<KernelControllerContext> getInstantiatedContexts(Class<?> clazz) { lockRead(); try { Set<KernelControllerContext> contexts = new HashSet<KernelControllerContext>(); Set<KernelControllerContext> currentContexts = super.getInstantiatedContexts(clazz); if (currentContexts != null && currentContexts.size() > 0) { contexts.addAll(currentContexts); } if (isParentKernelController()) { Set<KernelControllerContext> parentContexts = getParentKernelController().getInstantiatedContexts(clazz); if (parentContexts != null && parentContexts.size() > 0) { contexts.addAll(parentContexts); } } return contexts.size() > 0 ? contexts : null; } finally{ unlockRead(); } }
public Map getBeansOfType(Class clazz, boolean includePrototypes, boolean allowEagerInit) throws BeansException { Map<String, Object> result = new HashMap<String, Object>(); Set<ControllerContext> contexts = kernelController.getContexts(clazz, ControllerState.INSTALLED); for (ControllerContext context : contexts) { Object target = context.getTarget(); result.put(context.getName().toString(), target); } if (includePrototypes) { Set<ControllerContext> factories = kernelController.getInstantiatedContexts(AbstractBeanFactory.class); if (factories != null && !factories.isEmpty()) { for (ControllerContext kcc : factories) { Class<?> prototypeClass = getPrototypeClass(kcc); if (prototypeClass != null) { if (clazz.isAssignableFrom(prototypeClass)) { result.put(kcc.getName().toString(), createBean(kcc.getTarget())); } } else if (allowEagerInit) { Object bean = createBean(kcc.getTarget()); if (clazz.isInstance(bean)) { result.put(kcc.getName().toString(), bean); } } } } } return result; }