diff options
author | vidhyasree <sn141y@att.com> | 2018-03-14 14:31:16 -0400 |
---|---|---|
committer | Randa Maher <rx196w@att.com> | 2018-03-14 23:30:27 +0000 |
commit | f95ebd42ebd32fe70f0c6ae2de807df416c55725 (patch) | |
tree | 86aa29c7333c02eb41742221da4da2d36e0c0f43 | |
parent | e2798efc3714d949ea826742c71250563fcc7931 (diff) |
ClientLib Support For Multiple Controllers
-APPC client library should support multiple controllers
-To support MSO added string controllerType
Issue-ID: APPC-683
Change-Id: Ief8416cb0912acc26015cb8271432de92a0af7dd
Signed-off-by: vidhyasree <sn141y@att.com>
4 files changed, 115 insertions, 23 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"); } } + } diff --git a/appc-client/client-lib/src/main/java/org/onap/appc/client/impl/protocol/UEBMessagingService.java b/appc-client/client-lib/src/main/java/org/onap/appc/client/impl/protocol/UEBMessagingService.java index 5c92a008f..0a9e1a630 100644 --- a/appc-client/client-lib/src/main/java/org/onap/appc/client/impl/protocol/UEBMessagingService.java +++ b/appc-client/client-lib/src/main/java/org/onap/appc/client/impl/protocol/UEBMessagingService.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========================================================= */ @@ -49,11 +49,17 @@ class UEBMessagingService implements MessagingService { @Override @SuppressWarnings("Since15") public void init(Properties props) - throws IOException, GeneralSecurityException, NoSuchFieldException, IllegalAccessException { + throws IOException, GeneralSecurityException, NoSuchFieldException, IllegalAccessException { if (props != null) { String readTopic = props.getProperty(UEBPropertiesKeys.TOPIC_READ); String writeTopic = props.getProperty(UEBPropertiesKeys.TOPIC_WRITE); + String cType = props.getProperty(UEBPropertiesKeys.CONTROLLER_TYPE); + if (cType != null && cType.length()!= 0 && (!cType.equals("APPC"))) + { + readTopic = cType + "-" + readTopic; + writeTopic = cType + "-" + writeTopic; + } String apiKey = props.getProperty(UEBPropertiesKeys.AUTH_USER); String apiSecret = props.getProperty(UEBPropertiesKeys.AUTH_SECRET); String readTimeoutString = props.getProperty(UEBPropertiesKeys.TOPIC_READ_TIMEOUT, DEFAULT_READ_TIMEOUT_MS); diff --git a/appc-client/client-lib/src/main/java/org/onap/appc/client/impl/protocol/UEBPropertiesKeys.java b/appc-client/client-lib/src/main/java/org/onap/appc/client/impl/protocol/UEBPropertiesKeys.java index 5c1916f2b..81f109a44 100644 --- a/appc-client/client-lib/src/main/java/org/onap/appc/client/impl/protocol/UEBPropertiesKeys.java +++ b/appc-client/client-lib/src/main/java/org/onap/appc/client/impl/protocol/UEBPropertiesKeys.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========================================================= */ @@ -33,4 +33,5 @@ class UEBPropertiesKeys { static final String AUTH_USER = "client.key"; static final String AUTH_SECRET = "client.secret"; static final String HOSTS = "poolMembers"; + static final String CONTROLLER_TYPE = "controllerType"; } |