diff --git a/lightadmin-core/src/main/java/org/lightadmin/core/config/bootstrap/LightAdminBeanDefinitionRegistryPostProcessor.java b/lightadmin-core/src/main/java/org/lightadmin/core/config/bootstrap/LightAdminBeanDefinitionRegistryPostProcessor.java index 904e84ca..6ecacf89 100644 --- a/lightadmin-core/src/main/java/org/lightadmin/core/config/bootstrap/LightAdminBeanDefinitionRegistryPostProcessor.java +++ b/lightadmin-core/src/main/java/org/lightadmin/core/config/bootstrap/LightAdminBeanDefinitionRegistryPostProcessor.java @@ -15,6 +15,7 @@ */ package org.lightadmin.core.config.bootstrap; +import org.apache.tika.metadata.Geographic; import org.lightadmin.core.config.bootstrap.parsing.validation.CompositeConfigurationUnitsValidator; import org.lightadmin.core.config.bootstrap.scanning.AdministrationClassScanner; import org.lightadmin.core.config.bootstrap.scanning.ClassScanner; @@ -33,6 +34,7 @@ import org.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor; import org.springframework.core.io.ResourceLoader; import org.springframework.data.jpa.repository.support.JpaRepositoryFactoryBean; +import org.springframework.data.repository.support.Repositories; import org.springframework.data.rest.core.event.AbstractRepositoryEventListener; import org.springframework.orm.jpa.EntityManagerFactoryUtils; import org.springframework.orm.jpa.SharedEntityManagerCreator; @@ -44,6 +46,7 @@ import javax.persistence.EntityManagerFactory; import javax.persistence.metamodel.EntityType; import javax.servlet.ServletContext; + import java.util.Set; import static com.google.common.collect.Sets.newHashSet; @@ -89,10 +92,13 @@ public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) t registry.registerBeanDefinition(JPA_MAPPPING_CONTEXT_BEAN, mappingContext(entityManager)); registry.registerBeanDefinition(CONFIGURATION_UNITS_VALIDATOR_BEAN, configurationUnitsValidator(resourceLoader)); - + + Repositories repositories = new Repositories(rootContext); for (Class managedEntityType : managedEntities(entityManager)) { - Class repoInterface = createDynamicRepositoryClass(managedEntityType, entityManager); - registry.registerBeanDefinition(beanName(repoInterface), repositoryFactory(repoInterface, entityManager)); + if(!repositories.hasRepositoryFor(managedEntityType)){ + Class repoInterface = createDynamicRepositoryClass(managedEntityType, entityManager); + registry.registerBeanDefinition(beanName(repoInterface), repositoryFactory(repoInterface, entityManager)); + } } registerRepositoryEventListeners(configurationUnits, registry); diff --git a/lightadmin-core/src/main/java/org/lightadmin/core/config/context/LightAdminRepositoryRestMvcConfiguration.java b/lightadmin-core/src/main/java/org/lightadmin/core/config/context/LightAdminRepositoryRestMvcConfiguration.java index e643bb56..05a38543 100644 --- a/lightadmin-core/src/main/java/org/lightadmin/core/config/context/LightAdminRepositoryRestMvcConfiguration.java +++ b/lightadmin-core/src/main/java/org/lightadmin/core/config/context/LightAdminRepositoryRestMvcConfiguration.java @@ -15,9 +15,13 @@ */ package org.lightadmin.core.config.context; -import com.fasterxml.jackson.databind.ObjectMapper; +import static com.google.common.collect.Lists.newLinkedList; +import static org.springframework.beans.PropertyAccessorFactory.forDirectFieldAccess; +import static org.springframework.util.ClassUtils.isAssignableValue; + +import java.util.List; + import org.lightadmin.core.config.LightAdminConfiguration; -import org.lightadmin.core.config.bootstrap.RepositoriesFactoryBean; import org.lightadmin.core.config.domain.GlobalAdministrationConfiguration; import org.lightadmin.core.persistence.repository.event.FileManipulationRepositoryEventListener; import org.lightadmin.core.persistence.repository.invoker.DynamicRepositoryInvokerFactory; @@ -25,14 +29,16 @@ import org.lightadmin.core.storage.FileResourceStorage; import org.lightadmin.core.web.json.DomainTypeToJsonMetadataConverter; import org.lightadmin.core.web.json.LightAdminJacksonModule; -import org.lightadmin.core.web.support.*; -import org.springframework.beans.BeanInstantiationException; +import org.lightadmin.core.web.support.ConfigurationHandlerMethodArgumentResolver; +import org.lightadmin.core.web.support.DomainEntityLinks; +import org.lightadmin.core.web.support.DynamicPersistentEntityResourceAssemblerArgumentResolver; +import org.lightadmin.core.web.support.DynamicPersistentEntityResourceProcessor; +import org.lightadmin.core.web.support.DynamicRepositoryEntityLinks; import org.springframework.beans.factory.ListableBeanFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; -import org.springframework.data.repository.support.Repositories; import org.springframework.data.rest.core.config.RepositoryRestConfiguration; import org.springframework.data.rest.core.event.ValidatingRepositoryEventListener; import org.springframework.data.rest.core.invoke.RepositoryInvokerFactory; @@ -44,11 +50,7 @@ import org.springframework.web.method.support.HandlerMethodArgumentResolver; import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter; -import java.util.List; - -import static com.google.common.collect.Lists.newLinkedList; -import static org.springframework.beans.PropertyAccessorFactory.forDirectFieldAccess; -import static org.springframework.util.ClassUtils.isAssignableValue; +import com.fasterxml.jackson.databind.ObjectMapper; @Configuration @ComponentScan(basePackages = {"org.lightadmin.core.web"}, @@ -78,15 +80,6 @@ public DomainTypeToJsonMetadataConverter domainTypeToJsonMetadataConverter() { return new DomainTypeToJsonMetadataConverter(globalAdministrationConfiguration(), entityLinks()); } - @Bean - public Repositories repositories() { - try { - return new RepositoriesFactoryBean(beanFactory).getObject(); - } catch (Exception e) { - throw new BeanInstantiationException(Repositories.class, "Repositories bean instantiation problem!", e); - } - } - @Bean public DomainObjectMerger domainObjectMerger() throws Exception { return new DynamicDomainObjectMerger(repositories(), defaultConversionService(), globalAdministrationConfiguration());