1 package org.onap.vid.job.command;
3 import org.onap.vid.exceptions.GenericUncheckedException;
4 import org.onap.vid.job.Job;
5 import org.onap.vid.job.JobCommand;
6 import org.springframework.context.ApplicationContext;
7 import org.springframework.stereotype.Component;
9 import javax.inject.Inject;
10 import java.util.function.Function;
13 public class JobCommandFactory {
15 final Function<Class<? extends JobCommand>, JobCommand> jobFactory;
18 public JobCommandFactory(ApplicationContext applicationContext) {
19 this.jobFactory = (jobType -> {
20 final Object commandBean = applicationContext.getBean(jobType);
22 if (!(commandBean instanceof JobCommand)) {
23 throw new GenericUncheckedException(commandBean.getClass() + " is not a JobCommand");
26 return (JobCommand) commandBean;
30 public JobCommandFactory(Function<Class<? extends JobCommand>, JobCommand> jobFactory) {
31 this.jobFactory = jobFactory;
34 public JobCommand toCommand(Job job) {
36 final JobCommand command = jobFactory.apply(job.getType().getCommandClass());
37 command.init(job.getSharedData(), job.getData());