Example usage for org.springframework.data.repository.config RepositoryConfiguration getSource

List of usage examples for org.springframework.data.repository.config RepositoryConfiguration getSource

Introduction

In this page you can find the example usage for org.springframework.data.repository.config RepositoryConfiguration getSource.

Prototype

@Nullable
Object getSource();

Source Link

Document

Returns the source of the RepositoryConfiguration .

Usage

From source file:org.agilemicroservices.autoconfigure.orm.RepositoryBeanDefinitionBuilder.java

/**
 * Builds a new {@link BeanDefinitionBuilder} from the given {@link BeanDefinitionRegistry} and {@link ResourceLoader}
 * .//w  ww .ja v a  2 s .com
 *
 * @param configuration must not be {@literal null}.
 * @return
 */
public BeanDefinitionBuilder build(RepositoryConfiguration<?> configuration) {

    Assert.notNull(registry, "BeanDefinitionRegistry must not be null!");
    Assert.notNull(resourceLoader, "ResourceLoader must not be null!");

    String factoryBeanName = configuration.getRepositoryFactoryBeanName();
    factoryBeanName = StringUtils.hasText(factoryBeanName) ? factoryBeanName
            : extension.getRepositoryFactoryClassName();

    BeanDefinitionBuilder builder = BeanDefinitionBuilder.rootBeanDefinition(factoryBeanName);

    builder.getRawBeanDefinition().setSource(configuration.getSource());
    builder.addPropertyValue("repositoryInterface", configuration.getRepositoryInterface());
    builder.addPropertyValue("queryLookupStrategyKey", configuration.getQueryLookupStrategyKey());
    builder.addPropertyValue("lazyInit", configuration.isLazyInit());
    builder.addPropertyValue("repositoryBaseClass", configuration.getRepositoryBaseClassName());

    NamedQueriesBeanDefinitionBuilder definitionBuilder = new NamedQueriesBeanDefinitionBuilder(
            extension.getDefaultNamedQueryLocation());

    if (StringUtils.hasText(configuration.getNamedQueriesLocation())) {
        definitionBuilder.setLocations(configuration.getNamedQueriesLocation());
    }

    builder.addPropertyValue("namedQueries", definitionBuilder.build(configuration.getSource()));

    String customImplementationBeanName = registerCustomImplementation(configuration);

    if (customImplementationBeanName != null) {
        builder.addPropertyReference("customImplementation", customImplementationBeanName);
        builder.addDependsOn(customImplementationBeanName);
    }

    RootBeanDefinition evaluationContextProviderDefinition = new RootBeanDefinition(
            ExtensionAwareEvaluationContextProvider.class);
    evaluationContextProviderDefinition.setSource(configuration.getSource());

    builder.addPropertyValue("evaluationContextProvider", evaluationContextProviderDefinition);

    return builder;
}

From source file:org.agilemicroservices.autoconfigure.orm.RepositoryBeanDefinitionBuilder.java

private String registerCustomImplementation(RepositoryConfiguration<?> configuration) {

    String beanName = configuration.getImplementationBeanName();

    // Already a bean configured?
    if (registry.containsBeanDefinition(beanName)) {
        return beanName;
    }/*from ww w  .  j a  v a 2  s .  c o m*/

    AbstractBeanDefinition beanDefinition = implementationDetector.detectCustomImplementation(
            configuration.getImplementationClassName(), configuration.getBasePackages());

    if (null == beanDefinition) {
        return null;
    }

    if (LOGGER.isDebugEnabled()) {
        LOGGER.debug("Registering custom repository implementation: "
                + configuration.getImplementationBeanName() + " " + beanDefinition.getBeanClassName());
    }

    beanDefinition.setSource(configuration.getSource());

    registry.registerBeanDefinition(beanName, beanDefinition);

    return beanName;
}

From source file:org.springframework.data.repository.config.RepositoryBeanDefinitionParser.java

/**
 * Registers a generic repository factory bean for a bean with the given name and the provided configuration context.
 * /*from  www  . j  av a 2s .c  o  m*/
 * @param parser
 * @param name
 * @param context
 */
private void registerGenericRepositoryFactoryBean(
        RepositoryConfiguration<XmlRepositoryConfigurationSource> configuration, ParserContext parser) {

    RepositoryBeanDefinitionBuilder definitionBuilder = new RepositoryBeanDefinitionBuilder(configuration,
            extension);

    try {

        BeanDefinitionBuilder builder = definitionBuilder.build(parser.getRegistry(),
                parser.getReaderContext().getResourceLoader());

        extension.postProcess(builder, configuration.getConfigurationSource());

        AbstractBeanDefinition beanDefinition = builder.getBeanDefinition();
        beanDefinition.setSource(configuration.getSource());

        if (LOG.isDebugEnabled()) {
            LOG.debug("Registering repository: " + configuration.getBeanId() + " - Interface: "
                    + configuration.getRepositoryInterface() + " - Factory: "
                    + extension.getRepositoryFactoryClassName());
        }

        BeanComponentDefinition definition = new BeanComponentDefinition(beanDefinition,
                configuration.getBeanId());
        parser.registerBeanComponent(definition);
    } catch (RuntimeException e) {
        handleError(e, configuration.getConfigurationSource().getElement(), parser.getReaderContext());
    }
}