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

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

Introduction

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

Prototype

@Nullable
    public Object extractSource(Object sourceCandidate) 

Source Link

Usage

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

@Override
public AbstractBeanDefinition parseInternal(Element element, ParserContext context) {

    String basePackage = element.getAttribute("base-package");
    String baseElement = element.getAttribute("base-element");

    if (StringUtils.hasText(baseElement) && StringUtils.hasText(basePackage)) {
        throw new BeanDefinitionStoreException("Either base-package or base-element are allowed!");
    }/*from   w w w. j  a  v  a 2s . c o m*/

    Object source = context.extractSource(element);
    AbstractBeanDefinition modelDefinition = StringUtils.hasText(baseElement)
            ? getC24ModelFromElement(baseElement, context, source)
            : getC24ModelFromPackage(basePackage, context, source);

    BeanDefinitionBuilder builder = BeanDefinitionBuilder.rootBeanDefinition(C24Model.class);
    builder.addConstructorArgValue(modelDefinition);

    return getSourcedBeanDefinition(builder, context.extractSource(element));
}

From source file:de.itsvs.cwtrpc.controller.config.RemoteServiceGroupConfigBeanDefinitionParser.java

protected AbstractBeanDefinition createServiceConfigBeanDefinition(Element element,
        ParserContext parserContext) {
    final String serviceName;
    final BeanDefinitionBuilder bdd;
    final String relativePath;

    serviceName = element.getAttribute(XmlNames.SERVICE_REF_ATTR);
    if (!StringUtils.hasText(serviceName)) {
        parserContext.getReaderContext().error("Service reference must not be empty",
                parserContext.extractSource(element));
    }//from   w  w w  .j a va  2  s .c om

    bdd = BeanDefinitionBuilder.rootBeanDefinition(RemoteServiceConfig.class);
    if (parserContext.isDefaultLazyInit()) {
        bdd.setLazyInit(true);
    }
    bdd.getRawBeanDefinition().setSource(parserContext.extractSource(element));
    bdd.addConstructorArgValue(serviceName);

    if (element.hasAttribute(XmlNames.SERVICE_INTERFACE_ATTR)) {
        bdd.addPropertyValue("serviceInterface", element.getAttribute(XmlNames.SERVICE_INTERFACE_ATTR));
    }

    if (element.hasAttribute(XmlNames.RELATIVE_PATH_ATTR)) {
        relativePath = element.getAttribute(XmlNames.RELATIVE_PATH_ATTR);
        if (!StringUtils.hasText(relativePath)) {
            parserContext.getReaderContext().error("Relative path must not be empty",
                    parserContext.extractSource(element));
        }
        bdd.addPropertyValue("relativePath", relativePath);
    }

    getBaseServiceConfigParser().update(element, parserContext, bdd);

    return bdd.getBeanDefinition();
}

From source file:org.synyx.hades.dao.config.DaoConfigDefinitionParser.java

/**
 * Registers a {@code GenericDaoFactoryBean} for a bean with the given name
 * and the provided configuration context. It is mainly used to construct
 * bean name, entity class name and DAO interface name.
 * /*  w ww  .ja  v a  2s.  com*/
 * @param parserContext
 * @param name
 * @param context
 */
private void registerGenericDaoFactoryBean(final ParserContext parserContext, final DaoContext context) {

    Object beanSource = parserContext.extractSource(context.getElement());

    BeanDefinitionBuilder beanDefinitionBuilder = BeanDefinitionBuilder
            .rootBeanDefinition(context.getDaoFactoryClassName());

    beanDefinitionBuilder.addPropertyValue("daoInterface", context.getInterfaceName());
    beanDefinitionBuilder.addPropertyValue("queryLookupStrategy", context.getQueryLookupStrategy());

    String entityManagerRef = context.getEntityManagerFactoryRef();

    if (null != entityManagerRef) {
        beanDefinitionBuilder.addPropertyValue("entityManager",
                getEntityManagerBeanDefinitionFor(entityManagerRef, beanSource));
    }

    beanDefinitionBuilder.addPropertyValue("transactionManager", context.getTransactionManagerRef());

    String customImplementationBeanName = registerCustomImplementation(context, parserContext, beanSource);

    if (customImplementationBeanName != null) {
        beanDefinitionBuilder.addPropertyReference("customDaoImplementation", customImplementationBeanName);
    }

    AbstractBeanDefinition beanDefinition = beanDefinitionBuilder.getBeanDefinition();
    beanDefinition.setSource(beanSource);

    LOG.debug("Registering Hades DAO: {} - DAO interface: {} - Factory: {} - Custom implementation: {}",
            new Object[] { context.getBeanName(), context.getInterfaceName(), context.getDaoFactoryClassName(),
                    customImplementationBeanName });

    BeanComponentDefinition definition = new BeanComponentDefinition(beanDefinition, context.getBeanName());

    parserContext.registerBeanComponent(definition);
}

