summaryrefslogtreecommitdiffstats
path: root/catalog-be/src/main/java/org/openecomp/sdc/be/servlets/BeGenericServlet.java
diff options
context:
space:
mode:
Diffstat (limited to 'catalog-be/src/main/java/org/openecomp/sdc/be/servlets/BeGenericServlet.java')
-rw-r--r--catalog-be/src/main/java/org/openecomp/sdc/be/servlets/BeGenericServlet.java226
1 files changed, 226 insertions, 0 deletions
diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/servlets/BeGenericServlet.java b/catalog-be/src/main/java/org/openecomp/sdc/be/servlets/BeGenericServlet.java
new file mode 100644
index 0000000000..f21b57f6fb
--- /dev/null
+++ b/catalog-be/src/main/java/org/openecomp/sdc/be/servlets/BeGenericServlet.java
@@ -0,0 +1,226 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * SDC
+ * ================================================================================
+ * 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.openecomp.sdc.be.servlets;
+
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.function.Supplier;
+
+import javax.servlet.ServletContext;
+import javax.servlet.http.HttpServletRequest;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.core.Response.ResponseBuilder;
+
+import org.openecomp.sdc.be.components.clean.ComponentsCleanBusinessLogic;
+import org.openecomp.sdc.be.components.impl.ArtifactsBusinessLogic;
+import org.openecomp.sdc.be.components.impl.ComponentBusinessLogic;
+import org.openecomp.sdc.be.components.impl.ComponentInstanceBusinessLogic;
+import org.openecomp.sdc.be.components.impl.ElementBusinessLogic;
+import org.openecomp.sdc.be.components.impl.GroupBusinessLogic;
+import org.openecomp.sdc.be.components.impl.MonitoringBusinessLogic;
+import org.openecomp.sdc.be.components.impl.ProductBusinessLogic;
+import org.openecomp.sdc.be.components.impl.ProductComponentInstanceBusinessLogic;
+import org.openecomp.sdc.be.components.impl.ResourceBusinessLogic;
+import org.openecomp.sdc.be.components.impl.ServiceBusinessLogic;
+import org.openecomp.sdc.be.components.impl.ServiceComponentInstanceBusinessLogic;
+import org.openecomp.sdc.be.components.impl.VFComponentInstanceBusinessLogic;
+import org.openecomp.sdc.be.config.BeEcompErrorManager;
+import org.openecomp.sdc.be.dao.api.IElementDAO;
+import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
+import org.openecomp.sdc.be.impl.ComponentsUtils;
+import org.openecomp.sdc.be.impl.WebAppContextWrapper;
+import org.openecomp.sdc.be.user.UserBusinessLogic;
+import org.openecomp.sdc.common.api.Constants;
+import org.openecomp.sdc.common.config.EcompErrorName;
+import org.openecomp.sdc.common.servlets.BasicServlet;
+import org.openecomp.sdc.exception.ResponseFormat;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.context.WebApplicationContext;
+
+public class BeGenericServlet extends BasicServlet {
+
+ @Context
+ protected HttpServletRequest servletRequest;
+
+ private static Logger log = LoggerFactory.getLogger(BeGenericServlet.class.getName());
+
+ /******************** New error response mechanism **************/
+
+ protected Response buildErrorResponse(ResponseFormat requestErrorWrapper) {
+ Response response = Response.status(requestErrorWrapper.getStatus()).entity(gson.toJson(requestErrorWrapper.getRequestError())).build();
+ return response;
+ }
+
+ protected Response buildOkResponse(ResponseFormat errorResponseWrapper, Object entity) {
+ return buildOkResponse(errorResponseWrapper, entity, null);
+ }
+
+ protected Response buildOkResponse(ResponseFormat errorResponseWrapper, Object entity, Map<String, String> additionalHeaders) {
+ int status = errorResponseWrapper.getStatus();
+ ResponseBuilder responseBuilder = Response.status(status);
+ if (entity != null) {
+ if (log.isTraceEnabled())
+ log.trace("returned entity is {}", entity.toString());
+ responseBuilder = responseBuilder.entity(entity);
+ }
+ if (additionalHeaders != null) {
+ for (Entry<String, String> additionalHeader : additionalHeaders.entrySet()) {
+ String headerName = additionalHeader.getKey();
+ String headerValue = additionalHeader.getValue();
+ if (log.isTraceEnabled())
+ log.trace("Adding header {} with value {} to the response", headerName, headerValue);
+ responseBuilder.header(headerName, headerValue);
+ }
+ }
+ return responseBuilder.build();
+ }
+
+ /*******************************************************************************************************/
+
+ protected UserBusinessLogic getUserAdminManager(ServletContext context) {
+ return getBusinessLogic(context, () -> UserBusinessLogic.class);
+ }
+
+ protected ResourceBusinessLogic getResourceBL(ServletContext context) {
+ return getBusinessLogic(context, () -> ResourceBusinessLogic.class);
+ }
+
+ protected ComponentsCleanBusinessLogic getComponentCleanerBL(ServletContext context) {
+ return getBusinessLogic(context, () -> ComponentsCleanBusinessLogic.class);
+ }
+
+ protected ServiceBusinessLogic getServiceBL(ServletContext context) {
+ return getBusinessLogic(context, () -> ServiceBusinessLogic.class);
+ }
+
+ protected ProductBusinessLogic getProductBL(ServletContext context) {
+ return getBusinessLogic(context, () -> ProductBusinessLogic.class);
+ }
+
+ protected ArtifactsBusinessLogic getArtifactBL(ServletContext context) {
+ return getBusinessLogic(context, () -> ArtifactsBusinessLogic.class);
+ }
+
+ protected ElementBusinessLogic getElementBL(ServletContext context) {
+ return getBusinessLogic(context, () -> ElementBusinessLogic.class);
+ }
+
+ protected MonitoringBusinessLogic getMonitoringBL(ServletContext context) {
+ return getBusinessLogic(context, () -> MonitoringBusinessLogic.class);
+ }
+
+ protected <SomeBusinessLogic> SomeBusinessLogic getBusinessLogic(ServletContext context, Supplier<Class<SomeBusinessLogic>> businessLogicClassGen) {
+ WebAppContextWrapper webApplicationContextWrapper = (WebAppContextWrapper) context.getAttribute(Constants.WEB_APPLICATION_CONTEXT_WRAPPER_ATTR);
+ WebApplicationContext webApplicationContext = webApplicationContextWrapper.getWebAppContext(context);
+ SomeBusinessLogic monitoringBusinessLogic = webApplicationContext.getBean(businessLogicClassGen.get());
+ return monitoringBusinessLogic;
+ }
+
+ protected GroupBusinessLogic getGroupBL(ServletContext context) {
+
+ WebAppContextWrapper webApplicationContextWrapper = (WebAppContextWrapper) context.getAttribute(Constants.WEB_APPLICATION_CONTEXT_WRAPPER_ATTR);
+ WebApplicationContext webApplicationContext = webApplicationContextWrapper.getWebAppContext(context);
+ GroupBusinessLogic groupBusinessLogic = webApplicationContext.getBean(GroupBusinessLogic.class);
+ return groupBusinessLogic;
+ }
+
+ protected ComponentInstanceBusinessLogic getComponentInstanceBL(ServletContext context, ComponentTypeEnum containerComponentType) {
+ WebAppContextWrapper webApplicationContextWrapper = (WebAppContextWrapper) context.getAttribute(Constants.WEB_APPLICATION_CONTEXT_WRAPPER_ATTR);
+ WebApplicationContext webApplicationContext = webApplicationContextWrapper.getWebAppContext(context);
+ if (containerComponentType == ComponentTypeEnum.RESOURCE) {
+ return webApplicationContext.getBean(VFComponentInstanceBusinessLogic.class);
+ }
+ if (containerComponentType == ComponentTypeEnum.SERVICE) {
+ return webApplicationContext.getBean(ServiceComponentInstanceBusinessLogic.class);
+ }
+ if (containerComponentType == ComponentTypeEnum.PRODUCT) {
+ return webApplicationContext.getBean(ProductComponentInstanceBusinessLogic.class);
+ }
+ return null;
+ }
+
+ protected IElementDAO getElementDao(Class<? extends IElementDAO> clazz, ServletContext context) {
+ WebAppContextWrapper webApplicationContextWrapper = (WebAppContextWrapper) context.getAttribute(Constants.WEB_APPLICATION_CONTEXT_WRAPPER_ATTR);
+
+ WebApplicationContext webApplicationContext = webApplicationContextWrapper.getWebAppContext(context);
+
+ return webApplicationContext.getBean(clazz);
+ }
+
+ protected ComponentsUtils getComponentsUtils() {
+ ServletContext context = this.servletRequest.getSession().getServletContext();
+
+ WebAppContextWrapper webApplicationContextWrapper = (WebAppContextWrapper) context.getAttribute(Constants.WEB_APPLICATION_CONTEXT_WRAPPER_ATTR);
+ WebApplicationContext webApplicationContext = webApplicationContextWrapper.getWebAppContext(context);
+ ComponentsUtils componentsUtils = webApplicationContext.getBean(ComponentsUtils.class);
+ return componentsUtils;
+ }
+
+ /**
+ * Used to support Unit Test.<br>
+ * Header Params are not supported in Unit Tests
+ *
+ * @return
+ */
+ protected String initHeaderParam(String headerValue, HttpServletRequest request, String headerName) {
+ String retValue;
+ if (headerValue != null) {
+ retValue = headerValue;
+ } else {
+ retValue = request.getHeader(headerName);
+ }
+ return retValue;
+ }
+
+ protected String getContentDispositionValue(String artifactFileName) {
+ return new StringBuilder().append("attachment; filename=\"").append(artifactFileName).append("\"").toString();
+ }
+
+ protected ComponentBusinessLogic getComponentBL(ComponentTypeEnum componentTypeEnum, ServletContext context) {
+ ComponentBusinessLogic businessLogic;
+ switch (componentTypeEnum) {
+ case RESOURCE: {
+ businessLogic = getResourceBL(context);
+ break;
+ }
+ case SERVICE: {
+ businessLogic = getServiceBL(context);
+ break;
+ }
+ case PRODUCT: {
+ businessLogic = getProductBL(context);
+ break;
+ }
+ case RESOURCE_INSTANCE: {
+ businessLogic = getResourceBL(context);
+ break;
+ }
+ default: {
+ BeEcompErrorManager.getInstance().processEcompError(EcompErrorName.BeSystemError, "getComponentBL");
+ BeEcompErrorManager.getInstance().logBeSystemError("getComponentBL");
+ throw new IllegalArgumentException("Illegal component type:" + componentTypeEnum.getValue());
+ }
+ }
+ return businessLogic;
+ }
+}