Example usage for org.springframework.beans.factory.xml ParserContext getReaderContext

List of usage examples for org.springframework.beans.factory.xml ParserContext getReaderContext

Introduction

In this page you can find the example usage for org.springframework.beans.factory.xml ParserContext getReaderContext.

Prototype

public final XmlReaderContext getReaderContext() 

Source Link

Usage

From source file:com.googlecode.ehcache.annotations.config.AnnotationDrivenEhCacheBeanDefinitionParser.java

/**
 * Create {@link MethodInterceptor} that is applies the caching logic to advised methods.
 * //from w  ww .  j  a v a2 s  .c  o  m
 * @return Reference to the {@link MethodInterceptor}. Should never be null.
 */
protected RuntimeBeanReference setupInterceptor(Element element, ParserContext parserContext,
        Object elementSource, RuntimeBeanReference cacheableAttributeSourceRuntimeReference) {
    final RootBeanDefinition interceptor = new RootBeanDefinition(EhCacheInterceptor.class);
    interceptor.setSource(elementSource);
    interceptor.setRole(BeanDefinition.ROLE_INFRASTRUCTURE);

    final MutablePropertyValues propertyValues = interceptor.getPropertyValues();
    propertyValues.addPropertyValue("cacheAttributeSource", cacheableAttributeSourceRuntimeReference);

    final XmlReaderContext readerContext = parserContext.getReaderContext();
    final String interceptorBeanName = readerContext.registerWithGeneratedName(interceptor);
    return new RuntimeBeanReference(interceptorBeanName);
}

From source file:com.inspiresoftware.lib.dto.geda.config.AnnotationDrivenGeDABeanDefinitionParser.java

protected RuntimeBeanReference setupGeDAInterceptor(final ParserContext parserContext,
        final Object elementSource, final RuntimeBeanReference defaultSupport,
        final RuntimeBeanReference defaultResolver) {

    final RootBeanDefinition defaultInterceptor = new RootBeanDefinition(GeDAInterceptor.class);
    defaultInterceptor.setSource(elementSource);
    defaultInterceptor.setRole(BeanDefinition.ROLE_INFRASTRUCTURE);

    final MutablePropertyValues propertyValues = defaultInterceptor.getPropertyValues();
    propertyValues.addPropertyValue("support", defaultSupport);
    propertyValues.addPropertyValue("resolver", defaultResolver);

    final XmlReaderContext readerContext = parserContext.getReaderContext();

    final String beanName = readerContext.registerWithGeneratedName(defaultInterceptor);

    return new RuntimeBeanReference(beanName);

}

From source file:org.smf4j.spring.RegistryNodeTemplateDefinitionParser.java

protected ManagedList<RuntimeBeanReference> createGroupings(ParserContext context, Element element,
        String ranges, String suffixes) {
    ManagedList<RuntimeBeanReference> groupings = new ManagedList<RuntimeBeanReference>();
    String[] rangeArray = StringUtils.commaDelimitedListToStringArray(ranges);
    String[] suffixArray = StringUtils.commaDelimitedListToStringArray(suffixes);

    if (rangeArray.length != suffixArray.length) {
        context.getReaderContext().error("'ranges' and 'suffixes' must have the same number of " + "elements",
                context.extractSource(element));
        return null;
    }/* w  w  w. j  a v  a 2 s .co  m*/

    for (int i = 0; i < rangeArray.length; i++) {
        String range = rangeArray[i];
        String suffix = suffixArray[i];
        BeanDefinitionBuilder bdb = getBdb(RANGEGROUP_GROUPING_CLASS);
        bdb.addPropertyValue(RANGE_ATTR, range);
        bdb.addPropertyValue(SUFFIX_ATTR, suffix);
        String groupId = context.getReaderContext().registerWithGeneratedName(bdb.getBeanDefinition());
        groupings.add(new RuntimeBeanReference(groupId));
    }
    return groupings;
}

From source file:eap.config.ConfigBeanDefinitionParser.java

/**
 * Parses the supplied {@code &lt;advisor&gt;} element and registers the resulting
 * {@link org.springframework.aop.Advisor} and any resulting {@link org.springframework.aop.Pointcut}
 * with the supplied {@link BeanDefinitionRegistry}.
 *//*from   ww  w  .ja  v  a2 s  .  com*/
