protected void internalCleanAnnotation(T info, MetaData metaData, JMX jmx, KernelControllerContext context) throws Throwable { String id = createId(context, info, jmx); if (log.isTraceEnabled()) log.trace("Removing " + context.getName() + "." + getName(info) + " via id: " + id); Controller controller = context.getController(); controller.uninstall(id); }
/** * Get bean info. * * @param kernel the kernel * @param bean the bean name * @return bean info instance */ protected BeanInfo getBeanInfo(Kernel kernel, String bean) { KernelControllerContext context = getKernelControllerContext(kernel, bean); return context.getBeanInfo(); }
@SuppressWarnings("unchecked") T getInstanceFromContext() { if (context == null) throw new IllegalArgumentException("Null context"); if (context.getState() != ControllerState.INSTALLED) { ControllerStateModel states = context.getController().getStates(); if (states.isBeforeState(context.getState(), ControllerState.INSTALLED)) { throw new ResolutionException(context + " has not reached the INSTALLED state"); } } T target = (T)context.getTarget(); if (target == null) { throw new ResolutionException(context + " has an empty instance"); } return target; } }
protected void installActionInternal(KernelControllerContext context) throws Throwable { Object object = context.getTarget(); BeanInfo info = context.getBeanInfo(); BeanMetaData metaData = context.getBeanMetaData(); setAttributes(context, object, info, metaData, false); installKernelControllerContextAware(context); }
protected void installActionInternal(KernelControllerContext context) throws Throwable { KernelController controller = (KernelController)context.getController(); DependencyInfo dependencyInfo = context.getDependencyInfo(); if (dependencyInfo != null && dependencyInfo.isAutowireCandidate()) controller.addInstantiatedContext(context); }
protected void uninstallActionInternal(KernelControllerContext context) { try { KernelController controller = (KernelController)context.getController(); DependencyInfo dependencyInfo = context.getDependencyInfo(); if (dependencyInfo != null && dependencyInfo.isAutowireCandidate()) controller.removeInstantiatedContext(context); } catch (Throwable ignored) { log.debug("Ignored error unsetting context ", ignored); } finally { context.setTarget(null); } }
KernelController controller = (KernelController)context.getController(); Kernel kernel = controller.getKernel(); KernelConfigurator configurator = kernel.getConfigurator(); Object target = context.getTarget(); BeanInfo info = context.getBeanInfo(); BeanMetaData metaData = context.getBeanMetaData(); String method = getUninstallMethod(context); List<ParameterMetaData> parameters = getUninstallParameters(context); log.warn("Error during " + method + " for " + context.getName(), throwable);
/** * Undeploy a bean * * @param context the context */ protected void undeploy(KernelControllerContext context) { if (context == null) throw new IllegalArgumentException("Null context"); log.debug("Undeploying " + context.getName()); KernelController controller = kernel.getController(); controller.uninstall(context.getName()); log.debug("Undeployed " + context.getName()); }
@SuppressWarnings("unchecked") protected void installActionInternal(KernelControllerContext context) throws Throwable { BeanInfo info = context.getBeanInfo(); if (info != null) { KernelController controller = (KernelController)context.getController(); KernelConfig config = controller.getKernel().getConfig(); DependencyBuilder dependencyBuilder = config.getDependencyBuilder(); KernelMetaDataRepository repository = controller.getKernel().getMetaDataRepository(); MetaData md = repository.getMetaData(context); // add custom dependencies (e.g. AOP layer). List<DependencyBuilderListItem> dependencies = dependencyBuilder.getDependencies(info, md); if (log.isTraceEnabled()) log.trace("Extra dependencies for " + context.getName() + " " + dependencies); if (dependencies != null && dependencies.isEmpty() == false) { for (DependencyBuilderListItem dependencyItem : dependencies) { dependencyItem.addDependency(context); } } // handle custom annotations applyAnnotations(context); } }
@SuppressWarnings("deprecation") protected void installActionInternal(KernelControllerContext context) throws Throwable KernelController controller = (KernelController) context.getController(); Kernel kernel = controller.getKernel(); KernelMetaDataRepository repository = kernel.getMetaDataRepository(); KernelConfigurator configurator = kernel.getConfigurator(); BeanMetaData metaData = context.getBeanMetaData(); BeanInfo info = context.getBeanInfo(); bridge.validateInstance(context, object); context.setTarget(object); context.setBeanInfo(info); ScopeInfo scopeInfo = context.getScopeInfo(); ScopeKey scopeKey = new ScopeKey(scopeInfo.getScope().getScopes()); scopeKey.addScope(CommonLevels.CLASS, info.getClassInfo().getType()); DependencyInfo dependencyInfo = context.getDependencyInfo(); if (dependencyInfo != null && dependencyInfo.isAutowireCandidate()) controller.addInstantiatedContext(context);
/** * Get bean validator bridge. * * @param context the owner context * @return bean validator bridge instance if exists, null otherwise */ static BeanValidatorBridge getBeanValidatorBridge(KernelControllerContext context) { Controller controller = context.getController(); if (controller == null) return null; ControllerContext bridge = controller.getInstalledContext(BeanValidatorBridge.class); return bridge != null ? BeanValidatorBridge.class.cast(bridge.getTarget()) : null; } }
ClassLoader cl = Configurator.getClassLoader(context.getBeanMetaData()); propertyInfo = Configurator.resolveProperty(log.isTraceEnabled(), context.getBeanInfo(), cl, property, signature); vistor.addDependency(new CallbackDependencyItem(context.getName(), (Class<?>)callback.getIDependOn(), whenRequired, dependentState, cardinality));
/** * Unset the context. * * @param context the context */ protected void unsetKernelControllerContext(KernelControllerContext context) { Object target = context.getTarget(); if (target != null) { Class<? extends KernelControllerContextAware> awareInterface = getActionAwareInterface(); // only applying interfaces that explicitly extend KernelControllerContextAware if (awareInterface != null && awareInterface.equals(KernelControllerContextAware.class) == false && awareInterface.isAssignableFrom(target.getClass())) { try { ((KernelControllerContextAware) target).unsetKernelControllerContext(context); } catch (Exception ignored) { log.debug("Ignored error unsetting context " + context.getName(), ignored); } } } }
protected void removeScoping(KernelControllerContext context) throws Throwable { ScopeKey scopeKey = context.getScopeInfo().getInstallScope(); if (scopeKey != null) { KernelController controller = (KernelController)context.getController(); KernelMetaDataRepository repository = controller.getKernel().getMetaDataRepository(); // find scoped controller MutableMetaDataRepository mmdr = repository.getMetaDataRepository(); ScopeHierarchyBuilder.cleanControllerHierarchy(mmdr, scopeKey, context); } }
protected void internalCleanAnnotation(ClassInfo info, MetaData retrieval, Aliases annotation, KernelControllerContext context) throws Throwable { BeanMetaData beanMetaData = context.getBeanMetaData(); Set<Object> aliases = beanMetaData.getAliases(); Controller controller = context.getController(); for(String alias : annotation.value()) { // check for ${property} if (annotation.replace()) alias = StringPropertyReplacer.replaceProperties(alias); if (aliases == null || aliases.contains(alias) == false) { controller.removeAlias(alias); } } } }
public TypeInfo getType(MetaDataVisitor visitor, MetaDataVisitorNode previous) throws Throwable { String type = getType(); if (type != null) { KernelControllerContext context = visitor.getControllerContext(); ClassLoader cl = Configurator.getClassLoader(context.getBeanMetaData()); KernelConfigurator configurator = context.getKernel().getConfigurator(); return configurator.getClassInfo(type, cl); } // check properties KernelControllerContext context = visitor.getControllerContext(); BeanInfo beanInfo = context.getBeanInfo(); PropertyInfo pi = beanInfo.getProperty(getName()); return applyCollectionOrMapCheck(pi.getType()); }
/** * Add optional dependency. * * @param controller the controller * @param lookup the lookup context */ protected void addOptionalDependency(Controller controller, ControllerContext lookup) { OptionalDependencyItem dependency = new OptionalDependencyItem(context.getName(), lookup.getName(), lookup.getState()); context.getDependencyInfo().addIDependOn(dependency); lookup.getDependencyInfo().addDependsOnMe(dependency); }
@SuppressWarnings("deprecation") public Object initializeProxy(Kernel kernel, String bean, boolean exposeClass, Set<String> interfaces) throws Throwable { if (exposeClass) throw new IllegalArgumentException("Cannot expose class via JDK LazyInitializer."); if (interfaces == null || interfaces.isEmpty()) throw new IllegalArgumentException("Null interfaces."); KernelControllerContext context = getKernelControllerContext(kernel, bean); BeanInfo beanInfo = context.getBeanInfo(); if (beanInfo == null) throw new IllegalArgumentException("Cannot proxy factory beans."); LazyHandler lazyHandler = new LazyHandler(bean, kernel.getBus(), beanInfo.getClassInfo().getType()); ClassLoader cl = Configurator.getClassLoader(context.getBeanMetaData()); return Proxy.newProxyInstance(getClass().getClassLoader(), getClasses(kernel.getConfigurator(), interfaces, cl), lazyHandler); }
/** * Get a bean * * @param name the name of the bean * @param state the state of the bean * @return the bean * @throws IllegalStateException when the bean does not exist at that state */ protected Object getBean(final Object name, final ControllerState state) { KernelControllerContext context = getControllerContext(name, state); return context.getTarget(); }
/** * Handle apply or cleanup of annotations. * * @param visitor the metadata visitor * @param isApplyPhase is this apply phase * @throws Throwable for any error */ protected void handleAnnotations(MetaDataVisitor visitor, boolean isApplyPhase) throws Throwable { if (visitor == null) throw new IllegalArgumentException("Null meta data visitor."); KernelControllerContext context = visitor.getControllerContext(); Kernel kernel = context.getKernel(); KernelMetaDataRepository repository = kernel.getMetaDataRepository(); MetaData retrieval = repository.getMetaData(context); BeanInfo info = context.getBeanInfo(); handleAnnotations(info, retrieval, visitor, isApplyPhase); }