From source file:org.jsr107.ri.annotations.spring.config.AnnotationDrivenJCacheBeanDefinitionParser.java

@Override
public BeanDefinition parse(Element element, ParserContext parserContext) {
    AopNamespaceUtils.registerAutoProxyCreatorIfNecessary(parserContext, element);

    final BeanDefinitionRegistry registry = parserContext.getRegistry();
    if (!registry.containsBeanDefinition(JCACHE_CACHE_OPERATION_SOURCE_BEAN_NAME)) {
        final Object elementSource = parserContext.extractSource(element);

        final RuntimeBeanReference cacheOperationSourceReference = this.setupCacheOperationSource(element,
                parserContext, elementSource);

        this.setupPointcutAdvisor(CacheResultInterceptor.class, element, parserContext, elementSource,
                cacheOperationSourceReference);

        this.setupPointcutAdvisor(CachePutInterceptor.class, element, parserContext, elementSource,
                cacheOperationSourceReference);

        this.setupPointcutAdvisor(CacheRemoveEntryInterceptor.class, element, parserContext, elementSource,
                cacheOperationSourceReference);

        this.setupPointcutAdvisor(CacheRemoveAllInterceptor.class, element, parserContext, elementSource,
                cacheOperationSourceReference);

        return registry.getBeanDefinition(JCACHE_CACHE_OPERATION_SOURCE_BEAN_NAME);
    }/*from  w  w w  .  j av  a 2s. c om*/

    return null;
}

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

private void registerAspect(Element element, ParserContext parserContext) {
    if (!parserContext.getRegistry().containsBeanDefinition(EHCACHE_CACHING_ASPECT_BEAN_NAME)) {
        final Object elementSource = parserContext.extractSource(element);

        final RuntimeBeanReference cacheAttributeSourceReference = this.setupCacheAttributeSource(element,
                parserContext, elementSource);

        RootBeanDefinition def = new RootBeanDefinition();
        def.setBeanClassName(EHCACHE_CACHING_ASPECT_CLASS_NAME);
        def.setFactoryMethodName("aspectOf");
        def.getPropertyValues().add("cacheAttributeSource", cacheAttributeSourceReference);
        //registerTransactionManager(element, def);
        parserContext.registerBeanComponent(new BeanComponentDefinition(def, EHCACHE_CACHING_ASPECT_BEAN_NAME));
    }//from   w  ww.  j  a  v  a 2 s. c o  m
}

From source file:de.itsvs.cwtrpc.controller.config.BaseServiceConfigParser.java

protected void createDefaultRpcTokenValidatorBeanDefinition(Element element, ParserContext parserContext,
        String rpcTokenValidatorName) {
    if (!parserContext.getRegistry().containsBeanDefinition(rpcTokenValidatorName)) {
        final RootBeanDefinition bd;

        if (log.isInfoEnabled()) {
            log.info("Registering default RPC token validator with name '" + rpcTokenValidatorName + "'");
        }/*from w  w  w . ja  v  a 2s  .co  m*/
        bd = new RootBeanDefinition(DefaultXsrfTokenService.class);
        bd.setSource(parserContext.extractSource(element));
        bd.setLazyInit(true);
        parserContext.registerBeanComponent(new BeanComponentDefinition(bd, rpcTokenValidatorName));
    }
}

From source file:org.opencredo.couchdb.config.CouchDbUrlToDocumentTransformerParser.java

@Override
protected void parseTransformer(Element element, ParserContext parserContext, BeanDefinitionBuilder builder) {
    System.out.println("CouchDbUrlToDocumentTransformerParser2");
    String documentType = element.getAttribute(COUCHDB_DOCUMENT_TYPE_ATTRIBUTE);
    String documentOperations = element.getAttribute(COUCHDB_DOCUMENT_OPERATIONS_ATTRIBUTE);

    if (!StringUtils.hasText(documentType)) {
        parserContext.getReaderContext().error("The '" + COUCHDB_DOCUMENT_TYPE_ATTRIBUTE + "' is mandatory.",
                parserContext.extractSource(element));
    } else {/*from   www  . j  a va 2 s  .  co m*/
        builder.addConstructorArgValue(documentType);
    }

    if (StringUtils.hasText(documentOperations)) {
        builder.addConstructorArgReference(documentOperations);
    }
}

From source file:eap.config.TxAdviceBeanDefinitionParser.java

