Catalog alignment
[sdc.git] / catalog-be / src / main / java / org / openecomp / sdc / be / servlets / ServiceConsumptionServlet.java
index 3ffef17..d438784 100644 (file)
-/*\r
- * Copyright © 2016-2018 European Support Limited\r
- *\r
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except\r
- * in compliance with the License. You may obtain a copy of the License at\r
- *\r
- * http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software distributed under the License\r
- * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express\r
- * or implied. See the License for the specific language governing permissions and limitations under\r
- * the License.\r
- */\r
-\r
-package org.openecomp.sdc.be.servlets;\r
-\r
-import static org.openecomp.sdc.be.tosca.utils.InterfacesOperationsToscaUtil.SELF;\r
-import java.util.ArrayList;\r
-import java.util.HashMap;\r
-import java.util.Iterator;\r
-import java.util.List;\r
-import java.util.Map;\r
-import java.util.Map.Entry;\r
-import java.util.stream.Collectors;\r
-import javax.inject.Inject;\r
-import javax.inject.Singleton;\r
-import javax.servlet.ServletContext;\r
-import javax.servlet.http.HttpServletRequest;\r
-import javax.ws.rs.Consumes;\r
-import javax.ws.rs.GET;\r
-import javax.ws.rs.HeaderParam;\r
-import javax.ws.rs.POST;\r
-import javax.ws.rs.Path;\r
-import javax.ws.rs.PathParam;\r
-import javax.ws.rs.Produces;\r
-import javax.ws.rs.core.Context;\r
-import javax.ws.rs.core.MediaType;\r
-import javax.ws.rs.core.Response;\r
-import org.apache.commons.lang3.StringUtils;\r
-import org.json.simple.JSONArray;\r
-import org.json.simple.parser.JSONParser;\r
-import org.json.simple.parser.ParseException;\r
-import org.openecomp.sdc.be.components.impl.InterfaceOperationBusinessLogic;\r
-import org.openecomp.sdc.be.components.impl.ServiceBusinessLogic;\r
-import org.openecomp.sdc.be.config.BeEcompErrorManager;\r
-import org.openecomp.sdc.be.dao.api.ActionStatus;\r
-import org.openecomp.sdc.be.datatypes.elements.OperationInputDefinition;\r
-import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;\r
-import org.openecomp.sdc.be.impl.ComponentsUtils;\r
-import org.openecomp.sdc.be.model.Operation;\r
-import org.openecomp.sdc.be.model.OperationInput;\r
-import org.openecomp.sdc.be.model.User;\r
-import org.openecomp.sdc.be.model.tosca.ToscaFunctions;\r
-import org.openecomp.sdc.be.resources.data.auditing.AuditingActionEnum;\r
-import org.openecomp.sdc.be.types.ServiceConsumptionData;\r
-import org.openecomp.sdc.be.types.ServiceConsumptionSource;\r
-import org.openecomp.sdc.be.user.UserBusinessLogic;\r
-import org.openecomp.sdc.common.api.Constants;\r
-import org.openecomp.sdc.exception.ResponseFormat;\r
-import org.slf4j.Logger;\r
-import org.slf4j.LoggerFactory;\r
-import com.google.gson.Gson;\r
-import com.google.gson.JsonParseException;\r
-import com.jcabi.aspects.Loggable;\r
-import fj.data.Either;\r
-import io.swagger.v3.oas.annotations.OpenAPIDefinition;\r
-import io.swagger.v3.oas.annotations.Parameter;\r
-import io.swagger.v3.oas.annotations.info.Info;\r
-import io.swagger.v3.oas.annotations.media.ArraySchema;\r
-import io.swagger.v3.oas.annotations.media.Content;\r
-import io.swagger.v3.oas.annotations.media.Schema;\r
-import io.swagger.v3.oas.annotations.responses.ApiResponse;\r
-import io.swagger.v3.oas.annotations.responses.ApiResponses;\r
-\r
-@Loggable(prepend = true, value = Loggable.DEBUG, trim = false)\r
-@Path("/v1/catalog")\r
-@OpenAPIDefinition(info = @Info(title = "Service Consumption Servlet", description = "Service Consumption Servlet"))\r
-@Singleton\r
-public class ServiceConsumptionServlet extends BeGenericServlet {\r
-\r
-    private static final Logger log = LoggerFactory.getLogger(ServiceConsumptionServlet.class);\r
-    private final InterfaceOperationBusinessLogic interfaceOperationBusinessLogic;\r
-    private final ServiceBusinessLogic serviceBusinessLogic;\r
-\r
-    @Inject\r
-    public ServiceConsumptionServlet(UserBusinessLogic userBusinessLogic, ComponentsUtils componentsUtils,\r
-            InterfaceOperationBusinessLogic interfaceOperationBusinessLogic,\r
-            ServiceBusinessLogic serviceBusinessLogic) {\r
-        super(userBusinessLogic, componentsUtils);\r
-        this.interfaceOperationBusinessLogic = interfaceOperationBusinessLogic;\r
-        this.serviceBusinessLogic = serviceBusinessLogic;\r
-    }\r
-\r
-    @POST\r
-    @Path("/services/{serviceId}/consumption/{serviceInstanceId}")\r
-    @Consumes(MediaType.APPLICATION_JSON)\r
-    @Produces(MediaType.APPLICATION_JSON)\r
-    @io.swagger.v3.oas.annotations.Operation(description = "Service consumption on operation", method = "POST",\r
-            summary = "Returns consumption data", responses = @ApiResponse(\r
-                    content = @Content(array = @ArraySchema(schema = @Schema(implementation = Response.class)))))\r
-    @ApiResponses(value = {@ApiResponse(responseCode = "201", description = "Service property created"),\r
-            @ApiResponse(responseCode = "403", description = "Restricted operation"),\r
-            @ApiResponse(responseCode = "400", description = "Invalid content / Missing content"),\r
-            @ApiResponse(responseCode = "409", description = "Service property already exist")})\r
-    public Response addInputToServiceOperation(@PathParam("serviceId") final String serviceId,\r
-            @PathParam("serviceInstanceId") final String serviceInstanceId,\r
-            @Parameter(description = "Service Consumption Data", required = true) String data,\r
-            @Context final HttpServletRequest request, @HeaderParam(value = Constants.USER_ID_HEADER) String userId) {\r
-        ServletContext context = request.getSession().getServletContext();\r
-\r
-        String url = request.getMethod() + " " + request.getRequestURI();\r
-        log.debug("Start handle request of {} modifier id is {} data is {}", url, userId, data);\r
-        User modifier = new User();\r
-        modifier.setUserId(userId);\r
-\r
-        try {\r
-\r
-            Either<Map<String, List<ServiceConsumptionData>>, ResponseFormat> dataFromJson =\r
-                    getServiceConsumptionData(data, modifier);\r
-            if (dataFromJson.isRight()) {\r
-                return buildErrorResponse(dataFromJson.right().value());\r
-            }\r
-\r
-            Map<String, List<ServiceConsumptionData>> serviceConsumptionDataMap = dataFromJson.left().value();\r
-\r
-            for (Entry<String, List<ServiceConsumptionData>> consumptionEntry : serviceConsumptionDataMap.entrySet()) {\r
-                List<ServiceConsumptionData> consumptionList = consumptionEntry.getValue();\r
-                Either<List<Operation>, ResponseFormat> operationEither =\r
-                        serviceBusinessLogic.addServiceConsumptionData(serviceId, serviceInstanceId,\r
-                                consumptionEntry.getKey(), consumptionList, userId);\r
-                if (operationEither.isRight()) {\r
-                    return buildErrorResponse(operationEither.right().value());\r
-                }\r
-            }\r
-\r
-            return buildOkResponse(serviceConsumptionDataMap);\r
-\r
-        } catch (Exception e) {\r
-            BeEcompErrorManager.getInstance().logBeRestApiGeneralError("Create Operation Inputs");\r
-            log.debug("Create Operation Inputs failed with exception", e);\r
-            ResponseFormat responseFormat = getComponentsUtils().getResponseFormat(ActionStatus.GENERAL_ERROR);\r
-            return buildErrorResponse(responseFormat);\r
-        }\r
-\r
-    }\r
-\r
-    @GET\r
-    @Path("/services/{serviceId}/consumption/{serviceInstanceId}/interfaces/{interfaceId}/operations/{operationId}/inputs")\r
-    @Consumes(MediaType.APPLICATION_JSON)\r
-    @Produces(MediaType.APPLICATION_JSON)\r
-    public Response getInputsListOfOperation(@PathParam("serviceId") final String serviceId,\r
-            @PathParam("serviceInstanceId") final String serviceInstanceId,\r
-            @PathParam("interfaceId") final String interfaceId, @PathParam("operationId") final String operationId,\r
-            @Context final HttpServletRequest request, @HeaderParam(value = Constants.USER_ID_HEADER) String userId) {\r
-\r
-        String url = request.getMethod() + " " + request.getRequestURI();\r
-        log.debug("Start handle request of {} modifier id is {}", url, userId);\r
-        User user = new User();\r
-        user.setUserId(userId);\r
-\r
-        try {\r
-            Either<List<OperationInputDefinition>, ResponseFormat> inputsEither = interfaceOperationBusinessLogic\r
-                    .getInputsListForOperation(serviceId, serviceInstanceId, interfaceId, operationId, user);\r
-\r
-            if (inputsEither.isRight()) {\r
-                return buildErrorResponse(inputsEither.right().value());\r
-            }\r
-\r
-            List<OperationInputDefinition> inputs = inputsEither.left().value();\r
-            return buildOkResponse(updateOperationInputListForUi(inputs, interfaceOperationBusinessLogic));\r
-        } catch (Exception e) {\r
-            BeEcompErrorManager.getInstance().logBeRestApiGeneralError("Get Operation Inputs");\r
-            log.debug("Get Operation Inputs failed with exception", e);\r
-            ResponseFormat responseFormat = getComponentsUtils().getResponseFormat(ActionStatus.GENERAL_ERROR);\r
-            return buildErrorResponse(responseFormat);\r
-        }\r
-    }\r
-\r
-    private List<OperationInput> updateOperationInputListForUi(List<OperationInputDefinition> inputsList,\r
-            InterfaceOperationBusinessLogic interfaceOperationBL) {\r
-        List<OperationInput> operationInputs = new ArrayList<>();\r
-        for (OperationInputDefinition input : inputsList) {\r
-\r
-            String value = input.getValue();\r
-\r
-            // Additional UI mapping needed for other sources\r
-            if (StringUtils.isNotBlank(value)\r
-                    && !ServiceConsumptionSource.STATIC.getSource().equals(input.getSource())) {\r
-                uiMappingForOtherSources(value, input);\r
-            }\r
-\r
-            // Add Constraint for UI\r
-            OperationInput operationInput = new OperationInput(input);\r
-            operationInput.setConstraints(interfaceOperationBL.setInputConstraint(input));\r
-            operationInputs.add(operationInput);\r
-        }\r
-\r
-        return operationInputs;\r
-    }\r
-\r
-    private void uiMappingForOtherSources(String value, OperationInputDefinition input) {\r
-        try {\r
-            Map<String, Object> valueAsMap = (new Gson()).fromJson(value, Map.class);\r
-            String toscaFunction = valueAsMap.keySet().iterator().next();\r
-            Object consumptionValueName = valueAsMap.values().iterator().next();\r
-            if (consumptionValueName instanceof List) {\r
-                List<Object> toscaFunctionList = (List<Object>) consumptionValueName;\r
-                String consumptionInputValue = null;\r
-                if (ToscaFunctions.GET_PROPERTY.getFunctionName().equals(toscaFunction)) {\r
-                    String propertyValue = toscaFunctionList.stream().map(Object::toString)\r
-                            .filter(val -> !val.equals(SELF)).collect(Collectors.joining("_"));\r
-                    consumptionInputValue = String.valueOf(propertyValue);\r
-                } else if (ToscaFunctions.GET_OPERATION_OUTPUT.getFunctionName().equals(toscaFunction)) {\r
-                    // Return full output name\r
-                    consumptionInputValue =\r
-                            toscaFunctionList.get(1) + "." + toscaFunctionList.get(2) + "." + toscaFunctionList.get(3);\r
-                }\r
-                input.setValue(consumptionInputValue);\r
-            } else {\r
-                input.setValue(String.valueOf(consumptionValueName));\r
-            }\r
-        } catch (JsonParseException ex) {\r
-            log.info("This means it is static value for which no changes are needed");\r
-        }\r
-    }\r
-\r
-    private Either<Map<String, List<ServiceConsumptionData>>, ResponseFormat> getServiceConsumptionData(String data,\r
-            User user) {\r
-        JSONParser parser = new JSONParser();\r
-        Map<String, List<ServiceConsumptionData>> serviceConsumptionDataMap = new HashMap<>();\r
-\r
-        try {\r
-            JSONArray operationsArray = (JSONArray) parser.parse(data);\r
-            Iterator iterator = operationsArray.iterator();\r
-            while (iterator.hasNext()) {\r
-                Map next = (Map) iterator.next();\r
-                Entry consumptionEntry = (Entry) next.entrySet().iterator().next();\r
-                String operationId = (String) consumptionEntry.getKey();\r
-                Object value = consumptionEntry.getValue();\r
-\r
-                JSONArray inputsArray = (JSONArray) parser.parse(value.toString());\r
-                serviceConsumptionDataMap.putIfAbsent(operationId, new ArrayList<>());\r
-                for (Object consumptionObject : inputsArray) {\r
-                    Either<ServiceConsumptionData, ResponseFormat> serviceDataEither =\r
-                            getComponentsUtils().convertJsonToObjectUsingObjectMapper(consumptionObject.toString(),\r
-                                    user, ServiceConsumptionData.class, AuditingActionEnum.CREATE_RESOURCE,\r
-                                    ComponentTypeEnum.SERVICE);\r
-                    if (serviceDataEither.isRight()) {\r
-                        return Either.right(serviceDataEither.right().value());\r
-                    }\r
-\r
-                    serviceConsumptionDataMap.get(operationId).add(serviceDataEither.left().value());\r
-                }\r
-            }\r
-        } catch (ParseException e) {\r
-            log.info("Conetnt is invalid - {}", data);\r
-            return Either.right(getComponentsUtils().getResponseFormat(ActionStatus.INVALID_CONTENT));\r
-        }\r
-        return Either.left(serviceConsumptionDataMap);\r
-    }\r
-}\r
+/*
+ * 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.sdc.be.servlets;
+
+import com.google.gson.Gson;
+import com.google.gson.JsonParseException;
+import com.jcabi.aspects.Loggable;
+import fj.data.Either;
+import io.swagger.v3.oas.annotations.OpenAPIDefinition;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.info.Info;
+import io.swagger.v3.oas.annotations.media.ArraySchema;
+import io.swagger.v3.oas.annotations.media.Content;
+import io.swagger.v3.oas.annotations.media.Schema;
+import io.swagger.v3.oas.annotations.responses.ApiResponse;
+import io.swagger.v3.oas.annotations.responses.ApiResponses;
+import org.apache.commons.lang3.StringUtils;
+import org.json.simple.JSONArray;
+import org.json.simple.parser.JSONParser;
+import org.json.simple.parser.ParseException;
+import org.openecomp.sdc.be.components.impl.InterfaceOperationBusinessLogic;
+import org.openecomp.sdc.be.components.impl.ServiceBusinessLogic;
+import org.openecomp.sdc.be.components.impl.aaf.AafPermission;
+import org.openecomp.sdc.be.components.impl.aaf.PermissionAllowed;
+import org.openecomp.sdc.be.config.BeEcompErrorManager;
+import org.openecomp.sdc.be.dao.api.ActionStatus;
+import org.openecomp.sdc.be.datatypes.elements.OperationInputDefinition;
+import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
+import org.openecomp.sdc.be.impl.ComponentsUtils;
+import org.openecomp.sdc.be.model.Operation;
+import org.openecomp.sdc.be.model.OperationInput;
+import org.openecomp.sdc.be.model.User;
+import org.openecomp.sdc.be.model.tosca.ToscaFunctions;
+import org.openecomp.sdc.be.resources.data.auditing.AuditingActionEnum;
+import org.openecomp.sdc.be.types.ServiceConsumptionData;
+import org.openecomp.sdc.be.types.ServiceConsumptionSource;
+import org.openecomp.sdc.be.user.UserBusinessLogic;
+import org.openecomp.sdc.common.api.Constants;
+import org.openecomp.sdc.exception.ResponseFormat;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.inject.Inject;
+import javax.inject.Singleton;
+import javax.servlet.http.HttpServletRequest;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+import javax.ws.rs.HeaderParam;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.stream.Collectors;
+
+import static org.openecomp.sdc.be.tosca.utils.InterfacesOperationsToscaUtil.SELF;
+
+@Loggable(prepend = true, value = Loggable.DEBUG, trim = false)
+@Path("/v1/catalog")
+@OpenAPIDefinition(info = @Info(title = "Service Consumption Servlet", description = "Service Consumption Servlet"))
+@Singleton
+public class ServiceConsumptionServlet extends BeGenericServlet {
+
+    private static final Logger log = LoggerFactory.getLogger(ServiceConsumptionServlet.class);
+    private final InterfaceOperationBusinessLogic interfaceOperationBusinessLogic;
+    private final ServiceBusinessLogic serviceBusinessLogic;
+
+    @Inject
+    public ServiceConsumptionServlet(UserBusinessLogic userBusinessLogic, ComponentsUtils componentsUtils,
+            InterfaceOperationBusinessLogic interfaceOperationBusinessLogic,
+            ServiceBusinessLogic serviceBusinessLogic) {
+        super(userBusinessLogic, componentsUtils);
+        this.interfaceOperationBusinessLogic = interfaceOperationBusinessLogic;
+        this.serviceBusinessLogic = serviceBusinessLogic;
+    }
+
+    @POST
+    @Path("/services/{serviceId}/consumption/{serviceInstanceId}")
+    @Consumes(MediaType.APPLICATION_JSON)
+    @Produces(MediaType.APPLICATION_JSON)
+    @io.swagger.v3.oas.annotations.Operation(description = "Service consumption on operation", method = "POST",
+            summary = "Returns consumption data", responses = @ApiResponse(
+                    content = @Content(array = @ArraySchema(schema = @Schema(implementation = Response.class)))))
+    @ApiResponses(value = {@ApiResponse(responseCode = "201", description = "Service property created"),
+            @ApiResponse(responseCode = "403", description = "Restricted operation"),
+            @ApiResponse(responseCode = "400", description = "Invalid content / Missing content"),
+            @ApiResponse(responseCode = "409", description = "Service property already exist")})
+    @PermissionAllowed(AafPermission.PermNames.INTERNAL_ALL_VALUE)
+    public Response addInputToServiceOperation(@PathParam("serviceId") final String serviceId,
+            @PathParam("serviceInstanceId") final String serviceInstanceId,
+            @Parameter(description = "Service Consumption Data", required = true) String data,
+            @Context final HttpServletRequest request, @HeaderParam(value = Constants.USER_ID_HEADER) String userId) {
+
+    String url = request.getMethod() + " " + request.getRequestURI();
+    log.debug("Start handle request of {} modifier id is {} data is {}", url, userId, data);
+    User modifier = new User();
+    modifier.setUserId(userId);
+
+    try {
+
+      Either<Map<String, List<ServiceConsumptionData>>, ResponseFormat> dataFromJson =
+          getServiceConsumptionData(data, modifier);
+      if(dataFromJson.isRight()) {
+        return buildErrorResponse(dataFromJson.right().value());
+      }
+
+      Map<String, List<ServiceConsumptionData>> serviceConsumptionDataMap = dataFromJson.left().value();
+
+      for(Entry<String, List<ServiceConsumptionData>> consumptionEntry : serviceConsumptionDataMap.entrySet()) {
+        List<ServiceConsumptionData> consumptionList = consumptionEntry.getValue();
+        Either<List<Operation>, ResponseFormat> operationEither =
+            serviceBusinessLogic.addServiceConsumptionData(serviceId, serviceInstanceId,
+                consumptionEntry.getKey(), consumptionList, userId);
+        if (operationEither.isRight()) {
+          return buildErrorResponse(operationEither.right().value());
+        }
+      }
+
+      return buildOkResponse(serviceConsumptionDataMap);
+
+    }
+    catch (Exception e) {
+      BeEcompErrorManager.getInstance().logBeRestApiGeneralError("Create Operation Inputs");
+      log.debug("Create Operation Inputs failed with exception", e);
+      ResponseFormat responseFormat = getComponentsUtils().getResponseFormat(ActionStatus.GENERAL_ERROR);
+      return buildErrorResponse(responseFormat);
+    }
+
+  }
+
+    @GET
+    @Path("/services/{serviceId}/consumption/{serviceInstanceId}/interfaces/{interfaceId}/operations/{operationId}/inputs")
+    @Consumes(MediaType.APPLICATION_JSON)
+    @Produces(MediaType.APPLICATION_JSON)
+    @PermissionAllowed(AafPermission.PermNames.INTERNAL_ALL_VALUE)
+    public Response getInputsListOfOperation(@PathParam("serviceId") final String serviceId,
+            @PathParam("serviceInstanceId") final String serviceInstanceId,
+            @PathParam("interfaceId") final String interfaceId, @PathParam("operationId") final String operationId,
+            @Context final HttpServletRequest request, @HeaderParam(value = Constants.USER_ID_HEADER) String userId) {
+
+    String url = request.getMethod() + " " + request.getRequestURI();
+    log.debug("Start handle request of {} modifier id is {}", url, userId);
+    User user = new User();
+    user.setUserId(userId);
+
+    try {
+      Either<List<OperationInputDefinition>, ResponseFormat> inputsEither =
+          interfaceOperationBusinessLogic.getInputsListForOperation(serviceId, serviceInstanceId, interfaceId, operationId, user);
+
+      if(inputsEither.isRight()) {
+        return buildErrorResponse(inputsEither.right().value());
+      }
+
+      List<OperationInputDefinition> inputs = inputsEither.left().value();
+               return buildOkResponse(updateOperationInputListForUi(inputs, interfaceOperationBusinessLogic));
+    }
+    catch (Exception e) {
+      BeEcompErrorManager.getInstance().logBeRestApiGeneralError("Get Operation Inputs");
+      log.debug("Get Operation Inputs failed with exception", e);
+      ResponseFormat responseFormat = getComponentsUtils().getResponseFormat(ActionStatus.GENERAL_ERROR);
+      return buildErrorResponse(responseFormat);
+    }
+  }
+
+       private List<OperationInput> updateOperationInputListForUi(List<OperationInputDefinition> inputsList,
+                                                                                                                          InterfaceOperationBusinessLogic interfaceOperationBL) {
+               List<OperationInput> operationInputs = new ArrayList<>();
+               for(OperationInputDefinition input : inputsList) {
+
+                       String value = input.getValue();
+
+                       // Additional UI mapping needed for other sources
+                       if (StringUtils.isNotBlank(value)
+                                       && !ServiceConsumptionSource.STATIC.getSource().equals(input.getSource())) {
+                               uiMappingForOtherSources(value, input);
+                       }
+
+                       // Add Constraint for UI
+                       OperationInput operationInput = new OperationInput(input);
+                       operationInput.setConstraints(interfaceOperationBL.setInputConstraint(input));
+                       operationInputs.add(operationInput);
+               }
+
+               return operationInputs;
+       }
+
+       private void uiMappingForOtherSources(String value, OperationInputDefinition input) {
+               try {
+                       Map<String, Object> valueAsMap = (new Gson()).fromJson(value, Map.class);
+                       String toscaFunction = valueAsMap.keySet().iterator().next();
+                       Object consumptionValueName = valueAsMap.values().iterator().next();
+                       if(consumptionValueName instanceof List) {
+                               List<Object> toscaFunctionList = (List<Object>) consumptionValueName;
+                               String consumptionInputValue = null;
+                               if (ToscaFunctions.GET_PROPERTY.getFunctionName().equals(toscaFunction)) {
+                                       String propertyValue = toscaFunctionList.stream()
+                                                       .map(Object::toString)
+                                                       .filter(val -> !val.equals(SELF))
+                                                       .collect(Collectors.joining("_"));
+                                       consumptionInputValue = String.valueOf(propertyValue);
+                               } else if (ToscaFunctions.GET_OPERATION_OUTPUT.getFunctionName().equals(toscaFunction)) {
+                                       //Return full output name
+                                       consumptionInputValue =
+                                                       toscaFunctionList.get(1) + "." + toscaFunctionList.get(2) + "." +toscaFunctionList.get(3);
+                               }
+                               input.setValue(consumptionInputValue);
+                       } else {
+                               input.setValue(String.valueOf(consumptionValueName));
+                       }
+               }
+               catch(JsonParseException ex){
+                       log.info("This means it is static value for which no changes are needed");
+               }
+       }
+
+  private Either<Map<String, List<ServiceConsumptionData>>, ResponseFormat> getServiceConsumptionData(String data,
+                                                                                                      User user) {
+    JSONParser parser = new JSONParser();
+    Map<String, List<ServiceConsumptionData>> serviceConsumptionDataMap = new HashMap<>();
+
+    try {
+      JSONArray operationsArray = (JSONArray) parser.parse(data);
+      Iterator iterator = operationsArray.iterator();
+      while (iterator.hasNext()) {
+        Map next = (Map) iterator.next();
+        Entry consumptionEntry = (Entry) next.entrySet().iterator().next();
+        String operationId = (String) consumptionEntry.getKey();
+        Object value = consumptionEntry.getValue();
+
+        JSONArray inputsArray = (JSONArray) parser.parse(value.toString());
+        serviceConsumptionDataMap.putIfAbsent(operationId, new ArrayList<>());
+        for(Object consumptionObject : inputsArray) {
+          Either<ServiceConsumptionData, ResponseFormat> serviceDataEither =
+              getComponentsUtils()
+                  .convertJsonToObjectUsingObjectMapper(consumptionObject.toString(), user, ServiceConsumptionData
+                      .class, AuditingActionEnum.CREATE_RESOURCE, ComponentTypeEnum.SERVICE);
+          if(serviceDataEither.isRight()) {
+            return Either.right(serviceDataEither.right().value());
+          }
+
+          serviceConsumptionDataMap.get(operationId).add(serviceDataEither.left().value());
+        }
+      }
+    }
+    catch (ParseException e) {
+      log.info("Conetnt is invalid - {}", data);
+      return Either.right(getComponentsUtils().getResponseFormat(ActionStatus.INVALID_CONTENT));
+    }
+    return Either.left(serviceConsumptionDataMap);
+  }
+}