protected String getComponentName(BeanMetaData attachment) { return attachment.getName(); } }
protected Object getName(BeanMetaData handle) { return handle.getName(); } }
/** * Generate the name. * * @param previous the previous / parent node * @return generated name */ protected String generateName(MetaDataVisitorNode previous) { ++counter; String name; if (previous instanceof PropertyMetaData) { PropertyMetaData pmd = (PropertyMetaData)previous; name = root.getName() + "$" + pmd.getName() + "#" + counter; } else { name = root.getName() + "#" + counter; } return name; }
@Override protected void attachSwitchBoardBMD(DeploymentUnit deploymentUnit, BeanMetaData switchBoardBMD) { deploymentUnit.addAttachment(BeanMetaData.class + ":" + switchBoardBMD.getName(), switchBoardBMD); }
@Override protected void attachSwitchBoardBMD(DeploymentUnit deploymentUnit, BeanMetaData switchBoardBMD) { deploymentUnit.addAttachment(BeanMetaData.class + ":" + switchBoardBMD.getName(), switchBoardBMD); }
@Override public void undeploy(DeploymentUnit unit, BeanMetaData deployment) { controller.uninstall(deployment.getName()); } }
protected static void removeBeanComponent(DeploymentUnit unit, BeanMetaData bean) { unit.removeComponent(bean.getName()); }
protected static void addBeanComponent(DeploymentUnit unit, BeanMetaData bean) { DeploymentUnit component = unit.addComponent(bean.getName()); component.addAttachment(BeanMetaData.class.getName(), bean); }
/** * Register a MC Bean in the servlet context prefixed with WebBoostrap.BEAN_PREFIX */ private void registerBean(BeanMetaData bean) { KernelRegistryEntry entry = bootstrap.getKernel().getRegistry().getEntry(bean.getName()); Object target = entry.getTarget(); servletContext.setAttribute(BEAN_PREFIX + bean.getName(), target); }
@Override protected void attachSwitchBoardBMD(DeploymentUnit deploymentUnit, BeanMetaData switchBoardBMD) { // add BMD to parent, since this is a component DU. and BMDDeployer doesn't pick up BMD from components! DeploymentUnit parentDU = deploymentUnit.getParent(); // add BMD to parent parentDU.addAttachment(BeanMetaData.class + ":" + switchBoardBMD.getName(), switchBoardBMD); }
if (context != null) deployedWithPlugin.put(deployment.getName(), plugin); return context;
@Override public void undeploy(DeploymentUnit unit, BeanMetaData deployment) { BeanMetaDataDeployerPlugin plugin = deployedWithPlugin.remove(deployment.getName()); if (plugin == null || plugin.uninstallContext(controller, unit, deployment) == false) { ControllerContext context = controller.uninstall(deployment.getName()); removeContext(context, unit.getParent()); } // Remove any classloader metadata we added (not necessary if we clone above) ClassLoaderMetaData classLoader = deployment.getClassLoader(); if (classLoader instanceof DeploymentClassLoaderMetaData) deployment.setClassLoader(null); }
beanName = bmd.getName();
@Override public void deploy(DeploymentUnit unit, BeanMetaData deployment) throws DeploymentException { KernelControllerContext context = new AbstractKernelControllerContext(null, deployment, null); try { controller.install(context); } catch (Throwable t) { throw DeploymentException.rethrowAsDeploymentException("Error deploying: " + deployment.getName(), t); } }
/** * Update class annotations * * @param mutable the mutable metadata * @param context the context * @param add true for add, false for remove */ private void updateClassAnnotations(MutableMetaDataLoader mutable, KernelControllerContext context, boolean add) { BeanMetaData beanMetaData = context.getBeanMetaData(); if (beanMetaData != null) { ClassLoader cl; try { cl = Configurator.getClassLoader(beanMetaData); } catch(Throwable t) { throw new RuntimeException("Error getting classloader for " + beanMetaData.getName(), t); } updateAnnotations(cl, mutable, beanMetaData.getAnnotations(), add); } }
if (bean.getName() == null) bean.setName(generateName(previous)); replaceWithInjection(previous, bean);
if(bmd != null && bmd.getName().equals(contextName)) return deploymentUnit; DeploymentUnit result;
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; }
protected void installActionInternal(KernelControllerContext context) throws Throwable { KernelController controller = (KernelController) context.getController(); Kernel kernel = controller.getKernel(); org.jboss.kernel.spi.registry.KernelRegistry registry = kernel.getRegistry(); BeanMetaData metaData = context.getBeanMetaData(); Object name = metaData.getName(); registry.registerEntry(name, context); try { controller.addSupplies(context); } catch (Throwable t) { try { registry.unregisterEntry(name); } catch (Throwable x) { log.warn("Ignoring error reversing install, throwing original error " + name, x); } throw t; } }
/** * Create an abstract controller context * * @param info the bean info * @param metaData the meta data * @param target any target object */ public AbstractKernelControllerContext(BeanInfo info, BeanMetaData metaData, Object target) { super(metaData.getName(), determineAliases(metaData), target == null ? actions : noInstantiate, new AbstractDependencyInfo(), target); this.info = info; this.metaData = metaData; ControllerMode mode = metaData.getMode(); if (mode != null) setMode(mode); ErrorHandlingMode errorHandlingMode = metaData.getErrorHandlingMode(); if (errorHandlingMode != null) setErrorHandlingMode(errorHandlingMode); boolean autowireCandidate = metaData.isAutowireCandidate(); getDependencyInfo().setAutowireCandidate(autowireCandidate); if (System.getSecurityManager() != null) accessContext = AccessController.getContext(); initKernelScopeInfo(); }