2 * ============LICENSE_START=======================================================
\r
4 * ================================================================================
\r
5 * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved.
\r
6 * ================================================================================
\r
7 * Licensed under the Apache License, Version 2.0 (the "License");
\r
8 * you may not use this file except in compliance with the License.
\r
9 * You may obtain a copy of the License at
\r
11 * http://www.apache.org/licenses/LICENSE-2.0
\r
13 * Unless required by applicable law or agreed to in writing, software
\r
14 * distributed under the License is distributed on an "AS IS" BASIS,
\r
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
\r
16 * See the License for the specific language governing permissions and
\r
17 * limitations under the License.
\r
18 * ============LICENSE_END=========================================================
\r
21 package org.onap.ccsdk.apps.services;
\r
23 import java.io.FileInputStream;
\r
24 import java.io.IOException;
\r
25 import java.util.List;
\r
26 import java.util.Properties;
\r
28 import org.onap.ccsdk.sli.adaptors.messagerouter.publisher.api.PublisherApi;
\r
29 import org.onap.ccsdk.sli.adaptors.messagerouter.publisher.provider.impl.PublisherApiImpl;
\r
30 import org.onap.ccsdk.sli.adaptors.netbox.api.NetboxClient;
\r
31 import org.onap.ccsdk.sli.adaptors.netbox.impl.NetboxClientImpl;
\r
32 import org.onap.ccsdk.sli.adaptors.netbox.impl.NetboxHttpClient;
\r
33 import org.onap.ccsdk.sli.adaptors.netbox.property.NetboxProperties;
\r
34 import org.onap.ccsdk.sli.adaptors.resource.mdsal.ConfigResource;
\r
35 import org.onap.ccsdk.sli.adaptors.resource.mdsal.MdsalResourcePropertiesProviderImpl;
\r
36 import org.onap.ccsdk.sli.adaptors.resource.mdsal.OperationalResource;
\r
37 import org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource;
\r
38 import org.onap.ccsdk.sli.core.dblib.DBLIBResourceProvider;
\r
39 import org.onap.ccsdk.sli.core.dblib.DBResourceManager;
\r
40 import org.onap.ccsdk.sli.core.dblib.DbLibService;
\r
41 import org.onap.ccsdk.sli.core.sli.ConfigurationException;
\r
42 import org.onap.ccsdk.sli.core.sli.SvcLogicJavaPlugin;
\r
43 import org.onap.ccsdk.sli.core.sli.SvcLogicLoader;
\r
44 import org.onap.ccsdk.sli.core.sli.SvcLogicRecorder;
\r
45 import org.onap.ccsdk.sli.core.sli.SvcLogicResource;
\r
46 import org.onap.ccsdk.sli.core.sli.SvcLogicStore;
\r
47 import org.onap.ccsdk.sli.core.sli.SvcLogicStoreFactory;
\r
48 import org.onap.ccsdk.sli.core.sli.provider.base.HashMapResolver;
\r
49 import org.onap.ccsdk.sli.core.sli.provider.base.SvcLogicPropertiesProvider;
\r
50 import org.onap.ccsdk.sli.core.sli.provider.base.SvcLogicServiceBase;
\r
51 import org.onap.ccsdk.sli.core.sli.provider.base.SvcLogicServiceImplBase;
\r
52 import org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder;
\r
53 import org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils;
\r
54 import org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils;
\r
55 import org.onap.ccsdk.sli.plugins.prop.PropertiesNode;
\r
56 import org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode;
\r
57 import org.slf4j.Logger;
\r
58 import org.slf4j.LoggerFactory;
\r
59 import org.springframework.beans.factory.annotation.Autowired;
\r
60 import org.springframework.context.annotation.Bean;
\r
61 import org.springframework.context.annotation.Configuration;
\r
62 import org.springframework.stereotype.Service;
\r
66 public class SvcLogicFactory {
\r
67 private static final Logger log = LoggerFactory.getLogger(SvcLogicFactory.class);
\r
70 List<SvcLogicRecorder> recorders;
\r
73 List<SvcLogicJavaPlugin> plugins;
\r
76 List<SvcLogicResource> svcLogicResources;
\r
79 public SvcLogicStore getStore() throws Exception {
\r
80 SvcLogicPropertiesProvider propProvider = new SvcLogicPropertiesProvider() {
\r
83 public Properties getProperties() {
\r
84 Properties props = new Properties();
\r
87 String propPath = System.getProperty("serviceLogicProperties", "");
\r
89 if ("".equals(propPath)) {
\r
90 propPath = System.getenv("SVCLOGIC_PROPERTIES");
\r
94 if ((propPath == null) || propPath.length() == 0) {
\r
95 propPath = "src/main/resources/svclogic.properties";
\r
97 System.out.println(propPath);
\r
98 try (FileInputStream fileInputStream = new FileInputStream(propPath)) {
\r
99 props = new Properties();
\r
100 props.load(fileInputStream);
\r
101 } catch (final IOException e) {
\r
102 log.error("Failed to load properties for file: {}", propPath,
\r
103 new ConfigurationException("Failed to load properties for file: " + propPath, e));
\r
108 SvcLogicStore store = SvcLogicStoreFactory.getSvcLogicStore(propProvider.getProperties());
\r
113 public SvcLogicLoader createLoader() throws Exception {
\r
114 String serviceLogicDirectory = System.getProperty("serviceLogicDirectory");
\r
115 if (serviceLogicDirectory == null) {
\r
116 serviceLogicDirectory = "src/main/resources";
\r
119 System.out.println("serviceLogicDirectory is " + serviceLogicDirectory);
\r
120 SvcLogicLoader loader = new SvcLogicLoader(serviceLogicDirectory, getStore());
\r
123 loader.loadAndActivate();
\r
124 } catch (IOException e) {
\r
125 log.error("Cannot load directed graphs", e);
\r
131 public SvcLogicServiceBase createService() throws Exception {
\r
132 HashMapResolver resolver = new HashMapResolver();
\r
133 for (SvcLogicRecorder recorder : recorders) {
\r
134 resolver.addSvcLogicRecorder(recorder.getClass().getName(), recorder);
\r
137 for (SvcLogicJavaPlugin plugin : plugins) {
\r
138 resolver.addSvcLogicSvcLogicJavaPlugin(plugin.getClass().getName(), plugin);
\r
141 for (SvcLogicResource svcLogicResource : svcLogicResources) {
\r
142 resolver.addSvcLogicResource(svcLogicResource.getClass().getName(), svcLogicResource);
\r
145 return new SvcLogicServiceImplBase(getStore(), resolver);
\r
149 public Slf4jRecorder slf4jRecorderNode() {
\r
150 return new Slf4jRecorder();
\r
153 // Beans from sli/core
\r
156 public SliPluginUtils sliPluginUtil() {
\r
157 return new SliPluginUtils();
\r
161 public SliStringUtils sliStringUtils() {
\r
162 return new SliStringUtils();
\r
165 // Beans from sli/adaptors
\r
168 public ConfigResource configResource() {
\r
169 return new ConfigResource(new MdsalResourcePropertiesProviderImpl());
\r
173 public OperationalResource operationalResource() {
\r
174 return new OperationalResource(new MdsalResourcePropertiesProviderImpl());
\r
178 public PublisherApi publisherApi() {
\r
179 return new PublisherApiImpl();
\r
184 public NetboxClient netboxClient() {
\r
185 return new NetboxClientImpl();
\r
190 public SqlResource sqlResource() {
\r
191 return new SqlResource();
\r
196 public RestapiCallNode restapiCallNode() {
\r
197 return new RestapiCallNode();
\r
201 public PropertiesNode propertiesNode() {
\r
202 return new PropertiesNode();
\r