/*- | |
* ============LICENSE_START======================================================= | |
* OSAM Core | |
* ================================================================================ | |
* Copyright (C) 2018 Netsia | |
* ================================================================================ | |
* 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.osam.external.aai; | |
import lombok.extern.slf4j.Slf4j; | |
import org.onap.osam.common.exception.BadFormatException; | |
import org.onap.osam.common.exception.InvalidOperationException; | |
import org.onap.osam.common.exception.NotFoundException; | |
import org.onap.osam.external.aai.config.AaiConfig; | |
import org.onap.osam.external.aai.exception.ExternalSystemException; | |
import org.onap.osam.external.aai.model.PNF; | |
import org.onap.osam.external.aai.util.AaiHeaderUtil; | |
import org.springframework.beans.factory.annotation.Autowired; | |
import org.springframework.http.HttpStatus; | |
import org.springframework.stereotype.Service; | |
import org.springframework.web.reactive.function.client.ClientResponse; | |
import javax.net.ssl.SSLException; | |
/** | |
* Created by cemturker on 12.04.2018. | |
*/ | |
@Service | |
@Slf4j | |
public class AaiClientImpl implements AaiClient { | |
private AaiConfig aaiConfig; | |
@Autowired | |
public AaiClientImpl(AaiConfig aaiConfig) { | |
this.aaiConfig = aaiConfig; | |
} | |
@Override | |
public PNF queryPnf(String name) { | |
try { | |
ClientResponse response = AaiWebClient.webClient(aaiConfig).build().queryPNF(name); | |
commonErrorCheck(name,response); | |
log.info("Pnf query response code {} for {} id",response.statusCode(),name); | |
if (response.statusCode().is2xxSuccessful()) { | |
return AaiHeaderUtil.convertToPnf(response.bodyToMono(String.class).block()); | |
} | |
} catch (SSLException e) { | |
log.error("",e); | |
} | |
throw new InvalidOperationException(""); | |
} | |
@Override | |
public void putPnf(PNF pnf) { | |
try { | |
ClientResponse response = AaiWebClient.webClient(aaiConfig).build().putPNF(pnf); | |
commonErrorCheck(pnf,response); | |
log.info("Pnf query response code {} for {} ",response.statusCode(),pnf); | |
if (response.statusCode().is2xxSuccessful()) { | |
return; | |
} | |
} catch (SSLException e) { | |
log.error("",e); | |
} | |
throw new InvalidOperationException(""); | |
} | |
private <T> void commonErrorCheck(T t, ClientResponse response){ | |
if (response.statusCode().is5xxServerError()) { | |
throw new ExternalSystemException("Aai error code:"+response.statusCode().value()); | |
} | |
if (HttpStatus.BAD_REQUEST.equals(response.statusCode())) { | |
throw new BadFormatException("Bad format exception is received from AAI"); | |
} | |
if (HttpStatus.NOT_FOUND.equals(response.statusCode())) { | |
throw new NotFoundException(t+" is not found in AAI"); | |
} | |
} | |
} |