aboutsummaryrefslogtreecommitdiffstats
path: root/dcae_dmaapbc_client/src/main/java/org/openecomp/dcae/dmaap/bcapi/client/SimpleRestClientBase.java
diff options
context:
space:
mode:
Diffstat (limited to 'dcae_dmaapbc_client/src/main/java/org/openecomp/dcae/dmaap/bcapi/client/SimpleRestClientBase.java')
-rw-r--r--dcae_dmaapbc_client/src/main/java/org/openecomp/dcae/dmaap/bcapi/client/SimpleRestClientBase.java273
1 files changed, 0 insertions, 273 deletions
diff --git a/dcae_dmaapbc_client/src/main/java/org/openecomp/dcae/dmaap/bcapi/client/SimpleRestClientBase.java b/dcae_dmaapbc_client/src/main/java/org/openecomp/dcae/dmaap/bcapi/client/SimpleRestClientBase.java
deleted file mode 100644
index 1e5b064..0000000
--- a/dcae_dmaapbc_client/src/main/java/org/openecomp/dcae/dmaap/bcapi/client/SimpleRestClientBase.java
+++ /dev/null
@@ -1,273 +0,0 @@
-/*-
- * ================================================================================
- * DCAE DMaaP Bus Controller REST Client
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property
- * ================================================================================
- * 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.
- * ================================================================================
- */
-package org.openecomp.dcae.dmaap.bcapi.client;
-
-import java.io.IOException;
-import java.net.URI;
-
-import org.apache.http.Consts;
-import org.apache.http.HttpEntity;
-import org.apache.http.HttpHost;
-import org.apache.http.auth.AuthScope;
-import org.apache.http.auth.UsernamePasswordCredentials;
-import org.apache.http.client.AuthCache;
-import org.apache.http.client.ClientProtocolException;
-import org.apache.http.client.CredentialsProvider;
-import org.apache.http.client.config.RequestConfig;
-import org.apache.http.client.config.RequestConfig.Builder;
-import org.apache.http.client.methods.CloseableHttpResponse;
-import org.apache.http.client.methods.HttpDelete;
-import org.apache.http.client.methods.HttpGet;
-import org.apache.http.client.methods.HttpPost;
-import org.apache.http.client.methods.HttpPut;
-import org.apache.http.client.methods.HttpRequestBase;
-import org.apache.http.client.protocol.HttpClientContext;
-import org.apache.http.client.utils.URIBuilder;
-import org.apache.http.entity.ContentType;
-import org.apache.http.entity.StringEntity;
-import org.apache.http.impl.auth.BasicScheme;
-import org.apache.http.impl.client.BasicAuthCache;
-import org.apache.http.impl.client.BasicCredentialsProvider;
-import org.apache.http.impl.client.CloseableHttpClient;
-import org.apache.http.impl.client.HttpClients;
-import org.apache.http.util.EntityUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Provides a basic client to access a REST endpoint, optionally using HTTP
- * basic authentication.
- *
- * Caveat: If HTTPS access is used and the server uses a self-signed
- * certificate, the local trust store must be extended appropriately. The client
- * throws exceptions if the JVM cannot validate the server certificate.
- */
-public class SimpleRestClientBase {
-
- private static Logger logger = LoggerFactory.getLogger(SimpleRestClientBase.class);
-
- /**
- * Credentials for HTTP basic authentication (optional).
- */
- private final String username;
- private final String password;
-
- /**
- * Timeouts (optional)
- */
- private Integer connectTimeoutMs = null;
- private Integer connectionRequestTimeoutMs = null;
- private Integer socketTimeoutMs = null;
-
- /**
- * Constructs a client that does not use any authentication and uses Apache HTTPD client default values for timeouts.
- */
- public SimpleRestClientBase() {
- this(null, null, null, null, null);
- }
-
- /**
- * Convenience constructor to build a client that uses the specified username and password for
- * basic HTTP authentication on all requests. In other words, this client
- * pre-emptively sends the "Basic" header instead of first trying the
- * request without, failing, negotiating, then sending with credentials.
- *
- * @param username User name for basic HTTP authentication.
- * @param password Password for basic HTTP authentication.
- */
- public SimpleRestClientBase(final String username, final String password) {
- this(username, password, null, null, null);
- }
-
- /**
- * Convenience constructor to build a client that uses the specified timeouts
- * on all requests.
- *
- * @param connectTimeoutMs
- * Connection timeout, in milliseconds
- * @param connectionRequestTimeoutMs
- * Connection request timeout, in milliseconds
- * @param socketTimeoutMs
- * Socket timeout, in milliseconds
- */
- public SimpleRestClientBase(final Integer connectTimeoutMs, final Integer connectionRequestTimeoutMs, final Integer socketTimeoutMs) {
- this(null, null, connectTimeoutMs, connectionRequestTimeoutMs, socketTimeoutMs);
- }
-
- /**
- * Constructs a client with the specified credentials and timeout values.
- * @param username User name for basic HTTP authentication; ignored if null
- * @param password Password for basic HTTP authentication; ignored if null
- * @param connectTimeoutMs ignored if null
- * @param connectionRequestTimeoutMs ignored if null
- * @param socketTimeoutMs ignored if null
- */
- public SimpleRestClientBase(final String username, final String password, final Integer connectTimeoutMs, final Integer connectionRequestTimeoutMs, final Integer socketTimeoutMs) {
- this.username = username;
- this.password = password;
- this.connectTimeoutMs = null;
- this.connectionRequestTimeoutMs = null;
- this.socketTimeoutMs = null;
- }
-
-
- /**
- * Constructs and sends a GET request for the URI.
- *
- * @param uri
- * REST endpoint
- * @return Result of the get
- * @throws Exception
- */
- public HttpStatusAndResponse<String> getRestContent(final URI uri) throws Exception {
- HttpGet httpGet = new HttpGet(uri);
- return doRestRequest(httpGet);
- }
-
- /**
- * Constructs and sends a POST request using the specified body.
- *
- * @param uri
- * REST endpoint
- * @param json
- * Content to post
- * @return Result of the post; null if an error happens
- * @throws Exception
- */
- public HttpStatusAndResponse<String> postRestContent(final URI uri, final String json) throws Exception {
- HttpPost httpPost = new HttpPost(uri);
- StringEntity postEntity = new StringEntity(json, ContentType.create("application/json", Consts.UTF_8));
- httpPost.setEntity(postEntity);
- return doRestRequest(httpPost);
- }
-
- /**
- * Constructs and sends a PUT request using the specified body.
- *
- * @param uri
- * REST endpoint
- * @param json
- * Content to put
- * @return Result of the put; null if an error happens
- * @throws Exception
- */
- public HttpStatusAndResponse<String> putRestContent(final URI uri, final String json) throws Exception {
- HttpPut httpPut = new HttpPut(uri);
- StringEntity postEntity = new StringEntity(json, ContentType.create("application/json", Consts.UTF_8));
- httpPut.setEntity(postEntity);
- return doRestRequest(httpPut);
- }
-
- /**
- * Constructs and sends a DELETE request for the URI.
- *
- * @param uri
- * REST endpoint
- * @return Result of the get
- * @throws Exception
- */
- public HttpStatusAndResponse<String> deleteRestContent(final URI uri) throws Exception {
- HttpDelete httpDel = new HttpDelete(uri);
- return doRestRequest(httpDel);
- }
-
- /**
- * Executes the specified request and gathers the response.
- *
- * @param request
- * HttpGet, HttpPost, etc.
- * @return Status code and response body
- * @throws ClientProtocolException
- * @throws IOException
- */
- private HttpStatusAndResponse<String> doRestRequest(final HttpRequestBase request)
- throws ClientProtocolException, IOException {
-
- // Set up authentication if needed
- final HttpClientContext context = HttpClientContext.create();
- if (this.username != null || this.password != null) {
- UsernamePasswordCredentials credentials = new UsernamePasswordCredentials(this.username, this.password);
- CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
- credentialsProvider.setCredentials(AuthScope.ANY, credentials);
- context.setCredentialsProvider(credentialsProvider);
-
- HttpHost host = new HttpHost(request.getURI().getHost(), request.getURI().getPort(), request.getURI().getScheme());
- AuthCache authCache = new BasicAuthCache();
- authCache.put(host, new BasicScheme());
- context.setAuthCache(authCache);
- }
- final Builder requestConfigBuilder = RequestConfig.custom();
- if (connectionRequestTimeoutMs != null)
- requestConfigBuilder.setConnectionRequestTimeout(connectionRequestTimeoutMs);
- if (connectTimeoutMs != null)
- requestConfigBuilder.setConnectTimeout(connectTimeoutMs);
- if (socketTimeoutMs != null)
- requestConfigBuilder.setSocketTimeout(socketTimeoutMs);
- RequestConfig requestConfig = requestConfigBuilder.build();
- final CloseableHttpClient httpClient = HttpClients.custom().setDefaultRequestConfig(requestConfig).build();
- CloseableHttpResponse response = null;
- String responseJson = null;
- try {
- response = httpClient.execute(request, context);
- // Some methods return non-200 on success
- logger.debug("doRestRequest: status is {}", response.getStatusLine());
- HttpEntity entity = response.getEntity();
- // This is common; don't warn
- if (entity == null) {
- logger.debug("doRestRequest: Entity is null");
- } else {
- // entity content length is never set;
- // this naively tries to read everything.
- responseJson = EntityUtils.toString(entity);
- EntityUtils.consume(entity);
- // Don't give back empty string;
- // it has no more meaning than null.
- if (responseJson.length() == 0)
- responseJson = null;
- }
- } finally {
- if (response != null)
- response.close();
- }
- if (response == null)
- return null;
- return new HttpStatusAndResponse<String>(response.getStatusLine().getStatusCode(), responseJson);
- }
-
- /**
- * Basic test invocation.
- *
- * @param args
- * Expect 1 argument, the URL of a REST endpoint.
- * @throws Exception
- * if anything goes wrong
- */
- public static void main(String[] args) throws Exception {
- if (args.length != 1)
- throw new IllegalArgumentException("Expect 1 argument: REST URL for GET");
- SimpleRestClientBase client = new SimpleRestClientBase();
- URIBuilder uriBuilder = new URIBuilder(args[0]);
- URI uri = uriBuilder.build();
- HttpStatusAndResponse<String> hsr = client.getRestContent(uri);
- System.out.println("Response code is " + hsr.getStatusCode());
- System.out.println(hsr.getResponseString());
- System.out.println("main ends.");
- }
-}