aboutsummaryrefslogtreecommitdiffstats
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.java163
1 files changed, 57 insertions, 106 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
index ffaf8a8399..43f51664b5 100644
--- 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
@@ -17,7 +17,6 @@
* limitations under the License.
* ============LICENSE_END=========================================================
*/
-
package org.openecomp.sdc.be.servlets;
import com.fasterxml.jackson.databind.DeserializationFeature;
@@ -31,6 +30,21 @@ import fj.data.Either;
import io.swagger.v3.oas.annotations.OpenAPIDefinition;
import io.swagger.v3.oas.annotations.info.Info;
import io.swagger.v3.oas.annotations.servers.Server;
+import java.io.IOException;
+import java.lang.reflect.Type;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Objects;
+import java.util.Set;
+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.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
@@ -55,9 +69,9 @@ import org.openecomp.sdc.be.datatypes.tosca.ToscaDataDefinition;
import org.openecomp.sdc.be.impl.ComponentsUtils;
import org.openecomp.sdc.be.impl.WebAppContextWrapper;
import org.openecomp.sdc.be.model.ComponentInstInputsMap;
+import org.openecomp.sdc.be.model.InputDefinition;
import org.openecomp.sdc.be.model.PropertyConstraint;
import org.openecomp.sdc.be.model.PropertyDefinition;
-import org.openecomp.sdc.be.model.InputDefinition;
import org.openecomp.sdc.be.model.User;
import org.openecomp.sdc.be.model.operations.impl.PropertyOperation;
import org.openecomp.sdc.be.model.operations.impl.PropertyOperation.PropertyConstraintJacksonDeserializer;
@@ -70,46 +84,28 @@ import org.openecomp.sdc.common.servlets.BasicServlet;
import org.openecomp.sdc.exception.ResponseFormat;
import org.springframework.web.context.WebApplicationContext;
-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 java.io.IOException;
-import java.lang.reflect.Type;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Objects;
-import java.util.Set;
-import java.util.function.Supplier;
-
-@OpenAPIDefinition(info = @Info(title = "SDC API", description = "SDC External, Distribution and Internal APIs"),
- servers = {@Server(url = "/sdc", description = "SDC External and Distribution APIs"),
- @Server(url = "/sdc2/rest", description = "SDC Internal APIs")})
+@OpenAPIDefinition(info = @Info(title = "SDC API", description = "SDC External, Distribution and Internal APIs"), servers = {
+ @Server(url = "/sdc", description = "SDC External and Distribution APIs"), @Server(url = "/sdc2/rest", description = "SDC Internal APIs")})
public class BeGenericServlet extends BasicServlet {
- public BeGenericServlet(UserBusinessLogic userAdminManager,
- ComponentsUtils componentsUtils) {
- this.userAdminManager = userAdminManager;
- this.componentsUtils = componentsUtils;
- }
-
+ private static final Logger log = Logger.getLogger(BeGenericServlet.class);
+ private static final String PROPERTY_NAME_REGEX = "[\\w,\\d,_]+";
@Context
protected HttpServletRequest servletRequest;
+ protected ComponentsUtils componentsUtils;
+ private UserBusinessLogic userAdminManager;
- private static final Logger log = Logger.getLogger(BeGenericServlet.class);
-
- private static final String PROPERTY_NAME_REGEX = "[\\w,\\d,_]+";
+ public BeGenericServlet(UserBusinessLogic userAdminManager, ComponentsUtils componentsUtils) {
+ this.userAdminManager = userAdminManager;
+ this.componentsUtils = componentsUtils;
+ }
- private UserBusinessLogic userAdminManager;
- protected ComponentsUtils componentsUtils;
+ private static Response buildOkResponseStatic(Object entity) {
+ return Response.status(Response.Status.OK).entity(entity).build();
+ }
/******************** New error response mechanism
* @param requestErrorWrapper **************/
-
protected Response buildErrorResponse(ResponseFormat requestErrorWrapper) {
return Response.status(requestErrorWrapper.getStatus()).entity(gson.toJson(requestErrorWrapper.getRequestError())).build();
}
@@ -122,18 +118,14 @@ public class BeGenericServlet extends BasicServlet {
return buildOkResponseStatic(entity);
}
- private static Response buildOkResponseStatic(Object entity) {
- return Response.status(Response.Status.OK)
- .entity(entity)
- .build();
- }
-
public HttpServletRequest getServletRequest() {
return servletRequest;
}
@VisibleForTesting
- public void setRequestServlet(HttpServletRequest request) {this.servletRequest = request;}
+ public void setRequestServlet(HttpServletRequest request) {
+ this.servletRequest = request;
+ }
protected Response buildOkResponse(ResponseFormat errorResponseWrapper, Object entity) {
return buildOkResponse(errorResponseWrapper, entity, null);
@@ -143,16 +135,18 @@ public class BeGenericServlet extends BasicServlet {
int status = errorResponseWrapper.getStatus();
ResponseBuilder responseBuilder = Response.status(status);
if (entity != null) {
- if (log.isTraceEnabled())
+ 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())
+ if (log.isTraceEnabled()) {
log.trace("Adding header {} with value {} to the response", headerName, headerValue);
+ }
responseBuilder.header(headerName, headerValue);
}
}
@@ -212,8 +206,7 @@ public class BeGenericServlet extends BasicServlet {
}
/**
- * Used to support Unit Test.<br>
- * Header Params are not supported in Unit Tests
+ * Used to support Unit Test.<br> Header Params are not supported in Unit Tests
*
* @return
*/
@@ -233,16 +226,13 @@ public class BeGenericServlet extends BasicServlet {
<T> T convertJsonToObjectOfClass(String json, Class<T> clazz) {
T object = null;
- ObjectMapper mapper = new ObjectMapper()
- .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
+ ObjectMapper mapper = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);
try {
log.trace("Starting to convert json to object. Json=\n{}", json);
-
SimpleModule module = new SimpleModule("customDeserializationModule");
module.addDeserializer(PropertyConstraint.class, new PropertyConstraintJacksonDeserializer());
mapper.registerModule(module);
-
object = mapper.readValue(json, clazz);
if (object != null) {
return object;
@@ -264,28 +254,21 @@ public class BeGenericServlet extends BasicServlet {
try {
Map<String, PropertyDefinition> properties = new HashMap<>();
root = (JSONObject) parser.parse(data);
-
Set entrySet = root.entrySet();
Iterator iterator = entrySet.iterator();
while (iterator.hasNext()) {
Entry next = (Entry) iterator.next();
String propertyName = (String) next.getKey();
-
- if(!isPropertyNameValid(propertyName)) {
+ if (!isPropertyNameValid(propertyName)) {
return Either.right(ActionStatus.INVALID_PROPERTY_NAME);
}
-
JSONObject value = (JSONObject) next.getValue();
- Either<PropertyDefinition, ActionStatus> propertyDefinitionEither =
- getPropertyDefinitionFromJson(componentId, propertyName, value);
-
- if(propertyDefinitionEither.isRight()) {
+ Either<PropertyDefinition, ActionStatus> propertyDefinitionEither = getPropertyDefinitionFromJson(componentId, propertyName, value);
+ if (propertyDefinitionEither.isRight()) {
return Either.right(propertyDefinitionEither.right().value());
}
-
properties.put(propertyName, propertyDefinitionEither.left().value());
}
-
return Either.left(properties);
} catch (ParseException e) {
log.info("Property conetnt is invalid - {}", data);
@@ -294,9 +277,7 @@ public class BeGenericServlet extends BasicServlet {
}
protected boolean isPropertyNameValid(String propertyName) {
- return Objects.nonNull(propertyName)
- && propertyName.matches(PROPERTY_NAME_REGEX);
-
+ return Objects.nonNull(propertyName) && propertyName.matches(PROPERTY_NAME_REGEX);
}
private Either<PropertyDefinition, ActionStatus> getPropertyDefinitionFromJson(String componentId, String propertyName, JSONObject value) {
@@ -308,7 +289,6 @@ public class BeGenericServlet extends BasicServlet {
PropertyDefinition propertyDefinition = convertJsonToObject.left().value();
String uniqueId = UniqueIdBuilder.buildPropertyUniqueId(componentId, propertyName);
propertyDefinition.setUniqueId(uniqueId);
-
return Either.left(propertyDefinition);
}
@@ -321,36 +301,29 @@ public class BeGenericServlet extends BasicServlet {
InputDefinition inputDefinition = convertJsonToObject.left().value();
String uniqueId = UniqueIdBuilder.buildPropertyUniqueId(componentId, inputName);
inputDefinition.setUniqueId(uniqueId);
-
return Either.left(inputDefinition);
}
protected Either<Map<String, PropertyDefinition>, ActionStatus> getPropertiesListForUpdate(String data) {
-
Map<String, PropertyDefinition> properties = new HashMap<>();
JSONParser parser = new JSONParser();
JSONArray jsonArray;
-
try {
jsonArray = (JSONArray) parser.parse(data);
for (Object jsonElement : jsonArray) {
String propertyAsString = jsonElement.toString();
Either<PropertyDefinition, ActionStatus> convertJsonToObject = convertJsonToObject(propertyAsString, PropertyDefinition.class);
-
if (convertJsonToObject.isRight()) {
return Either.right(convertJsonToObject.right().value());
}
-
PropertyDefinition propertyDefinition = convertJsonToObject.left().value();
properties.put(propertyDefinition.getName(), propertyDefinition);
}
-
return Either.left(properties);
} catch (Exception e) {
log.info("Property content is invalid - {}", data);
return Either.right(ActionStatus.INVALID_CONTENT);
}
-
}
protected String propertyToJson(Map.Entry<String, PropertyDefinition> property) {
@@ -364,27 +337,24 @@ public class BeGenericServlet extends BasicServlet {
}
private JSONObject getPropertyDefinitionJSONObject(PropertyDefinition propertyDefinition) {
-
Either<String, ActionStatus> either = convertObjectToJson(propertyDefinition);
if (either.isRight()) {
return new JSONObject();
}
try {
- return (JSONObject) new JSONParser().parse(either.left().value());
+ return (JSONObject) new JSONParser().parse(either.left().value());
} catch (ParseException e) {
log.info("failed to convert input to json");
log.error("failed to convert to json", e);
return new JSONObject();
}
-
}
- protected <T> Either<T, ActionStatus> convertJsonToObject(String data, Class<T> clazz) {
+ protected <T> Either<T, ActionStatus> convertJsonToObject(String data, Class<T> clazz) {
T t = null;
Type constraintType = new TypeToken<PropertyConstraint>() {
}.getType();
- Gson
- gson = new GsonBuilder().registerTypeAdapter(constraintType, new PropertyOperation.PropertyConstraintDeserialiser()).create();
+ Gson gson = new GsonBuilder().registerTypeAdapter(constraintType, new PropertyOperation.PropertyConstraintDeserialiser()).create();
try {
log.trace("convert json to object. json=\n {}", data);
t = gson.fromJson(data, clazz);
@@ -419,7 +389,6 @@ public class BeGenericServlet extends BasicServlet {
log.debug("failed to convert fto json", e);
return Either.right(ActionStatus.INVALID_CONTENT);
}
-
}
private OutputsBusinessLogic getOutputBL(final ServletContext context) {
@@ -438,46 +407,38 @@ public class BeGenericServlet extends BasicServlet {
return ((WebAppContextWrapper) context.getAttribute(Constants.WEB_APPLICATION_CONTEXT_WRAPPER_ATTR)).getWebAppContext(context);
}
- protected <T> Either<T, ResponseFormat> parseToComponentInstanceMap(final String componentJson,
- final User user,
- final ComponentTypeEnum componentType,
- final Class<T> clazz) {
+ protected <T> Either<T, ResponseFormat> parseToComponentInstanceMap(final String componentJson, final User user,
+ final ComponentTypeEnum componentType, final Class<T> clazz) {
return getComponentsUtils()
.convertJsonToObjectUsingObjectMapper(componentJson, user, clazz, AuditingActionEnum.CREATE_RESOURCE, componentType);
}
- protected Response declareProperties(String userId, String componentId, String componentType,
- String componentInstInputsMapObj, DeclarationTypeEnum typeEnum, HttpServletRequest request) {
+ protected Response declareProperties(String userId, String componentId, String componentType, String componentInstInputsMapObj,
+ DeclarationTypeEnum typeEnum, HttpServletRequest request) {
ServletContext context = request.getSession().getServletContext();
String url = request.getMethod() + " " + request.getRequestURI();
log.debug("(get) Start handle request of {}", url);
-
try {
BaseBusinessLogic businessLogic = getBlForDeclaration(typeEnum, context);
-
// get modifier id
User modifier = new User();
modifier.setUserId(userId);
log.debug("modifier id is {}", userId);
ComponentTypeEnum componentTypeEnum = ComponentTypeEnum.findByParamName(componentType);
- Either<ComponentInstInputsMap, ResponseFormat> componentInstInputsMapRes = parseToComponentInstanceMap(
- componentInstInputsMapObj, modifier, componentTypeEnum, ComponentInstInputsMap.class);
+ Either<ComponentInstInputsMap, ResponseFormat> componentInstInputsMapRes = parseToComponentInstanceMap(componentInstInputsMapObj,
+ modifier, componentTypeEnum, ComponentInstInputsMap.class);
if (componentInstInputsMapRes.isRight()) {
log.debug("failed to parse componentInstInputsMap");
return buildErrorResponse(componentInstInputsMapRes.right().value());
}
-
Either<List<ToscaDataDefinition>, ResponseFormat> propertiesAfterDeclaration = businessLogic
- .declareProperties(userId, componentId,
- componentTypeEnum,
- componentInstInputsMapRes.left().value());
+ .declareProperties(userId, componentId, componentTypeEnum, componentInstInputsMapRes.left().value());
if (propertiesAfterDeclaration.isRight()) {
log.debug("failed to create inputs for service: {}", componentId);
return buildErrorResponse(propertiesAfterDeclaration.right().value());
}
Object properties = RepresentationUtils.toRepresentation(propertiesAfterDeclaration.left().value());
return buildOkResponse(getComponentsUtils().getResponseFormat(ActionStatus.OK), properties);
-
} catch (Exception e) {
BeEcompErrorManager.getInstance().logBeRestApiGeneralError("Create inputs for service with id: " + componentId);
log.debug("Properties declaration failed with exception", e);
@@ -485,8 +446,7 @@ public class BeGenericServlet extends BasicServlet {
}
}
- public BaseBusinessLogic getBlForDeclaration(final DeclarationTypeEnum typeEnum,
- final ServletContext context) {
+ public BaseBusinessLogic getBlForDeclaration(final DeclarationTypeEnum typeEnum, final ServletContext context) {
switch (typeEnum) {
case OUTPUT:
return getOutputBL(context);
@@ -505,28 +465,21 @@ public class BeGenericServlet extends BasicServlet {
try {
Map<String, InputDefinition> inputs = new HashMap<>();
root = (JSONObject) parser.parse(data);
-
Set entrySet = root.entrySet();
Iterator iterator = entrySet.iterator();
while (iterator.hasNext()) {
Entry next = (Entry) iterator.next();
String inputName = (String) next.getKey();
-
- if(!isInputNameValid(inputName)) {
+ if (!isInputNameValid(inputName)) {
return Either.right(ActionStatus.INVALID_INPUT_NAME);
}
-
JSONObject value = (JSONObject) next.getValue();
- Either<InputDefinition, ActionStatus> inputDefinitionEither =
- getInputDefinitionFromJson(componentId, inputName, value);
-
- if(inputDefinitionEither.isRight()) {
+ Either<InputDefinition, ActionStatus> inputDefinitionEither = getInputDefinitionFromJson(componentId, inputName, value);
+ if (inputDefinitionEither.isRight()) {
return Either.right(inputDefinitionEither.right().value());
}
-
inputs.put(inputName, inputDefinitionEither.left().value());
}
-
return Either.left(inputs);
} catch (ParseException e) {
log.warn("Input content is invalid - {}", data, e);
@@ -535,8 +488,6 @@ public class BeGenericServlet extends BasicServlet {
}
protected boolean isInputNameValid(String inputName) {
- return Objects.nonNull(inputName)
- && inputName.matches(PROPERTY_NAME_REGEX);
-
+ return Objects.nonNull(inputName) && inputName.matches(PROPERTY_NAME_REGEX);
}
}