@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);
}