List of usage examples for org.springframework.beans.factory.support BeanDefinitionBuilder getBeanDefinition
public AbstractBeanDefinition getBeanDefinition()
From source file:org.metaeffekt.dcc.commons.spring.xml.DCCConfigurationBeanDefinitionParser.java
private void parseIsTrueAsserts(final ManagedList<AbstractBeanDefinition> asserts, Element assertsElement, BeanDefinitionRegistry registry) { final List<Element> uniqueAsserts = DomUtils.getChildElementsByTagName(assertsElement, "is-true"); for (Element uniqueAssert : uniqueAsserts) { final BeanDefinitionBuilder assertBeanDefBuilder = BeanDefinitionBuilder .genericBeanDefinition(IsTrueAssert.class); assertBeanDefBuilder.addConstructorArgValue(parseString(uniqueAssert, "value", null, registry)); assertBeanDefBuilder.addConstructorArgValue(parseString(uniqueAssert, "message", null, registry)); asserts.add(assertBeanDefBuilder.getBeanDefinition()); }//from ww w . ja v a 2s. co m }
From source file:org.metaeffekt.dcc.commons.spring.xml.DCCConfigurationBeanDefinitionParser.java
private ManagedList<AbstractBeanDefinition> parseCommands(Element unitElement, String unitId, BeanDefinitionRegistry registry) { ManagedList<AbstractBeanDefinition> commands = new ManagedList<>(); List<Element> commandElements = DomUtils.getChildElementsByTagName(unitElement, ELEMENT_UNIT_COMMAND); if (!commandElements.isEmpty()) { String defaultPackageRef = unitElement.getAttribute(DccConstants.PACKAGE); Id<PackageId> defaultPackageId = null; if (StringUtils.isNotEmpty(defaultPackageRef)) { defaultPackageId = Id.createPackageId(defaultPackageRef); }//from ww w. j a v a 2 s . c o m for (Element commandElement : commandElements) { final String commandTypeRef = commandElement.getAttribute(ATTRIBUTE_UNIT_TYPE); final Commands commandType = Commands.parseConfigurableCommand(commandTypeRef); if (commandType == null) { throw new BeanCreationException( String.format("Unsupported command type [%s].", commandTypeRef)); } final Id<PackageId> packageId = parsePackageReferenceForCommand(defaultPackageId, commandElement, unitId); final BeanDefinitionBuilder commandBeanDefBuilder = BeanDefinitionBuilder .genericBeanDefinition(CommandDefinition.class); commandBeanDefBuilder.addConstructorArgValue(commandType); commandBeanDefBuilder.addConstructorArgValue(packageId); final List<CapabilityDefinitionReference> capabilities = parseCommandCapabilities(commandElement, registry); final List<CapabilityDefinitionExtensionReference> contributions = parseCommandContributions( commandElement, registry); final List<CapabilityDefinitionExtensionReference> requisitions = parseCommandRequisitions( commandElement, registry); final List<Provision> provisions = parseCommandProvisions(commandElement, registry); commandBeanDefBuilder.addPropertyValue(PROPERTY_CAPABILITIES, capabilities); commandBeanDefBuilder.addPropertyValue(PROPERTY_CONTRIBUTIONS, contributions); commandBeanDefBuilder.addPropertyValue(PROPERTY_REQUISITIONS, requisitions); commandBeanDefBuilder.addPropertyValue(PROPERTY_PROVISIONS, provisions); commands.add(commandBeanDefBuilder.getBeanDefinition()); } } return commands; }
From source file:org.metaeffekt.dcc.commons.spring.xml.DCCConfigurationBeanDefinitionParser.java
private ManagedList<AbstractBeanDefinition> parseMappingsElement(Element unitElement, String unitId, BeanDefinitionRegistry registry) { ManagedList<AbstractBeanDefinition> mappings = new ManagedList<>(); Element mappingsElement = DomUtils.getChildElementByTagName(unitElement, ELEMENT_UNIT_MAPPINGS); if (mappingsElement != null) { List<Element> mappingElements = DomUtils.getChildElementsByTagName(mappingsElement, "mapping"); for (Element mappingElement : mappingElements) { String targetCapabilityId = parseString(mappingElement, "targetCapabilityId", null, registry); BeanDefinitionBuilder mappingBeanDefBuilder = BeanDefinitionBuilder .genericBeanDefinition(Mapping.class); mappingBeanDefBuilder.addConstructorArgValue(Id.createCapabilityId(targetCapabilityId)); ManagedList<AttributeMapper> mappers = new ManagedList<>(); Element mapUnitAttributesElement = DomUtils.getChildElementByTagName(mappingElement, "map-unit-attributes"); if (mapUnitAttributesElement != null) { String sourcePrefix = parseString(mapUnitAttributesElement, "sourcePrefix", null, registry); String targetPrefix = parseString(mapUnitAttributesElement, "targetPrefix", null, registry); UnitToCapabilityAttributeMapper mapper = new UnitToCapabilityAttributeMapper(sourcePrefix, targetPrefix);/* ww w .j a va 2 s . c o m*/ mappers.add(mapper); } // extract map alls List<Element> mapAllElements = DomUtils.getChildElementsByTagName(mappingElement, "map-all"); for (Element mapAllElement : mapAllElements) { Id<CapabilityId> sourceCapabilityId = Id .createCapabilityId(parseString(mapAllElement, "sourceCapabilityId", null, registry)); String sourcePrefix = parseString(mapAllElement, "sourcePrefix", null, registry); String targetPrefix = parseString(mapAllElement, "targetPrefix", null, registry); SourceToTargetCapabilityAttributeMapper mapper = new SourceToTargetCapabilityAttributeMapper( sourceCapabilityId, sourcePrefix, targetPrefix); mappers.add(mapper); } // extract expressions List<Element> expressionElements = DomUtils.getChildElementsByTagName(mappingElement, "expression"); for (Element expressionElement : expressionElements) { String attributeKey = expressionElement.getAttribute("attributeKey"); String value = parseString(expressionElement, "value", null, registry); ExpressionAttributeMapper mapper = new ExpressionAttributeMapper(attributeKey, value); mappers.add(mapper); } mappingBeanDefBuilder.addPropertyValue("attributeMappers", mappers); mappingBeanDefBuilder.setScope(BeanDefinition.SCOPE_PROTOTYPE); mappings.add(mappingBeanDefBuilder.getBeanDefinition().cloneBeanDefinition()); } } return mappings; }
From source file:org.metaeffekt.dcc.commons.spring.xml.DCCConfigurationBeanDefinitionParser.java
private ManagedList<AbstractBeanDefinition> parseRequiredCapabilities(Element unitElement, String unitId, BeanDefinitionRegistry registry) { ManagedList<AbstractBeanDefinition> reqCapReferences = new ManagedList<>(); List<Element> reqCapElements = DomUtils.getChildElementsByTagName(unitElement, ELEMENT_UNIT_REQUIRED_CAPABILITY); for (Element reqCapElement : reqCapElements) { String capabilityId = extractMandatoryIdAttributeFromElement(reqCapElement, "Capability", registry); boolean optionalFlag = Boolean.valueOf(reqCapElement.getAttribute(ATTRIBUTE_KEY_OPTIONAL)); boolean multipleBindingsAllowedFlag = Boolean .valueOf(reqCapElement.getAttribute(ATTRIBUTE_KEY_MULTIPLE_BINDINGS)); boolean identifiesHost = Boolean.valueOf(reqCapElement.getAttribute(ATTRIBUTE_KEY_IDENTIFIES_HOST)); BeanDefinitionBuilder builder = createGenericCapabilityBuilder(capabilityId, reqCapElement, RequiredCapability.class); builder.addPropertyValue(ATTRIBUTE_KEY_OPTIONAL, optionalFlag); builder.addPropertyValue(ATTRIBUTE_KEY_MULTIPLE_BINDINGS, multipleBindingsAllowedFlag); builder.addPropertyValue(ATTRIBUTE_IDENTIFIES_HOST, identifiesHost); String capabilityBeanName = generateCapabilityBeanName(unitId, capabilityId); registry.registerBeanDefinition(capabilityBeanName, builder.getBeanDefinition()); reqCapReferences.add(builder.getBeanDefinition()); }/*from www . j a v a 2 s.c o m*/ return reqCapReferences; }
From source file:org.metaeffekt.dcc.commons.spring.xml.DCCConfigurationBeanDefinitionParser.java
private ManagedList<AbstractBeanDefinition> parseProvidedCapabilities(Element unitElement, String unitId, BeanDefinitionRegistry registry) { ManagedList<AbstractBeanDefinition> provCapReferences = new ManagedList<>(); List<Element> provCapElements = DomUtils.getChildElementsByTagName(unitElement, ELEMENT_UNIT_PROVIDED_CAPABILITY); for (Element provCapElement : provCapElements) { String capabilityId = extractMandatoryIdAttributeFromElement(provCapElement, "Capability", registry); BeanDefinitionBuilder capabilityBeanDefBuilder = createGenericCapabilityBuilder(capabilityId, provCapElement, Capability.class); String capabilityBeanName = generateCapabilityBeanName(unitId, capabilityId); registry.registerBeanDefinition(capabilityBeanName, capabilityBeanDefBuilder.getBeanDefinition()); provCapReferences.add(capabilityBeanDefBuilder.getBeanDefinition()); }//from ww w . j av a2 s . co m return provCapReferences; }
From source file:org.metaeffekt.dcc.commons.spring.xml.DCCConfigurationBeanDefinitionParser.java
private void parseAndRegisterBindings(Element profileElement, File origin, BeanDefinitionRegistry registry, ParserContext parserContext) {/*from www .jav a 2 s . co m*/ List<Element> bindingElements = DomUtils.getChildElementsByTagName(profileElement, ELEMENT_BINDING); for (Element bindingElement : bindingElements) { Element sourceElement = DomUtils.getChildElementByTagName(bindingElement, ELEMENT_BINDING_SOURCE); Element targetElement = DomUtils.getChildElementByTagName(bindingElement, ELEMENT_BINDING_TARGET); String sourceUnitRef = parseString(sourceElement, "unitRef", null, registry); String sourceCapabilityId = parseString(sourceElement, "capabilityId", null, registry); String targetUnitRef = parseString(targetElement, "unitRef", null, registry); String targetCapabilityId = parseString(targetElement, "capabilityId", null, registry); // convention: if target capabilityId is omitted then use the source capability id if (StringUtils.isEmpty(targetCapabilityId)) { targetCapabilityId = sourceCapabilityId; } String description = extractDescription(bindingElement, registry); BeanDefinitionBuilder bindingBeanBuilder = BeanDefinitionBuilder .genericBeanDefinition(BindingFactoryBean.class); bindingBeanBuilder.addPropertyValue(PROPERTY_ORIGIN, origin); bindingBeanBuilder.addPropertyValue(PROPERTY_DESCRIPTION, description); bindingBeanBuilder.addPropertyValue("sourceCapabilityId", Id.createCapabilityId(sourceCapabilityId)); bindingBeanBuilder.addPropertyReference("sourceUnit", sourceUnitRef); bindingBeanBuilder.addPropertyValue("targetCapabilityId", Id.createCapabilityId(targetCapabilityId)); bindingBeanBuilder.addPropertyReference("targetUnit", targetUnitRef); String bindingBeanName = parserContext.getReaderContext() .generateBeanName(bindingBeanBuilder.getBeanDefinition()); registry.registerBeanDefinition(bindingBeanName, bindingBeanBuilder.getBeanDefinition()); RuntimeBeanReference beanRef = new RuntimeBeanReference(bindingBeanName); beanRef.setSource(parserContext.extractSource(bindingElement)); } }
From source file:org.mule.config.spring.parsers.AbstractMuleBeanDefinitionParser.java
/** * Creates a {@link BeanDefinitionBuilder} instance for the {@link #getBeanClass * bean Class} and passes it to the {@link #doParse} strategy method. * * @param element the element that is to be parsed into a single BeanDefinition * @param context the object encapsulating the current state of the parsing * process/*from ww w. j a va2 s . c o m*/ * @return the BeanDefinition resulting from the parsing of the supplied * {@link Element} * @throws IllegalStateException if the bean {@link Class} returned from * {@link #getBeanClass(org.w3c.dom.Element)} is <code>null</code> * @see #doParse */ @Override protected AbstractBeanDefinition parseInternal(Element element, ParserContext context) { preProcess(element); setParserContext(context); setRegistry(context.getRegistry()); checkElementNameUnique(element); Class<?> beanClass = getClassInternal(element); BeanDefinitionBuilder builder = createBeanDefinitionBuilder(element, beanClass); builder.getRawBeanDefinition().setSource(context.extractSource(element)); builder.setScope(isSingleton() ? BeanDefinition.SCOPE_SINGLETON : BeanDefinition.SCOPE_PROTOTYPE); // Marker for MULE-4813 // We don't want lifcycle for the following from spring if (!Component.class.isAssignableFrom(beanClass) && !MessageSource.class.isAssignableFrom(beanClass) && !OutboundRouterCollection.class.isAssignableFrom(beanClass) && !OutboundRouter.class.isAssignableFrom(beanClass) && !AbstractMessageProcessorOwner.class.isAssignableFrom(beanClass) && !MessagingExceptionHandler.class.isAssignableFrom(beanClass) && !Transformer.class.isAssignableFrom(beanClass)) { if (Initialisable.class.isAssignableFrom(beanClass)) { builder.setInitMethodName(Initialisable.PHASE_NAME); } if (Disposable.class.isAssignableFrom(beanClass)) { builder.setDestroyMethodName(Disposable.PHASE_NAME); } } if (context.isNested()) { // Inner bean definition must receive same singleton status as containing bean. builder.setScope(context.getContainingBeanDefinition().isSingleton() ? BeanDefinition.SCOPE_SINGLETON : BeanDefinition.SCOPE_PROTOTYPE); } doParse(element, context, builder); return builder.getBeanDefinition(); }
From source file:org.mule.config.spring.parsers.assembly.DefaultBeanAssembler.java
/** * Insert the bean we have built into the target (typically the parent bean). * * <p>This is the most complex case because the bean can have an aribtrary type. * /*from www . jav a2 s .c om*/ * @param oldName The identifying the bean (typically element name). */ public void insertBeanInTarget(String oldName) { logger.debug("insert " + bean.getBeanDefinition().getBeanClassName() + " -> " + target.getBeanClassName()); assertTargetPresent(); String beanClass = bean.getBeanDefinition().getBeanClassName(); PropertyValues sourceProperties = bean.getRawBeanDefinition().getPropertyValues(); String newName = bestGuessName(targetConfig, oldName, target.getBeanClassName()); MutablePropertyValues targetProperties = target.getPropertyValues(); PropertyValue pv = targetProperties.getPropertyValue(newName); Object oldValue = null == pv ? null : pv.getValue(); if (!targetConfig.isIgnored(oldName)) { if (targetConfig.isCollection(oldName) || beanClass.equals(ChildListEntryDefinitionParser.ListEntry.class.getName())) { if (null == oldValue) { if (beanClass.equals(ChildMapEntryDefinitionParser.KeyValuePair.class.getName()) || beanClass.equals(MapEntryCombiner.class.getName()) || beanClass.equals(MapFactoryBean.class.getName())) { // a collection of maps requires an extra intermediate object that does the // lazy combination/caching of maps when first used BeanDefinitionBuilder combiner = BeanDefinitionBuilder .rootBeanDefinition(MapCombiner.class); targetProperties.addPropertyValue(newName, combiner.getBeanDefinition()); MutablePropertyValues combinerProperties = combiner.getBeanDefinition().getPropertyValues(); oldValue = new ManagedList(); pv = new PropertyValue(MapCombiner.LIST, oldValue); combinerProperties.addPropertyValue(pv); } else { oldValue = new ManagedList(); pv = new PropertyValue(newName, oldValue); targetProperties.addPropertyValue(pv); } } List list = retrieveList(oldValue); if (ChildMapEntryDefinitionParser.KeyValuePair.class.getName().equals(beanClass)) { list.add(new ManagedMap()); retrieveMap(list.get(list.size() - 1)).put( sourceProperties.getPropertyValue(ChildMapEntryDefinitionParser.KEY).getValue(), sourceProperties.getPropertyValue(ChildMapEntryDefinitionParser.VALUE).getValue()); } else if (beanClass.equals(ChildListEntryDefinitionParser.ListEntry.class.getName())) { list.add(sourceProperties.getPropertyValue(ChildListEntryDefinitionParser.VALUE).getValue()); } else { list.add(bean.getBeanDefinition()); } } else { // not a collection if (ChildMapEntryDefinitionParser.KeyValuePair.class.getName().equals(beanClass)) { if (null == pv || null == oldValue) { pv = new PropertyValue(newName, new ManagedMap()); targetProperties.addPropertyValue(pv); } retrieveMap(pv.getValue()).put( sourceProperties.getPropertyValue(ChildMapEntryDefinitionParser.KEY).getValue(), sourceProperties.getPropertyValue(ChildMapEntryDefinitionParser.VALUE).getValue()); } else { targetProperties.addPropertyValue(newName, bean.getBeanDefinition()); } } } }
From source file:org.mule.config.spring.parsers.specific.RetryPolicyDefinitionParser.java
/** * The BDP magic inside this method will transform this simple config: * * <test:connector name="testConnector8"> * <ee:reconnect blocking="false" count="5" frequency="1000"/> * </test:connector>//from w ww. j a v a2 s.co m * * into this equivalent config, because of the attribute asynchronous="true": * * <test:connector name="testConnector8"> * <spring:property name="retryPolicyTemplate"> * <spring:bean class="org.mule.retry.async.AsynchronousRetryTemplate"> * <spring:constructor-arg> * <spring:bean name="delegate" class="org.mule.retry.policies.SimpleRetryPolicyTemplate"> * <spring:property name="count" value="5"/> * <spring:property name="frequency" value="1000"/> * </spring:bean> * </spring:constructor-arg> * </spring:bean> * </spring:property> * </test:connector> */ @Override protected void parseChild(Element element, ParserContext parserContext, BeanDefinitionBuilder builder) { super.parseChild(element, parserContext, builder); if (asynchronous) { // Create the AsynchronousRetryTemplate as a wrapper bean BeanDefinitionBuilder bdb = BeanDefinitionBuilder .genericBeanDefinition(AsynchronousRetryTemplate.class); // Generate a bean name String asynchWrapperName = parserContext.getReaderContext().generateBeanName(bdb.getBeanDefinition()); // Pass in the retry policy as a constructor argument String retryPolicyName = getBeanName(element); bdb.addConstructorArgReference(retryPolicyName); // Register the new bean BeanDefinitionHolder holder = new BeanDefinitionHolder(bdb.getBeanDefinition(), asynchWrapperName); registerBeanDefinition(holder, parserContext.getRegistry()); // Set the AsynchronousRetryTemplate wrapper bean on the retry policy's parent instead of the retry policy itself BeanDefinition parent = parserContext.getRegistry().getBeanDefinition(getParentBeanName(element)); parent.getPropertyValues().addPropertyValue(getPropertyName(element), new RuntimeBeanReference(asynchWrapperName)); } }
From source file:org.mule.module.extension.internal.config.OperationBeanDefinitionParser.java
@Override public BeanDefinition parse(Element element, ParserContext parserContext) { BeanDefinitionBuilder builder = BeanDefinitionBuilder .rootBeanDefinition(OperationMessageProcessorFactoryBean.class); builder.setScope(BeanDefinition.SCOPE_PROTOTYPE); parseConfigRef(element, builder);/* w w w .ja va 2 s . c o m*/ builder.addConstructorArgValue(extension); builder.addConstructorArgValue(operation); builder.addConstructorArgValue(toElementDescriptorBeanDefinition(element)); builder.addConstructorArgValue(parseNestedOperations(element, parserContext)); builder.addConstructorArgReference(MuleProperties.OBJECT_MULE_CONTEXT); BeanDefinition definition = builder.getBeanDefinition(); setNoRecurseOnDefinition(definition); attachProcessorDefinition(parserContext, definition); return definition; }