You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by ud...@apache.org on 2014/10/15 10:32:15 UTC

[4/5] git commit: making transactionmanager singleton

making transactionmanager singleton


Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/f5ae1b93
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/f5ae1b93
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/f5ae1b93

Branch: refs/heads/4.0.0-grouping
Commit: f5ae1b93df20ef78687a26aecd846117ae97f392
Parents: 7002c68
Author: Udara Liyanage <ud...@wso2.com>
Authored: Wed Oct 15 13:47:31 2014 +0530
Committer: Udara Liyanage <ud...@wso2.com>
Committed: Wed Oct 15 13:47:31 2014 +0530

----------------------------------------------------------------------
 .../client/DefaultMetaDataServiceClient.java    |  8 +++-
 .../metadata/client/rest/DefaultRestClient.java | 31 +++++--------
 .../client/rest/HTTPConnectionManager.java      | 47 ++++++++++++++++++++
 .../metadata/client/rest/RestClient.java        | 20 ++++++++-
 4 files changed, 83 insertions(+), 23 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/f5ae1b93/components/org.apache.stratos.metadata.client/src/main/java/org/apache/stratos/metadata/client/DefaultMetaDataServiceClient.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.metadata.client/src/main/java/org/apache/stratos/metadata/client/DefaultMetaDataServiceClient.java b/components/org.apache.stratos.metadata.client/src/main/java/org/apache/stratos/metadata/client/DefaultMetaDataServiceClient.java
index 6c43915..d509533 100644
--- a/components/org.apache.stratos.metadata.client/src/main/java/org/apache/stratos/metadata/client/DefaultMetaDataServiceClient.java
+++ b/components/org.apache.stratos.metadata.client/src/main/java/org/apache/stratos/metadata/client/DefaultMetaDataServiceClient.java
@@ -22,6 +22,7 @@ package org.apache.stratos.metadata.client;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.stratos.metadata.client.beans.PropertyBean;
+import org.apache.stratos.metadata.client.config.MetaDataClientConfig;
 import org.apache.stratos.metadata.client.exception.MetaDataServiceClientExeption;
 import org.apache.stratos.metadata.client.exception.RestClientException;
 import org.apache.stratos.metadata.client.rest.DefaultRestClient;
