private void registerExceptionTranslation(Element element, ParserContext parserContext, ManagedList<RuntimeBeanReference> advisors, ManagedSet<RuntimeBeanReference> translators, List<Element> exceptionTranslatorElements) { if (!CollectionUtils.isEmpty(exceptionTranslatorElements)) { Iterator<Element> i = exceptionTranslatorElements.iterator(); while (i.hasNext()) { Element exceptionTranslatorElement = i.next(); translators.add(new RuntimeBeanReference(exceptionTranslatorElement.getAttribute(REF_ATTR))); } } BeanDefinitionBuilder advisorBuilder = BeanDefinitionBuilder.genericBeanDefinition(SERVICE_MESSAGE_ADVISOR_CLASS_NAME); BeanDefinitionBuilder exceptionTranslationBuilder = BeanDefinitionBuilder.genericBeanDefinition(EXCEPTION_TRANSLATION_CLASS_NAME); exceptionTranslationBuilder.addPropertyValue(EXCEPTION_TRANSLATORS_PROPERTY, translators); ParsingUtils.mapOptionalBeanRefAttributes(element, exceptionTranslationBuilder, parserContext, EXCEPTION_LOGGER_ATTR); String exceptionTranslationId = ParsingUtils.registerInfrastructureComponent(element, parserContext, exceptionTranslationBuilder); advisorBuilder.addConstructorArgReference(exceptionTranslationId); String advisorId = ParsingUtils.registerInfrastructureComponent(element, parserContext, advisorBuilder); advisors.add(new RuntimeBeanReference(advisorId)); }
/** * * {@inheritDoc} */ @Override protected void parseAdapter(Element element, ParserContext parserContext, BeanDefinitionBuilder destinationBuilder) { BeanDefinitionBuilder adapterBuilder = BeanDefinitionBuilder.genericBeanDefinition(JMS_ADAPTER_CLASS_NAME); int count = ParsingUtils.countProvidedAttributeValues(element, JMS_DESTINATION_ATTR, QUEUE_NAME_ATTR, TOPIC_NAME_ATTR); if (count != 1) { parserContext.getReaderContext().error("exactly one of 'jms-destination', 'queue-name', or 'topic-name' is required", element); return; } String connectionFactoryId = element.getAttribute(CONNECTION_FACTORY_ATTR); connectionFactoryId = StringUtils.hasText(connectionFactoryId) ? connectionFactoryId : DEFAULT_CONNECTION_FACTORY_REF; adapterBuilder.addPropertyReference(CONNECTION_FACTORY_PROPERTY, connectionFactoryId); ParsingUtils.mapOptionalBeanRefAttributes(element, adapterBuilder, parserContext, JMS_DESTINATION_ATTR, DESTINATION_RESOLVER_ATTR, MESSAGE_CONVERTER_ATTR, TRANSACTION_MANAGER_ATTR); ParsingUtils.mapOptionalAttributes(element, parserContext, adapterBuilder, QUEUE_NAME_ATTR, TOPIC_NAME_ATTR); String serviceAdapterId = ParsingUtils.registerInfrastructureComponent(element, parserContext, adapterBuilder); destinationBuilder.addPropertyValue(SERVICE_ADAPTER_PROPERTY, serviceAdapterId); }
ParsingUtils.mapOptionalBeanRefAttributes(element, builder, parserContext, CONFIGURATION_MANAGER_ATTR);