private void parseAdvisor(Element advisorElement, ParserContext parserContext) {
    AbstractBeanDefinition advisorDef = createAdvisorBeanDefinition(advisorElement, parserContext);
    String id = advisorElement.getAttribute(ID);

    try {
        this.parseState.push(new AdvisorEntry(id));
        String advisorBeanName = id;
        if (StringUtils.hasText(advisorBeanName)) {
            parserContext.getRegistry().registerBeanDefinition(advisorBeanName, advisorDef);
        } else {
            advisorBeanName = parserContext.getReaderContext().registerWithGeneratedName(advisorDef);
        }

        Object pointcut = parsePointcutProperty(advisorElement, parserContext);
        if (pointcut instanceof BeanDefinition) {
            advisorDef.getPropertyValues().add(POINTCUT, pointcut);
            parserContext.registerComponent(
                    new AdvisorComponentDefinition(advisorBeanName, advisorDef, (BeanDefinition) pointcut));
        } else if (pointcut instanceof String) {
            advisorDef.getPropertyValues().add(POINTCUT, new RuntimeBeanReference((String) pointcut));
            parserContext.registerComponent(new AdvisorComponentDefinition(advisorBeanName, advisorDef));
        }
    } finally {
        this.parseState.pop();
    }
}

From source file:org.smf4j.spring.RegistryNodeTemplateDefinitionParser.java

protected String createRatio(ParserContext context, Element element) {
    String name = getName(context, element);
    String numerator = element.getAttribute(NUMERATOR_ATTR);
    String denominator = element.getAttribute(DENOMINATOR_ATTR);
    String units = element.getAttribute(UNITS_ATTR);

    BeanDefinitionBuilder bdb = getBdb(RATIO_CLASS);
    bdb.addPropertyValue(UNITS_ATTR, units);
    bdb.addPropertyValue(NUMERATOR_ATTR, numerator);
    bdb.addPropertyValue(DENOMINATOR_ATTR, denominator);
    String ratioId = context.getReaderContext().registerWithGeneratedName(bdb.getBeanDefinition());

    // Create proxy that carries name
    BeanDefinitionBuilder calcProxyBdb = getBdb(RegistryNodeChildProxy.class);
    calcProxyBdb.addPropertyValue(NAME_ATTR, name);
    calcProxyBdb.addPropertyValue(CHILD_ATTR, ratioId);
    return context.getReaderContext().registerWithGeneratedName(calcProxyBdb.getBeanDefinition());
}

From source file:org.apache.ftpserver.config.spring.CommandFactoryBeanDefinitionParser.java

/**
 * {@inheritDoc}/*from   w ww  .j  ava  2 s  .  c  o  m*/
 */
@Override
protected void doParse(final Element element, final ParserContext parserContext,
        final BeanDefinitionBuilder builder) {

    BeanDefinitionBuilder factoryBuilder = BeanDefinitionBuilder
            .genericBeanDefinition(CommandFactoryFactory.class);

    ManagedMap commands = new ManagedMap();

    List<Element> childs = SpringUtil.getChildElements(element);

    for (Element commandElm : childs) {
        String name = commandElm.getAttribute("name");
        Object bean = SpringUtil.parseSpringChildElement(commandElm, parserContext, builder);
        commands.put(name, bean);
    }

    factoryBuilder.addPropertyValue("commandMap", commands);

    if (StringUtils.hasText(element.getAttribute("use-default"))) {
        factoryBuilder.addPropertyValue("useDefaultCommands",
                Boolean.valueOf(element.getAttribute("use-default")));
    }

    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("createCommandFactory");

}

From source file:com.predic8.membrane.core.config.spring.AbstractParser.java

protected void handleChildElement(Element ele, ParserContext parserContext, BeanDefinitionBuilder builder) {
    BeanDefinitionParserDelegate delegate = parserContext.getDelegate();

    try {//from  w ww  .  j  av a  2 s  . c o m
        Object o = delegate.parsePropertySubElement(ele, builder.getBeanDefinition());

        String clazz = null;
        if (o instanceof BeanDefinitionHolder) {
            clazz = ((BeanDefinitionHolder) o).getBeanDefinition().getBeanClassName();
        } else if (o instanceof RuntimeBeanReference) {
            clazz = parserContext.getRegistry().getBeanDefinition(((RuntimeBeanReference) o).getBeanName())
                    .getBeanClassName();
        } else if (o instanceof RuntimeBeanNameReference) {
            clazz = parserContext.getRegistry().getBeanDefinition(((RuntimeBeanNameReference) o).getBeanName())
                    .getBeanClassName();
        } else {
            parserContext.getReaderContext().error("Don't know how to get bean class from " + o.getClass(),
                    ele);
        }

        handleChildObject(ele, parserContext, builder, Class.forName(clazz), o);
    } catch (ClassNotFoundException e) {
        throw new RuntimeException(e);
    }
}

