• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package junitparams.internal.parameters;
2 
3 import org.junit.runners.model.FrameworkMethod;
4 
5 import junitparams.custom.ParametersProvider;
6 import junitparams.internal.annotation.CustomParametersDescriptor;
7 import junitparams.internal.annotation.FrameworkMethodAnnotations;
8 
9 public class ParametersFromCustomProvider implements ParametrizationStrategy {
10 
11     private final FrameworkMethodAnnotations frameworkMethodAnnotations;
12 
ParametersFromCustomProvider(FrameworkMethod frameworkMethod)13     public ParametersFromCustomProvider(FrameworkMethod frameworkMethod) {
14         frameworkMethodAnnotations = new FrameworkMethodAnnotations(frameworkMethod);
15     }
16 
17     @Override
isApplicable()18     public boolean isApplicable() {
19         return frameworkMethodAnnotations.hasCustomParameters();
20     }
21 
22     @Override
getParameters()23     public Object[] getParameters() {
24         CustomParametersDescriptor parameters = frameworkMethodAnnotations.getCustomParameters();
25         ParametersProvider provider = instantiate(parameters.provider());
26         provider.initialize(parameters.annotation());
27         return provider.getParameters();
28     }
29 
instantiate(Class<? extends ParametersProvider> providerClass)30     private ParametersProvider instantiate(Class<? extends ParametersProvider> providerClass) {
31         try {
32             return providerClass.newInstance();
33         } catch (Exception e) {
34             throw new RuntimeException("Your Provider class must have a public no-arg constructor!", e);
35         }
36     }
37 
38 }
39