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