commit 7505ce2f51b447e6496d1ecff2e561ed64f6e560
Author: Josh Edwards <joshua.edwards@capitalone.com>
Date:   Fri May 1 14:13:50 2015 -0400

    Allowing the plugin to reference Hudson/Jenkins proxy settings and use them when accessing AWS

diff --git a/pom.xml b/pom.xml
index 63cd047..a5b14f2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -38,7 +38,7 @@
 		<dependency>
 			<groupId>com.amazonaws</groupId>
 			<artifactId>aws-java-sdk</artifactId>
-			<version>1.3.32</version>
+			<version>1.9.33</version>
 			<exclusions>
 				<exclusion>
 					<groupId>commons-logging</groupId>
@@ -47,6 +47,11 @@
 			</exclusions>
 		</dependency>
 		<dependency>
+			<groupId>org.apache.httpcomponents</groupId>
+			<artifactId>httpcore</artifactId>
+			<version>4.4</version>
+		</dependency>
+		<dependency>
 			<groupId>org.mockito</groupId>
 			<artifactId>mockito-core</artifactId>
 			<version>1.8.0</version>
diff --git a/src/main/java/com/syncapse/jenkinsci/plugins/awscloudformationwrapper/CloudFormation.java b/src/main/java/com/syncapse/jenkinsci/plugins/awscloudformationwrapper/CloudFormation.java
index 9ca520f..24d37d2 100644
--- a/src/main/java/com/syncapse/jenkinsci/plugins/awscloudformationwrapper/CloudFormation.java
+++ b/src/main/java/com/syncapse/jenkinsci/plugins/awscloudformationwrapper/CloudFormation.java
@@ -11,7 +11,9 @@ import java.util.Map;
 
 import com.amazonaws.AmazonClientException;
 import com.amazonaws.AmazonServiceException;
+import com.amazonaws.ClientConfiguration;
 import com.amazonaws.auth.AWSCredentials;
+import com.amazonaws.auth.AWSCredentialsProvider;
 import com.amazonaws.auth.BasicAWSCredentials;
 import com.amazonaws.services.cloudformation.AmazonCloudFormation;
 import com.amazonaws.services.cloudformation.AmazonCloudFormationAsyncClient;
@@ -32,6 +34,9 @@ import com.amazonaws.services.cloudformation.model.StackStatus;
 import com.amazonaws.services.cloudformation.model.StackSummary;
 import com.google.common.collect.Lists;
 import hudson.EnvVars;
+import hudson.ProxyConfiguration;
+import hudson.model.Hudson;
+
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.LinkedHashMap;
@@ -231,11 +236,30 @@ public class CloudFormation {
     protected AmazonCloudFormation getAWSClient() {
         AWSCredentials credentials = new BasicAWSCredentials(this.awsAccessKey,
                 this.awsSecretKey);
+
+        Hudson hudson = Hudson.getInstance(); 
+        ProxyConfiguration proxyConfig = hudson != null ? hudson.proxy : null;
+        if (proxyConfig != null && proxyConfig.name != null) {
+	        ClientConfiguration config = new ClientConfiguration();
+	        config.setProxyHost(proxyConfig.name);
+	        config.setProxyPort(proxyConfig.port);
+	        config.setProxyUsername(proxyConfig.getUserName());
+	        config.setProxyPassword(proxyConfig.getPassword());
+	        config.setPreemptiveBasicProxyAuth(true);
+	        AWSCredentialsProvider provider = new BasicAWSCredentialsProvider(credentials);
+	        AmazonCloudFormation amazonClient = new AmazonCloudFormationAsyncClient(
+	        		provider, config);
+	
+	        amazonClient.setEndpoint(awsRegion.endPoint);
+	        return amazonClient;
+        } else {
         AmazonCloudFormation amazonClient = new AmazonCloudFormationAsyncClient(
                 credentials);
+	
         amazonClient.setEndpoint(awsRegion.endPoint);
         return amazonClient;
     }
+    }
 
     private boolean waitForStackToBeDeleted() {
 
@@ -446,3 +470,21 @@ public class CloudFormation {
         return map;
     }
 }
+
+class BasicAWSCredentialsProvider implements AWSCredentialsProvider {
+	
+	AWSCredentials awsCredentials;
+	
+	public BasicAWSCredentialsProvider(AWSCredentials awsCredentials) {
+		this.awsCredentials = awsCredentials;
+	}
+	
+	public AWSCredentials getCredentials() {
+		return awsCredentials;
+	}
+	
+	public void refresh() {
+		
+	}
+	
+}