@@ -39,8 +40,11 @@ public class DefaultMetaDataServiceClient implements MetaDataServiceClient {
     private final String baseUrl;
 
     public DefaultMetaDataServiceClient(String baseUrl) throws RestClientException {
-        this.baseUrl = baseUrl;
-        this.restClient = new DefaultRestClient();
+        MetaDataClientConfig metaDataClientConfig = MetaDataClientConfig.getInstance();
+        this.baseUrl = metaDataClientConfig.getMetaDataServiceBaseUrl();
+        String username = metaDataClientConfig.getUsername();
+        String password = metaDataClientConfig.getPassword();
+        this.restClient = new DefaultRestClient(username, password);
     }
 
     public DefaultMetaDataServiceClient(String baseUrl, RestClient restClient) throws RestClientException {

http://git-wip-us.apache.org/repos/asf/stratos/blob/f5ae1b93/components/org.apache.stratos.metadata.client/src/main/java/org/apache/stratos/metadata/client/rest/DefaultRestClient.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.metadata.client/src/main/java/org/apache/stratos/metadata/client/rest/DefaultRestClient.java b/components/org.apache.stratos.metadata.client/src/main/java/org/apache/stratos/metadata/client/rest/DefaultRestClient.java
index 29f5415..b671219 100644
--- a/components/org.apache.stratos.metadata.client/src/main/java/org/apache/stratos/metadata/client/rest/DefaultRestClient.java
+++ b/components/org.apache.stratos.metadata.client/src/main/java/org/apache/stratos/metadata/client/rest/DefaultRestClient.java
@@ -29,14 +29,13 @@ import org.apache.http.client.HttpClient;
 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.conn.HttpClientConnectionManager;
+import org.apache.http.client.methods.HttpRequestBase;
 import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
 import org.apache.http.conn.ssl.SSLContextBuilder;
 import org.apache.http.conn.ssl.TrustSelfSignedStrategy;
 import org.apache.http.entity.StringEntity;
 import org.apache.http.impl.client.CloseableHttpClient;
 import org.apache.http.impl.client.HttpClients;
-import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
 import org.apache.stratos.metadata.client.config.MetaDataClientConfig;
 import org.apache.stratos.metadata.client.exception.RestClientException;
 
@@ -48,16 +47,19 @@ import java.security.NoSuchAlgorithmException;
 
 public class DefaultRestClient implements RestClient {
 
-    private static final int MAX_TOTAL_CONNECTIONS = 100;
-    private static final int DEFAULT_MAX_PER_ROUTE = 20;
     private static final String APPLICATION_JSON = "application/json";
     private static final Log log = LogFactory.getLog(DefaultRestClient.class);
 
+    private final String username;
+    private final String password;
+
     private HttpClient httpClient;
 
-    public DefaultRestClient() throws RestClientException {
-        SSLContextBuilder builder = new SSLContextBuilder();
+    public DefaultRestClient(String username, String password) throws RestClientException {
+        this.username  =username;
+        this.password=password;
 
+        SSLContextBuilder builder = new SSLContextBuilder();
         SSLConnectionSocketFactory sslConnectionFactory;
         try {
             builder.loadTrustMaterial(null, new TrustSelfSignedStrategy());
@@ -69,20 +71,11 @@ public class DefaultRestClient implements RestClient {
         } catch (KeyStoreException e) {
             throw new RestClientException(e);
         }
-        CloseableHttpClient closableHttpClient = HttpClients.custom().setSSLSocketFactory(sslConnectionFactory).setConnectionManager(getHttpConnectionManager()).build();
+        CloseableHttpClient closableHttpClient = HttpClients.custom().setSSLSocketFactory(sslConnectionFactory)
+                .setConnectionManager(HTTPConnectionManager.getInstance().getHttpConnectionManager()).build();
         this.httpClient = closableHttpClient;
     }
 
-    private HttpClientConnectionManager getHttpConnectionManager() {
-        PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager();
-        // TODO: Introduce configurable variable for Max total and max per router variables.
-        cm.setMaxTotal(MAX_TOTAL_CONNECTIONS);
-        cm.setDefaultMaxPerRoute(DEFAULT_MAX_PER_ROUTE);
-        //HttpHost localhost = new HttpHost("locahost", 80);
-        //cm.setMaxPerRoute(new HttpRoute(localhost), 50);
-        return cm;
-    }
-
     public HttpResponse doPost(String resourcePath, Object payload) throws RestClientException {
 
         HttpPost post = new HttpPost(resourcePath);
@@ -100,9 +93,7 @@ public class DefaultRestClient implements RestClient {
         }
     }
 
-    private void setAuthHeader(HttpPost post) {
-        String username = getUsername();
-        String password = getPassword();
+    private void setAuthHeader(HttpRequestBase post) {
         String identity = username + ":" + password;
         String encoding = new String(Base64.encodeBase64(identity.getBytes()));
         post.setHeader("Authorization", "Basic " + encoding);

http://git-wip-us.apache.org/repos/asf/stratos/blob/f5ae1b93/components/org.apache.stratos.metadata.client/src/main/java/org/apache/stratos/metadata/client/rest/HTTPConnectionManager.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.metadata.client/src/main/java/org/apache/stratos/metadata/client/rest/HTTPConnectionManager.java b/components/org.apache.stratos.metadata.client/src/main/java/org/apache/stratos/metadata/client/rest/HTTPConnectionManager.java
new file mode 100644
index 0000000..aadfa49
--- /dev/null
+++ b/components/org.apache.stratos.metadata.client/src/main/java/org/apache/stratos/metadata/client/rest/HTTPConnectionManager.java
@@ -0,0 +1,47 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.apache.stratos.metadata.client.rest;
+
+import org.apache.http.conn.HttpClientConnectionManager;
+import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
+
+public class HTTPConnectionManager {
+
+    private static final int MAX_TOTAL_CONNECTIONS = 100;
+    private static final int DEFAULT_MAX_PER_ROUTE = 20;
+
+    private static class InstanceHolder {
+        public static HTTPConnectionManager instance = new HTTPConnectionManager();
+    }
+
+    public static HTTPConnectionManager getInstance() {
+        return InstanceHolder.instance;
+    }
+
+    public HttpClientConnectionManager getHttpConnectionManager(){
+        PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager();
+        // TODO: Introduce configurable variable for Max total and max per router variables.
+        cm.setMaxTotal(MAX_TOTAL_CONNECTIONS);
+        cm.setDefaultMaxPerRoute(DEFAULT_MAX_PER_ROUTE);
+        //HttpHost localhost = new HttpHost("locahost", 80);
+        //cm.setMaxPerRoute(new HttpRoute(localhost), 50);
+        return cm;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/f5ae1b93/components/org.apache.stratos.metadata.client/src/main/java/org/apache/stratos/metadata/client/rest/RestClient.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.metadata.client/src/main/java/org/apache/stratos/metadata/client/rest/RestClient.java b/components/org.apache.stratos.metadata.client/src/main/java/org/apache/stratos/metadata/client/rest/RestClient.java
index 4c8fb6e..3189218 100644
--- a/components/org.apache.stratos.metadata.client/src/main/java/org/apache/stratos/metadata/client/rest/RestClient.java
+++ b/components/org.apache.stratos.metadata.client/src/main/java/org/apache/stratos/metadata/client/rest/RestClient.java
@@ -23,10 +23,28 @@ import org.apache.http.HttpResponse;
 import org.apache.stratos.metadata.client.exception.RestClientException;
 
 public interface RestClient {
-
+    /**
+     * Perform a HTTP POST request to @resourcePath with request body containing @payload converted to JSON.
+     * @param resourcePath Resource path to where is request is sent.
+     * @param payload request message body.
+     * @return Response of the request.
+     * @throws RestClientException
+     */
     public HttpResponse doPost(String resourcePath, Object payload) throws RestClientException;
 
+    /**
+     * Perform a HTTP GET request to @resourcePath.
+     * @param resourcePath
+     * @return Response of the request.
+     * @throws RestClientException
+     */
     public HttpResponse doGet(String resourcePath) throws RestClientException;
 
+    /**
+     * Perform a HTTP DELETE request to @resourcePath.
+     * @param resourcePath
+     * @return Response of the request.
+     * @throws RestClientException
+     */
     public HttpResponse doDelete(String resourcePath) throws RestClientException;
 }