Raise JUnit coverage common-be
[sdc.git] / catalog-be / src / main / java / org / openecomp / sdc / be / servlets / AdditionalInformationServlet.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * SDC
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
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
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=========================================================
19  */
20
21 package org.openecomp.sdc.be.servlets;
22
23 import javax.inject.Singleton;
24 import javax.servlet.ServletContext;
25 import javax.servlet.http.HttpServletRequest;
26 import javax.ws.rs.Consumes;
27 import javax.ws.rs.DELETE;
28 import javax.ws.rs.GET;
29 import javax.ws.rs.HeaderParam;
30 import javax.ws.rs.POST;
31 import javax.ws.rs.PUT;
32 import javax.ws.rs.Path;
33 import javax.ws.rs.PathParam;
34 import javax.ws.rs.Produces;
35 import javax.ws.rs.core.Context;
36 import javax.ws.rs.core.MediaType;
37 import javax.ws.rs.core.Response;
38
39 import org.openecomp.sdc.be.components.impl.AdditionalInformationBusinessLogic;
40 import org.openecomp.sdc.be.config.BeEcompErrorManager;
41 import org.openecomp.sdc.be.dao.api.ActionStatus;
42 import org.openecomp.sdc.be.datatypes.elements.AdditionalInfoParameterInfo;
43 import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
44 import org.openecomp.sdc.be.impl.WebAppContextWrapper;
45 import org.openecomp.sdc.be.model.AdditionalInformationDefinition;
46 import org.openecomp.sdc.common.api.Constants;
47 import org.openecomp.sdc.exception.ResponseFormat;
48 import org.slf4j.Logger;
49 import org.slf4j.LoggerFactory;
50 import org.springframework.web.context.WebApplicationContext;
51
52 import com.jcabi.aspects.Loggable;
53
54 import fj.data.Either;
55 import io.swagger.annotations.Api;
56 import io.swagger.annotations.ApiOperation;
57 import io.swagger.annotations.ApiParam;
58 import io.swagger.annotations.ApiResponse;
59 import io.swagger.annotations.ApiResponses;
60 @Loggable(prepend = true, value = Loggable.DEBUG, trim = false)
61 @Path("/v1/catalog")
62 @Api(value = "Additional Information Servlet", description = "Additional Information Servlet")
63 @Singleton
64 public class AdditionalInformationServlet extends BeGenericServlet {
65
66     private static final Logger log = LoggerFactory.getLogger(AdditionalInformationServlet.class);
67
68     /**
69      *
70      * @param resourceId
71      * @param data
72      * @param request
73      * @param userUserId
74      * @return
75      */
76     @POST
77     @Path("/resources/{resourceId}/additionalinfo")
78     @Consumes(MediaType.APPLICATION_JSON)
79     @Produces(MediaType.APPLICATION_JSON)
80     @ApiOperation(value = "Create Additional Information Label and Value", httpMethod = "POST", notes = "Returns created Additional Inforamtion property", response = Response.class)
81     @ApiResponses(value = { @ApiResponse(code = 201, message = "Additional information created"), @ApiResponse(code = 403, message = "Restricted operation"), @ApiResponse(code = 400, message = "Invalid content / Missing content"),
82             @ApiResponse(code = 409, message = "Additional information key already exist") })
83     public Response createResourceAdditionalInformationLabel(@ApiParam(value = "resource id to update with new property", required = true) @PathParam("resourceId") final String resourceId,
84             @ApiParam(value = "Additional information key value to be created", required = true) String data, @Context final HttpServletRequest request, @HeaderParam(value = Constants.USER_ID_HEADER) String userUserId) {
85
86         return createAdditionalInformationLabelForComponent(NodeTypeEnum.Resource, resourceId, request, userUserId, data);
87
88     }
89
90     /**
91      *
92      * @param serviceId
93      * @param data
94      * @param request
95      * @param userUserId
96      * @return
97      */
98     @POST
99     @Path("/services/{serviceId}/additionalinfo")
100     @Consumes(MediaType.APPLICATION_JSON)
101     @Produces(MediaType.APPLICATION_JSON)
102     @ApiOperation(value = "Create Additional Information Label and Value", httpMethod = "POST", notes = "Returns created Additional Inforamtion property", response = Response.class)
103     @ApiResponses(value = { @ApiResponse(code = 201, message = "Additional information created"), @ApiResponse(code = 403, message = "Restricted operation"), @ApiResponse(code = 400, message = "Invalid content / Missing content"),
104             @ApiResponse(code = 409, message = "Additional information key already exist") })
105     public Response createServiceAdditionalInformationLabel(@ApiParam(value = "service id to update with new property", required = true) @PathParam("serviceId") final String serviceId,
106             @ApiParam(value = "Additional information key value to be created", required = true) String data, @Context final HttpServletRequest request, @HeaderParam(value = Constants.USER_ID_HEADER) String userUserId) {
107
108         return createAdditionalInformationLabelForComponent(NodeTypeEnum.Service, serviceId, request, userUserId, data);
109
110     }
111
112     /**
113      *
114      * @param resourceId
115      * @param labelId
116      * @param data
117      * @param request
118      * @param userId
119      * @return
120      */
121     @PUT
122     @Path("/resources/{resourceId}/additionalinfo/{labelId}")
123     @Consumes(MediaType.APPLICATION_JSON)
124     @Produces(MediaType.APPLICATION_JSON)
125     @ApiOperation(value = "Update Additional Information Label and Value", httpMethod = "PUT", notes = "Returns updated Additional Inforamtion property", response = Response.class)
126     @ApiResponses(value = { @ApiResponse(code = 200, message = "Additional information updated"), @ApiResponse(code = 403, message = "Restricted operation"), @ApiResponse(code = 400, message = "Invalid content / Missing content"),
127             @ApiResponse(code = 409, message = "Additional information key already exist") })
128     public Response updateResourceAdditionalInformationLabel(@ApiParam(value = "resource id to update with new property", required = true) @PathParam("resourceId") final String resourceId,
129             @ApiParam(value = "label id", required = true) @PathParam("labelId") final String labelId, @ApiParam(value = "Additional information key value to be created", required = true) String data, @Context final HttpServletRequest request,
130             @HeaderParam(value = Constants.USER_ID_HEADER) String userId) {
131
132         return updateAdditionalInformationLabelForComponent(NodeTypeEnum.Resource, resourceId, labelId, request, userId, data);
133
134     }
135
136     /**
137      *
138      * @param serviceId
139      * @param labelId
140      * @param data
141      * @param request
142      * @param userId
143      * @return
144      */
145     @PUT
146     @Path("/services/{serviceId}/additionalinfo/{labelId}")
147     @Consumes(MediaType.APPLICATION_JSON)
148     @Produces(MediaType.APPLICATION_JSON)
149     @ApiOperation(value = "Update Additional Information Label and Value", httpMethod = "PUT", notes = "Returns updated Additional Inforamtion property", response = Response.class)
150     @ApiResponses(value = { @ApiResponse(code = 200, message = "Additional information updated"), @ApiResponse(code = 403, message = "Restricted operation"), @ApiResponse(code = 400, message = "Invalid content / Missing content"),
151             @ApiResponse(code = 409, message = "Additional information key already exist") })
152     public Response updateServiceAdditionalInformationLabel(@ApiParam(value = "service id to update with new property", required = true) @PathParam("serviceId") final String serviceId,
153             @ApiParam(value = "label id", required = true) @PathParam("labelId") final String labelId, @ApiParam(value = "Additional information key value to be created", required = true) String data, @Context final HttpServletRequest request,
154             @HeaderParam(value = Constants.USER_ID_HEADER) String userId) {
155
156         return updateAdditionalInformationLabelForComponent(NodeTypeEnum.Service, serviceId, labelId, request, userId, data);
157
158     }
159
160     /**
161      *
162      * @param resourceId
163      * @param labelId
164      * @param request
165      * @param userId
166      * @return
167      */
168     @DELETE
169     @Path("/resources/{resourceId}/additionalinfo/{labelId}")
170     @Consumes(MediaType.APPLICATION_JSON)
171     @Produces(MediaType.APPLICATION_JSON)
172     @ApiOperation(value = "Create Additional Information Label and Value", httpMethod = "DELETE", notes = "Returns deleted Additional Inforamtion property", response = Response.class)
173     @ApiResponses(value = { @ApiResponse(code = 200, message = "Additional information deleted"), @ApiResponse(code = 403, message = "Restricted operation"), @ApiResponse(code = 400, message = "Invalid content / Missing content"),
174             @ApiResponse(code = 409, message = "Additional information key already exist") })
175     public Response updateResourceAdditionalInformationLabel(@ApiParam(value = "resource id to update with new property", required = true) @PathParam("resourceId") final String resourceId,
176             @ApiParam(value = "label id", required = true) @PathParam("labelId") final String labelId, @Context final HttpServletRequest request, @HeaderParam(value = Constants.USER_ID_HEADER) String userId) {
177
178         return deleteAdditionalInformationLabelForComponent(NodeTypeEnum.Resource, resourceId, labelId, request, userId);
179
180     }
181
182     /**
183      *
184      * @param serviceId
185      * @param labelId
186      * @param request
187      * @param userId
188      * @return
189      */
190     @DELETE
191     @Path("/services/{serviceId}/additionalinfo/{labelId}")
192     @Consumes(MediaType.APPLICATION_JSON)
193     @Produces(MediaType.APPLICATION_JSON)
194     @ApiOperation(value = "Create Additional Information Label and Value", httpMethod = "DELETE", notes = "Returns deleted Additional Inforamtion property", response = Response.class)
195     @ApiResponses(value = { @ApiResponse(code = 200, message = "Additional information deleted"), @ApiResponse(code = 403, message = "Restricted operation"), @ApiResponse(code = 400, message = "Invalid content / Missing content"),
196             @ApiResponse(code = 409, message = "Additional information key already exist") })
197     public Response deleteServiceAdditionalInformationLabel(@ApiParam(value = "service id to update with new property", required = true) @PathParam("serviceId") final String serviceId,
198             @ApiParam(value = "label id", required = true) @PathParam("labelId") final String labelId, @Context final HttpServletRequest request, @HeaderParam(value = Constants.USER_ID_HEADER) String userId) {
199
200         return deleteAdditionalInformationLabelForComponent(NodeTypeEnum.Service, serviceId, labelId, request, userId);
201
202     }
203
204     /**
205      *
206      * @param resourceId
207      * @param labelId
208      * @param request
209      * @param userId
210      * @return
211      */
212     @GET
213     @Path("/resources/{resourceId}/additionalinfo/{labelId}")
214     @Consumes(MediaType.APPLICATION_JSON)
215     @Produces(MediaType.APPLICATION_JSON)
216     @ApiOperation(value = "Get Additional Information by id", httpMethod = "GET", notes = "Returns Additional Inforamtion property", response = Response.class)
217     @ApiResponses(value = { @ApiResponse(code = 200, message = "fetched additional information"), @ApiResponse(code = 403, message = "Restricted operation"), @ApiResponse(code = 400, message = "Invalid content / Missing content"),
218             @ApiResponse(code = 409, message = "Additional information key already exist") })
219     public Response getResourceAdditionalInformationLabel(@ApiParam(value = "resource id to update with new property", required = true) @PathParam("resourceId") final String resourceId,
220             @ApiParam(value = "label id", required = true) @PathParam("labelId") final String labelId, @Context final HttpServletRequest request, @HeaderParam(value = Constants.USER_ID_HEADER) String userId) {
221
222         return getAdditionalInformationLabelForComponent(NodeTypeEnum.Resource, resourceId, labelId, request, userId);
223
224     }
225
226     /**
227      *
228      * @param serviceId
229      * @param labelId
230      * @param request
231      * @param userId
232      * @return
233      */
234     @GET
235     @Path("/services/{serviceId}/additionalinfo/{labelId}")
236     @Consumes(MediaType.APPLICATION_JSON)
237     @Produces(MediaType.APPLICATION_JSON)
238     @ApiOperation(value = "Get Additional Information by id", httpMethod = "GET", notes = "Returns Additional Inforamtion property", response = Response.class)
239     @ApiResponses(value = { @ApiResponse(code = 200, message = "fetched additional information"), @ApiResponse(code = 403, message = "Restricted operation"), @ApiResponse(code = 400, message = "Invalid content / Missing content"),
240             @ApiResponse(code = 409, message = "Additional information key already exist") })
241     public Response getServiceAdditionalInformationLabel(@ApiParam(value = "service id to update with new property", required = true) @PathParam("serviceId") final String serviceId,
242             @ApiParam(value = "label id", required = true) @PathParam("labelId") final String labelId, @Context final HttpServletRequest request, @HeaderParam(value = Constants.USER_ID_HEADER) String userId) {
243
244         return getAdditionalInformationLabelForComponent(NodeTypeEnum.Service, serviceId, labelId, request, userId);
245
246     }
247
248     /**
249      *
250      * @param resourceId
251      * @param request
252      * @param userId
253      * @return
254      */
255     @GET
256     @Path("/resources/{resourceId}/additionalinfo")
257     @Consumes(MediaType.APPLICATION_JSON)
258     @Produces(MediaType.APPLICATION_JSON)
259     @ApiOperation(value = "Get all Additional Information under resource", httpMethod = "GET", notes = "Returns Additional Inforamtion property", response = Response.class)
260     @ApiResponses(value = { @ApiResponse(code = 200, message = "list of additional information"), @ApiResponse(code = 403, message = "Restricted operation"), @ApiResponse(code = 400, message = "Invalid content / Missing content"),
261             @ApiResponse(code = 409, message = "Additional information key already exist") })
262     public Response getAllResourceAdditionalInformationLabel(@ApiParam(value = "resource id to update with new property", required = true) @PathParam("resourceId") final String resourceId, @Context final HttpServletRequest request,
263             @HeaderParam(value = Constants.USER_ID_HEADER) String userId) {
264
265         return getAllAdditionalInformationLabelForComponent(NodeTypeEnum.Resource, resourceId, request, userId);
266
267     }
268
269     /**
270      *
271      * @param serviceId
272      * @param request
273      * @param userId
274      * @return
275      */
276     @GET
277     @Path("/services/{serviceId}/additionalinfo")
278     @Consumes(MediaType.APPLICATION_JSON)
279     @Produces(MediaType.APPLICATION_JSON)
280     @ApiOperation(value = "Get all Additional Information under service", httpMethod = "GET", notes = "Returns Additional Inforamtion property", response = Response.class)
281     @ApiResponses(value = { @ApiResponse(code = 200, message = "list of additional information"), @ApiResponse(code = 403, message = "Restricted operation"), @ApiResponse(code = 400, message = "Invalid content / Missing content"),
282             @ApiResponse(code = 409, message = "Additional information key already exist") })
283     public Response getAllServiceAdditionalInformationLabel(@ApiParam(value = "service id to update with new property", required = true) @PathParam("serviceId") final String serviceId, @Context final HttpServletRequest request,
284             @HeaderParam(value = Constants.USER_ID_HEADER) String userId) {
285
286         return getAllAdditionalInformationLabelForComponent(NodeTypeEnum.Service, serviceId, request, userId);
287
288     }
289
290     /**
291      *
292      * Create additional information property under given resource/service
293      *
294      * @param nodeType
295      * @param uniqueId
296      * @param request
297      * @param userId
298      * @param data
299      * @return
300      */
301     protected Response createAdditionalInformationLabelForComponent(NodeTypeEnum nodeType, String uniqueId, HttpServletRequest request, String userId, String data) {
302
303         ServletContext context = request.getSession().getServletContext();
304
305         String url = request.getMethod() + " " + request.getRequestURI();
306         log.debug("Start handle request of {}", url);
307         log.debug("modifier id is {}", userId);
308         log.debug("data is {}", data);
309
310         try {
311             // convert json to AdditionalInfoParameterInfo
312             AdditionalInfoParameterInfo additionalInfoParameterInfo = gson.fromJson(data, AdditionalInfoParameterInfo.class);
313
314             // create the new property
315             AdditionalInformationBusinessLogic businessLogic = getBL(context);
316
317             Either<AdditionalInfoParameterInfo, ResponseFormat> either = businessLogic.createAdditionalInformation(nodeType, uniqueId, additionalInfoParameterInfo, null, userId);
318
319             if (either.isRight()) {
320                 ResponseFormat responseFormat = either.right().value();
321                 log.info("Failed to create additional information {}. Reason - {}", additionalInfoParameterInfo, responseFormat);
322                 return buildErrorResponse(responseFormat);
323             }
324
325             AdditionalInfoParameterInfo createdAI = either.left().value();
326
327             log.debug("Additional information {}={} created successfully with id {}", createdAI.getKey(), createdAI.getValue(), createdAI.getUniqueId());
328
329             ResponseFormat responseFormat = getComponentsUtils().getResponseFormat(ActionStatus.CREATED);
330             return buildOkResponse(responseFormat, createdAI);
331
332         } catch (Exception e) {
333             log.debug("Create additional information failed with exception", e);
334             ResponseFormat responseFormat = getComponentsUtils().getResponseFormat(ActionStatus.GENERAL_ERROR);
335             return buildErrorResponse(responseFormat);
336         }
337
338     }
339
340     /**
341      * Update additional information property by id under given resource/service
342      *
343      * @param nodeType
344      * @param uniqueId
345      * @param labelId
346      * @param request
347      * @param userId
348      * @param data
349      * @return
350      */
351     protected Response updateAdditionalInformationLabelForComponent(NodeTypeEnum nodeType, String uniqueId, String labelId, HttpServletRequest request, String userId, String data) {
352
353         ServletContext context = request.getSession().getServletContext();
354
355         String url = request.getMethod() + " " + request.getRequestURI();
356         log.debug("Start handle request of {}", url);
357         log.debug("modifier id is {}", userId);
358         log.debug("data is {}", data);
359
360         try {
361             // convert json to AdditionalInfoParameterInfo
362             AdditionalInfoParameterInfo additionalInfoParameterInfo = gson.fromJson(data, AdditionalInfoParameterInfo.class);
363
364             // create the new property
365             AdditionalInformationBusinessLogic businessLogic = getBL(context);
366
367             additionalInfoParameterInfo.setUniqueId(labelId);
368
369             Either<AdditionalInfoParameterInfo, ResponseFormat> either = businessLogic.updateAdditionalInformation(nodeType, uniqueId, additionalInfoParameterInfo, null, userId);
370
371             if (either.isRight()) {
372                 ResponseFormat responseFormat = either.right().value();
373                 log.info("Failed to update additional information property. Reason - {}", responseFormat);
374                 return buildErrorResponse(responseFormat);
375             }
376
377             AdditionalInfoParameterInfo createdAI = either.left().value();
378
379             log.debug("Additional information {}={} updated successfully with id {}", createdAI.getKey(), createdAI.getValue(), createdAI.getUniqueId());
380
381             ResponseFormat responseFormat = getComponentsUtils().getResponseFormat(ActionStatus.OK);
382             return buildOkResponse(responseFormat, createdAI);
383
384         } catch (Exception e) {
385             BeEcompErrorManager.getInstance().logBeRestApiGeneralError("Update Additional Information");
386             log.debug("Update additional information failed with exception", e);
387             ResponseFormat responseFormat = getComponentsUtils().getResponseFormat(ActionStatus.GENERAL_ERROR);
388             return buildErrorResponse(responseFormat);
389         }
390
391     }
392
393     /**
394      *
395      * Delete an additional information property by id under given resource/service
396      *
397      * @param nodeType
398      * @param uniqueId
399      * @param labelId
400      * @param request
401      * @param userId
402      * @return
403      */
404     protected Response deleteAdditionalInformationLabelForComponent(NodeTypeEnum nodeType, String uniqueId, String labelId, HttpServletRequest request, String userId) {
405
406         ServletContext context = request.getSession().getServletContext();
407
408         String url = request.getMethod() + " " + request.getRequestURI();
409         log.debug("Start handle request of {}", url);
410         log.debug("modifier id is {}", userId);
411
412         try {
413
414             AdditionalInformationBusinessLogic businessLogic = getBL(context);
415
416             AdditionalInfoParameterInfo additionalInfoParameterInfo = new AdditionalInfoParameterInfo();
417             additionalInfoParameterInfo.setUniqueId(labelId);
418
419             Either<AdditionalInfoParameterInfo, ResponseFormat> either = businessLogic.deleteAdditionalInformation(nodeType, uniqueId, additionalInfoParameterInfo, null, userId);
420
421             if (either.isRight()) {
422                 ResponseFormat responseFormat = either.right().value();
423                 log.info("Failed to update additional information property. Reason - {}", responseFormat);
424                 return buildErrorResponse(responseFormat);
425             }
426
427             AdditionalInfoParameterInfo createdAI = either.left().value();
428
429             log.debug("Additional information {}={} deleted successfully with id {}", createdAI.getKey(), createdAI.getValue(), createdAI.getUniqueId());
430
431             ResponseFormat responseFormat = getComponentsUtils().getResponseFormat(ActionStatus.OK);
432             return buildOkResponse(responseFormat, createdAI);
433
434         } catch (Exception e) {
435             BeEcompErrorManager.getInstance().logBeRestApiGeneralError("Delete Additional Information");
436             log.debug("Delete additional information failed with exception", e);
437             ResponseFormat responseFormat = getComponentsUtils().getResponseFormat(ActionStatus.GENERAL_ERROR);
438             return buildErrorResponse(responseFormat);
439         }
440
441     }
442
443     /**
444      * Get a specific additional information property by a given id under given resource/service
445      *
446      * @param nodeType
447      * @param uniqueId
448      * @param labelId
449      * @param request
450      * @param userId
451      * @return
452      */
453     protected Response getAdditionalInformationLabelForComponent(NodeTypeEnum nodeType, String uniqueId, String labelId, HttpServletRequest request, String userId) {
454
455         ServletContext context = request.getSession().getServletContext();
456
457         String url = request.getMethod() + " " + request.getRequestURI();
458         log.debug("Start handle request of {}", url);
459         log.debug("modifier id is {}", userId);
460
461         try {
462
463             // create the new property
464             AdditionalInformationBusinessLogic businessLogic = getBL(context);
465
466             AdditionalInfoParameterInfo additionalInfoParameterInfo = new AdditionalInfoParameterInfo();
467             additionalInfoParameterInfo.setUniqueId(labelId);
468
469             Either<AdditionalInfoParameterInfo, ResponseFormat> either = businessLogic.getAdditionalInformation(nodeType, uniqueId, additionalInfoParameterInfo, null, userId);
470
471             if (either.isRight()) {
472                 ResponseFormat responseFormat = either.right().value();
473                 log.info("Failed to update additional information property. Reason - {}", responseFormat);
474                 return buildErrorResponse(responseFormat);
475             }
476
477             AdditionalInfoParameterInfo createdAI = either.left().value();
478
479             log.debug("Additional information {}={} fetched successfully with id {}", createdAI.getKey(), createdAI.getValue(), createdAI.getUniqueId());
480
481             ResponseFormat responseFormat = getComponentsUtils().getResponseFormat(ActionStatus.OK);
482             return buildOkResponse(responseFormat, createdAI);
483
484         } catch (Exception e) {
485             BeEcompErrorManager.getInstance().logBeRestApiGeneralError("Get Additional Information");
486
487             log.debug("get additional information failed with exception", e);
488             ResponseFormat responseFormat = getComponentsUtils().getResponseFormat(ActionStatus.GENERAL_ERROR);
489             return buildErrorResponse(responseFormat);
490         }
491
492     }
493
494     /**
495      * Get all additional information properties under given resource/service
496      *
497      * @param nodeType
498      * @param uniqueId
499      * @param request
500      * @param userId
501      * @return
502      */
503     protected Response getAllAdditionalInformationLabelForComponent(NodeTypeEnum nodeType, String uniqueId, HttpServletRequest request, String userId) {
504
505         ServletContext context = request.getSession().getServletContext();
506
507         String url = request.getMethod() + " " + request.getRequestURI();
508         log.debug("Start handle request of {}", url);
509         log.debug("modifier id is {}", userId);
510
511         try {
512
513             AdditionalInformationBusinessLogic businessLogic = getBL(context);
514
515             Either<AdditionalInformationDefinition, ResponseFormat> either = businessLogic.getAllAdditionalInformation(nodeType, uniqueId, null, userId);
516             if (either.isRight()) {
517                 ResponseFormat responseFormat = either.right().value();
518                 log.info("Failed to update additional information property. Reason - {}", responseFormat);
519                 return buildErrorResponse(responseFormat);
520             }
521
522             AdditionalInformationDefinition additionalInformationDefinition = either.left().value();
523
524             log.debug("All Additional information retrieved for component {} is {}", uniqueId, additionalInformationDefinition);
525
526             ResponseFormat responseFormat = getComponentsUtils().getResponseFormat(ActionStatus.OK);
527             return buildOkResponse(responseFormat, additionalInformationDefinition);
528
529         } catch (Exception e) {
530             BeEcompErrorManager.getInstance().logBeRestApiGeneralError("Get All Additional Information");
531             log.debug("Get all addiotanl information properties failed with exception", e);
532             ResponseFormat responseFormat = getComponentsUtils().getResponseFormat(ActionStatus.GENERAL_ERROR);
533             return buildErrorResponse(responseFormat);
534         }
535
536     }
537
538     private AdditionalInformationBusinessLogic getBL(ServletContext context) {
539         WebAppContextWrapper webApplicationContextWrapper = (WebAppContextWrapper) context.getAttribute(Constants.WEB_APPLICATION_CONTEXT_WRAPPER_ATTR);
540         WebApplicationContext webApplicationContext = webApplicationContextWrapper.getWebAppContext(context);
541         AdditionalInformationBusinessLogic bl = webApplicationContext.getBean(AdditionalInformationBusinessLogic.class);
542         return bl;
543     }
544
545 }