package com.griddynamics.jagger.invoker.v2;
import com.griddynamics.jagger.engine.e1.Provider;
import com.griddynamics.jagger.invoker.Invoker;
/**
* Implementation of {@link Provider<Invoker>} which uses a default no-arguments constructor
* of provided subclass of {@link Invoker} to create it's instances.
* @n
* Created by Andrey Badaev
* Date: 30/12/16
*/
public class DefaultInvokerProvider implements Provider<Invoker> {
private final Class<? extends Invoker> invokerClass;
public DefaultInvokerProvider(final Class<? extends Invoker> invokerClass) {this.invokerClass = invokerClass;}
public static DefaultInvokerProvider of(final Class<? extends Invoker> invokerClass) {
return new DefaultInvokerProvider(invokerClass);
}
@Override
public Invoker provide() {
try {
return invokerClass.newInstance();
} catch (InstantiationException | IllegalAccessException e) {
throw new IllegalStateException(String.format("Error during triggering a default constructor for %s",
invokerClass), e);
}
}
}