aboutsummaryrefslogtreecommitdiffstats
path: root/vid-app-common/src/main/java/org/onap/vid/job/command/JobCommandFactory.java
diff options
context:
space:
mode:
authorSonsino, Ofir (os0695) <os0695@intl.att.com>2018-07-10 14:20:54 +0300
committerSonsino, Ofir (os0695) <os0695@intl.att.com>2018-07-10 14:20:54 +0300
commitc72d565bb58226b20625b2bce5f0019046bee649 (patch)
tree8658e49595705b02e47ddc14afa20d6bb7123547 /vid-app-common/src/main/java/org/onap/vid/job/command/JobCommandFactory.java
parentef8a6b47847012fd59ea20da21d8d3d7c4a301ed (diff)
Merge 1806 code of vid-common
Change-Id: I75d52abed4a24dfe3827d79edc4a2938726aa87a Issue-ID: VID-208 Signed-off-by: Sonsino, Ofir (os0695) <os0695@intl.att.com>
Diffstat (limited to 'vid-app-common/src/main/java/org/onap/vid/job/command/JobCommandFactory.java')
-rw-r--r--vid-app-common/src/main/java/org/onap/vid/job/command/JobCommandFactory.java43
1 files changed, 43 insertions, 0 deletions
diff --git a/vid-app-common/src/main/java/org/onap/vid/job/command/JobCommandFactory.java b/vid-app-common/src/main/java/org/onap/vid/job/command/JobCommandFactory.java
new file mode 100644
index 000000000..1e613c58b
--- /dev/null
+++ b/vid-app-common/src/main/java/org/onap/vid/job/command/JobCommandFactory.java
@@ -0,0 +1,43 @@
+package org.onap.vid.job.command;
+
+import org.onap.vid.exceptions.GenericUncheckedException;
+import org.onap.vid.job.Job;
+import org.onap.vid.job.JobCommand;
+import org.springframework.context.ApplicationContext;
+import org.springframework.stereotype.Component;
+
+import javax.inject.Inject;
+import java.util.function.Function;
+
+@Component
+public class JobCommandFactory {
+
+ final Function<Class<? extends JobCommand>, JobCommand> jobFactory;
+
+ @Inject
+ public JobCommandFactory(ApplicationContext applicationContext) {
+ this.jobFactory = (jobType -> {
+ final Object commandBean = applicationContext.getBean(jobType);
+
+ if (!(commandBean instanceof JobCommand)) {
+ throw new GenericUncheckedException(commandBean.getClass() + " is not a JobCommand");
+ }
+
+ return (JobCommand) commandBean;
+ });
+ }
+
+ public JobCommandFactory(Function<Class<? extends JobCommand>, JobCommand> jobFactory) {
+ this.jobFactory = jobFactory;
+ }
+
+ public JobCommand toCommand(Job job) {
+
+ final JobCommand command = jobFactory.apply(job.getType().getCommandClass());
+ command.init(job.getUuid(), job.getData());
+
+ return command;
+ }
+
+
+}