diff options
Diffstat (limited to 'src/main/java/org/onap/pomba/contextbuilder/aai/service')
5 files changed, 284 insertions, 0 deletions
diff --git a/src/main/java/org/onap/pomba/contextbuilder/aai/service/ConsumerService.java b/src/main/java/org/onap/pomba/contextbuilder/aai/service/ConsumerService.java new file mode 100644 index 0000000..c23a6dc --- /dev/null +++ b/src/main/java/org/onap/pomba/contextbuilder/aai/service/ConsumerService.java @@ -0,0 +1,40 @@ +/* + * ============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.aai.service; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.HttpMethod; +import org.springframework.web.client.RestTemplate; +/*Used for the PACT Contract verification only*/ +public class ConsumerService { + + private String url; + private RestTemplate restTemplate; + + @Autowired + public ConsumerService(@Value("${producer}") String url) { + this.url = url; + this.restTemplate = new RestTemplate(); + } + + public Object getWelcomeMsg() { + return restTemplate.exchange(url+ "/aaicontextbuilder/service/hello?name=User",HttpMethod.GET, null, String.class).getBody(); + } + +}
\ No newline at end of file diff --git a/src/main/java/org/onap/pomba/contextbuilder/aai/service/SpringService.java b/src/main/java/org/onap/pomba/contextbuilder/aai/service/SpringService.java new file mode 100644 index 0000000..aa28e2b --- /dev/null +++ b/src/main/java/org/onap/pomba/contextbuilder/aai/service/SpringService.java @@ -0,0 +1,27 @@ +/* + * ============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.aai.service; + + +import org.onap.pomba.common.datatypes.ModelContext; +import org.onap.pomba.contextbuilder.aai.exception.AuditException; + +public interface SpringService { + + public ModelContext getContext(String serviceInstanceId, String modelVersionId, String modelInvariantId, String serviceType, String customerId, String transactionId) throws AuditException; +} diff --git a/src/main/java/org/onap/pomba/contextbuilder/aai/service/SpringServiceImpl.java b/src/main/java/org/onap/pomba/contextbuilder/aai/service/SpringServiceImpl.java new file mode 100644 index 0000000..60ad231 --- /dev/null +++ b/src/main/java/org/onap/pomba/contextbuilder/aai/service/SpringServiceImpl.java @@ -0,0 +1,66 @@ +/* + * ============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.aai.service; + +import org.onap.aai.restclient.client.RestClient; +import org.onap.pomba.common.datatypes.ModelContext; +import org.onap.pomba.contextbuilder.aai.common.LogMessages; +import org.onap.pomba.contextbuilder.aai.exception.AuditException; +import org.onap.pomba.contextbuilder.aai.util.RestUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class SpringServiceImpl implements SpringService { + private static Logger log = LoggerFactory.getLogger(SpringServiceImpl.class); + + @Autowired + private RestClient aaiClient; + @Autowired + private String aaiBaseUrl; + @Autowired + private String aaiServiceInstancePath; + + + public SpringServiceImpl() { + // needed for instantiation + } + + @Override + public ModelContext getContext(String serviceInstanceId, String modelVersionId, String modelInvariantId, String serviceType, String customerId, String tranId) throws AuditException { + + String url = "serviceInstanceId=" + serviceInstanceId + " modelVersion="+modelVersionId + + " modelInvariantId="+ modelInvariantId + " serviceType="+serviceType + " customerId="+ customerId; + log.info(LogMessages.AAI_CONTEXT_BUILDER_URL + url); + + ModelContext context = null; + + // Retrieve the service instance information from AAI + try { + context= RestUtil.retrieveAAIModelData(aaiClient, aaiBaseUrl, aaiServiceInstancePath, tranId, serviceInstanceId, modelVersionId, modelInvariantId, serviceType, customerId); + } catch (AuditException ae) { + throw ae; + } catch (Exception e) { + throw new AuditException(e.getLocalizedMessage()); + } + return context; + } + +} diff --git a/src/main/java/org/onap/pomba/contextbuilder/aai/service/rs/RestService.java b/src/main/java/org/onap/pomba/contextbuilder/aai/service/rs/RestService.java new file mode 100644 index 0000000..dcc3382 --- /dev/null +++ b/src/main/java/org/onap/pomba/contextbuilder/aai/service/rs/RestService.java @@ -0,0 +1,62 @@ +/* + * ============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.aai.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; +import org.onap.pomba.contextbuilder.aai.model.GenericResponse; + + +@Api +@Path("/service") +@Produces({MediaType.APPLICATION_JSON}) +public interface RestService { + + @GET + @Path("/context") + @Produces({ MediaType.APPLICATION_JSON }) + @ApiOperation( + value = "Respond AAIContext Model Data", + notes = "Returns a JSON object which represents the AAIConetxt model data", + response = GenericResponse.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, + @QueryParam("modelVersionId") String modelVersionId, + @QueryParam("modelInvariantId") String modelInvariantId, + @QueryParam("serviceType") String serviceType, + @QueryParam("customerId") String customerId + ); +}
\ No newline at end of file diff --git a/src/main/java/org/onap/pomba/contextbuilder/aai/service/rs/RestServiceImpl.java b/src/main/java/org/onap/pomba/contextbuilder/aai/service/rs/RestServiceImpl.java new file mode 100644 index 0000000..38f7510 --- /dev/null +++ b/src/main/java/org/onap/pomba/contextbuilder/aai/service/rs/RestServiceImpl.java @@ -0,0 +1,89 @@ +/* + * ============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.aai.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.aai.common.LogMessages; +import org.onap.pomba.contextbuilder.aai.exception.AuditException; +import org.onap.pomba.contextbuilder.aai.service.SpringService; +import org.onap.pomba.contextbuilder.aai.util.RestUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; + +public class RestServiceImpl implements RestService { + private static Logger log = LoggerFactory.getLogger(RestService.class); + private static final String EMPTY_JSON_STRING = "{}"; + + + @Autowired + private SpringService service; + + @Override + public Response getContext(HttpHeaders headers, String serviceInstanceId, String modelVersionId, String modelInvariantId, String serviceType, String customerId) { + + String url = "serviceInstanceId=" + serviceInstanceId + " modelVersion="+modelVersionId + + " modelInvariantId="+ modelInvariantId + " serviceType="+serviceType + " customerId="+ customerId; + if(log.isDebugEnabled()) { + log.debug(LogMessages.AAI_CONTEXT_BUILDER_URL + url); + } + + + Response response = null; + String transactionId = null; + ModelContext aaiContext= null; + + Gson gson = new GsonBuilder().create(); + + try { + // Do some validation on Http headers and URL parameters + RestUtil.validateHeader(headers); + RestUtil.validateURL(serviceInstanceId, modelVersionId, modelInvariantId, serviceType, customerId); + + // Keep the same transaction id for logging purpose + transactionId= RestUtil.extractTranIdHeader(headers); + + aaiContext = service.getContext(serviceInstanceId, modelVersionId, modelInvariantId, serviceType, customerId, transactionId); + + if (aaiContext==null) { + // Return empty JSON + response = Response.ok().entity(EMPTY_JSON_STRING).build(); + }else { + response = Response.ok().entity(gson.toJson(aaiContext)).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; + } + +} |