+++ /dev/null
-/*-
- * ============LICENSE_START=======================================================
- * ONAP : CCSDK
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights
- * reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.ccsdk.sli.core.sli.provider;
-
-import java.util.HashMap;
-
-import org.onap.ccsdk.sli.core.sli.SvcLogicAdaptor;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class SvcLogicAdaptorFactory {
-
- private static final Logger LOG = LoggerFactory
- .getLogger(SvcLogicAdaptorFactory.class);
-
- private static HashMap<String, SvcLogicAdaptor> adaptorMap = new HashMap<>();
-
- public static void registerAdaptor(SvcLogicAdaptor adaptor) {
- String name = adaptor.getClass().getName();
- LOG.info("Registering adaptor " + name);
- adaptorMap.put(name, adaptor);
-
- }
-
- public static void unregisterAdaptor(String name) {
- if (adaptorMap.containsKey(name)) {
- LOG.info("Unregistering " + name);
- adaptorMap.remove(name);
- }
- }
-
- public static SvcLogicAdaptor getInstance(String name) {
- if (adaptorMap.containsKey(name)) {
- return adaptorMap.get(name);
- } else {
-
- SvcLogicAdaptor adaptor = (SvcLogicAdaptor) SvcLogicClassResolver.getInstance().resolve(name);
-
- if (adaptor != null) {
- registerAdaptor(adaptor);
- }
-
- return adaptor;
- }
- }
-}
package org.onap.ccsdk.sli.core.sli.provider;
+import java.util.HashMap;
import org.onap.ccsdk.sli.core.sli.SvcLogicAdaptor;
import org.onap.ccsdk.sli.core.sli.SvcLogicJavaPlugin;
import org.onap.ccsdk.sli.core.sli.SvcLogicRecorder;
import org.slf4j.LoggerFactory;
public class SvcLogicClassResolver implements SvcLogicResolver {
+
private static final Logger LOG = LoggerFactory.getLogger(SvcLogicClassResolver.class);
- private static SvcLogicClassResolver instance = new SvcLogicClassResolver();
+ private static HashMap<String, SvcLogicAdaptor> adaptorMap = new HashMap<>();
+
+ public void registerAdaptor(SvcLogicAdaptor adaptor) {
+ String name = adaptor.getClass().getName();
+ LOG.info("Registering adaptor " + name);
+ adaptorMap.put(name, adaptor);
+
+ }
- private SvcLogicClassResolver() {
+ public void unregisterAdaptor(String name) {
+ if (adaptorMap.containsKey(name)) {
+ LOG.info("Unregistering " + name);
+ adaptorMap.remove(name);
+ }
}
- public static SvcLogicClassResolver getInstance() {
- return instance;
+ private SvcLogicAdaptor getAdaptorInstance(String name) {
+ if (adaptorMap.containsKey(name)) {
+ return adaptorMap.get(name);
+ } else {
+
+ SvcLogicAdaptor adaptor = (SvcLogicAdaptor) resolve(name);
+
+ if (adaptor != null) {
+ registerAdaptor(adaptor);
+ }
+
+ return adaptor;
+ }
}
- public Object resolve(String className) {
+ private Object resolve(String className) {
Bundle bundle = FrameworkUtil.getBundle(SvcLogicClassResolver.class);
@Override
public SvcLogicAdaptor getSvcLogicAdaptor(String adaptorName) {
- return SvcLogicAdaptorFactory.getInstance(adaptorName);
+ return getAdaptorInstance(adaptorName);
}
}
import org.onap.ccsdk.sli.core.sli.SvcLogicGraph;
import org.onap.ccsdk.sli.core.sli.SvcLogicStore;
import org.onap.ccsdk.sli.core.sli.SvcLogicStoreFactory;
-import org.onap.ccsdk.sli.core.sli.provider.base.AbstractSvcLogicNodeExecutor;
import org.onap.ccsdk.sli.core.sli.provider.base.SvcLogicPropertiesProvider;
+import org.onap.ccsdk.sli.core.sli.provider.base.SvcLogicResolver;
import org.onap.ccsdk.sli.core.sli.provider.base.SvcLogicServiceImplBase;
import org.onap.logging.ref.slf4j.ONAPLogConstants;
import org.opendaylight.controller.md.sal.dom.api.DOMDataBroker;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.ServiceReference;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.slf4j.MDC;
public class SvcLogicServiceImpl extends SvcLogicServiceImplBase implements SvcLogicService {
private static final Logger LOG = LoggerFactory.getLogger(SvcLogicServiceImpl.class);
- protected BundleContext bctx = null;
- public SvcLogicServiceImpl(SvcLogicPropertiesProvider resourceProvider) throws SvcLogicException {
+ public SvcLogicServiceImpl(SvcLogicPropertiesProvider resourceProvider, SvcLogicResolver resolver)
+ throws SvcLogicException {
super(null);
- this.resolver = SvcLogicClassResolver.getInstance();
+ this.resolver = resolver;
properties = resourceProvider.getProperties();
this.store = getStore();
}
- public SvcLogicServiceImpl(SvcLogicPropertiesProvider resourceProvider, DbLibService dbSvc)
- throws SvcLogicException {
+ public SvcLogicServiceImpl(SvcLogicPropertiesProvider resourceProvider, DbLibService dbSvc,
+ SvcLogicResolver resolver) throws SvcLogicException {
super(null);
- this.resolver = SvcLogicClassResolver.getInstance();
+ this.resolver = resolver;
properties = resourceProvider.getProperties();
this.store = new SvcLogicDblibStore(dbSvc);
}
- public void registerExecutor(ServiceReference sr) {
- String nodeName = (String) sr.getProperty("nodeType");
- if (nodeName != null) {
- AbstractSvcLogicNodeExecutor executor;
- try {
- executor = (AbstractSvcLogicNodeExecutor) bctx.getService(sr);
- } catch (Exception e) {
- LOG.error("Cannot get service executor for {}", nodeName, e);
- return;
- }
- registerExecutor(nodeName, executor);
- }
- }
-
- public void unregisterExecutor(ServiceReference sr) {
- String nodeName = (String) sr.getProperty("nodeType");
-
- if (nodeName != null) {
- unregisterExecutor(nodeName);
- }
- }
-
@Override
public Properties execute(String module, String rpc, String version, String mode, Properties props)
throws SvcLogicException {
<bean id="propProvider" class="org.onap.ccsdk.sli.core.sli.provider.SvcLogicPropertiesProviderImpl" />
<reference id="dblibService" interface="org.onap.ccsdk.sli.core.dblib.DbLibService" />
+ <bean id="svcLogicClassResolver" class="org.onap.ccsdk.sli.core.sli.provider.SvcLogicClassResolver" />
<bean id="svcLogicService" class="org.onap.ccsdk.sli.core.sli.provider.SvcLogicServiceImpl">
<argument ref="propProvider" />
- <argument ref="dblibService"/>
+ <argument ref="dblibService" />
+ <argument ref="svcLogicClassResolver" />
</bean>
-
<service ref="svcLogicService">
<interfaces>
<value>org.onap.ccsdk.sli.core.sli.provider.SvcLogicService</value>
</interfaces>
</service>
-</blueprint>
\ No newline at end of file
+</blueprint>
<bean id="propProvider" class="org.onap.ccsdk.sli.core.sli.provider.SvcLogicPropertiesProviderImpl" />
<reference id="dblibService" interface="org.onap.ccsdk.sli.core.dblib.DbLibService" />
+ <bean id="svcLogicClassResolver" class="org.onap.ccsdk.sli.core.sli.provider.SvcLogicClassResolver" />
<bean id="svcLogicService" class="org.onap.ccsdk.sli.core.sli.provider.SvcLogicServiceImpl">
<argument ref="propProvider" />
- <argument ref="dblibService"/>
+ <argument ref="dblibService" />
+ <argument ref="svcLogicClassResolver" />
</bean>
-
<service ref="svcLogicService">
<interfaces>
<value>org.onap.ccsdk.sli.core.sli.provider.SvcLogicService</value>
</interfaces>
</service>
-</blueprint>
\ No newline at end of file
+</blueprint>
import java.util.LinkedList;
import java.util.Map;
import java.util.Properties;
-
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.onap.ccsdk.sli.core.sli.SvcLogicParser;
import org.onap.ccsdk.sli.core.sli.SvcLogicStore;
import org.onap.ccsdk.sli.core.sli.SvcLogicStoreFactory;
+import org.onap.ccsdk.sli.core.sli.provider.base.AbstractSvcLogicNodeExecutor;
import org.onap.ccsdk.sli.core.sli.provider.base.BlockNodeExecutor;
import org.onap.ccsdk.sli.core.sli.provider.base.BreakNodeExecutor;
import org.onap.ccsdk.sli.core.sli.provider.base.CallNodeExecutor;
import org.onap.ccsdk.sli.core.sli.provider.base.ReturnNodeExecutor;
import org.onap.ccsdk.sli.core.sli.provider.base.SaveNodeExecutor;
import org.onap.ccsdk.sli.core.sli.provider.base.SetNodeExecutor;
-import org.onap.ccsdk.sli.core.sli.provider.base.AbstractSvcLogicNodeExecutor;
import org.onap.ccsdk.sli.core.sli.provider.base.SvcLogicPropertiesProvider;
import org.onap.ccsdk.sli.core.sli.provider.base.SwitchNodeExecutor;
import org.onap.ccsdk.sli.core.sli.provider.base.UpdateNodeExecutor;
}
};
+ private static SvcLogicClassResolver svcLogicClassResolver;
+
@BeforeClass
public static void setUpBeforeClass() throws Exception {
SvcLogicParser parser = new SvcLogicParser();
SvcLogicPropertiesProvider resourceProvider = new SvcLogicPropertiesProviderImpl();
- SvcLogicServiceImpl svc = new SvcLogicServiceImpl(resourceProvider);
+ svcLogicClassResolver = new SvcLogicClassResolver();
+ SvcLogicServiceImpl svc = new SvcLogicServiceImpl(resourceProvider, svcLogicClassResolver);
for (String nodeType : BUILTIN_NODES.keySet()) {
svc.registerExecutor(nodeType, BUILTIN_NODES.get(nodeType));
return svcprops;
}
};
- SvcLogicServiceImpl svc = new SvcLogicServiceImpl(resourceProvider);
+ SvcLogicServiceImpl svc = new SvcLogicServiceImpl(resourceProvider, svcLogicClassResolver);
SvcLogicStore store = svc.getStore();
assertNotNull(store);
for (String nodeType : BUILTIN_NODES.keySet()) {
import java.util.Map;
import java.util.Properties;
import java.util.concurrent.Future;
-
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.onap.ccsdk.sli.core.sli.SvcLogicParser;
import org.onap.ccsdk.sli.core.sli.SvcLogicStore;
import org.onap.ccsdk.sli.core.sli.SvcLogicStoreFactory;
+import org.onap.ccsdk.sli.core.sli.provider.SvcLogicClassResolver;
import org.onap.ccsdk.sli.core.sli.provider.SvcLogicPropertiesProviderImpl;
import org.onap.ccsdk.sli.core.sli.provider.SvcLogicServiceImpl;
import org.onap.ccsdk.sli.core.sli.provider.base.AbstractSvcLogicNodeExecutor;
SvcLogicParser.activate("sli", "healthcheck", "1.0.0", "sync", store);
// Create a ServiceLogicService and initialize it
- SvcLogicServiceImpl svc = new SvcLogicServiceImpl(new SvcLogicPropertiesProviderImpl());
+ SvcLogicServiceImpl svc = new SvcLogicServiceImpl(new SvcLogicPropertiesProviderImpl(),
+ new SvcLogicClassResolver());
for (String nodeType : BUILTIN_NODES.keySet()) {
svc.registerExecutor(nodeType, BUILTIN_NODES.get(nodeType));
}