X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Forg%2Fonap%2Faai%2Fdatarouter%2Fquery%2FChampRouter.java;h=7e63869e2397317e36d5bfaed3d309a32c58dd58;hb=refs%2Fchanges%2F53%2F40753%2F2;hp=a120f896a5dd7ba0ceb400eda7d64deac05f9206;hpb=d46b0b9c3ce9ad5eca684ebeccb89f04d3cbcf6c;p=aai%2Fdata-router.git diff --git a/src/main/java/org/onap/aai/datarouter/query/ChampRouter.java b/src/main/java/org/onap/aai/datarouter/query/ChampRouter.java index a120f89..7e63869 100644 --- a/src/main/java/org/onap/aai/datarouter/query/ChampRouter.java +++ b/src/main/java/org/onap/aai/datarouter/query/ChampRouter.java @@ -21,50 +21,87 @@ package org.onap.aai.datarouter.query; import java.security.InvalidParameterException; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; -import org.apache.camel.Exchange; -import org.onap.aai.rest.RestClientEndpoint; +import javax.annotation.PostConstruct; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response.Status; + +import org.eclipse.jetty.util.security.Password; import org.onap.aai.cl.api.Logger; import org.onap.aai.cl.eelf.LoggerFactory; +import org.onap.aai.datarouter.exception.DataRouterException; +import org.onap.aai.datarouter.util.DataRouterConstants; +import org.onap.aai.restclient.client.OperationResult; +import org.onap.aai.restclient.client.RestClient; +import org.onap.aai.restclient.rest.HttpUtil; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Component; + -public class ChampRouter extends QueryRouter { +@Component +@Qualifier("champ") +public class ChampRouter implements QueryRouter { Logger logger = LoggerFactory.getInstance().getLogger(ChampRouter.class.getName()); private String champBaseURL; + + private RestClient restClient ; + public ChampRouter(){} + + public ChampRouter(String champBaseURL, RestClientConfig config) { + this.champBaseURL = champBaseURL; + this.restClient = new RestClient().validateServerHostname(false).validateServerCertChain(true) + .clientCertFile(config.getCertPath()) + .clientCertPassword(Password.deobfuscate(config.getCertPassword())) + .trustStore(config.getTrustStorePath()) + .connectTimeoutMs(config.getConnectionTimeout()) + .readTimeoutMs(config.getReadTimeout()); + validate(); + } - public ChampRouter(String champBaseURL) { - String baseURL = champBaseURL.endsWith("/") ? champBaseURL.substring(0, champBaseURL.length() - 1) - : champBaseURL; - if(checkRecursion(baseURL)){ - logger.info(QueryMsgs.QUERY_INFO, "Invalid champBaseURL : Can't re-route back to DataRouter "+ champBaseURL); - throw new InvalidParameterException("Invalid champBaseURL : Can't re-route back to DataRouter "+ champBaseURL); + + public void validate(){ + String baseURL = champBaseURL.endsWith("/") ? champBaseURL.substring(0, champBaseURL.length() - 1) : champBaseURL; + if (baseURL.contains(DATA_ROUTER_PORT)) { + logger.info(QueryMsgs.QUERY_INFO, "Invalid champBaseURL : Can't re-route back to DataRouter " + champBaseURL); + throw new InvalidParameterException("Invalid champBaseURL : Can't re-route back to DataRouter " + champBaseURL); } - this.champBaseURL = baseURL; + this.champBaseURL = baseURL; } - public void setQueryRequest(Exchange exchange) { - setMDC(exchange); - String path = exchange.getIn().getHeader(Exchange.HTTP_PATH, String.class); - String queryParams = exchange.getIn().getHeader(Exchange.HTTP_QUERY, String.class); - String ecompUrl; + @Override + public String process(String urlContext, String queryParams, Map> headers) + throws DataRouterException { + String champURL; + String response; if (queryParams != null && !queryParams.isEmpty()) { - ecompUrl = champBaseURL + path + "?" + queryParams; + champURL = champBaseURL + urlContext + "?" + queryParams; } else { - ecompUrl = champBaseURL + path; + champURL = champBaseURL + urlContext; } - logger.info(QueryMsgs.QUERY_INFO, "Routing request to Champ service URL: " + ecompUrl); - exchange.getIn().setHeader(RestClientEndpoint.IN_HEADER_URL, ecompUrl); - exchange.getIn().setHeader("X-FromAppId", SERVICE_NAME); - exchange.getIn().setHeader("X-TransactionId", getTxId(exchange)); + logger.info(QueryMsgs.QUERY_INFO, "Routing request to Champ service URL: " + champURL); - } + headers = headers == null ? new HashMap>() : headers; + headers.put("X-FromAppId", Arrays.asList(DataRouterConstants.DATA_ROUTER_SERVICE_NAME)); + OperationResult result = restClient.get(champURL, headers, MediaType.APPLICATION_JSON_TYPE); + + if (HttpUtil.isHttpResponseClassSuccess(result.getResultCode())) { + response = result.getResult(); + } else { + logger.info(QueryMsgs.QUERY_ERROR, + "Error while calling Champ service URL: " + champURL + " failure cause: " + result.getFailureCause()); + throw new DataRouterException( + "Error while calling Champ service URL: " + champURL + " failure cause: " + result.getFailureCause(), + Status.fromStatusCode(result.getResultCode())); + } - public void setQueryResponse(Exchange exchange) { - Integer httpResponseCode = exchange.getIn().getHeader(RestClientEndpoint.OUT_HEADER_RESPONSE_CODE, Integer.class); - // Object httpBody = exchange.getIn().getBody(); - exchange.getIn().setHeader(Exchange.HTTP_RESPONSE_CODE, httpResponseCode); + return response; }