diff options
Diffstat (limited to 'catalog-be/src/main/java/org/openecomp/sdc/be/servlets/ComponentPropertyServlet.java')
-rw-r--r-- | catalog-be/src/main/java/org/openecomp/sdc/be/servlets/ComponentPropertyServlet.java | 584 |
1 files changed, 250 insertions, 334 deletions
diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/servlets/ComponentPropertyServlet.java b/catalog-be/src/main/java/org/openecomp/sdc/be/servlets/ComponentPropertyServlet.java index fcca3394a0..9ff155f6da 100644 --- a/catalog-be/src/main/java/org/openecomp/sdc/be/servlets/ComponentPropertyServlet.java +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/servlets/ComponentPropertyServlet.java @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.openecomp.sdc.be.servlets; import com.jcabi.aspects.Loggable; @@ -28,6 +27,23 @@ import io.swagger.v3.oas.annotations.servers.Server; import io.swagger.v3.oas.annotations.servers.Servers; import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tags; +import java.util.List; +import java.util.Map; +import javax.inject.Inject; +import javax.inject.Singleton; +import javax.servlet.http.HttpServletRequest; +import javax.ws.rs.Consumes; +import javax.ws.rs.DELETE; +import javax.ws.rs.GET; +import javax.ws.rs.HeaderParam; +import javax.ws.rs.POST; +import javax.ws.rs.PUT; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; import org.openecomp.sdc.be.components.impl.PropertyBusinessLogic; import org.openecomp.sdc.be.components.impl.aaf.AafPermission; import org.openecomp.sdc.be.components.impl.aaf.PermissionAllowed; @@ -48,24 +64,6 @@ import org.openecomp.sdc.exception.ResponseFormat; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.inject.Inject; -import javax.inject.Singleton; -import javax.servlet.http.HttpServletRequest; -import javax.ws.rs.Consumes; -import javax.ws.rs.DELETE; -import javax.ws.rs.GET; -import javax.ws.rs.HeaderParam; -import javax.ws.rs.POST; -import javax.ws.rs.PUT; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; -import java.util.List; -import java.util.Map; - @Loggable(prepend = true, value = Loggable.DEBUG, trim = false) @Path("/v1/catalog") @Tags({@Tag(name = "SDC Internal APIs")}) @@ -73,43 +71,36 @@ import java.util.Map; @Singleton public class ComponentPropertyServlet extends BeGenericServlet { - private final PropertyBusinessLogic propertyBusinessLogic; - private final ApplicationDataTypeCache applicationDataTypeCache; - - @Inject - public ComponentPropertyServlet(UserBusinessLogic userBusinessLogic, - ComponentsUtils componentsUtils, - ApplicationDataTypeCache applicationDataTypeCache, - PropertyBusinessLogic propertyBusinessLogic) { - super(userBusinessLogic, componentsUtils); - this.applicationDataTypeCache = applicationDataTypeCache; - this.propertyBusinessLogic = propertyBusinessLogic; - } - - private static final Logger log = LoggerFactory.getLogger(ComponentPropertyServlet.class); - private static final String CREATE_PROPERTY = "Create Property"; - private static final String DEBUG_MESSAGE = "Start handle request of {} modifier id is {}"; - private static final LoggerSupportability loggerSupportability = LoggerSupportability.getLogger(ComponentPropertyServlet.class.getName()); - + private static final Logger log = LoggerFactory.getLogger(ComponentPropertyServlet.class); + private static final String CREATE_PROPERTY = "Create Property"; + private static final String DEBUG_MESSAGE = "Start handle request of {} modifier id is {}"; + private static final LoggerSupportability loggerSupportability = LoggerSupportability.getLogger(ComponentPropertyServlet.class.getName()); + private final PropertyBusinessLogic propertyBusinessLogic; + private final ApplicationDataTypeCache applicationDataTypeCache; + + @Inject + public ComponentPropertyServlet(UserBusinessLogic userBusinessLogic, ComponentsUtils componentsUtils, + ApplicationDataTypeCache applicationDataTypeCache, PropertyBusinessLogic propertyBusinessLogic) { + super(userBusinessLogic, componentsUtils); + this.applicationDataTypeCache = applicationDataTypeCache; + this.propertyBusinessLogic = propertyBusinessLogic; + } @POST @Path("services/{serviceId}/properties") @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) - @Operation(description = "Create Service Property", method = "POST", summary = "Returns created service property", - responses = {@ApiResponse( - content = @Content(array = @ArraySchema(schema = @Schema(implementation = Response.class)))), - @ApiResponse(responseCode = "201", description = "Service property created"), - @ApiResponse(responseCode = "403", description = "Restricted operation"), - @ApiResponse(responseCode = "400", description = "Invalid content / Missing content"), - @ApiResponse(responseCode = "409", description = "Service property already exist")}) + @Operation(description = "Create Service Property", method = "POST", summary = "Returns created service property", responses = { + @ApiResponse(content = @Content(array = @ArraySchema(schema = @Schema(implementation = Response.class)))), + @ApiResponse(responseCode = "201", description = "Service property created"), + @ApiResponse(responseCode = "403", description = "Restricted operation"), + @ApiResponse(responseCode = "400", description = "Invalid content / Missing content"), + @ApiResponse(responseCode = "409", description = "Service property already exist")}) @PermissionAllowed(AafPermission.PermNames.INTERNAL_ALL_VALUE) public Response createPropertyInService( - @Parameter(description = "service id to update with new property", - required = true) @PathParam("serviceId") final String serviceId, - @Parameter(description = "Service property to be created", required = true) String data, - @Context final HttpServletRequest request, @HeaderParam(value = Constants.USER_ID_HEADER) String userId) { - + @Parameter(description = "service id to update with new property", required = true) @PathParam("serviceId") final String serviceId, + @Parameter(description = "Service property to be created", required = true) String data, @Context final HttpServletRequest request, + @HeaderParam(value = Constants.USER_ID_HEADER) String userId) { return createProperty(serviceId, data, request, userId); } @@ -117,41 +108,34 @@ public class ComponentPropertyServlet extends BeGenericServlet { @Path("resources/{resourceId}/properties") @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) - @Operation(description = "Create Resource Property", method = "POST", summary = "Returns created service property", - responses = {@ApiResponse( - content = @Content(array = @ArraySchema(schema = @Schema(implementation = Response.class)))), - @ApiResponse(responseCode = "201", description = "Resource property created"), - @ApiResponse(responseCode = "403", description = "Restricted operation"), - @ApiResponse(responseCode = "400", description = "Invalid content / Missing content"), - @ApiResponse(responseCode = "409", description = "Resource property already exist")}) + @Operation(description = "Create Resource Property", method = "POST", summary = "Returns created service property", responses = { + @ApiResponse(content = @Content(array = @ArraySchema(schema = @Schema(implementation = Response.class)))), + @ApiResponse(responseCode = "201", description = "Resource property created"), + @ApiResponse(responseCode = "403", description = "Restricted operation"), + @ApiResponse(responseCode = "400", description = "Invalid content / Missing content"), + @ApiResponse(responseCode = "409", description = "Resource property already exist")}) @PermissionAllowed(AafPermission.PermNames.INTERNAL_ALL_VALUE) public Response createPropertyInResource( - @Parameter(description = "Resource id to update with new property", - required = true) @PathParam("resourceId") final String resourceId, - @Parameter(description = "Resource property to be created", required = true) String data, - @Context final HttpServletRequest request, @HeaderParam(value = Constants.USER_ID_HEADER) String userId) { - + @Parameter(description = "Resource id to update with new property", required = true) @PathParam("resourceId") final String resourceId, + @Parameter(description = "Resource property to be created", required = true) String data, @Context final HttpServletRequest request, + @HeaderParam(value = Constants.USER_ID_HEADER) String userId) { return createProperty(resourceId, data, request, userId); } - @GET @Path("services/{serviceId}/properties/{propertyId}") @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) - @Operation(description = "Get Service Property", method = "GET", summary = "Returns property of service", - responses = {@ApiResponse( - content = @Content(array = @ArraySchema(schema = @Schema(implementation = Response.class)))), - @ApiResponse(responseCode = "200", description = "property"), - @ApiResponse(responseCode = "403", description = "Restricted operation"), - @ApiResponse(responseCode = "400", description = "Invalid content / Missing content"), - @ApiResponse(responseCode = "404", description = "Service property not found")}) + @Operation(description = "Get Service Property", method = "GET", summary = "Returns property of service", responses = { + @ApiResponse(content = @Content(array = @ArraySchema(schema = @Schema(implementation = Response.class)))), + @ApiResponse(responseCode = "200", description = "property"), @ApiResponse(responseCode = "403", description = "Restricted operation"), + @ApiResponse(responseCode = "400", description = "Invalid content / Missing content"), + @ApiResponse(responseCode = "404", description = "Service property not found")}) @PermissionAllowed(AafPermission.PermNames.INTERNAL_ALL_VALUE) public Response getPropertyInService( - @Parameter(description = "service id of property", required = true) @PathParam("serviceId") final String serviceId, - @Parameter(description = "property id to get", required = true) @PathParam("propertyId") final String propertyId, - @Context final HttpServletRequest request, @HeaderParam(value = Constants.USER_ID_HEADER) String userId) { - + @Parameter(description = "service id of property", required = true) @PathParam("serviceId") final String serviceId, + @Parameter(description = "property id to get", required = true) @PathParam("propertyId") final String propertyId, + @Context final HttpServletRequest request, @HeaderParam(value = Constants.USER_ID_HEADER) String userId) { return getProperty(serviceId, propertyId, request, userId); } @@ -159,20 +143,16 @@ public class ComponentPropertyServlet extends BeGenericServlet { @Path("resources/{resourceId}/properties/{propertyId}") @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) - @Operation(description = "Get Resource Property", method = "GET", summary = "Returns property of resource", - responses = {@ApiResponse( - content = @Content(array = @ArraySchema(schema = @Schema(implementation = Response.class)))), - @ApiResponse(responseCode = "200", description = "property"), - @ApiResponse(responseCode = "403", description = "Restricted operation"), - @ApiResponse(responseCode = "400", description = "Invalid content / Missing content"), - @ApiResponse(responseCode = "404", description = "Resource property not found")}) + @Operation(description = "Get Resource Property", method = "GET", summary = "Returns property of resource", responses = { + @ApiResponse(content = @Content(array = @ArraySchema(schema = @Schema(implementation = Response.class)))), + @ApiResponse(responseCode = "200", description = "property"), @ApiResponse(responseCode = "403", description = "Restricted operation"), + @ApiResponse(responseCode = "400", description = "Invalid content / Missing content"), + @ApiResponse(responseCode = "404", description = "Resource property not found")}) @PermissionAllowed(AafPermission.PermNames.INTERNAL_ALL_VALUE) public Response getPropertyInResource( - @Parameter(description = "resource id of property", - required = true) @PathParam("resourceId") final String resourceId, - @Parameter(description = "property id to get", required = true) @PathParam("propertyId") final String propertyId, - @Context final HttpServletRequest request, @HeaderParam(value = Constants.USER_ID_HEADER) String userId) { - + @Parameter(description = "resource id of property", required = true) @PathParam("resourceId") final String resourceId, + @Parameter(description = "property id to get", required = true) @PathParam("propertyId") final String propertyId, + @Context final HttpServletRequest request, @HeaderParam(value = Constants.USER_ID_HEADER) String userId) { return getProperty(resourceId, propertyId, request, userId); } @@ -180,19 +160,15 @@ public class ComponentPropertyServlet extends BeGenericServlet { @Path("services/{serviceId}/properties") @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) - @Operation(description = "Get Service Property", method = "GET", summary = "Returns property list of service", - responses = {@ApiResponse( - content = @Content(array = @ArraySchema(schema = @Schema(implementation = Response.class)))), - @ApiResponse(responseCode = "200", description = "property"), - @ApiResponse(responseCode = "403", description = "Restricted operation"), - @ApiResponse(responseCode = "400", description = "Invalid content / Missing content"), - @ApiResponse(responseCode = "404", description = "Service property not found")}) + @Operation(description = "Get Service Property", method = "GET", summary = "Returns property list of service", responses = { + @ApiResponse(content = @Content(array = @ArraySchema(schema = @Schema(implementation = Response.class)))), + @ApiResponse(responseCode = "200", description = "property"), @ApiResponse(responseCode = "403", description = "Restricted operation"), + @ApiResponse(responseCode = "400", description = "Invalid content / Missing content"), + @ApiResponse(responseCode = "404", description = "Service property not found")}) @PermissionAllowed(AafPermission.PermNames.INTERNAL_ALL_VALUE) public Response getPropertyListInService( - @Parameter(description = "service id of property", - required = true) @PathParam("serviceId") final String serviceId, - @Context final HttpServletRequest request, @HeaderParam(value = Constants.USER_ID_HEADER) String userId) { - + @Parameter(description = "service id of property", required = true) @PathParam("serviceId") final String serviceId, + @Context final HttpServletRequest request, @HeaderParam(value = Constants.USER_ID_HEADER) String userId) { return getPropertyList(serviceId, request, userId); } @@ -200,19 +176,15 @@ public class ComponentPropertyServlet extends BeGenericServlet { @Path("resources/{resourceId}/properties") @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) - @Operation(description = "Get Resource Property", method = "GET", summary = "Returns property list of resource", - responses = {@ApiResponse( - content = @Content(array = @ArraySchema(schema = @Schema(implementation = Response.class)))), - @ApiResponse(responseCode = "200", description = "property"), - @ApiResponse(responseCode = "403", description = "Restricted operation"), - @ApiResponse(responseCode = "400", description = "Invalid content / Missing content"), - @ApiResponse(responseCode = "404", description = "Resource property not found")}) + @Operation(description = "Get Resource Property", method = "GET", summary = "Returns property list of resource", responses = { + @ApiResponse(content = @Content(array = @ArraySchema(schema = @Schema(implementation = Response.class)))), + @ApiResponse(responseCode = "200", description = "property"), @ApiResponse(responseCode = "403", description = "Restricted operation"), + @ApiResponse(responseCode = "400", description = "Invalid content / Missing content"), + @ApiResponse(responseCode = "404", description = "Resource property not found")}) @PermissionAllowed(AafPermission.PermNames.INTERNAL_ALL_VALUE) public Response getPropertyListInResource( - @Parameter(description = "resource id of property", - required = true) @PathParam("resourceId") final String resourceId, - @Context final HttpServletRequest request, @HeaderParam(value = Constants.USER_ID_HEADER) String userId) { - + @Parameter(description = "resource id of property", required = true) @PathParam("resourceId") final String resourceId, + @Context final HttpServletRequest request, @HeaderParam(value = Constants.USER_ID_HEADER) String userId) { return getPropertyList(resourceId, request, userId); } @@ -220,21 +192,17 @@ public class ComponentPropertyServlet extends BeGenericServlet { @Path("services/{serviceId}/properties/{propertyId}") @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) - @Operation(description = "Delete Service Property", method = "DELETE", summary = "Returns deleted property", - responses = {@ApiResponse( - content = @Content(array = @ArraySchema(schema = @Schema(implementation = Response.class)))), - @ApiResponse(responseCode = "204", description = "deleted property"), - @ApiResponse(responseCode = "403", description = "Restricted operation"), - @ApiResponse(responseCode = "400", description = "Invalid content / Missing content"), - @ApiResponse(responseCode = "404", description = "Service property not found")}) + @Operation(description = "Delete Service Property", method = "DELETE", summary = "Returns deleted property", responses = { + @ApiResponse(content = @Content(array = @ArraySchema(schema = @Schema(implementation = Response.class)))), + @ApiResponse(responseCode = "204", description = "deleted property"), + @ApiResponse(responseCode = "403", description = "Restricted operation"), + @ApiResponse(responseCode = "400", description = "Invalid content / Missing content"), + @ApiResponse(responseCode = "404", description = "Service property not found")}) @PermissionAllowed(AafPermission.PermNames.INTERNAL_ALL_VALUE) public Response deletePropertyInService( - @Parameter(description = "service id of property", - required = true) @PathParam("serviceId") final String serviceId, - @Parameter(description = "Property id to delete", - required = true) @PathParam("propertyId") final String propertyId, - @Context final HttpServletRequest request, @HeaderParam(value = Constants.USER_ID_HEADER) String userId) { - + @Parameter(description = "service id of property", required = true) @PathParam("serviceId") final String serviceId, + @Parameter(description = "Property id to delete", required = true) @PathParam("propertyId") final String propertyId, + @Context final HttpServletRequest request, @HeaderParam(value = Constants.USER_ID_HEADER) String userId) { return deleteProperty(serviceId, propertyId, request, userId); } @@ -242,21 +210,17 @@ public class ComponentPropertyServlet extends BeGenericServlet { @Path("resources/{resourceId}/properties/{propertyId}") @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) - @Operation(description = "Delete Resource Property", method = "DELETE", summary = "Returns deleted property", - responses = {@ApiResponse( - content = @Content(array = @ArraySchema(schema = @Schema(implementation = Response.class)))), - @ApiResponse(responseCode = "204", description = "deleted property"), - @ApiResponse(responseCode = "403", description = "Restricted operation"), - @ApiResponse(responseCode = "400", description = "Invalid content / Missing content"), - @ApiResponse(responseCode = "404", description = "Resource property not found")}) + @Operation(description = "Delete Resource Property", method = "DELETE", summary = "Returns deleted property", responses = { + @ApiResponse(content = @Content(array = @ArraySchema(schema = @Schema(implementation = Response.class)))), + @ApiResponse(responseCode = "204", description = "deleted property"), + @ApiResponse(responseCode = "403", description = "Restricted operation"), + @ApiResponse(responseCode = "400", description = "Invalid content / Missing content"), + @ApiResponse(responseCode = "404", description = "Resource property not found")}) @PermissionAllowed(AafPermission.PermNames.INTERNAL_ALL_VALUE) public Response deletePropertyInResource( - @Parameter(description = "resource id of property", - required = true) @PathParam("resourceId") final String resourceId, - @Parameter(description = "Property id to delete", - required = true) @PathParam("propertyId") final String propertyId, - @Context final HttpServletRequest request, @HeaderParam(value = Constants.USER_ID_HEADER) String userId) { - + @Parameter(description = "resource id of property", required = true) @PathParam("resourceId") final String resourceId, + @Parameter(description = "Property id to delete", required = true) @PathParam("propertyId") final String propertyId, + @Context final HttpServletRequest request, @HeaderParam(value = Constants.USER_ID_HEADER) String userId) { return deleteProperty(resourceId, propertyId, request, userId); } @@ -264,19 +228,16 @@ public class ComponentPropertyServlet extends BeGenericServlet { @Path("services/{serviceId}/properties") @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) - @Operation(description = "Update Service Property", method = "PUT", summary = "Returns updated property", - responses = {@ApiResponse( - content = @Content(array = @ArraySchema(schema = @Schema(implementation = Response.class)))), - @ApiResponse(responseCode = "200", description = "Service property updated"), - @ApiResponse(responseCode = "403", description = "Restricted operation"), - @ApiResponse(responseCode = "400", description = "Invalid content / Missing content")}) + @Operation(description = "Update Service Property", method = "PUT", summary = "Returns updated property", responses = { + @ApiResponse(content = @Content(array = @ArraySchema(schema = @Schema(implementation = Response.class)))), + @ApiResponse(responseCode = "200", description = "Service property updated"), + @ApiResponse(responseCode = "403", description = "Restricted operation"), + @ApiResponse(responseCode = "400", description = "Invalid content / Missing content")}) @PermissionAllowed(AafPermission.PermNames.INTERNAL_ALL_VALUE) public Response updatePropertyInService( - @Parameter(description = "service id to update with new property", - required = true) @PathParam("serviceId") final String serviceId, - @Parameter(description = "Service property to update", required = true) String data, - @Context final HttpServletRequest request, @HeaderParam(value = Constants.USER_ID_HEADER) String userId) { - + @Parameter(description = "service id to update with new property", required = true) @PathParam("serviceId") final String serviceId, + @Parameter(description = "Service property to update", required = true) String data, @Context final HttpServletRequest request, + @HeaderParam(value = Constants.USER_ID_HEADER) String userId) { return updateProperty(serviceId, data, request, userId); } @@ -284,208 +245,163 @@ public class ComponentPropertyServlet extends BeGenericServlet { @Path("resources/{resourceId}/properties") @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) - @Operation(description = "Update Resource Property", method = "PUT", summary = "Returns updated property", - responses = {@ApiResponse( - content = @Content(array = @ArraySchema(schema = @Schema(implementation = Response.class)))), - @ApiResponse(responseCode = "200", description = "Resource property updated"), - @ApiResponse(responseCode = "403", description = "Restricted operation"), - @ApiResponse(responseCode = "400", description = "Invalid content / Missing content")}) + @Operation(description = "Update Resource Property", method = "PUT", summary = "Returns updated property", responses = { + @ApiResponse(content = @Content(array = @ArraySchema(schema = @Schema(implementation = Response.class)))), + @ApiResponse(responseCode = "200", description = "Resource property updated"), + @ApiResponse(responseCode = "403", description = "Restricted operation"), + @ApiResponse(responseCode = "400", description = "Invalid content / Missing content")}) @PermissionAllowed(AafPermission.PermNames.INTERNAL_ALL_VALUE) public Response updatePropertyInResource( - @Parameter(description = "resource id to update with new property", - required = true) @PathParam("resourceId") final String resourceId, - @Parameter(description = "Resource property to update", required = true) String data, - @Context final HttpServletRequest request, @HeaderParam(value = Constants.USER_ID_HEADER) String userId) { - - return updateProperty(resourceId, data, request, userId); - } - - private Response createProperty(String componentId, String data, HttpServletRequest request,String userId) { - String url = request.getMethod() + " " + request.getRequestURI(); - log.debug("Start handle request of {} modifier id is {} data is {}", url, userId, data); - loggerSupportability.log(LoggerSupportabilityActions.CREATE_PROPERTIES, StatusCode.STARTED,"CREATE_PROPERTIES by user {} ", userId); - - try{ - Either<Map<String, PropertyDefinition>, ActionStatus> propertyDefinition = - getPropertyModel(componentId, data); - if (propertyDefinition.isRight()) { - ResponseFormat responseFormat = getComponentsUtils().getResponseFormat(propertyDefinition.right().value()); - return buildErrorResponse(responseFormat); - } - - Map<String, PropertyDefinition> properties = propertyDefinition.left().value(); - if (properties == null || properties.size() != 1) { - log.info("Property content is invalid - {}", data); - ResponseFormat responseFormat = getComponentsUtils().getResponseFormat(ActionStatus.INVALID_CONTENT); - return buildErrorResponse(responseFormat); - } - - Map.Entry<String, PropertyDefinition> entry = properties.entrySet().iterator().next(); - PropertyDefinition newPropertyDefinition = entry.getValue(); - newPropertyDefinition.setParentUniqueId(componentId); - String propertyName = newPropertyDefinition.getName(); - - Either<EntryData<String, PropertyDefinition>, ResponseFormat> addPropertyEither = - propertyBusinessLogic.addPropertyToComponent(componentId, propertyName, newPropertyDefinition, userId); - - if(addPropertyEither.isRight()) { - return buildErrorResponse(addPropertyEither.right().value()); - } - - loggerSupportability.log(LoggerSupportabilityActions.CREATE_PROPERTIES, StatusCode.COMPLETE,"CREATE_PROPERTIES by user {} ", userId); - return buildOkResponse(newPropertyDefinition); - - } catch (Exception e) { - BeEcompErrorManager.getInstance().logBeRestApiGeneralError(CREATE_PROPERTY); - log.debug("create property failed with exception", e); - ResponseFormat responseFormat = - getComponentsUtils().getResponseFormat(ActionStatus.GENERAL_ERROR); - return buildErrorResponse(responseFormat); + @Parameter(description = "resource id to update with new property", required = true) @PathParam("resourceId") final String resourceId, + @Parameter(description = "Resource property to update", required = true) String data, @Context final HttpServletRequest request, + @HeaderParam(value = Constants.USER_ID_HEADER) String userId) { + return updateProperty(resourceId, data, request, userId); } - } - - private Response updateProperty(String componentId, String data, HttpServletRequest request, String userId) { - String url = request.getMethod() + " " + request.getRequestURI(); - log.debug("Start handle request of {}", url); - loggerSupportability.log(LoggerSupportabilityActions.UPDATE_PROPERTIES, StatusCode.STARTED,"UPDATE_PROPERTIES by user {} ", userId); + private Response createProperty(String componentId, String data, HttpServletRequest request, String userId) { + String url = request.getMethod() + " " + request.getRequestURI(); + log.debug("Start handle request of {} modifier id is {} data is {}", url, userId, data); + loggerSupportability.log(LoggerSupportabilityActions.CREATE_PROPERTIES, StatusCode.STARTED, "CREATE_PROPERTIES by user {} ", userId); + try { + Either<Map<String, PropertyDefinition>, ActionStatus> propertyDefinition = getPropertyModel(componentId, data); + if (propertyDefinition.isRight()) { + ResponseFormat responseFormat = getComponentsUtils().getResponseFormat(propertyDefinition.right().value()); + return buildErrorResponse(responseFormat); + } + Map<String, PropertyDefinition> properties = propertyDefinition.left().value(); + if (properties == null || properties.size() != 1) { + log.info("Property content is invalid - {}", data); + ResponseFormat responseFormat = getComponentsUtils().getResponseFormat(ActionStatus.INVALID_CONTENT); + return buildErrorResponse(responseFormat); + } + Map.Entry<String, PropertyDefinition> entry = properties.entrySet().iterator().next(); + PropertyDefinition newPropertyDefinition = entry.getValue(); + newPropertyDefinition.setParentUniqueId(componentId); + String propertyName = newPropertyDefinition.getName(); + Either<EntryData<String, PropertyDefinition>, ResponseFormat> addPropertyEither = propertyBusinessLogic + .addPropertyToComponent(componentId, propertyName, newPropertyDefinition, userId); + if (addPropertyEither.isRight()) { + return buildErrorResponse(addPropertyEither.right().value()); + } + loggerSupportability.log(LoggerSupportabilityActions.CREATE_PROPERTIES, StatusCode.COMPLETE, "CREATE_PROPERTIES by user {} ", userId); + return buildOkResponse(newPropertyDefinition); + } catch (Exception e) { + BeEcompErrorManager.getInstance().logBeRestApiGeneralError(CREATE_PROPERTY); + log.debug("create property failed with exception", e); + ResponseFormat responseFormat = getComponentsUtils().getResponseFormat(ActionStatus.GENERAL_ERROR); + return buildErrorResponse(responseFormat); + } + } - // get modifier id - User modifier = new User(); - modifier.setUserId(userId); - log.debug("modifier id is {}", userId); + private Response updateProperty(String componentId, String data, HttpServletRequest request, String userId) { + String url = request.getMethod() + " " + request.getRequestURI(); + log.debug("Start handle request of {}", url); + loggerSupportability.log(LoggerSupportabilityActions.UPDATE_PROPERTIES, StatusCode.STARTED, "UPDATE_PROPERTIES by user {} ", userId); + // get modifier id + User modifier = new User(); + modifier.setUserId(userId); + log.debug("modifier id is {}", userId); // - try { - // convert json to PropertyDefinition - - Either<Map<String, PropertyDefinition>, ActionStatus> propertiesListEither = - getPropertiesListForUpdate(data); - if (propertiesListEither.isRight()) { - ResponseFormat responseFormat = - getComponentsUtils().getResponseFormat(propertiesListEither.right().value()); - return buildErrorResponse(responseFormat); - } - Map<String, PropertyDefinition> properties = propertiesListEither.left().value(); - if (properties == null) { - log.info("Property content is invalid - {}", data); - ResponseFormat responseFormat = - getComponentsUtils().getResponseFormat(ActionStatus.INVALID_CONTENT); - return buildErrorResponse(responseFormat); - } - - //Validate value and Constraint of property - Either<Boolean, ResponseFormat> constraintValidatorResponse = - PropertyValueConstraintValidationUtil.getInstance(). - validatePropertyConstraints(properties.values(), applicationDataTypeCache); - if (constraintValidatorResponse.isRight()) { - log.error("Failed validation value and constraint of property: {}", - constraintValidatorResponse.right().value()); - return buildErrorResponse(constraintValidatorResponse.right().value()); - } - - // update property - - for(PropertyDefinition propertyDefinition : properties.values()) { - Either<EntryData<String, PropertyDefinition>, ResponseFormat> status = - propertyBusinessLogic.updateComponentProperty( - componentId, propertyDefinition.getUniqueId(), propertyDefinition, userId); - if (status.isRight()) { - log.info("Failed to update Property. Reason - ", status.right().value()); - return buildErrorResponse(status.right().value()); + try { + // convert json to PropertyDefinition + Either<Map<String, PropertyDefinition>, ActionStatus> propertiesListEither = getPropertiesListForUpdate(data); + if (propertiesListEither.isRight()) { + ResponseFormat responseFormat = getComponentsUtils().getResponseFormat(propertiesListEither.right().value()); + return buildErrorResponse(responseFormat); + } + Map<String, PropertyDefinition> properties = propertiesListEither.left().value(); + if (properties == null) { + log.info("Property content is invalid - {}", data); + ResponseFormat responseFormat = getComponentsUtils().getResponseFormat(ActionStatus.INVALID_CONTENT); + return buildErrorResponse(responseFormat); + } + //Validate value and Constraint of property + Either<Boolean, ResponseFormat> constraintValidatorResponse = PropertyValueConstraintValidationUtil.getInstance() + .validatePropertyConstraints(properties.values(), applicationDataTypeCache); + if (constraintValidatorResponse.isRight()) { + log.error("Failed validation value and constraint of property: {}", constraintValidatorResponse.right().value()); + return buildErrorResponse(constraintValidatorResponse.right().value()); + } + // update property + for (PropertyDefinition propertyDefinition : properties.values()) { + Either<EntryData<String, PropertyDefinition>, ResponseFormat> status = propertyBusinessLogic + .updateComponentProperty(componentId, propertyDefinition.getUniqueId(), propertyDefinition, userId); + if (status.isRight()) { + log.info("Failed to update Property. Reason - ", status.right().value()); + return buildErrorResponse(status.right().value()); + } + EntryData<String, PropertyDefinition> property = status.left().value(); + PropertyDefinition updatedPropertyDefinition = property.getValue(); + log.debug("Property id {} updated successfully ", updatedPropertyDefinition.getUniqueId()); + } + ResponseFormat responseFormat = getComponentsUtils().getResponseFormat(ActionStatus.OK); + loggerSupportability.log(LoggerSupportabilityActions.UPDATE_PROPERTIES, StatusCode.COMPLETE, "UPDATE_PROPERTIES by user {} ", userId); + return buildOkResponse(responseFormat, properties); + } catch (Exception e) { + BeEcompErrorManager.getInstance().logBeRestApiGeneralError("Update Property"); + log.debug("update property failed with exception", e); + ResponseFormat responseFormat = getComponentsUtils().getResponseFormat(ActionStatus.GENERAL_ERROR); + return buildErrorResponse(responseFormat); } - EntryData<String, PropertyDefinition> property = status.left().value(); - PropertyDefinition updatedPropertyDefinition = property.getValue(); - - log.debug("Property id {} updated successfully ", updatedPropertyDefinition.getUniqueId()); - } - - ResponseFormat responseFormat = getComponentsUtils().getResponseFormat(ActionStatus.OK); - loggerSupportability.log(LoggerSupportabilityActions.UPDATE_PROPERTIES, StatusCode.COMPLETE,"UPDATE_PROPERTIES by user {} ", userId); - return buildOkResponse(responseFormat, properties); - - } catch (Exception e) { - BeEcompErrorManager.getInstance().logBeRestApiGeneralError("Update Property"); - log.debug("update property failed with exception", e); - ResponseFormat responseFormat = - getComponentsUtils().getResponseFormat(ActionStatus.GENERAL_ERROR); - return buildErrorResponse(responseFormat); - } - } - - private Response getProperty(String componentId, String propertyId, HttpServletRequest request, String userId) { - String url = request.getMethod() + " " + request.getRequestURI(); - log.debug(DEBUG_MESSAGE, url, userId); - try { - Either<Map.Entry<String, PropertyDefinition>, ResponseFormat> retrievedPropertyEither = - propertyBusinessLogic.getComponentProperty(componentId, propertyId, userId); - - if(retrievedPropertyEither.isRight()) { - return buildErrorResponse(retrievedPropertyEither.right().value()); - } - - return buildOkResponse(retrievedPropertyEither.left().value()); - - } catch (Exception e) { - BeEcompErrorManager.getInstance().logBeRestApiGeneralError(CREATE_PROPERTY); - log.debug("get property failed with exception", e); - ResponseFormat responseFormat = - getComponentsUtils().getResponseFormat(ActionStatus.GENERAL_ERROR); - return buildErrorResponse(responseFormat); + private Response getProperty(String componentId, String propertyId, HttpServletRequest request, String userId) { + String url = request.getMethod() + " " + request.getRequestURI(); + log.debug(DEBUG_MESSAGE, url, userId); + try { + Either<Map.Entry<String, PropertyDefinition>, ResponseFormat> retrievedPropertyEither = propertyBusinessLogic + .getComponentProperty(componentId, propertyId, userId); + if (retrievedPropertyEither.isRight()) { + return buildErrorResponse(retrievedPropertyEither.right().value()); + } + return buildOkResponse(retrievedPropertyEither.left().value()); + } catch (Exception e) { + BeEcompErrorManager.getInstance().logBeRestApiGeneralError(CREATE_PROPERTY); + log.debug("get property failed with exception", e); + ResponseFormat responseFormat = getComponentsUtils().getResponseFormat(ActionStatus.GENERAL_ERROR); + return buildErrorResponse(responseFormat); + } } - } - private Response getPropertyList(String componentId, HttpServletRequest request, String userId) { - - String url = request.getMethod() + " " + request.getRequestURI(); - log.debug(DEBUG_MESSAGE, url, userId); - try { - Either<List<PropertyDefinition>, ResponseFormat> propertiesListEither = - propertyBusinessLogic.getPropertiesList(componentId, userId); - - if(propertiesListEither.isRight()) { - return buildErrorResponse(propertiesListEither.right().value()); - } - - return buildOkResponse(propertiesListEither.left().value()); - - } catch (Exception e) { - BeEcompErrorManager.getInstance().logBeRestApiGeneralError(CREATE_PROPERTY); - log.debug("get property failed with exception", e); - ResponseFormat responseFormat = - getComponentsUtils().getResponseFormat(ActionStatus.GENERAL_ERROR); - return buildErrorResponse(responseFormat); + private Response getPropertyList(String componentId, HttpServletRequest request, String userId) { + String url = request.getMethod() + " " + request.getRequestURI(); + log.debug(DEBUG_MESSAGE, url, userId); + try { + Either<List<PropertyDefinition>, ResponseFormat> propertiesListEither = propertyBusinessLogic.getPropertiesList(componentId, userId); + if (propertiesListEither.isRight()) { + return buildErrorResponse(propertiesListEither.right().value()); + } + return buildOkResponse(propertiesListEither.left().value()); + } catch (Exception e) { + BeEcompErrorManager.getInstance().logBeRestApiGeneralError(CREATE_PROPERTY); + log.debug("get property failed with exception", e); + ResponseFormat responseFormat = getComponentsUtils().getResponseFormat(ActionStatus.GENERAL_ERROR); + return buildErrorResponse(responseFormat); + } } - } - private Response deleteProperty(String componentId, String propertyId, HttpServletRequest request, String userId) { - String url = request.getMethod() + " " + request.getRequestURI(); - log.debug(DEBUG_MESSAGE, url, userId); - - try { - - // delete the property - Either<Map.Entry<String, PropertyDefinition>, ResponseFormat> status = - propertyBusinessLogic.deletePropertyFromComponent(componentId, propertyId, userId); - if (status.isRight()) { - log.debug("Failed to delete Property. Reason - ", status.right().value()); - return buildErrorResponse(status.right().value()); - } - Map.Entry<String, PropertyDefinition> property = status.left().value(); - String name = property.getKey(); - PropertyDefinition propertyDefinition = property.getValue(); - - log.debug("Property {} deleted successfully with id {}", name, propertyDefinition.getUniqueId()); - ResponseFormat responseFormat = getComponentsUtils().getResponseFormat(ActionStatus.NO_CONTENT); - return buildOkResponse(responseFormat, propertyToJson(property)); - - } catch (Exception e) { - BeEcompErrorManager.getInstance().logBeRestApiGeneralError("Delete Property"); - log.debug("delete property failed with exception", e); - ResponseFormat responseFormat = getComponentsUtils().getResponseFormat(ActionStatus.GENERAL_ERROR); - return buildErrorResponse(responseFormat); + private Response deleteProperty(String componentId, String propertyId, HttpServletRequest request, String userId) { + String url = request.getMethod() + " " + request.getRequestURI(); + log.debug(DEBUG_MESSAGE, url, userId); + try { + // delete the property + Either<Map.Entry<String, PropertyDefinition>, ResponseFormat> status = propertyBusinessLogic + .deletePropertyFromComponent(componentId, propertyId, userId); + if (status.isRight()) { + log.debug("Failed to delete Property. Reason - ", status.right().value()); + return buildErrorResponse(status.right().value()); + } + Map.Entry<String, PropertyDefinition> property = status.left().value(); + String name = property.getKey(); + PropertyDefinition propertyDefinition = property.getValue(); + log.debug("Property {} deleted successfully with id {}", name, propertyDefinition.getUniqueId()); + ResponseFormat responseFormat = getComponentsUtils().getResponseFormat(ActionStatus.NO_CONTENT); + return buildOkResponse(responseFormat, propertyToJson(property)); + } catch (Exception e) { + BeEcompErrorManager.getInstance().logBeRestApiGeneralError("Delete Property"); + log.debug("delete property failed with exception", e); + ResponseFormat responseFormat = getComponentsUtils().getResponseFormat(ActionStatus.GENERAL_ERROR); + return buildErrorResponse(responseFormat); + } } - } - } |