Skip to content

Commit

Permalink
extracted interface for resolver registry
Browse files Browse the repository at this point in the history
some todo comments
  • Loading branch information
mmerdes committed Nov 7, 2015
1 parent f0bf645 commit fe849af
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 2 deletions.
Expand Up @@ -18,7 +18,8 @@
// for a 'real' solution see: org.springframework.web.method.support.HandlerMethodArgumentResolver // for a 'real' solution see: org.springframework.web.method.support.HandlerMethodArgumentResolver
public class MethodArgumentResolverEngine { public class MethodArgumentResolverEngine {


PrimitiveMethodArgumentResolverRegistry resolverRegistry = new PrimitiveMethodArgumentResolverRegistry(); //todo: when introducing the extension mechanism this instance will have to come from outside
MethodArgumentResolverRegistry resolverRegistry = new PrimitiveMethodArgumentResolverRegistry();


/** /**
* prepare a list of objects as arguments for the execution of this test method * prepare a list of objects as arguments for the execution of this test method
Expand Down Expand Up @@ -52,6 +53,7 @@ public List<Object> prepareArguments(MethodTestDescriptor methodTestDescriptor)
private Object resolveArgumentForMethodParameter(Parameter parameter) private Object resolveArgumentForMethodParameter(Parameter parameter)
throws NoSuchMethodException, InstantiationException, IllegalAccessException, InvocationTargetException { throws NoSuchMethodException, InstantiationException, IllegalAccessException, InvocationTargetException {


//todo: throw exception as well when there are more than 1 resolver for a given parameter
for (MethodArgumentResolver argumentResolver : this.resolverRegistry.getMethodArgumentResolvers()) { for (MethodArgumentResolver argumentResolver : this.resolverRegistry.getMethodArgumentResolvers()) {
if (argumentResolver.supports(parameter)) if (argumentResolver.supports(parameter))
return argumentResolver.resolveArgumentForMethodParameter(parameter); return argumentResolver.resolveArgumentForMethodParameter(parameter);
Expand Down
@@ -0,0 +1,21 @@
/*
* Copyright 2015 the original author or authors.
*
* All rights reserved. This program and the accompanying materials are
* made available under the terms of the Eclipse Public License v1.0 which
* accompanies this distribution and is available at
*
* http://www.eclipse.org/legal/epl-v10.html
*/

package org.junit.gen5.engine.junit5.execution.injection;

import java.util.*;

/**
* Created by mmerdes on 07.11.15.
*/
public interface MethodArgumentResolverRegistry {

List<MethodArgumentResolver> getMethodArgumentResolvers();
}
Expand Up @@ -13,11 +13,12 @@
import java.util.*; import java.util.*;


//TODO: this class will have to be filled by the extension mechanism and handed to the resolver engine from outside //TODO: this class will have to be filled by the extension mechanism and handed to the resolver engine from outside
public class PrimitiveMethodArgumentResolverRegistry { public class PrimitiveMethodArgumentResolverRegistry implements MethodArgumentResolverRegistry {


private List<MethodArgumentResolver> methodArgumentResolvers = Arrays.asList( private List<MethodArgumentResolver> methodArgumentResolvers = Arrays.asList(
new SimpleTypeBasedMethodArgumentResolver(), new SimpleAnnotationBasedMethodArgumentResolver()); new SimpleTypeBasedMethodArgumentResolver(), new SimpleAnnotationBasedMethodArgumentResolver());


@Override
public List<MethodArgumentResolver> getMethodArgumentResolvers() { public List<MethodArgumentResolver> getMethodArgumentResolvers() {
return this.methodArgumentResolvers; return this.methodArgumentResolvers;
} }
Expand Down

0 comments on commit fe849af

Please sign in to comment.