List of usage examples for org.springframework.beans.factory.config BeanDefinitionHolder BeanDefinitionHolder
public BeanDefinitionHolder(BeanDefinition beanDefinition, String beanName)
From source file:org.springmodules.cache.config.BeanReferenceParserImplTests.java
public void testParseWithNamedBeanNotToBeRegistered() { String beanName = "myBean"; Element beanElement = createBeanElementBuilder(beanName).toXml(); Element referenceElement = elementBuilder.toXml(); referenceElement.appendChild(beanElement); RootBeanDefinition beanDefinition = new RootBeanDefinition(String.class); BeanDefinitionHolder holder = new BeanDefinitionHolder(beanDefinition, beanName); delegate.parseBeanDefinitionElement(beanElement, null); helperControl.setReturnValue(holder); helperControl.replay();/*from www. j a v a 2 s . c o m*/ // method to test Object actual = parser.parse(referenceElement, parserContext, false); assertSame(holder, actual); // assert the bean definition was not registered. assertEquals(0, registry.getBeanDefinitionCount()); }
From source file:com.github.bjoern2.yolotyrion.spring.xml.RepositorySingleBeanDefinitionParser.java
protected void registerBean(BeanDefinition def, String name, ParserContext parserContext) { BeanDefinitionHolder holder = new BeanDefinitionHolder(def, name); BeanComponentDefinition component = new BeanComponentDefinition(holder); parserContext.registerBeanComponent(component); }
From source file:com.weibo.api.motan.config.springsupport.MotanBeanDefinitionParser.java
@SuppressWarnings({ "rawtypes", "unchecked" }) private static BeanDefinition parse(Element element, ParserContext parserContext, Class<?> beanClass, boolean required) throws ClassNotFoundException { RootBeanDefinition bd = new RootBeanDefinition(); bd.setBeanClass(beanClass);// w ww.ja va2 s. com // ??lazy init bd.setLazyInit(false); // id?id,idcontext String id = element.getAttribute("id"); if ((id == null || id.length() == 0) && required) { String generatedBeanName = element.getAttribute("name"); if (generatedBeanName == null || generatedBeanName.length() == 0) { generatedBeanName = element.getAttribute("class"); } if (generatedBeanName == null || generatedBeanName.length() == 0) { generatedBeanName = beanClass.getName(); } id = generatedBeanName; int counter = 2; while (parserContext.getRegistry().containsBeanDefinition(id)) { id = generatedBeanName + (counter++); } } if (id != null && id.length() > 0) { if (parserContext.getRegistry().containsBeanDefinition(id)) { throw new IllegalStateException("Duplicate spring bean id " + id); } parserContext.getRegistry().registerBeanDefinition(id, bd); } bd.getPropertyValues().addPropertyValue("id", id); if (ProtocolConfig.class.equals(beanClass)) { MotanNamespaceHandler.protocolDefineNames.add(id); } else if (RegistryConfig.class.equals(beanClass)) { MotanNamespaceHandler.registryDefineNames.add(id); } else if (BasicServiceInterfaceConfig.class.equals(beanClass)) { MotanNamespaceHandler.basicServiceConfigDefineNames.add(id); } else if (BasicRefererInterfaceConfig.class.equals(beanClass)) { MotanNamespaceHandler.basicRefererConfigDefineNames.add(id); } else if (ServiceConfigBean.class.equals(beanClass)) { String className = element.getAttribute("class"); if (className != null && className.length() > 0) { RootBeanDefinition classDefinition = new RootBeanDefinition(); classDefinition.setBeanClass( Class.forName(className, true, Thread.currentThread().getContextClassLoader())); classDefinition.setLazyInit(false); parseProperties(element.getChildNodes(), classDefinition); bd.getPropertyValues().addPropertyValue("ref", new BeanDefinitionHolder(classDefinition, id + "Impl")); } } Set<String> props = new HashSet<String>(); ManagedMap parameters = null; // ??setbd for (Method setter : beanClass.getMethods()) { String name = setter.getName(); // setXXX if (name.length() <= 3 || !name.startsWith("set") || !Modifier.isPublic(setter.getModifiers()) || setter.getParameterTypes().length != 1) { continue; } String property = (name.substring(3, 4).toLowerCase() + name.substring(4)).replaceAll("_", "-"); props.add(property); if ("id".equals(property)) { bd.getPropertyValues().addPropertyValue("id", id); continue; } String value = element.getAttribute(property); if ("methods".equals(property)) { parseMethods(id, element.getChildNodes(), bd, parserContext); } if (StringUtils.isBlank(value)) { continue; } value = value.trim(); if (value.length() == 0) { continue; } Object reference; if ("ref".equals(property)) { if (parserContext.getRegistry().containsBeanDefinition(value)) { BeanDefinition refBean = parserContext.getRegistry().getBeanDefinition(value); if (!refBean.isSingleton()) { throw new IllegalStateException( "The exported service ref " + value + " must be singleton! Please set the " + value + " bean scope to singleton, eg: <bean id=\"" + value + "\" scope=\"singleton\" ...>"); } } reference = new RuntimeBeanReference(value); } else if ("protocol".equals(property) && !StringUtils.isBlank(value)) { if (!value.contains(",")) { reference = new RuntimeBeanReference(value); } else { parseMultiRef("protocols", value, bd, parserContext); reference = null; } } else if ("registry".equals(property)) { parseMultiRef("registries", value, bd, parserContext); reference = null; } else if ("basicService".equals(property)) { reference = new RuntimeBeanReference(value); } else if ("basicReferer".equals(property)) { reference = new RuntimeBeanReference(value); } else if ("extConfig".equals(property)) { reference = new RuntimeBeanReference(value); } else { reference = new TypedStringValue(value); } if (reference != null) { bd.getPropertyValues().addPropertyValue(property, reference); } } if (ProtocolConfig.class.equals(beanClass)) { // protocolparameters? NamedNodeMap attributes = element.getAttributes(); int len = attributes.getLength(); for (int i = 0; i < len; i++) { Node node = attributes.item(i); String name = node.getLocalName(); if (!props.contains(name)) { if (parameters == null) { parameters = new ManagedMap(); } String value = node.getNodeValue(); parameters.put(name, new TypedStringValue(value, String.class)); } } bd.getPropertyValues().addPropertyValue("parameters", parameters); } return bd; }
From source file:org.apache.smscserver.config.spring.UserManagerBeanDefinitionParser.java
@Override protected void doParse(final Element element, final ParserContext parserContext, final BeanDefinitionBuilder builder) { Class<?> factoryClass;//w w w .j a va 2 s.com if (element.getLocalName().equals("file-user-manager")) { factoryClass = PropertiesUserManagerFactory.class; } else { factoryClass = DbUserManagerFactory.class; } BeanDefinitionBuilder factoryBuilder = BeanDefinitionBuilder.genericBeanDefinition(factoryClass); // common for both user managers if (StringUtils.hasText(element.getAttribute("encrypt-passwords"))) { String encryptionStrategy = element.getAttribute("encrypt-passwords"); if (encryptionStrategy.equals("true") || encryptionStrategy.equals("md5")) { factoryBuilder.addPropertyValue("passwordEncryptor", new Md5PasswordEncryptor()); } else if (encryptionStrategy.equals("salted")) { factoryBuilder.addPropertyValue("passwordEncryptor", new SaltedPasswordEncryptor()); } else { factoryBuilder.addPropertyValue("passwordEncryptor", new ClearTextPasswordEncryptor()); } } if (factoryClass == PropertiesUserManagerFactory.class) { if (StringUtils.hasText(element.getAttribute("file"))) { factoryBuilder.addPropertyValue("file", element.getAttribute("file")); } if (StringUtils.hasText(element.getAttribute("url"))) { factoryBuilder.addPropertyValue("url", element.getAttribute("url")); } } else { Element dsElm = SpringUtil.getChildElement(element, SmscServerNamespaceHandler.SMSCSERVER_NS, "data-source"); // schema ensure we get the right type of element Element springElm = SpringUtil.getChildElement(dsElm, null, null); Object o; if ("bean".equals(springElm.getLocalName())) { o = parserContext.getDelegate().parseBeanDefinitionElement(springElm, builder.getBeanDefinition()); } else { // ref o = parserContext.getDelegate().parsePropertySubElement(springElm, builder.getBeanDefinition()); } factoryBuilder.addPropertyValue("dataSource", o); factoryBuilder.addPropertyValue("sqlUserInsert", this.getSql(element, "insert-user")); factoryBuilder.addPropertyValue("sqlUserUpdate", this.getSql(element, "update-user")); factoryBuilder.addPropertyValue("sqlUserDelete", this.getSql(element, "delete-user")); factoryBuilder.addPropertyValue("sqlUserSelect", this.getSql(element, "select-user")); factoryBuilder.addPropertyValue("sqlUserSelectAll", this.getSql(element, "select-all-users")); factoryBuilder.addPropertyValue("sqlUserAdmin", this.getSql(element, "is-admin")); factoryBuilder.addPropertyValue("sqlUserAuthenticate", this.getSql(element, "authenticate")); } BeanDefinition factoryDefinition = factoryBuilder.getBeanDefinition(); String factoryId = parserContext.getReaderContext().generateBeanName(factoryDefinition); BeanDefinitionHolder factoryHolder = new BeanDefinitionHolder(factoryDefinition, factoryId); this.registerBeanDefinition(factoryHolder, parserContext.getRegistry()); // set the factory on the listener bean builder.getRawBeanDefinition().setFactoryBeanName(factoryId); builder.getRawBeanDefinition().setFactoryMethodName("createUserManager"); }
From source file:org.zalando.stups.spring.cloud.netflix.feign.OAuth2FeignClientsRegsitrar.java
private BeanDefinitionHolder createBeanDefinition(final AnnotationMetadata annotationMetadata) { Map<String, Object> attributes = annotationMetadata .getAnnotationAttributes(FeignClient.class.getCanonicalName()); String className = annotationMetadata.getClassName(); BeanDefinitionBuilder definition = BeanDefinitionBuilder .genericBeanDefinition(TokensFeignClientFactoryBean.class); validate(attributes);// w ww . j a v a 2 s . co m definition.addPropertyValue("url", getUrl(attributes)); definition.addPropertyValue("name", getServiceId(attributes)); definition.addPropertyValue("type", className); String beanName = StringUtils.uncapitalize(className.substring(className.lastIndexOf(".") + 1)); return new BeanDefinitionHolder(definition.getBeanDefinition(), beanName); }
From source file:org.apache.ftpserver.config.spring.UserManagerBeanDefinitionParser.java
@Override protected void doParse(final Element element, final ParserContext parserContext, final BeanDefinitionBuilder builder) { Class<?> factoryClass;//ww w .j a va 2 s . c o m if (element.getLocalName().equals("file-user-manager")) { factoryClass = PropertiesUserManagerFactory.class; } else { factoryClass = DbUserManagerFactory.class; } BeanDefinitionBuilder factoryBuilder = BeanDefinitionBuilder.genericBeanDefinition(factoryClass); // common for both user managers if (StringUtils.hasText(element.getAttribute("encrypt-passwords"))) { String encryptionStrategy = element.getAttribute("encrypt-passwords"); if (encryptionStrategy.equals("true") || encryptionStrategy.equals("md5")) { factoryBuilder.addPropertyValue("passwordEncryptor", new Md5PasswordEncryptor()); } else if (encryptionStrategy.equals("salted")) { factoryBuilder.addPropertyValue("passwordEncryptor", new SaltedPasswordEncryptor()); } else { factoryBuilder.addPropertyValue("passwordEncryptor", new ClearTextPasswordEncryptor()); } } if (factoryClass == PropertiesUserManagerFactory.class) { if (StringUtils.hasText(element.getAttribute("file"))) { factoryBuilder.addPropertyValue("file", element.getAttribute("file")); } if (StringUtils.hasText(element.getAttribute("url"))) { factoryBuilder.addPropertyValue("url", element.getAttribute("url")); } } else { Element dsElm = SpringUtil.getChildElement(element, FtpServerNamespaceHandler.FTPSERVER_NS, "data-source"); // schema ensure we get the right type of element Element springElm = SpringUtil.getChildElement(dsElm, null, null); Object o; if ("bean".equals(springElm.getLocalName())) { o = parserContext.getDelegate().parseBeanDefinitionElement(springElm, builder.getBeanDefinition()); } else { // ref o = parserContext.getDelegate().parsePropertySubElement(springElm, builder.getBeanDefinition()); } factoryBuilder.addPropertyValue("dataSource", o); factoryBuilder.addPropertyValue("sqlUserInsert", getSql(element, "insert-user")); factoryBuilder.addPropertyValue("sqlUserUpdate", getSql(element, "update-user")); factoryBuilder.addPropertyValue("sqlUserDelete", getSql(element, "delete-user")); factoryBuilder.addPropertyValue("sqlUserSelect", getSql(element, "select-user")); factoryBuilder.addPropertyValue("sqlUserSelectAll", getSql(element, "select-all-users")); factoryBuilder.addPropertyValue("sqlUserAdmin", getSql(element, "is-admin")); factoryBuilder.addPropertyValue("sqlUserAuthenticate", getSql(element, "authenticate")); } BeanDefinition factoryDefinition = factoryBuilder.getBeanDefinition(); String factoryId = parserContext.getReaderContext().generateBeanName(factoryDefinition); BeanDefinitionHolder factoryHolder = new BeanDefinitionHolder(factoryDefinition, factoryId); registerBeanDefinition(factoryHolder, parserContext.getRegistry()); // set the factory on the listener bean builder.getRawBeanDefinition().setFactoryBeanName(factoryId); builder.getRawBeanDefinition().setFactoryMethodName("createUserManager"); }
From source file:org.apache.smscserver.config.spring.ListenerBeanDefinitionParser.java
/** * {@inheritDoc}// ww w . j a v a2 s . c o m */ @Override protected void doParse(final Element element, final ParserContext parserContext, final BeanDefinitionBuilder builder) { BeanDefinitionBuilder factoryBuilder = BeanDefinitionBuilder.genericBeanDefinition(ListenerFactory.class); if (StringUtils.hasText(element.getAttribute("port"))) { factoryBuilder.addPropertyValue("port", Integer.valueOf(element.getAttribute("port"))); } SslConfiguration ssl = this.parseSsl(element); if (ssl != null) { factoryBuilder.addPropertyValue("sslConfiguration", ssl); } if (StringUtils.hasText(element.getAttribute("idle-timeout"))) { factoryBuilder.addPropertyValue("idleTimeout", SpringUtil.parseInt(element, "idle-timeout", 300)); } String localAddress = SpringUtil.parseStringFromInetAddress(element, "local-address"); if (localAddress != null) { factoryBuilder.addPropertyValue("serverAddress", localAddress); } factoryBuilder.addPropertyValue("implicitSsl", SpringUtil.parseBoolean(element, "implicit-ssl", false)); Element blacklistElm = SpringUtil.getChildElement(element, SmscServerNamespaceHandler.SMSCSERVER_NS, "blacklist"); if (blacklistElm != null) { this.LOG.warn( "Element 'blacklist' is deprecated, and may be removed in a future release. Please use 'remote-ip-filter' instead. "); try { RemoteIpFilter remoteIpFilter = new RemoteIpFilter(IpFilterType.DENY, blacklistElm.getTextContent()); factoryBuilder.addPropertyValue("sessionFilter", remoteIpFilter); } catch (UnknownHostException e) { throw new IllegalArgumentException("Invalid IP address or subnet in the 'blacklist' element", e); } } Element remoteIpFilterElement = SpringUtil.getChildElement(element, SmscServerNamespaceHandler.SMSCSERVER_NS, "remote-ip-filter"); if (remoteIpFilterElement != null) { if (blacklistElm != null) { throw new SmscServerConfigurationException( "Element 'remote-ip-filter' may not be used when 'blacklist' element is specified. "); } String filterType = remoteIpFilterElement.getAttribute("type"); try { RemoteIpFilter remoteIpFilter = new RemoteIpFilter(IpFilterType.parse(filterType), remoteIpFilterElement.getTextContent()); factoryBuilder.addPropertyValue("sessionFilter", remoteIpFilter); } catch (UnknownHostException e) { throw new IllegalArgumentException( "Invalid IP address or subnet in the 'remote-ip-filter' element"); } } BeanDefinition factoryDefinition = factoryBuilder.getBeanDefinition(); String listenerFactoryName = parserContext.getReaderContext().generateBeanName(factoryDefinition); BeanDefinitionHolder factoryHolder = new BeanDefinitionHolder(factoryDefinition, listenerFactoryName); this.registerBeanDefinition(factoryHolder, parserContext.getRegistry()); // set the factory on the listener bean builder.getRawBeanDefinition().setFactoryBeanName(listenerFactoryName); builder.getRawBeanDefinition().setFactoryMethodName("createListener"); }
From source file:org.springmodules.cache.config.BeanReferenceParserImplTests.java
public void testParseWithNamedInnerBeanToBeRegistered() { String beanName = "myBean"; Element beanElement = createBeanElementBuilder(beanName).toXml(); Element referenceElement = elementBuilder.toXml(); referenceElement.appendChild(beanElement); RootBeanDefinition beanDefinition = new RootBeanDefinition(String.class); BeanDefinitionHolder holder = new BeanDefinitionHolder(beanDefinition, beanName); delegate.parseBeanDefinitionElement(beanElement, null); helperControl.setReturnValue(holder); helperControl.replay();/*w w w. ja v a2 s. c o m*/ // method to test Object actual = parser.parse(referenceElement, parserContext, true); assertIsRuntimeBeanReference(actual, beanName); // assert the bean definition was registered. assertSame(beanDefinition, registry.getBeanDefinition(beanName)); }
From source file:org.springframework.hateoas.config.HypermediaSupportBeanDefinitionRegistrar.java
@Override public void registerBeanDefinitions(AnnotationMetadata metadata, BeanDefinitionRegistry registry) { linkBuilderBeanDefinitionRegistrar.registerBeanDefinitions(metadata, registry); Map<String, Object> attributes = metadata.getAnnotationAttributes(EnableHypermediaSupport.class.getName()); Collection<HypermediaType> types = Arrays.asList((HypermediaType[]) attributes.get("type")); for (HypermediaType type : types) { if (JSONPATH_PRESENT) { AbstractBeanDefinition linkDiscovererBeanDefinition = getLinkDiscovererBeanDefinition(type); registerBeanDefinition(/*from www. j a v a 2 s. c o m*/ new BeanDefinitionHolder(linkDiscovererBeanDefinition, BeanDefinitionReaderUtils.generateBeanName(linkDiscovererBeanDefinition, registry)), registry); } } if (types.contains(HypermediaType.HAL)) { if (JACKSON2_PRESENT) { BeanDefinitionBuilder halQueryMapperBuilder = rootBeanDefinition(ObjectMapper.class); registerSourcedBeanDefinition(halQueryMapperBuilder, metadata, registry, HAL_OBJECT_MAPPER_BEAN_NAME); BeanDefinitionBuilder builder = rootBeanDefinition( Jackson2ModuleRegisteringBeanPostProcessor.class); registerSourcedBeanDefinition(builder, metadata, registry); } } if (!types.isEmpty()) { BeanDefinitionBuilder linkDiscoverersRegistryBuilder = BeanDefinitionBuilder .rootBeanDefinition(PluginRegistryFactoryBean.class); linkDiscoverersRegistryBuilder.addPropertyValue("type", LinkDiscoverer.class); registerSourcedBeanDefinition(linkDiscoverersRegistryBuilder, metadata, registry, LINK_DISCOVERER_REGISTRY_BEAN_NAME); BeanDefinitionBuilder linkDiscoverersBuilder = BeanDefinitionBuilder .rootBeanDefinition(LinkDiscoverers.class); linkDiscoverersBuilder.addConstructorArgReference(LINK_DISCOVERER_REGISTRY_BEAN_NAME); registerSourcedBeanDefinition(linkDiscoverersBuilder, metadata, registry); } registerRelProviderPluginRegistryAndDelegate(registry); }
From source file:org.jboss.seam.spring.namespace.CdiBeanImportBeanDefinitionParser.java
@Override public AbstractBeanDefinition parseInternal(Element element, ParserContext parserContext) { BeanDefinitionBuilder cdiBeanFactoryBuilder = BeanDefinitionBuilder .rootBeanDefinition(FACTORY_BEAN_CLASS_NAME); String beanManagerReference = element.getAttribute(BEAN_MANAGER_REFERENCE); if (StringUtils.hasText(beanManagerReference)) { cdiBeanFactoryBuilder.addPropertyReference("beanManager", beanManagerReference); } else {//from w w w. j ava2 s . c om cdiBeanFactoryBuilder.addPropertyReference("beanManager", DEFAULT_BEAN_MANAGER_ID); } String name = element.getAttribute(NAME_ATTRIBUTE); String type = element.getAttribute("type"); if (!StringUtils.hasText(name) && !StringUtils.hasText(type)) { parserContext.getReaderContext() .error("A CDI bean reference must specify at least a name or the bean type", element); } ArrayList<Qualifier> qualifiers = new ArrayList<Qualifier>(); NodeList children = element.getChildNodes(); for (int i = 0; i < children.getLength(); i++) { Node childNode = children.item(i); if (childNode.getNodeType() == Node.ELEMENT_NODE && "qualifier".equals(childNode.getLocalName())) { Element qualifierElement = (Element) childNode; Qualifier qualifier = new Qualifier(); Map<String, Object> attributes = new HashMap<String, Object>(); qualifier.setClassName(qualifierElement.getAttribute("type")); if (qualifierElement.hasChildNodes()) { NodeList attributeNodes = qualifierElement.getChildNodes(); for (int j = 0; j < attributeNodes.getLength(); j++) { Node attributeNode = attributeNodes.item(j); if (attributeNode.getNodeType() == Node.ELEMENT_NODE && "attribute".equals(attributeNode.getLocalName())) { Element attributeElement = (Element) attributeNode; String attributeName = attributeElement.getAttribute("name"); String attributeValue = attributeElement.getAttribute("value"); if (!StringUtils.hasText(attributeName) || !StringUtils.hasText(attributeValue)) { parserContext.getReaderContext().error( "Qualifier attributes must have both a name and a value", attributeElement); } attributes.put(attributeName, attributeValue); } } } qualifier.setAttributes(attributes); qualifiers.add(qualifier); } } if (StringUtils.hasText(name) && !qualifiers.isEmpty()) { parserContext.getReaderContext() .error("A bean reference must either specify a name or qualifiers but not both", element); } BeanDefinitionBuilder lookupBuilder = BeanDefinitionBuilder .rootBeanDefinition(TYPE_SAFE_BEAN_LOOKUP_CLASS_NAME); lookupBuilder.addConstructorArgValue(type); lookupBuilder.addPropertyValue("qualifiers", qualifiers); AbstractBeanDefinition lookupBeanDefinition = lookupBuilder.getBeanDefinition(); String lookupBeanName = parserContext.getReaderContext().generateBeanName(lookupBeanDefinition); BeanDefinitionReaderUtils.registerBeanDefinition( new BeanDefinitionHolder(lookupBeanDefinition, lookupBeanName), parserContext.getRegistry()); cdiBeanFactoryBuilder.addPropertyReference("cdiBeanLookup", lookupBeanName); return cdiBeanFactoryBuilder.getBeanDefinition(); }