public <T> T getBean(Class<T> tClass) throws BeansException { Set<ControllerContext> foundContexts = new HashSet<ControllerContext>(); for (ControllerContext controllerContext : kernelController.getContexts(tClass, ControllerState.INSTALLED)) { } if (foundContexts.size() != 1) { throw new NoSuchBeanDefinitionException(tClass, "No controller of this class found"); } else { return (T) foundContexts.iterator().next().getTarget(); } } }
protected Set<KernelControllerContext> getContexts(Controller controller) { if (controller instanceof KernelController == false) throw new IllegalArgumentException("Controller not KernelController!"); KernelController kernelController = (KernelController)controller; return kernelController.getContexts(getDemandClass(), getDependentState()); }
/** * Fill collection impl with existing context targets. * * @param controller the controller * @return collection holder with target beans * @throws Throwable for any error */ protected T fillHolder(Controller controller) throws Throwable { if (controller instanceof KernelController) { T holder = getCollectionParameterHolder(); if (holder == null) throw new IllegalArgumentException("Illegal collection holder, equals null!"); KernelController kernelController = (KernelController)controller; Set<KernelControllerContext> contexts = kernelController.getContexts(getIDependOn(), dependentState); if (contexts != null && contexts.isEmpty() == false) { for(ControllerContext context : contexts) { holder.add(context.getTarget()); } } return holder; } else throw new IllegalArgumentException("Cannot execute Collection call back - controller not KernelController instance."); }
public void ownerCallback(Controller controller, boolean isInstallPhase) throws Throwable { if (controller instanceof KernelController) { KernelController kc = (KernelController)controller; Set<KernelControllerContext> contexts = kc.getContexts(getIDependOn(), getDependentState()); if (contexts != null && contexts.isEmpty() == false) { for(KernelControllerContext context : contexts) { Object target = context.getTarget(); if (signature == null) signature = target.getClass().getName(); owner.invoke(getAttributeName(), new Object[]{target}, new String[]{signature}); } } } else log.info("Controller not KernelController instance, cannot execute owner callback."); }
public Set<KernelControllerContext> getContexts(Class<?> clazz, ControllerState state) { lockRead(); try { Set<KernelControllerContext> contexts = new HashSet<KernelControllerContext>(); Set<KernelControllerContext> currentContexts = super.getContexts(clazz, state); if (currentContexts != null && currentContexts.size() > 0) { contexts.addAll(currentContexts); } if (isParentKernelController()) { Set<KernelControllerContext> parentContexts = getParentKernelController().getContexts(clazz, state); if (parentContexts != null && parentContexts.size() > 0) { contexts.addAll(parentContexts); } } return contexts.size() > 0 ? contexts : null; } finally{ unlockRead(); } }
annotations = new Annotation[]{}; Set<KernelControllerContext> contexts = controller.getContexts(type, ControllerState.INSTALLED); if (contexts != null && contexts.isEmpty() == false)
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; }