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