DATAREST-93 - Cleanups in repository invoker area.

Made RepositoryInvokerFactory an interface and renamed the previously existing implementation class to DefaultRepositoryInvokerFactory. Removed instantiation of the class from ResourceMetadataHandlerMethodArgumentResolver to keep the logic which implementation to use solely in the configuration.
This commit is contained in:
Oliver Gierke
2013-11-13 15:08:24 +00:00
parent cb4770db56
commit 9b4b111d23
5 changed files with 123 additions and 65 deletions

View File

@@ -16,7 +16,6 @@
package org.springframework.data.rest.webmvc;
import org.springframework.core.MethodParameter;
import org.springframework.core.convert.ConversionService;
import org.springframework.data.mapping.PersistentEntity;
import org.springframework.data.repository.support.Repositories;
import org.springframework.data.rest.core.invoke.RepositoryInvoker;
@@ -39,20 +38,22 @@ public class RepositoryRestRequestHandlerMethodArgumentResolver implements Handl
private final ResourceMetadataHandlerMethodArgumentResolver resourceMetadataResolver;
/**
* Creates a new {@link RepositoryRestRequestHandlerMethodArgumentResolver} using the given {@link Repositories} and
* {@link ConversionService}.
* Creates a new {@link RepositoryRestRequestHandlerMethodArgumentResolver} using the given {@link Repositories},
* {@link RepositoryInvokerFactory} and {@link ResourceMetadataHandlerMethodArgumentResolver}.
*
* @param repositories must not be {@literal null}.
* @param conversionService must not be {@literal null}.
* @param invokerFactory must not be {@literal null}.
* @param resourceMetadataResolver must not be {@literal null}.
*/
public RepositoryRestRequestHandlerMethodArgumentResolver(Repositories repositories,
ConversionService conversionService, ResourceMetadataHandlerMethodArgumentResolver resourceMetadataResolver) {
RepositoryInvokerFactory invokerFactory, ResourceMetadataHandlerMethodArgumentResolver resourceMetadataResolver) {
Assert.notNull(repositories, "Repositories must not be null!");
Assert.notNull(conversionService, "ConversionService must not be null!");
Assert.notNull(invokerFactory, "invokerFactory must not be null!");
Assert.notNull(resourceMetadataResolver, "ResourceMetadataHandlerMethodArgumentResolver must not be null!");
this.repositories = repositories;
this.invokerFactory = new RepositoryInvokerFactory(repositories, conversionService);
this.invokerFactory = invokerFactory;
this.resourceMetadataResolver = resourceMetadataResolver;
}

View File

@@ -38,6 +38,7 @@ import org.springframework.data.rest.core.UriDomainClassConverter;
import org.springframework.data.rest.core.config.RepositoryRestConfiguration;
import org.springframework.data.rest.core.event.AnnotatedHandlerBeanPostProcessor;
import org.springframework.data.rest.core.event.ValidatingRepositoryEventListener;
import org.springframework.data.rest.core.invoke.DefaultRepositoryInvokerFactory;
import org.springframework.data.rest.core.invoke.RepositoryInvokerFactory;
import org.springframework.data.rest.core.mapping.ResourceMappings;
import org.springframework.data.rest.core.support.DomainObjectMerger;
@@ -204,7 +205,7 @@ public class RepositoryRestMvcConfiguration extends HateoasAwareSpringDataWebCon
*/
@Bean
public RepositoryRestRequestHandlerMethodArgumentResolver repoRequestArgumentResolver() {
return new RepositoryRestRequestHandlerMethodArgumentResolver(repositories(), defaultConversionService(),
return new RepositoryRestRequestHandlerMethodArgumentResolver(repositories(), repositoryInvokerFactory(),
resourceMetadataHandlerMethodArgumentResolver());
}
@@ -376,7 +377,7 @@ public class RepositoryRestMvcConfiguration extends HateoasAwareSpringDataWebCon
@Bean
public RepositoryInvokerFactory repositoryInvokerFactory() {
return new RepositoryInvokerFactory(repositories(), defaultConversionService());
return new DefaultRepositoryInvokerFactory(repositories(), defaultConversionService());
}
private List<HttpMessageConverter<?>> defaultMessageConverters() {