2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
20 package org.openecomp.sdc.be.servlets;
22 import com.jcabi.aspects.Loggable;
23 import fj.data.Either;
24 import io.swagger.v3.oas.annotations.Operation;
25 import io.swagger.v3.oas.annotations.Parameter;
26 import io.swagger.v3.oas.annotations.media.ArraySchema;
27 import io.swagger.v3.oas.annotations.media.Content;
28 import io.swagger.v3.oas.annotations.media.Schema;
29 import io.swagger.v3.oas.annotations.responses.ApiResponse;
30 import io.swagger.v3.oas.annotations.servers.Server;
31 import io.swagger.v3.oas.annotations.servers.Servers;
32 import io.swagger.v3.oas.annotations.tags.Tag;
33 import io.swagger.v3.oas.annotations.tags.Tags;
34 import javax.inject.Inject;
35 import javax.servlet.ServletContext;
36 import javax.servlet.http.HttpServletRequest;
37 import javax.ws.rs.Consumes;
38 import javax.ws.rs.DELETE;
39 import javax.ws.rs.GET;
40 import javax.ws.rs.HeaderParam;
41 import javax.ws.rs.POST;
42 import javax.ws.rs.PUT;
43 import javax.ws.rs.Path;
44 import javax.ws.rs.PathParam;
45 import javax.ws.rs.Produces;
46 import javax.ws.rs.core.Context;
47 import javax.ws.rs.core.MediaType;
48 import javax.ws.rs.core.Response;
49 import org.openecomp.sdc.be.components.impl.AdditionalInformationBusinessLogic;
50 import org.openecomp.sdc.be.components.impl.aaf.AafPermission;
51 import org.openecomp.sdc.be.components.impl.aaf.PermissionAllowed;
52 import org.openecomp.sdc.be.config.BeEcompErrorManager;
53 import org.openecomp.sdc.be.dao.api.ActionStatus;
54 import org.openecomp.sdc.be.datatypes.elements.AdditionalInfoParameterInfo;
55 import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
56 import org.openecomp.sdc.be.impl.ComponentsUtils;
57 import org.openecomp.sdc.be.model.AdditionalInformationDefinition;
58 import org.openecomp.sdc.common.api.Constants;
59 import org.openecomp.sdc.common.log.wrappers.Logger;
60 import org.openecomp.sdc.exception.ResponseFormat;
61 import org.springframework.stereotype.Controller;
63 @Loggable(prepend = true, value = Loggable.DEBUG, trim = false)
65 @Tags({@Tag(name = "SDCE-2 APIs")})
66 @Servers({@Server(url = "/sdc2/rest")})
68 public class AdditionalInformationServlet extends BeGenericServlet {
70 private static final Logger log = Logger.getLogger(AdditionalInformationServlet.class);
71 private static final String START_HANDLE_REQUEST_OF = "Start handle request of {}";
72 private static final String MODIFIER_ID_IS = "modifier id is {}";
73 private static final String FAILED_TO_UPDATE_ADDITIONAL_INFO_PROPERTY = "Failed to update additional information property. Reason - {}";
74 private final AdditionalInformationBusinessLogic businessLogic;
77 public AdditionalInformationServlet(ComponentsUtils componentsUtils,
78 AdditionalInformationBusinessLogic businessLogic) {
79 super(componentsUtils);
80 this.businessLogic = businessLogic;
91 @Path("/resources/{resourceId}/additionalinfo")
92 @Consumes(MediaType.APPLICATION_JSON)
93 @Produces(MediaType.APPLICATION_JSON)
94 @Operation(description = "Create Additional Information Label and Value", method = "POST", summary = "Returns created Additional Inforamtion property", responses = {
95 @ApiResponse(content = @Content(array = @ArraySchema(schema = @Schema(implementation = Response.class)))),
96 @ApiResponse(responseCode = "201", description = "Additional information created"),
97 @ApiResponse(responseCode = "403", description = "Restricted operation"),
98 @ApiResponse(responseCode = "400", description = "Invalid content / Missing content"),
99 @ApiResponse(responseCode = "409", description = "Additional information key already exist")})
100 @PermissionAllowed(AafPermission.PermNames.INTERNAL_ALL_VALUE)
101 public Response createResourceAdditionalInformationLabel(
102 @Parameter(description = "resource id to update with new property", required = true) @PathParam("resourceId") final String resourceId,
103 @Parameter(description = "Additional information key value to be created", required = true) String data,
104 @Context final HttpServletRequest request, @HeaderParam(value = Constants.USER_ID_HEADER) String userUserId) {
105 return createAdditionalInformationLabelForComponent(NodeTypeEnum.Resource, resourceId, request, userUserId, data);
116 @Path("/services/{serviceId}/additionalinfo")
117 @Consumes(MediaType.APPLICATION_JSON)
118 @Produces(MediaType.APPLICATION_JSON)
119 @Operation(description = "Create Additional Information Label and Value", method = "POST", summary = "Returns created Additional Inforamtion property", responses = {
120 @ApiResponse(content = @Content(array = @ArraySchema(schema = @Schema(implementation = Response.class)))),
121 @ApiResponse(responseCode = "201", description = "Additional information created"),
122 @ApiResponse(responseCode = "403", description = "Restricted operation"),
123 @ApiResponse(responseCode = "400", description = "Invalid content / Missing content"),
124 @ApiResponse(responseCode = "409", description = "Additional information key already exist")})
125 @PermissionAllowed(AafPermission.PermNames.INTERNAL_ALL_VALUE)
126 public Response createServiceAdditionalInformationLabel(
127 @Parameter(description = "service id to update with new property", required = true) @PathParam("serviceId") final String serviceId,
128 @Parameter(description = "Additional information key value to be created", required = true) String data,
129 @Context final HttpServletRequest request, @HeaderParam(value = Constants.USER_ID_HEADER) String userUserId) {
130 return createAdditionalInformationLabelForComponent(NodeTypeEnum.Service, serviceId, request, userUserId, data);
142 @Path("/resources/{resourceId}/additionalinfo/{labelId}")
143 @Consumes(MediaType.APPLICATION_JSON)
144 @Produces(MediaType.APPLICATION_JSON)
145 @Operation(description = "Update Additional Information Label and Value", method = "PUT", summary = "Returns updated Additional Inforamtion property", responses = {
146 @ApiResponse(content = @Content(array = @ArraySchema(schema = @Schema(implementation = Response.class)))),
147 @ApiResponse(responseCode = "200", description = "Additional information updated"),
148 @ApiResponse(responseCode = "403", description = "Restricted operation"),
149 @ApiResponse(responseCode = "400", description = "Invalid content / Missing content"),
150 @ApiResponse(responseCode = "409", description = "Additional information key already exist")})
151 @PermissionAllowed(AafPermission.PermNames.INTERNAL_ALL_VALUE)
152 public Response updateResourceAdditionalInformationLabel(
153 @Parameter(description = "resource id to update with new property", required = true) @PathParam("resourceId") final String resourceId,
154 @Parameter(description = "label id", required = true) @PathParam("labelId") final String labelId,
155 @Parameter(description = "Additional information key value to be created", required = true) String data,
156 @Context final HttpServletRequest request, @HeaderParam(value = Constants.USER_ID_HEADER) String userId) {
157 return updateAdditionalInformationLabelForComponent(NodeTypeEnum.Resource, resourceId, labelId, request, userId, data);
169 @Path("/services/{serviceId}/additionalinfo/{labelId}")
170 @Consumes(MediaType.APPLICATION_JSON)
171 @Produces(MediaType.APPLICATION_JSON)
172 @Operation(description = "Update Additional Information Label and Value", method = "PUT", summary = "Returns updated Additional Inforamtion property", responses = {
173 @ApiResponse(content = @Content(array = @ArraySchema(schema = @Schema(implementation = Response.class)))),
174 @ApiResponse(responseCode = "200", description = "Additional information updated"),
175 @ApiResponse(responseCode = "403", description = "Restricted operation"),
176 @ApiResponse(responseCode = "400", description = "Invalid content / Missing content"),
177 @ApiResponse(responseCode = "409", description = "Additional information key already exist")})
178 @PermissionAllowed(AafPermission.PermNames.INTERNAL_ALL_VALUE)
179 public Response updateServiceAdditionalInformationLabel(
180 @Parameter(description = "service id to update with new property", required = true) @PathParam("serviceId") final String serviceId,
181 @Parameter(description = "label id", required = true) @PathParam("labelId") final String labelId,
182 @Parameter(description = "Additional information key value to be created", required = true) String data,
183 @Context final HttpServletRequest request, @HeaderParam(value = Constants.USER_ID_HEADER) String userId) {
184 return updateAdditionalInformationLabelForComponent(NodeTypeEnum.Service, serviceId, labelId, request, userId, data);
195 @Path("/resources/{resourceId}/additionalinfo/{labelId}")
196 @Consumes(MediaType.APPLICATION_JSON)
197 @Produces(MediaType.APPLICATION_JSON)
198 @Operation(description = "Create Additional Information Label and Value", method = "DELETE", summary = "Returns deleted Additional Inforamtion property", responses = {
199 @ApiResponse(content = @Content(array = @ArraySchema(schema = @Schema(implementation = Response.class)))),
200 @ApiResponse(responseCode = "200", description = "Additional information deleted"),
201 @ApiResponse(responseCode = "403", description = "Restricted operation"),
202 @ApiResponse(responseCode = "400", description = "Invalid content / Missing content"),
203 @ApiResponse(responseCode = "409", description = "Additional information key already exist")})
204 @PermissionAllowed(AafPermission.PermNames.INTERNAL_ALL_VALUE)
205 public Response updateResourceAdditionalInformationLabel(
206 @Parameter(description = "resource id to update with new property", required = true) @PathParam("resourceId") final String resourceId,
207 @Parameter(description = "label id", required = true) @PathParam("labelId") final String labelId, @Context final HttpServletRequest request,
208 @HeaderParam(value = Constants.USER_ID_HEADER) String userId) {
209 return deleteAdditionalInformationLabelForComponent(NodeTypeEnum.Resource, resourceId, labelId, request, userId);
220 @Path("/services/{serviceId}/additionalinfo/{labelId}")
221 @Consumes(MediaType.APPLICATION_JSON)
222 @Produces(MediaType.APPLICATION_JSON)
223 @Operation(description = "Create Additional Information Label and Value", method = "DELETE", summary = "Returns deleted Additional Inforamtion property", responses = {
224 @ApiResponse(content = @Content(array = @ArraySchema(schema = @Schema(implementation = Response.class)))),
225 @ApiResponse(responseCode = "200", description = "Additional information deleted"),
226 @ApiResponse(responseCode = "403", description = "Restricted operation"),
227 @ApiResponse(responseCode = "400", description = "Invalid content / Missing content"),
228 @ApiResponse(responseCode = "409", description = "Additional information key already exist")})
229 @PermissionAllowed(AafPermission.PermNames.INTERNAL_ALL_VALUE)
230 public Response deleteServiceAdditionalInformationLabel(
231 @Parameter(description = "service id to update with new property", required = true) @PathParam("serviceId") final String serviceId,
232 @Parameter(description = "label id", required = true) @PathParam("labelId") final String labelId, @Context final HttpServletRequest request,
233 @HeaderParam(value = Constants.USER_ID_HEADER) String userId) {
234 return deleteAdditionalInformationLabelForComponent(NodeTypeEnum.Service, serviceId, labelId, request, userId);
245 @Path("/resources/{resourceId}/additionalinfo/{labelId}")
246 @Consumes(MediaType.APPLICATION_JSON)
247 @Produces(MediaType.APPLICATION_JSON)
248 @Operation(description = "Get Additional Information by id", method = "GET", summary = "Returns Additional Inforamtion property", responses = {
249 @ApiResponse(content = @Content(array = @ArraySchema(schema = @Schema(implementation = Response.class)))),
250 @ApiResponse(responseCode = "200", description = "fetched additional information"),
251 @ApiResponse(responseCode = "403", description = "Restricted operation"),
252 @ApiResponse(responseCode = "400", description = "Invalid content / Missing content"),
253 @ApiResponse(responseCode = "409", description = "Additional information key already exist")})
254 @PermissionAllowed(AafPermission.PermNames.INTERNAL_ALL_VALUE)
255 public Response getResourceAdditionalInformationLabel(
256 @Parameter(description = "resource id to update with new property", required = true) @PathParam("resourceId") final String resourceId,
257 @Parameter(description = "label id", required = true) @PathParam("labelId") final String labelId, @Context final HttpServletRequest request,
258 @HeaderParam(value = Constants.USER_ID_HEADER) String userId) {
259 return getAdditionalInformationLabelForComponent(NodeTypeEnum.Resource, resourceId, labelId, request, userId);
270 @Path("/services/{serviceId}/additionalinfo/{labelId}")
271 @Consumes(MediaType.APPLICATION_JSON)
272 @Produces(MediaType.APPLICATION_JSON)
273 @Operation(description = "Get Additional Information by id", method = "GET", summary = "Returns Additional Inforamtion property", responses = {
274 @ApiResponse(content = @Content(array = @ArraySchema(schema = @Schema(implementation = Response.class)))),
275 @ApiResponse(responseCode = "200", description = "fetched additional information"),
276 @ApiResponse(responseCode = "403", description = "Restricted operation"),
277 @ApiResponse(responseCode = "400", description = "Invalid content / Missing content"),
278 @ApiResponse(responseCode = "409", description = "Additional information key already exist")})
279 @PermissionAllowed(AafPermission.PermNames.INTERNAL_ALL_VALUE)
280 public Response getServiceAdditionalInformationLabel(
281 @Parameter(description = "service id to update with new property", required = true) @PathParam("serviceId") final String serviceId,
282 @Parameter(description = "label id", required = true) @PathParam("labelId") final String labelId, @Context final HttpServletRequest request,
283 @HeaderParam(value = Constants.USER_ID_HEADER) String userId) {
284 return getAdditionalInformationLabelForComponent(NodeTypeEnum.Service, serviceId, labelId, request, userId);
294 @Path("/resources/{resourceId}/additionalinfo")
295 @Consumes(MediaType.APPLICATION_JSON)
296 @Produces(MediaType.APPLICATION_JSON)
297 @Operation(description = "Get all Additional Information under resource", method = "GET", summary = "Returns Additional Inforamtion property", responses = {
298 @ApiResponse(content = @Content(array = @ArraySchema(schema = @Schema(implementation = Response.class)))),
299 @ApiResponse(responseCode = "200", description = "list of additional information"),
300 @ApiResponse(responseCode = "403", description = "Restricted operation"),
301 @ApiResponse(responseCode = "400", description = "Invalid content / Missing content"),
302 @ApiResponse(responseCode = "409", description = "Additional information key already exist")})
303 @PermissionAllowed(AafPermission.PermNames.INTERNAL_ALL_VALUE)
304 public Response getAllResourceAdditionalInformationLabel(
305 @Parameter(description = "resource id to update with new property", required = true) @PathParam("resourceId") final String resourceId,
306 @Context final HttpServletRequest request, @HeaderParam(value = Constants.USER_ID_HEADER) String userId) {
307 return getAllAdditionalInformationLabelForComponent(NodeTypeEnum.Resource, resourceId, request, userId);
317 @Path("/services/{serviceId}/additionalinfo")
318 @Consumes(MediaType.APPLICATION_JSON)
319 @Produces(MediaType.APPLICATION_JSON)
320 @Operation(description = "Get all Additional Information under service", method = "GET", summary = "Returns Additional Inforamtion property", responses = {
321 @ApiResponse(content = @Content(array = @ArraySchema(schema = @Schema(implementation = Response.class)))),
322 @ApiResponse(responseCode = "200", description = "list of additional information"),
323 @ApiResponse(responseCode = "403", description = "Restricted operation"),
324 @ApiResponse(responseCode = "400", description = "Invalid content / Missing content"),
325 @ApiResponse(responseCode = "409", description = "Additional information key already exist")})
326 @PermissionAllowed(AafPermission.PermNames.INTERNAL_ALL_VALUE)
327 public Response getAllServiceAdditionalInformationLabel(
328 @Parameter(description = "service id to update with new property", required = true) @PathParam("serviceId") final String serviceId,
329 @Context final HttpServletRequest request, @HeaderParam(value = Constants.USER_ID_HEADER) String userId) {
330 return getAllAdditionalInformationLabelForComponent(NodeTypeEnum.Service, serviceId, request, userId);
334 * Create additional information property under given resource/service
343 protected Response createAdditionalInformationLabelForComponent(NodeTypeEnum nodeType, String uniqueId, HttpServletRequest request, String userId,
345 ServletContext context = request.getSession().getServletContext();
346 String url = request.getMethod() + " " + request.getRequestURI();
347 log.debug(START_HANDLE_REQUEST_OF, url);
348 log.debug(MODIFIER_ID_IS, userId);
349 log.debug("data is {}", data);
351 // convert json to AdditionalInfoParameterInfo
352 AdditionalInfoParameterInfo additionalInfoParameterInfo = gson.fromJson(data, AdditionalInfoParameterInfo.class);
353 // create the new property
354 Either<AdditionalInfoParameterInfo, ResponseFormat> either = businessLogic
355 .createAdditionalInformation(nodeType, uniqueId, additionalInfoParameterInfo, userId);
356 if (either.isRight()) {
357 ResponseFormat responseFormat = either.right().value();
358 log.info("Failed to create additional information {}. Reason - {}", additionalInfoParameterInfo, responseFormat);
359 return buildErrorResponse(responseFormat);
361 AdditionalInfoParameterInfo createdAI = either.left().value();
362 log.debug("Additional information {}={} created successfully with id {}", createdAI.getKey(), createdAI.getValue(),
363 createdAI.getUniqueId());
364 ResponseFormat responseFormat = getComponentsUtils().getResponseFormat(ActionStatus.CREATED);
365 return buildOkResponse(responseFormat, createdAI);
366 } catch (Exception e) {
367 log.debug("Create additional information failed with exception", e);
368 ResponseFormat responseFormat = getComponentsUtils().getResponseFormat(ActionStatus.GENERAL_ERROR);
369 return buildErrorResponse(responseFormat);
374 * Update additional information property by id under given resource/service
384 protected Response updateAdditionalInformationLabelForComponent(NodeTypeEnum nodeType, String uniqueId, String labelId,
385 HttpServletRequest request, String userId, String data) {
386 ServletContext context = request.getSession().getServletContext();
387 String url = request.getMethod() + " " + request.getRequestURI();
388 log.debug(START_HANDLE_REQUEST_OF, url);
389 log.debug(MODIFIER_ID_IS, userId);
390 log.debug("data is {}", data);
392 // convert json to AdditionalInfoParameterInfo
393 AdditionalInfoParameterInfo additionalInfoParameterInfo = gson.fromJson(data, AdditionalInfoParameterInfo.class);
394 // create the new property
395 additionalInfoParameterInfo.setUniqueId(labelId);
396 Either<AdditionalInfoParameterInfo, ResponseFormat> either = businessLogic
397 .updateAdditionalInformation(nodeType, uniqueId, additionalInfoParameterInfo, userId);
398 if (either.isRight()) {
399 ResponseFormat responseFormat = either.right().value();
400 log.info(FAILED_TO_UPDATE_ADDITIONAL_INFO_PROPERTY, responseFormat);
401 return buildErrorResponse(responseFormat);
403 AdditionalInfoParameterInfo createdAI = either.left().value();
404 log.debug("Additional information {}={} updated successfully with id {}", createdAI.getKey(), createdAI.getValue(),
405 createdAI.getUniqueId());
406 ResponseFormat responseFormat = getComponentsUtils().getResponseFormat(ActionStatus.OK);
407 return buildOkResponse(responseFormat, createdAI);
408 } catch (Exception e) {
409 BeEcompErrorManager.getInstance().logBeRestApiGeneralError("Update Additional Information");
410 log.debug("Update additional information failed with exception", e);
411 ResponseFormat responseFormat = getComponentsUtils().getResponseFormat(ActionStatus.GENERAL_ERROR);
412 return buildErrorResponse(responseFormat);
417 * Delete an additional information property by id under given resource/service
426 protected Response deleteAdditionalInformationLabelForComponent(NodeTypeEnum nodeType, String uniqueId, String labelId,
427 HttpServletRequest request, String userId) {
428 ServletContext context = request.getSession().getServletContext();
429 String url = request.getMethod() + " " + request.getRequestURI();
430 log.debug(START_HANDLE_REQUEST_OF, url);
431 log.debug(MODIFIER_ID_IS, userId);
433 AdditionalInfoParameterInfo additionalInfoParameterInfo = new AdditionalInfoParameterInfo();
434 additionalInfoParameterInfo.setUniqueId(labelId);
435 Either<AdditionalInfoParameterInfo, ResponseFormat> either = businessLogic
436 .deleteAdditionalInformation(nodeType, uniqueId, additionalInfoParameterInfo, userId);
437 if (either.isRight()) {
438 ResponseFormat responseFormat = either.right().value();
439 log.info(FAILED_TO_UPDATE_ADDITIONAL_INFO_PROPERTY, responseFormat);
440 return buildErrorResponse(responseFormat);
442 AdditionalInfoParameterInfo createdAI = either.left().value();
443 log.debug("Additional information {}={} deleted successfully with id {}", createdAI.getKey(), createdAI.getValue(),
444 createdAI.getUniqueId());
445 ResponseFormat responseFormat = getComponentsUtils().getResponseFormat(ActionStatus.OK);
446 return buildOkResponse(responseFormat, createdAI);
447 } catch (Exception e) {
448 BeEcompErrorManager.getInstance().logBeRestApiGeneralError("Delete Additional Information");
449 log.debug("Delete additional information failed with exception", e);
450 ResponseFormat responseFormat = getComponentsUtils().getResponseFormat(ActionStatus.GENERAL_ERROR);
451 return buildErrorResponse(responseFormat);
456 * Get a specific additional information property by a given id under given resource/service
465 protected Response getAdditionalInformationLabelForComponent(NodeTypeEnum nodeType, String uniqueId, String labelId, HttpServletRequest request,
467 ServletContext context = request.getSession().getServletContext();
468 String url = request.getMethod() + " " + request.getRequestURI();
469 log.debug(START_HANDLE_REQUEST_OF, url);
470 log.debug(MODIFIER_ID_IS, userId);
472 // create the new property
473 AdditionalInfoParameterInfo additionalInfoParameterInfo = new AdditionalInfoParameterInfo();
474 additionalInfoParameterInfo.setUniqueId(labelId);
475 Either<AdditionalInfoParameterInfo, ResponseFormat> either = businessLogic
476 .getAdditionalInformation(nodeType, uniqueId, additionalInfoParameterInfo, userId);
477 if (either.isRight()) {
478 ResponseFormat responseFormat = either.right().value();
479 log.info(FAILED_TO_UPDATE_ADDITIONAL_INFO_PROPERTY, responseFormat);
480 return buildErrorResponse(responseFormat);
482 AdditionalInfoParameterInfo createdAI = either.left().value();
483 log.debug("Additional information {}={} fetched successfully with id {}", createdAI.getKey(), createdAI.getValue(),
484 createdAI.getUniqueId());
485 ResponseFormat responseFormat = getComponentsUtils().getResponseFormat(ActionStatus.OK);
486 return buildOkResponse(responseFormat, createdAI);
487 } catch (Exception e) {
488 BeEcompErrorManager.getInstance().logBeRestApiGeneralError("Get Additional Information");
489 log.debug("get additional information failed with exception", e);
490 ResponseFormat responseFormat = getComponentsUtils().getResponseFormat(ActionStatus.GENERAL_ERROR);
491 return buildErrorResponse(responseFormat);
496 * Get all additional information properties under given resource/service
504 protected Response getAllAdditionalInformationLabelForComponent(NodeTypeEnum nodeType, String uniqueId, HttpServletRequest request,
506 ServletContext context = request.getSession().getServletContext();
507 String url = request.getMethod() + " " + request.getRequestURI();
508 log.debug(START_HANDLE_REQUEST_OF, url);
509 log.debug(MODIFIER_ID_IS, userId);
511 Either<AdditionalInformationDefinition, ResponseFormat> either = businessLogic.getAllAdditionalInformation(nodeType, uniqueId, userId);
512 if (either.isRight()) {
513 ResponseFormat responseFormat = either.right().value();
514 log.info(FAILED_TO_UPDATE_ADDITIONAL_INFO_PROPERTY, responseFormat);
515 return buildErrorResponse(responseFormat);
517 AdditionalInformationDefinition additionalInformationDefinition = either.left().value();
518 log.debug("All Additional information retrieved for component {} is {}", uniqueId, additionalInformationDefinition);
519 ResponseFormat responseFormat = getComponentsUtils().getResponseFormat(ActionStatus.OK);
520 return buildOkResponse(responseFormat, additionalInformationDefinition);
521 } catch (Exception e) {
522 BeEcompErrorManager.getInstance().logBeRestApiGeneralError("Get All Additional Information");
523 log.debug("Get all addiotanl information properties failed with exception", e);
524 ResponseFormat responseFormat = getComponentsUtils().getResponseFormat(ActionStatus.GENERAL_ERROR);
525 return buildErrorResponse(responseFormat);