summaryrefslogtreecommitdiffstats
path: root/openecomp-be/api/openecomp-sdc-rest-webapp/item-rest/item-rest-services/src/main/java/org/openecomp/sdcrests/item/rest/services/catalog/notification/http/HttpTaskProducer.java
diff options
context:
space:
mode:
authoravigaffa <avi.gaffa@amdocs.com>2018-11-18 16:01:07 +0200
committerOren Kleks <orenkle@amdocs.com>2018-11-26 19:45:30 +0000
commitd8906a0cc7fcc302020e983fdfade2758663ba4d (patch)
tree6082ed5edc4634945785342285ad754ca8d135a9 /openecomp-be/api/openecomp-sdc-rest-webapp/item-rest/item-rest-services/src/main/java/org/openecomp/sdcrests/item/rest/services/catalog/notification/http/HttpTaskProducer.java
parent4d34afb67ad28e83e07cdd365c985b6fb8745ebe (diff)
error when trying to archive\restore
fix bug: getting server error when trying to archive\restore VLM\VSP Change-Id: I7abefd2d8ac368d590329071a56f200c203cf966 Issue-ID: SDC-1667 Signed-off-by: avigaffa <avi.gaffa@amdocs.com>
Diffstat (limited to 'openecomp-be/api/openecomp-sdc-rest-webapp/item-rest/item-rest-services/src/main/java/org/openecomp/sdcrests/item/rest/services/catalog/notification/http/HttpTaskProducer.java')
-rw-r--r--openecomp-be/api/openecomp-sdc-rest-webapp/item-rest/item-rest-services/src/main/java/org/openecomp/sdcrests/item/rest/services/catalog/notification/http/HttpTaskProducer.java107
1 files changed, 107 insertions, 0 deletions
diff --git a/openecomp-be/api/openecomp-sdc-rest-webapp/item-rest/item-rest-services/src/main/java/org/openecomp/sdcrests/item/rest/services/catalog/notification/http/HttpTaskProducer.java b/openecomp-be/api/openecomp-sdc-rest-webapp/item-rest/item-rest-services/src/main/java/org/openecomp/sdcrests/item/rest/services/catalog/notification/http/HttpTaskProducer.java
new file mode 100644
index 0000000000..c6abd346ff
--- /dev/null
+++ b/openecomp-be/api/openecomp-sdc-rest-webapp/item-rest/item-rest-services/src/main/java/org/openecomp/sdcrests/item/rest/services/catalog/notification/http/HttpTaskProducer.java
@@ -0,0 +1,107 @@
+/*
+ * Copyright © 2016-2018 European Support Limited
+ *
+ * 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.
+ */
+
+package org.openecomp.sdcrests.item.rest.services.catalog.notification.http;
+
+import java.util.Collection;
+import java.util.concurrent.Callable;
+import java.util.function.BiFunction;
+import org.openecomp.sdc.common.session.SessionContextProviderFactory;
+import org.openecomp.sdc.logging.api.Logger;
+import org.openecomp.sdc.logging.api.LoggerFactory;
+import org.openecomp.sdcrests.item.rest.services.catalog.notification.AsyncNotifier;
+import org.openecomp.sdcrests.item.rest.services.catalog.notification.EntryNotConfiguredException;
+import org.openecomp.sdcrests.item.rest.services.catalog.notification.Notifier;
+import org.openecomp.sdcrests.item.types.ItemAction;
+
+/**
+ * Notifies the Catalog via an HTTP.
+ *
+ * @author evitaliy
+ * @since 21 Nov 2018
+ */
+public class HttpTaskProducer
+ implements BiFunction<Collection<String>, ItemAction, Callable<AsyncNotifier.NextAction>>, Notifier {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(HttpTaskProducer.class);
+
+ private static final String CATALOG_HTTP_PROTOCOL = "HTTP";
+ private static final String CATALOG_HTTPS_PROTOCOL = "HTTPS";
+
+ private final String notifyCatalogUrl;
+
+ /**
+ * Initializes the producer from a provided configuration.
+ *
+ * @param config HTTP-specific configuration, cannot be null
+ */
+ public HttpTaskProducer(HttpConfiguration config) {
+ String protocol = ensureEntryConfigured(config.getCatalogBeProtocol(), "Protocol");
+ String host = ensureEntryConfigured(config.getCatalogBeFqdn(), "Catalog host");
+ String url = ensureEntryConfigured(config.getCatalogNotificationUrl(), "Notification URL");
+ String port = getPortConfiguration(protocol, config);
+ this.notifyCatalogUrl = String.format(url, protocol, host, port);
+ }
+
+ private static String ensureEntryConfigured(String value, String entryName) {
+
+ if (value == null) {
+ throw new EntryNotConfiguredException(entryName);
+ }
+
+ return value;
+ }
+
+ private static String getPortConfiguration(String protocol, HttpConfiguration config) {
+
+ if (CATALOG_HTTP_PROTOCOL.equalsIgnoreCase(protocol)) {
+ return ensureEntryConfigured(config.getCatalogBeHttpPort(), "HTTP port");
+ } else if (CATALOG_HTTPS_PROTOCOL.equalsIgnoreCase(protocol)) {
+ return ensureEntryConfigured(config.getCatalogBeSslPort(), "SSL port");
+ } else {
+ throw new IllegalArgumentException("Unsupported protocol: " + protocol);
+ }
+ }
+
+ @Override
+ public Callable<AsyncNotifier.NextAction> apply(Collection<String> itemIds, ItemAction action) {
+ return createNotificationTask(itemIds, action);
+ }
+
+ private static String getEndpoint(ItemAction action) {
+
+ if (action == ItemAction.ARCHIVE) {
+ return "archived";
+ } else if (action == ItemAction.RESTORE) {
+ return "restored";
+ } else {
+ throw new IllegalArgumentException("Unsupported action: " + action.name());
+ }
+ }
+
+ @Override
+ public void execute(Collection<String> itemIds, ItemAction action) {
+ HttpNotificationTask task = createNotificationTask(itemIds, action);
+ task.call();
+ }
+
+ private HttpNotificationTask createNotificationTask(Collection<String> itemIds, ItemAction action) {
+ String userId = SessionContextProviderFactory.getInstance().createInterface().get().getUser().getUserId();
+ String notificationEndpoint = notifyCatalogUrl + getEndpoint(action);
+ LOGGER.debug("Catalog notification URL: " + notificationEndpoint);
+ return new HttpNotificationTask(notificationEndpoint, userId, itemIds);
+ }
+}