Example usage for org.springframework.integration.jpa.config.xml JpaParserUtils getJpaParameterBeanDefinitions

List of usage examples for org.springframework.integration.jpa.config.xml JpaParserUtils getJpaParameterBeanDefinitions

Introduction

In this page you can find the example usage for org.springframework.integration.jpa.config.xml JpaParserUtils getJpaParameterBeanDefinitions.

Prototype

public static ManagedList<BeanDefinition> getJpaParameterBeanDefinitions(Element jpaComponent,
        ParserContext parserContext) 

Source Link

Document

Create a ManagedList of BeanDefinition s containing parsed JPA Parameters.

Usage

From source file:org.springframework.integration.jpa.config.xml.JpaParserUtils.java

/**
 * Create a new {@link BeanDefinitionBuilder} for the class {@link JpaExecutor}.
 * Initialize the wrapped {@link JpaExecutor} with common properties.
 *
 * @param element Must not be null/*from  ww  w  .  jav a2 s .c  om*/
 * @param parserContext Must not be null
 * @return The BeanDefinitionBuilder for the JpaExecutor
 */
public static BeanDefinitionBuilder getJpaExecutorBuilder(final Element element,
        final ParserContext parserContext) {

    Assert.notNull(element, "The provided element must not be null.");
    Assert.notNull(parserContext, "The provided parserContext must not be null.");

    final Object source = parserContext.extractSource(element);

    final BeanDefinitionBuilder jpaExecutorBuilder = BeanDefinitionBuilder
            .genericBeanDefinition(JpaExecutor.class);

    int attributeCount = 0;

    final String entityManagerRef = element.getAttribute("entity-manager");
    final String entityManagerFactoryRef = element.getAttribute("entity-manager-factory");
    final String jpaOperationsRef = element.getAttribute("jpa-operations");

    if (StringUtils.hasText(jpaOperationsRef)) {
        attributeCount++;
        jpaExecutorBuilder.addConstructorArgReference(jpaOperationsRef);
    }

    if (StringUtils.hasText(entityManagerRef)) {

        if (attributeCount > 0) {
            parserContext.getReaderContext().error("Exactly only one of the attributes 'entity-manager' or "
                    + "'entity-manager-factory' or 'jpa-operations' must be be set.", source);
        }

        attributeCount++;
        jpaExecutorBuilder.addConstructorArgReference(entityManagerRef);
    }

    if (StringUtils.hasText(entityManagerFactoryRef)) {

        if (attributeCount > 0) {
            parserContext.getReaderContext().error("Exactly only one of the attributes 'entity-manager' or "
                    + "'entity-manager-factory' or 'jpa-operations' must be be set.", source);
        }

        attributeCount++;
        jpaExecutorBuilder.addConstructorArgReference(entityManagerFactoryRef);
    }

    if (attributeCount == 0) {
        parserContext.getReaderContext().error("Exactly one of the attributes 'entity-manager' or "
                + "'entity-manager-factory' or 'jpa-operations' must be be set.", source);
    }

    final ManagedList<BeanDefinition> jpaParameterList = JpaParserUtils.getJpaParameterBeanDefinitions(element,
            parserContext);

    if (!jpaParameterList.isEmpty()) {
        jpaExecutorBuilder.addPropertyValue("jpaParameters", jpaParameterList);
    }

    IntegrationNamespaceUtils.setValueIfAttributeDefined(jpaExecutorBuilder, element, "entity-class");
    IntegrationNamespaceUtils.setValueIfAttributeDefined(jpaExecutorBuilder, element, "jpa-query");
    IntegrationNamespaceUtils.setValueIfAttributeDefined(jpaExecutorBuilder, element, "native-query");
    IntegrationNamespaceUtils.setValueIfAttributeDefined(jpaExecutorBuilder, element, "named-query");

    return jpaExecutorBuilder;

}