X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=src%2Fmain%2Fjava%2Forg%2Fonap%2Faai%2Fmodelloader%2Frestclient%2FBabelServiceClientImpl.java;fp=src%2Fmain%2Fjava%2Forg%2Fonap%2Faai%2Fmodelloader%2Frestclient%2FBabelServiceClientImpl.java;h=540089224ec165dcd5fcc398c60b3f66e60fd57e;hb=0e9a90774a86475f40d4e946798cf765910a31f6;hp=0000000000000000000000000000000000000000;hpb=f265fce93af9ccb200162fbeaa0705b418397851;p=aai%2Fmodel-loader.git diff --git a/src/main/java/org/onap/aai/modelloader/restclient/BabelServiceClientImpl.java b/src/main/java/org/onap/aai/modelloader/restclient/BabelServiceClientImpl.java new file mode 100644 index 0000000..5400892 --- /dev/null +++ b/src/main/java/org/onap/aai/modelloader/restclient/BabelServiceClientImpl.java @@ -0,0 +1,99 @@ +/** + * ============LICENSE_START======================================================= + * org.onap.aai + * ================================================================================ + * Copyright © 2017-2019 AT&T Intellectual Property. All rights reserved. + * Copyright © 2017-2019 European Software Marketing Ltd. + * ================================================================================ + * 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.aai.modelloader.restclient; + +import java.util.List; +import java.util.stream.Collectors; +import org.onap.aai.babel.service.data.BabelArtifact; +import org.onap.aai.babel.service.data.BabelRequest; +import org.onap.aai.babel.service.data.BabelArtifact.ArtifactType; +import org.onap.aai.cl.api.Logger; +import org.onap.aai.cl.eelf.LoggerFactory; +import org.onap.aai.modelloader.config.ModelLoaderConfig; +import org.onap.aai.modelloader.service.ModelLoaderMsgs; +import org.springframework.core.ParameterizedTypeReference; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpMethod; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Component; +import org.springframework.web.client.RestTemplate; + +/** + * HTTPS Client for interfacing with Babel. + * + */ +@Component +public class BabelServiceClientImpl implements BabelServiceClient { + + private static final Logger logger = LoggerFactory.getInstance().getLogger(BabelServiceClientImpl.class); + private final ModelLoaderConfig config; + private final RestTemplate restTemplate; + + public BabelServiceClientImpl(ModelLoaderConfig config, RestTemplate restTemplate) { + this.config = config; + this.restTemplate = restTemplate; + } + + @Override + public List postArtifact(BabelRequest babelRequest, String transactionId) throws BabelServiceClientException { + if (logger.isInfoEnabled()) { + logger.info(ModelLoaderMsgs.BABEL_REST_REQUEST_PAYLOAD, " Artifact Name: " + babelRequest.getArtifactName() + + " Artifact version: " + babelRequest.getArtifactVersion() + " Artifact payload: " + babelRequest.getCsar()); + } + + String resourceUrl = config.getBabelBaseUrl() + config.getBabelGenerateArtifactsUrl(); + + HttpHeaders headers = new HttpHeaders(); + headers.set(AaiRestClient.HEADER_TRANS_ID, transactionId); + headers.set(AaiRestClient.HEADER_FROM_APP_ID, AaiRestClient.ML_APP_NAME); + HttpEntity entity = new HttpEntity<>(babelRequest, headers); + + ResponseEntity> artifactResponse = restTemplate.exchange(resourceUrl, HttpMethod.POST, entity, new ParameterizedTypeReference>() {}); + + if (logger.isDebugEnabled()) { + logger.debug(ModelLoaderMsgs.DISTRIBUTION_EVENT, + "Babel response " + artifactResponse.getStatusCode() + " " + artifactResponse.getBody().toString()); + } + + if (!artifactResponse.getStatusCode().equals(HttpStatus.OK)) { + throw new BabelServiceClientException(artifactResponse.getBody().toString()); + } + + List babelArtifact = artifactResponse.getBody().stream() + .map(this::mapBabelDto) + .collect(Collectors.toList()); + + return babelArtifact; + } + + private BabelArtifact mapBabelDto(org.onap.aai.modelloader.babel.BabelArtifact babelDto) { + ArtifactType artifactType = babelDto.getType() == null + ? null + : ArtifactType.valueOf(babelDto.getType().name()); + return new BabelArtifact( + babelDto.getName(), + artifactType, + babelDto.getPayload()); + } +}