diff options
author | Tait,Trevor(rt0435) <rtait@amdocs.com> | 2018-10-03 15:08:34 -0400 |
---|---|---|
committer | Mohammadreza Pasandideh <mohammadreza.pasandideh@amdocs.com> | 2018-10-09 15:36:22 -0400 |
commit | a2423cf3ba54da34bb865befd44d56bbb925a94b (patch) | |
tree | 6d4ac22b24f3f33087edc3e7c077ef3d6ad96469 /src/main/java/org/onap/pomba/contextbuilder/sdnc/service/rs | |
parent | 2fb09922810847108464ba52e5b68907d5176e7a (diff) |
POMBA: SDNC Context Builder
Initial code for POMBA: SDNC Context Builder
Issue-ID: LOG-520
Change-Id: I6b06561b9050acc83b0c2b18b21c94f0f13f63e4
Signed-off-by: Tait,Trevor(rt0435) <rtait@amdocs.com>
Diffstat (limited to 'src/main/java/org/onap/pomba/contextbuilder/sdnc/service/rs')
-rw-r--r-- | src/main/java/org/onap/pomba/contextbuilder/sdnc/service/rs/RestService.java | 58 | ||||
-rw-r--r-- | src/main/java/org/onap/pomba/contextbuilder/sdnc/service/rs/RestServiceImpl.java | 81 |
2 files changed, 139 insertions, 0 deletions
diff --git a/src/main/java/org/onap/pomba/contextbuilder/sdnc/service/rs/RestService.java b/src/main/java/org/onap/pomba/contextbuilder/sdnc/service/rs/RestService.java new file mode 100644 index 0000000..ec1581a --- /dev/null +++ b/src/main/java/org/onap/pomba/contextbuilder/sdnc/service/rs/RestService.java @@ -0,0 +1,58 @@ +/* + * ============LICENSE_START=================================================== + * Copyright (c) 2018 Amdocs + * ============================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END===================================================== + */ + +package org.onap.pomba.contextbuilder.sdnc.service.rs; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiResponse; +import io.swagger.annotations.ApiResponses; +import javax.ws.rs.GET; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.QueryParam; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.HttpHeaders; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; + + +@Api +@Path("/service") +@Produces({MediaType.APPLICATION_JSON}) +public interface RestService { + + @GET + @Path("/context") + @Produces({MediaType.APPLICATION_JSON}) + @ApiOperation( + value = "Respond SDNCContext Model Data", + notes = "Returns a JSON object which represents the SDNCConetxt model data", + response = Response.class + ) + @ApiResponses( + value = { + @ApiResponse(code = 200, message = "OK"), + @ApiResponse(code = 400, message = "Bad Request"), + @ApiResponse(code = 404, message = "Service not available"), + @ApiResponse(code = 500, message = "Unexpected Runtime error") + }) + public Response getContext(@Context HttpHeaders headers, + @QueryParam("serviceInstanceId") String serviceInstanceId + ); +}
\ No newline at end of file diff --git a/src/main/java/org/onap/pomba/contextbuilder/sdnc/service/rs/RestServiceImpl.java b/src/main/java/org/onap/pomba/contextbuilder/sdnc/service/rs/RestServiceImpl.java new file mode 100644 index 0000000..d3b6378 --- /dev/null +++ b/src/main/java/org/onap/pomba/contextbuilder/sdnc/service/rs/RestServiceImpl.java @@ -0,0 +1,81 @@ +/* + * ============LICENSE_START=================================================== + * Copyright (c) 2018 Amdocs + * ============================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END===================================================== + */ + +package org.onap.pomba.contextbuilder.sdnc.service.rs; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import javax.ws.rs.core.HttpHeaders; +import javax.ws.rs.core.Response; +import javax.ws.rs.core.Response.Status; +import org.onap.pomba.common.datatypes.ModelContext; +import org.onap.pomba.contextbuilder.sdnc.exception.AuditException; +import org.onap.pomba.contextbuilder.sdnc.service.SpringService; +import org.onap.pomba.contextbuilder.sdnc.util.RestUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + + +@Component +public class RestServiceImpl implements RestService { + private static final String EMPTY_JSON_STRING = "{}"; + + @Autowired + private SpringService service; + + + public RestServiceImpl() throws UnsupportedOperationException{ + } + + @Override + public Response getContext(HttpHeaders headers, String serviceInstanceId) { + + Response response = null; + ModelContext sdncContext= null; + Gson gson = new GsonBuilder().create(); + try { + // Do some validation on Http headers and URL parameters + RestUtil.validateHeader(headers, service.getSdncAuthoriztion()); + RestUtil.validateURL(serviceInstanceId); + + // Keep the same transaction id for logging purposeString transactionId + String transactionId = RestUtil.extractTranIdHeader(headers); + + sdncContext = service.getContext(serviceInstanceId, transactionId); + + if (sdncContext==null) { + // Return empty JSON + response = Response.ok().entity(EMPTY_JSON_STRING).build(); + }else { + response = Response.ok().entity(gson.toJson(sdncContext)).build(); + } + } catch (AuditException ce) { + if (ce.getHttpStatus() !=null) { + response = Response.status(ce.getHttpStatus()).entity(ce.getMessage()).build(); + }else { + // No response received, could be the cases of network issue: i.e. unreachable host + response = Response.status(Status.INTERNAL_SERVER_ERROR).entity(ce.getMessage()).build(); + } + } catch (Exception e) { + response = Response.status(Status.INTERNAL_SERVER_ERROR).entity(e.getMessage()).build(); + } + + return response; + } + +} |