private RootBeanDefinition parseAttributeSource(Element attrEle, ParserContext parserContext) {
    List<Element> methods = DomUtils.getChildElementsByTagName(attrEle, METHOD_ELEMENT);
    ManagedMap<TypedStringValue, RuleBasedTransactionAttribute> transactionAttributeMap = new ManagedMap<TypedStringValue, RuleBasedTransactionAttribute>(
            methods.size());/*  w ww  . ja  v  a  2  s .  c o m*/
    transactionAttributeMap.setSource(parserContext.extractSource(attrEle));

    for (Element methodEle : methods) {
        String name = methodEle.getAttribute(METHOD_NAME_ATTRIBUTE);
        TypedStringValue nameHolder = new TypedStringValue(name);
        nameHolder.setSource(parserContext.extractSource(methodEle));

        RuleBasedTransactionAttribute attribute = new RuleBasedTransactionAttribute();
        String propagation = methodEle.getAttribute(PROPAGATION_ATTRIBUTE);
        String isolation = methodEle.getAttribute(ISOLATION_ATTRIBUTE);
        String timeout = methodEle.getAttribute(TIMEOUT_ATTRIBUTE);
        String readOnly = methodEle.getAttribute(READ_ONLY_ATTRIBUTE);
        if (StringUtils.hasText(propagation)) {
            attribute
                    .setPropagationBehaviorName(RuleBasedTransactionAttribute.PREFIX_PROPAGATION + propagation);
        }
        if (StringUtils.hasText(isolation)) {
            attribute.setIsolationLevelName(RuleBasedTransactionAttribute.PREFIX_ISOLATION + isolation);
        }
        if (StringUtils.hasText(timeout)) {
            try {
                attribute.setTimeout(Integer.parseInt(timeout));
            } catch (NumberFormatException ex) {
                parserContext.getReaderContext().error("Timeout must be an integer value: [" + timeout + "]",
                        methodEle);
            }
        }
        if (StringUtils.hasText(readOnly)) {
            attribute.setReadOnly(Boolean.valueOf(methodEle.getAttribute(READ_ONLY_ATTRIBUTE)));
        }

        List<RollbackRuleAttribute> rollbackRules = new LinkedList<RollbackRuleAttribute>();
        if (methodEle.hasAttribute(ROLLBACK_FOR_ATTRIBUTE)) {
            String rollbackForValue = methodEle.getAttribute(ROLLBACK_FOR_ATTRIBUTE);
            addRollbackRuleAttributesTo(rollbackRules, rollbackForValue);
        }
        if (methodEle.hasAttribute(NO_ROLLBACK_FOR_ATTRIBUTE)) {
            String noRollbackForValue = methodEle.getAttribute(NO_ROLLBACK_FOR_ATTRIBUTE);
            addNoRollbackRuleAttributesTo(rollbackRules, noRollbackForValue);
        }
        attribute.setRollbackRules(rollbackRules);

        transactionAttributeMap.put(nameHolder, attribute);
    }

    RootBeanDefinition attributeSourceDefinition = new RootBeanDefinition(
            NameMatchTransactionAttributeSource.class);
    attributeSourceDefinition.setSource(parserContext.extractSource(attrEle));
    attributeSourceDefinition.getPropertyValues().add("nameMap", transactionAttributeMap);
    return attributeSourceDefinition;
}

From source file:be.hikage.springtemplate.ImportTemplateBeanDefinitionParser.java

public BeanDefinition parse(Element element, ParserContext parserContext) {

    Map<String, String> patternMap = prepareReplacement(element);

    MappingBeanDefinitionVisitor visitor = new MappingBeanDefinitionVisitor(patternMap);
    Map<String, BeanDefinition> beansDefinition = loadTemplateBeans(element, visitor);

    CompositeComponentDefinition def = new CompositeComponentDefinition(element.getTagName(),
            parserContext.extractSource(element));

    parserContext.pushContainingComponent(def);

    registerBeans(parserContext, beansDefinition);

    parserContext.popAndRegisterContainingComponent();

    return null;/*  w w w  .j  av  a2 s. com*/

}

From source file:fr.xebia.management.config.ProfileAspectDefinitionParser.java

@Override
protected AbstractBeanDefinition parseInternal(Element element, ParserContext parserContext) {
    BeanDefinitionBuilder builder = BeanDefinitionBuilder.rootBeanDefinition(ProfileAspect.class);

    // see http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/aop.html#aop-aj-configure
    builder.setFactoryMethod("aspectOf");

    // Mark as infrastructure bean and attach source location.
    builder.setRole(BeanDefinition.ROLE_INFRASTRUCTURE);
    builder.getRawBeanDefinition().setSource(parserContext.extractSource(element));

    String serverBeanName = element.getAttribute(SERVER_ATTRIBUTE);
    if (StringUtils.hasText(serverBeanName)) {
        builder.addPropertyReference("server", serverBeanName);
    } else {//from w  w w .  j a  va2 s.  c om
        AbstractBeanDefinition specialServer = findServerForSpecialEnvironment();
        if (specialServer != null) {
            builder.addPropertyValue("server", specialServer);
        }
    }

    String jmxDomain = element.getAttribute(JMX_DOMAIN_ATTRIBUTE);
    if (StringUtils.hasLength(jmxDomain)) {
        builder.addPropertyValue("jmxDomain", jmxDomain);
    }
    return builder.getBeanDefinition();
}