/** * 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; } }
/** * Get controller context. * * @param name the name * @param state the state * @return the controller context */ protected ControllerContext getControllerContext(Object name, ControllerState state) { Controller controller = context.getController(); LookupStrategy strategy = search.getStrategy(); return strategy.getContext(controller, name, state); }
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); }
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); } }
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); }
protected void installActionInternal(KernelControllerContext context) throws Throwable { KernelController controller = (KernelController)context.getController(); DependencyInfo dependencyInfo = context.getDependencyInfo(); if (dependencyInfo != null && dependencyInfo.isAutowireCandidate()) controller.addInstantiatedContext(context); }
/** * Remove any previously added metadata * * @param context the context */ private void removeMetaData(KernelControllerContext context) { try { KernelController controller = (KernelController)context.getController(); KernelMetaDataRepository repository = controller.getKernel().getMetaDataRepository(); repository.removeMetaData(context); } catch (Throwable ignored) { log.warn("Unexpected error removing metadata: ", ignored); } }
protected void pojoChange(ControllerState state) { Controller controller = controllerContext.getController(); try { controller.change(controllerContext, state); } catch (RuntimeException e) { throw e; } catch (Error e) { throw e; } catch (Throwable t) { throw new RuntimeException("Error changing state of " + controllerContext.getName() + " to " + state.getStateString(), t); } }
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); } }
@Override public Object getValue(TypeInfo info, ClassLoader cl) throws Throwable { String persistenceUnitBeanName = getPersistenceUnitBeanName(); PersistenceUnit pu = (PersistenceUnit) context.getController().getContext(persistenceUnitBeanName, ControllerState.INSTALLED).getTarget(); return pu.getContainerEntityManagerFactory(); }
@Override public <T> AnnotatedType<T> decorateAnnotatedType(AnnotatedType<T> delegate, KernelControllerContext context) { KernelController controller = (KernelController)context.getController(); Kernel kernel = controller.getKernel(); KernelMetaDataRepository repository = kernel.getMetaDataRepository(); MetaData metaData = repository.getMetaData(context); return decorateAnnotatedType(delegate, metaData); } }
protected ClassInfo getClassInfo(KernelControllerContext context) throws Throwable { if (bean != null) { KernelController controller = (KernelController) context.getController(); ControllerContext beanContext = controller.getContext(bean, ControllerState.INSTANTIATED); if (beanContext != null) { KernelConfigurator configurator = controller.getKernel().getConfigurator(); Object target = beanContext.getTarget(); return configurator.getClassInfo(target.getClass()); } else { throw new IllegalArgumentException("Cannot determine install bean class: " + this); } } return super.getClassInfo(context); }
protected List<? extends MetaDataVisitorNode> internalApplyAnnotation(T info, MetaData metaData, JMX jmx, KernelControllerContext context) throws Throwable { Class<?> exposedInterface = jmx.exposedInterface(); if (exposedInterface == null || void.class.equals(exposedInterface)) exposedInterface = getExposedInterface(info); if (exposedInterface == null || exposedInterface.isInterface() == false) throw new IllegalArgumentException("Illegal exposed interface: " + exposedInterface); String name = createObjectName(context, info, jmx); String property = getName(info); if (log.isTraceEnabled()) log.trace("Exposing " + context.getName() + "." + property + " (" + exposedInterface.getName() + ") via objectName: " + name); String id = createId(context, info, jmx); BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder(id, exposedInterface.getName()); builder.addAnnotation(wrapJMX(jmx, name, exposedInterface)); builder.setConstructorValue(new AbstractDependencyValueMetaData(context.getName(), property)); KernelController controller = (KernelController)context.getController(); controller.install(builder.getBeanMetaData()); // no change directly on context return null; }
protected List<? extends MetaDataVisitorNode> internalApplyAnnotation(T info, MetaData metaData, JMX jmx, KernelControllerContext context) throws Throwable { Class<?> exposedInterface = jmx.exposedInterface(); if (exposedInterface == null || void.class.equals(exposedInterface)) exposedInterface = getExposedInterface(info); if (exposedInterface == null || exposedInterface.isInterface() == false) throw new IllegalArgumentException("Illegal exposed interface: " + exposedInterface); String name = createObjectName(context, info, jmx); String property = getName(info); if (log.isTraceEnabled()) log.trace("Exposing " + context.getName() + "." + property + " (" + exposedInterface.getName() + ") via objectName: " + name); String id = createId(context, info, jmx); BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder(id, exposedInterface.getName()); builder.addAnnotation(wrapJMX(jmx, name, exposedInterface)); builder.setConstructorValue(new AbstractDependencyValueMetaData(context.getName(), property)); KernelController controller = (KernelController)context.getController(); controller.install(builder.getBeanMetaData()); // no change directly on context return null; }
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); } } } }
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); } }
public void initialVisit(MetaDataVisitor vistor) { if (beanName == null) throw new IllegalArgumentException("Null bean name."); KernelController controller = (KernelController)vistor.getControllerContext().getController(); Kernel kernel = controller.getKernel(); AbstractConstructorMetaData constructor = new AbstractConstructorMetaData(); constructor.setFactoryClass(factoryClassName); constructor.setFactoryMethod("getProxy"); List<ParameterMetaData> parameters = new ArrayList<ParameterMetaData>(); parameters.add(new AbstractParameterMetaData(kernel)); parameters.add(new AbstractParameterMetaData(beanName)); parameters.add(new AbstractParameterMetaData(Boolean.TYPE.getName(), exposeClass)); parameters.add(new AbstractParameterMetaData(new AbstractValueMetaData(interfaces))); constructor.setParameters(parameters); setConstructor(constructor); vistor.addDependency(new AbstractDependencyItem(getName(), beanName, ControllerState.INSTANTIATED, ControllerState.DESCRIBED)); super.initialVisit(vistor); }
/** * Check if the bean has the WeldEnabled annotation * * @param context the kernel controller context * @param type the annotated type * @return true if bean has web beans annotations */ private boolean hasWeldEnabledAnnotation(KernelControllerContext context, AnnotatedType<?> type) { if (type != null) return type.getAnnotation(WeldEnabled.class) != null; KernelController controller = (KernelController)context.getController(); Kernel kernel = controller.getKernel(); KernelMetaDataRepository repository = kernel.getMetaDataRepository(); MetaData metaData = repository.getMetaData(context); return metaData.isAnnotationPresent(WeldEnabled.class); }
protected void applyScoping(KernelControllerContext context) throws Throwable { KernelController controller = (KernelController)context.getController(); KernelMetaDataRepository repository = controller.getKernel().getMetaDataRepository(); ScopeKey scopeKey = getInstallScopeKey(context, repository); if (scopeKey != null) { scopeKey.freeze(); context.getScopeInfo().setInstallScope(scopeKey); if (controller instanceof AbstractKernelController == false) throw new IllegalArgumentException("Can only handle AbstractKernelController: " + controller); MutableMetaDataRepository mmdr = repository.getMetaDataRepository(); AbstractController abstractController = ScopeHierarchyBuilder.buildControllerHierarchy((AbstractKernelController)controller, mmdr, scopeKey); if (abstractController instanceof ScopedKernelController == false) throw new IllegalArgumentException("Should be ScopedKernelController instance: " + abstractController); ScopedKernelController scopedController = (ScopedKernelController)abstractController; scopedController.addScopedControllerContext(context); } }
protected List<? extends MetaDataVisitorNode> internalApplyAnnotation(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.addAlias(alias, beanMetaData.getName()); } } // no metadata added return null; }