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