From source file:org.urbantower.j4s.spring.ServerParser.java

@Override
public BeanDefinition parse(Element element, ParserContext parserContext) {
    BeanDefinitionBuilder builder = BeanDefinitionBuilder.rootBeanDefinition(SpringServer.class);

    //set port/*from   ww w. ja  v  a 2 s . c om*/
    String port = element.getAttribute("http-port");
    builder.addPropertyValue("httpPort", Integer.parseInt(port));

    //parse & set handlers
    ManagedList<BeanDefinition> handlers = new ManagedList<>();

    if (element.hasAttribute("handler")) {
        String handlerRef = element.getAttribute("handler");
        builder.addPropertyValue("handler", new RuntimeBeanReference(handlerRef));
    } else {
        List<Element> childs = DomUtils.getChildElements(element);
        if (childs != null && childs.size() > 0) {
            BeanDefinition handlerDef = parserContext.getDelegate().parseCustomElement(childs.get(0),
                    builder.getBeanDefinition());
            builder.addPropertyValue("handler", handlerDef);
        }
    }

    //get id
    String id = parserContext.getReaderContext().generateBeanName(builder.getBeanDefinition());
    if (element.hasAttribute("id")) {
        id = element.getAttribute("id");
    }

    //get the thread-pool
    if (element.hasAttribute("thread-pool")) {
        builder.addConstructorArgValue(new RuntimeBeanReference(element.getAttribute("thread-pool")));
    }

    //register server def.
    parserContext.getRegistry().registerBeanDefinition(id, builder.getBeanDefinition());
    return builder.getBeanDefinition();
}

From source file:org.apache.smscserver.config.spring.CommandFactoryBeanDefinitionParser.java

/**
 * {@inheritDoc}/*from w ww.j av  a 2s  .  co m*/
 */
@SuppressWarnings("unchecked")
@Override
protected void doParse(final Element element, final ParserContext parserContext,
        final BeanDefinitionBuilder builder) {

    BeanDefinitionBuilder factoryBuilder = BeanDefinitionBuilder
            .genericBeanDefinition(CommandFactoryFactory.class);

    ManagedMap commands = new ManagedMap();

    List<Element> childs = SpringUtil.getChildElements(element);

    for (Element commandElm : childs) {
        String name = commandElm.getAttribute("protocol-id");
        Object bean = SpringUtil.parseSpringChildElement(commandElm, parserContext, builder);
        commands.put(name, bean);
    }

    factoryBuilder.addPropertyValue("commandMap", commands);

    if (StringUtils.hasText(element.getAttribute("use-default"))) {
        factoryBuilder.addPropertyValue("useDefaultCommands",
                Boolean.valueOf(element.getAttribute("use-default")));
    }

    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("createCommandFactory");

}

From source file:biz.c24.io.spring.config.C24ModelBeanDefinitionParser.java

/**
 * Classpath scans the given base package for subclasses of {@link biz.c24.io.api.data.Element} whose names end on
 * {@code DocumentRootElement}./*w  ww  .j a v  a2  s.c  om*/
 * 
 * @param basePackage
 * @param context
 * @param source
 * @return
 */
private AbstractBeanDefinition getC24ModelFromPackage(String basePackage, ParserContext context,
        Object source) {

    ClassPathScanningCandidateComponentProvider provider = new ClassPathScanningCandidateComponentProvider(
            false);
    provider.addIncludeFilter(new TypeFilter() {

        private final TypeFilter nameFilter = new RegexPatternTypeFilter(
                Pattern.compile(".*DocumentRootElement"));
        private final TypeFilter typeFilter = new AssignableTypeFilter(biz.c24.io.api.data.Element.class);

        public boolean match(MetadataReader metadataReader, MetadataReaderFactory metadataReaderFactory)
                throws IOException {
            return nameFilter.match(metadataReader, metadataReaderFactory)
                    && typeFilter.match(metadataReader, metadataReaderFactory);
        }
    });

    Set<BeanDefinition> result = provider.findCandidateComponents(basePackage);
    if (result.size() != 1) {
        context.getReaderContext().error("Found none or multiple classes ending on 'DocumentRootElement'!",
                source);
    }

    String elementClassName = result.iterator().next().getBeanClassName();
    return getC24ModelFromElement(elementClassName, context, source);
}