blob: dc92182b3ff780e7ac25d50f7f60387659d79901 [file] [log] [blame]
Aharoni, Pavel (pa0916)8c70f072018-11-18 00:07:12 +02001/*-
2 * ============LICENSE_START=======================================================
3 * OSAM
4 * ================================================================================
5 * Copyright (C) 2018 AT&T
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
10 *
11 * http://www.apache.org/licenses/LICENSE-2.0
12 *
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
19 */
20package org.onap.osam.job.command;
21
22import org.onap.osam.common.exception.GenericUncheckedException;
23import org.onap.osam.job.dao.job.OsamJob;
24import org.onap.osam.job.IJobCommand;
25import org.springframework.beans.factory.annotation.Autowired;
26import org.springframework.context.ApplicationContext;
27import org.springframework.stereotype.Component;
28
29import java.util.function.Function;
30
31@Component
32public class JobCommandFactory {
33
34 final Function<Class<? extends IJobCommand>, IJobCommand> jobFactory;
35
36 @Autowired
37 public JobCommandFactory(ApplicationContext applicationContext) {
38 this.jobFactory = (jobType -> {
39 final Object commandBean = applicationContext.getBean(jobType);
40
41 if (!(commandBean instanceof IJobCommand)) {
42 throw new GenericUncheckedException(commandBean.getClass() + " is not a IJobCommand");
43 }
44
45 return (IJobCommand) commandBean;
46 });
47 }
48
49 public JobCommandFactory(Function<Class<? extends IJobCommand>, IJobCommand> jobFactory) {
50 this.jobFactory = jobFactory;
51 }
52
53 public IJobCommand toCommand(OsamJob job) {
54
55 final IJobCommand command = jobFactory.apply(job.getType().getCommandClass());
56 command.init(job.getSharedData(), job.getDataMap());
57
58 return command;
59 }
60
61
62}