summaryrefslogtreecommitdiffstats
path: root/appc-client/client-kit/src
diff options
context:
space:
mode:
Diffstat (limited to 'appc-client/client-kit/src')
-rw-r--r--appc-client/client-kit/src/main/java/org/onap/appc/client/lcm/api/AppcLifeCycleManagerServiceFactory.java23
-rw-r--r--appc-client/client-kit/src/main/java/org/onap/appc/client/lcm/impl/business/AppcLifeCycleManagerServiceFactoryImpl.java94
2 files changed, 101 insertions, 16 deletions
diff --git a/appc-client/client-kit/src/main/java/org/onap/appc/client/lcm/api/AppcLifeCycleManagerServiceFactory.java b/appc-client/client-kit/src/main/java/org/onap/appc/client/lcm/api/AppcLifeCycleManagerServiceFactory.java
index c0d2daa01..8613f29fa 100644
--- a/appc-client/client-kit/src/main/java/org/onap/appc/client/lcm/api/AppcLifeCycleManagerServiceFactory.java
+++ b/appc-client/client-kit/src/main/java/org/onap/appc/client/lcm/api/AppcLifeCycleManagerServiceFactory.java
@@ -9,15 +9,15 @@
* 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.
- *
+ *
* ECOMP is a trademark and service mark of AT&T Intellectual Property.
* ============LICENSE_END=========================================================
*/
@@ -40,10 +40,27 @@ public interface AppcLifeCycleManagerServiceFactory {
LifeCycleManagerStateful createLifeCycleManagerStateful(ApplicationContext context, Properties properties) throws AppcClientException;
/**
+ * Creates a new stateful LCM API given a controller type
+ * @param context application context parameters
+ * @param properties configures the behaviour of the LCM
+ * @return a new stateful LCM API
+ * @throws AppcClientException in case of problem in instantiation
+ */
+ LifeCycleManagerStateful createLifeCycleManagerStateful(ApplicationContext context, Properties properties, String controllerType) throws AppcClientException;
+
+ /**
* performs a shutdown of LCM API.
* in case of graceful, will try and execute the remaining requests, otherwise, will force the shutdown right away
* @param isForceShutdown - boolean. If true to perform force shutdown, other to perform graceful shutdown.
*/
void shutdownLifeCycleManager(boolean isForceShutdown);
+
+ /**
+ * performs a shutdown of LCM API, given a controller type
+ * in case of graceful, will try and execute the remaining requests, otherwise, will force the shutdown right away
+ * @param isForceShutdown - boolean. If true to perform force shutdown, other to perform graceful shutdown.
+ */
+ void shutdownLifeCycleManager(boolean isForceShutdown, String controllerType);
+
}
diff --git a/appc-client/client-kit/src/main/java/org/onap/appc/client/lcm/impl/business/AppcLifeCycleManagerServiceFactoryImpl.java b/appc-client/client-kit/src/main/java/org/onap/appc/client/lcm/impl/business/AppcLifeCycleManagerServiceFactoryImpl.java
index b8ab36bbe..400d6c6bd 100644
--- a/appc-client/client-kit/src/main/java/org/onap/appc/client/lcm/impl/business/AppcLifeCycleManagerServiceFactoryImpl.java
+++ b/appc-client/client-kit/src/main/java/org/onap/appc/client/lcm/impl/business/AppcLifeCycleManagerServiceFactoryImpl.java
@@ -9,21 +9,23 @@
* 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.
- *
+ *
* ECOMP is a trademark and service mark of AT&T Intellectual Property.
* ============LICENSE_END=========================================================
*/
package org.onap.appc.client.lcm.impl.business;
+import java.util.HashMap;
+
import org.onap.appc.client.lcm.api.AppcLifeCycleManagerServiceFactory;
import org.onap.appc.client.lcm.api.ApplicationContext;
import org.onap.appc.client.lcm.api.LifeCycleManagerStateful;
@@ -34,28 +36,94 @@ import java.util.Properties;
public class AppcLifeCycleManagerServiceFactoryImpl implements AppcLifeCycleManagerServiceFactory {
- private LifeCycleManagerStateful lifeCycleManagerStateful;
- private LCMRequestProcessor lcmRequestProcessor;
+ class AppcLifeCycleManagerServiceFactoryImplData {
+
+ private LifeCycleManagerStateful _lifeCycleManagerStateful;
+ private LCMRequestProcessor _lcmRequestProcessor;
+
+ AppcLifeCycleManagerServiceFactoryImplData(LifeCycleManagerStateful lifeCycleManagerStateful,
+ LCMRequestProcessor lcmRequestProcessor) {
+
+ _lifeCycleManagerStateful = lifeCycleManagerStateful;
+ _lcmRequestProcessor = lcmRequestProcessor;
+ }
+
+ LifeCycleManagerStateful getLifeCycleManagerStateful() {
+ return _lifeCycleManagerStateful;
+ }
+
+ LCMRequestProcessor getLCMRequestProcessor() {
+ return _lcmRequestProcessor;
+ }
+ }
+
+ private HashMap<String, AppcLifeCycleManagerServiceFactoryImplData> lcmMap = new HashMap<String, AppcLifeCycleManagerServiceFactoryImplData>();
@Override
- public synchronized LifeCycleManagerStateful createLifeCycleManagerStateful(ApplicationContext context, Properties properties) throws AppcClientException{
+ public synchronized LifeCycleManagerStateful createLifeCycleManagerStateful(ApplicationContext context,
+ Properties properties) throws AppcClientException {
+ String cType = properties.getProperty("controllerType");
+ if (cType == null || cType.length() == 0)
+ {
+ cType = "APPC";
+ properties.put("controllerType", cType);
+ }
+
+ AppcLifeCycleManagerServiceFactoryImplData lcmData = lcmMap.get(cType);
+ LifeCycleManagerStateful lifeCycleManagerStateful = null;
+ LCMRequestProcessor lcmRequestProcessor = null;
+
+ if (lcmData != null) {
+ lifeCycleManagerStateful = lcmData.getLifeCycleManagerStateful();
+ lcmRequestProcessor = lcmData.getLCMRequestProcessor();
+ }
+
if (lifeCycleManagerStateful == null) {
lcmRequestProcessor = new LCMRequestProcessor(context, properties);
- lifeCycleManagerStateful = (LifeCycleManagerStateful) Proxy.newProxyInstance(LifeCycleManagerStateful.class.getClassLoader(), new Class<?>[]{LifeCycleManagerStateful.class}, new RPCInvocator(lcmRequestProcessor));
- }
- else {
+ lifeCycleManagerStateful = (LifeCycleManagerStateful) Proxy.newProxyInstance(
+ LifeCycleManagerStateful.class.getClassLoader(), new Class<?>[] { LifeCycleManagerStateful.class },
+ new RPCInvocator(lcmRequestProcessor));
+ lcmMap.put(cType,
+ new AppcLifeCycleManagerServiceFactoryImplData(lifeCycleManagerStateful, lcmRequestProcessor));
+ } else {
throw new IllegalStateException("already instansiated LifeCycleManagerStateful instance");
}
return lifeCycleManagerStateful;
}
+ public LifeCycleManagerStateful createLifeCycleManagerStateful(ApplicationContext context,
+ Properties properties, String controllerType) throws AppcClientException {
+ if (controllerType != null && controllerType.length() != 0)
+ properties.put("controllerType", controllerType.toUpperCase());
+ return createLifeCycleManagerStateful(context, properties);
+ }
+
@Override
public void shutdownLifeCycleManager(boolean isForceShutdown) {
- if(lcmRequestProcessor != null){
- lcmRequestProcessor.shutdown(isForceShutdown);
+
+ shutdownLifeCycleManager(isForceShutdown, "APPC");
+ }
+
+ @Override
+ public void shutdownLifeCycleManager(boolean isForceShutdown, String controllerType) {
+ if (controllerType == null || controllerType.length() == 0)
+ controllerType = "APPC";
+ else
+ controllerType = controllerType.toUpperCase();
+
+ AppcLifeCycleManagerServiceFactoryImplData lcmData = lcmMap.get(controllerType);
+ LCMRequestProcessor lcmRequestProcessor = null;
+
+ if (lcmData != null) {
+ lcmRequestProcessor = lcmData.getLCMRequestProcessor();
}
- else{
- throw new IllegalStateException("The life cycle manager library wasn't instantiated properly, therefore the shutdown event will not be handled");
+
+ if (lcmRequestProcessor != null) {
+ lcmRequestProcessor.shutdown(isForceShutdown);
+ } else {
+ throw new IllegalStateException(
+ "The life cycle manager library wasn't instantiated properly, therefore the shutdown event will not be handled");
}
}
+
}