GremlinRepositoryConfigurationExtension.java
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
package com.azure.spring.data.gremlin.repository.config;
import com.azure.spring.data.gremlin.common.Constants;
import com.azure.spring.data.gremlin.mapping.GremlinMappingContext;
import com.azure.spring.data.gremlin.repository.GremlinRepository;
import org.apache.commons.lang3.NotImplementedException;
import org.springframework.beans.factory.support.AbstractBeanDefinition;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.beans.factory.support.RootBeanDefinition;
import org.springframework.data.repository.config.RepositoryConfigurationExtensionSupport;
import org.springframework.data.repository.config.RepositoryConfigurationSource;
import java.lang.annotation.Annotation;
import java.util.Collection;
import java.util.Collections;
public class GremlinRepositoryConfigurationExtension extends RepositoryConfigurationExtensionSupport {
@Override
public String getModuleName() {
return Constants.GREMLIN_MODULE_NAME;
}
@Override
public String getModulePrefix() {
return Constants.GREMLIN_MODULE_PREFIX;
}
@Override
public String getRepositoryFactoryBeanClassName() {
throw new NotImplementedException("Gremlin RepositoryFactoryBean is not implemented");
}
@Override
public Collection<Class<?>> getIdentifyingTypes() {
return Collections.singleton(GremlinRepository.class);
}
@Override
public Collection<Class <? extends Annotation>> getIdentifyingAnnotations() {
return Collections.emptyList();
}
@Override
public void registerBeansForRoot(BeanDefinitionRegistry registry, RepositoryConfigurationSource config) {
super.registerBeansForRoot(registry, config);
if (!registry.containsBeanDefinition(Constants.GREMLIN_MAPPING_CONTEXT)) {
final RootBeanDefinition definition = new RootBeanDefinition(GremlinMappingContext.class);
definition.setRole(AbstractBeanDefinition.ROLE_INFRASTRUCTURE);
definition.setSource(config.getSource());
registry.registerBeanDefinition(Constants.GREMLIN_MAPPING_CONTEXT, definition);
}
}
@Override
public void postProcess(BeanDefinitionBuilder builder, RepositoryConfigurationSource source) {
super.postProcess(builder, source);
}
}