package org.springframework.amqp.component.xml;
import org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser;
import org.springframework.beans.factory.xml.ParserContext;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.support.AbstractBeanDefinition;
import org.springframework.beans.factory.BeanDefinitionStoreException;
import static org.springframework.util.StringUtils.hasText;
import org.w3c.dom.Element;
public abstract class AbstractNamedComponentBeanDefinitionParser extends AbstractComponentBeanDefinitionReader {
protected void doParse(Element element, ParserContext parserContext, BeanDefinitionBuilder builder) {
String channelRef = element.getAttribute("channel-ref");
builder.addPropertyReference("channel", channelRef);
String name = element.getAttribute("name");
builder.addPropertyValue("name", name);
doComponentParse(element, parserContext, builder);
}
protected abstract void doComponentParse(Element element, ParserContext parserContext, BeanDefinitionBuilder builder);
// TODO: this does not escape potentially invalid ids
@Override
protected String resolveId(Element element, AbstractBeanDefinition definition, ParserContext parserContext) throws BeanDefinitionStoreException {
return element.getAttribute("name");
}
}