diff --git a/nevado-jms/pom.xml b/nevado-jms/pom.xml index 58603e8..69a6499 100644 --- a/nevado-jms/pom.xml +++ b/nevado-jms/pom.xml @@ -36,7 +36,7 @@ commons-logging commons-logging - 1.1 + 1.1.1 commons-logging diff --git a/nevado-jms/src/main/java/org/skyscreamer/nevado/jms/NevadoConnectionFactory.java b/nevado-jms/src/main/java/org/skyscreamer/nevado/jms/NevadoConnectionFactory.java index 7ed51cb..f66035b 100644 --- a/nevado-jms/src/main/java/org/skyscreamer/nevado/jms/NevadoConnectionFactory.java +++ b/nevado-jms/src/main/java/org/skyscreamer/nevado/jms/NevadoConnectionFactory.java @@ -36,6 +36,7 @@ public class NevadoConnectionFactory implements ConnectionFactory, QueueConnecti private SQSConnectorFactory _sqsConnectorFactory; private volatile String _awsAccessKey; private volatile String _awsSecretKey; + private volatile String _awsSessionToken; private volatile String _awsSQSEndpoint = null; private volatile String _awsSNSEndpoint = null; private volatile String _clientID; @@ -55,7 +56,7 @@ public NevadoConnectionFactory(SQSConnectorFactory sqsConnectorFactory) { public NevadoQueueConnection createQueueConnection() throws JMSException { checkSQSConnectorFactory(); - NevadoQueueConnection connection = new NevadoQueueConnection(_sqsConnectorFactory.getInstance(_awsAccessKey, _awsSecretKey, _awsSQSEndpoint, _awsSNSEndpoint)); + NevadoQueueConnection connection = new NevadoQueueConnection(_sqsConnectorFactory.getInstance(_awsAccessKey, _awsSecretKey, _awsSessionToken, _awsSQSEndpoint, _awsSNSEndpoint)); initializeConnection(connection); return connection; } @@ -63,35 +64,35 @@ public NevadoQueueConnection createQueueConnection() throws JMSException { public NevadoQueueConnection createQueueConnection(String awsAccessKey, String awsSecretKey) throws JMSException { checkSQSConnectorFactory(); NevadoQueueConnection connection - = new NevadoQueueConnection(_sqsConnectorFactory.getInstance(awsAccessKey, awsSecretKey, _awsSQSEndpoint, _awsSNSEndpoint)); + = new NevadoQueueConnection(_sqsConnectorFactory.getInstance(awsAccessKey, awsSecretKey, _awsSessionToken, _awsSQSEndpoint, _awsSNSEndpoint)); initializeConnection(connection); return connection; } public NevadoConnection createConnection() throws JMSException { checkSQSConnectorFactory(); - NevadoConnection connection = new NevadoConnection(_sqsConnectorFactory.getInstance(_awsAccessKey, _awsSecretKey, _awsSQSEndpoint, _awsSNSEndpoint)); + NevadoConnection connection = new NevadoConnection(_sqsConnectorFactory.getInstance(_awsAccessKey, _awsSecretKey, _awsSessionToken, _awsSQSEndpoint, _awsSNSEndpoint)); initializeConnection(connection); return connection; } public NevadoConnection createConnection(String awsAccessKey, String awsSecretKey) throws JMSException { checkSQSConnectorFactory(); - NevadoConnection connection = new NevadoConnection(_sqsConnectorFactory.getInstance(awsAccessKey, awsSecretKey, _awsSQSEndpoint, _awsSNSEndpoint)); + NevadoConnection connection = new NevadoConnection(_sqsConnectorFactory.getInstance(awsAccessKey, awsSecretKey, _awsSessionToken, _awsSQSEndpoint, _awsSNSEndpoint)); initializeConnection(connection); return connection; } public NevadoTopicConnection createTopicConnection() throws JMSException { checkSQSConnectorFactory(); - NevadoTopicConnection connection = new NevadoTopicConnection(_sqsConnectorFactory.getInstance(_awsAccessKey, _awsSecretKey, _awsSQSEndpoint, _awsSNSEndpoint)); + NevadoTopicConnection connection = new NevadoTopicConnection(_sqsConnectorFactory.getInstance(_awsAccessKey, _awsSecretKey, _awsSessionToken, _awsSQSEndpoint, _awsSNSEndpoint)); initializeConnection(connection); return connection; } public TopicConnection createTopicConnection(String awsAccessKey, String awsSecretKey) throws JMSException { checkSQSConnectorFactory(); - NevadoTopicConnection connection = new NevadoTopicConnection(_sqsConnectorFactory.getInstance(awsAccessKey, awsSecretKey, _awsSQSEndpoint, _awsSNSEndpoint)); + NevadoTopicConnection connection = new NevadoTopicConnection(_sqsConnectorFactory.getInstance(awsAccessKey, awsSecretKey, _awsSessionToken, _awsSQSEndpoint, _awsSNSEndpoint)); initializeConnection(connection); return connection; } @@ -127,6 +128,10 @@ public void setAwsSecretKey(String awsSecretKey) { _awsSecretKey = awsSecretKey; } + public void setAwsSessionToken(String awsSessionToken) { + this._awsSessionToken = awsSessionToken; + } + public void setAwsSQSEndpoint(String awsSQSEndpoint) { _awsSQSEndpoint = awsSQSEndpoint; } @@ -159,6 +164,10 @@ public String getAwsSecretKey() { return _awsSecretKey; } + public String get_awsSessionToken() { + return _awsSessionToken; + } + public String getClientID() { return _clientID; } diff --git a/nevado-jms/src/main/java/org/skyscreamer/nevado/jms/connector/AbstractSQSConnectorFactory.java b/nevado-jms/src/main/java/org/skyscreamer/nevado/jms/connector/AbstractSQSConnectorFactory.java index 8e40ea8..4fae71b 100644 --- a/nevado-jms/src/main/java/org/skyscreamer/nevado/jms/connector/AbstractSQSConnectorFactory.java +++ b/nevado-jms/src/main/java/org/skyscreamer/nevado/jms/connector/AbstractSQSConnectorFactory.java @@ -18,12 +18,12 @@ public abstract class AbstractSQSConnectorFactory implements SQSConnectorFactory protected long _receiveCheckIntervalMs = DEFAULT_RECEIVE_CHECK_INTERVAL_MS; @Override - public abstract SQSConnector getInstance(String awsAccessKey, String awsSecretKey, String awsSQSEndpoint, + public abstract SQSConnector getInstance(String awsAccessKey, String awsSecretKey, String awsSessionToken, String awsSQSEndpoint, String awsSNSEndpoint) throws JMSException; @Override - public SQSConnector getInstance(String awsAccessKey, String awsSecretKey) throws JMSException { - return getInstance(awsAccessKey, awsSecretKey, null, null); + public SQSConnector getInstance(String awsAccessKey, String awsSecretKey, String awsSessionToken) throws JMSException { + return getInstance(awsAccessKey, awsSecretKey, awsSessionToken, null, null); } public void setSecure(boolean secure) { diff --git a/nevado-jms/src/main/java/org/skyscreamer/nevado/jms/connector/SQSConnectorFactory.java b/nevado-jms/src/main/java/org/skyscreamer/nevado/jms/connector/SQSConnectorFactory.java index ca12435..4f4a38c 100644 --- a/nevado-jms/src/main/java/org/skyscreamer/nevado/jms/connector/SQSConnectorFactory.java +++ b/nevado-jms/src/main/java/org/skyscreamer/nevado/jms/connector/SQSConnectorFactory.java @@ -8,6 +8,6 @@ * @author Carter Page */ public interface SQSConnectorFactory { - SQSConnector getInstance(String awsAccessKey, String awsSecretKey) throws JMSException; - SQSConnector getInstance(String awsAccessKey, String awsSecretKey, String awsSQSEndpoint, String awsSNSEndpoint) throws JMSException; + SQSConnector getInstance(String awsAccessKey, String awsSecretKey, String awsSessionToken) throws JMSException; + SQSConnector getInstance(String awsAccessKey, String awsSecretKey, String awsSessionToken, String awsSQSEndpoint, String awsSNSEndpoint) throws JMSException; } diff --git a/nevado-jms/src/main/java/org/skyscreamer/nevado/jms/connector/amazonaws/AmazonAwsSQSConnector.java b/nevado-jms/src/main/java/org/skyscreamer/nevado/jms/connector/amazonaws/AmazonAwsSQSConnector.java index 9ae5274..4366170 100644 --- a/nevado-jms/src/main/java/org/skyscreamer/nevado/jms/connector/amazonaws/AmazonAwsSQSConnector.java +++ b/nevado-jms/src/main/java/org/skyscreamer/nevado/jms/connector/amazonaws/AmazonAwsSQSConnector.java @@ -6,6 +6,7 @@ import com.amazonaws.Protocol; import com.amazonaws.auth.AWSCredentials; import com.amazonaws.auth.BasicAWSCredentials; +import com.amazonaws.auth.BasicSessionCredentials; import com.amazonaws.services.sns.AmazonSNS; import com.amazonaws.services.sns.AmazonSNSAsync; import com.amazonaws.services.sns.AmazonSNSAsyncClient; @@ -50,13 +51,13 @@ public class AmazonAwsSQSConnector extends AbstractSQSConnector { private final AmazonSQS _amazonSQS; private final AmazonSNS _amazonSNS; - public AmazonAwsSQSConnector(String awsAccessKey, String awsSecretKey, boolean isSecure, long receiveCheckIntervalMs) { - this(awsAccessKey, awsSecretKey, isSecure, receiveCheckIntervalMs, false); + public AmazonAwsSQSConnector(String awsAccessKey, String awsSecretKey, String awsSessionToken, boolean isSecure, long receiveCheckIntervalMs) { + this(awsAccessKey, awsSecretKey, awsSessionToken, isSecure, receiveCheckIntervalMs, false); } - public AmazonAwsSQSConnector(String awsAccessKey, String awsSecretKey, boolean isSecure, long receiveCheckIntervalMs, boolean isAsync) { + public AmazonAwsSQSConnector(String awsAccessKey, String awsSecretKey, String awsSessionToken, boolean isSecure, long receiveCheckIntervalMs, boolean isAsync) { super(receiveCheckIntervalMs, isAsync); - AWSCredentials awsCredentials = new BasicAWSCredentials(awsAccessKey, awsSecretKey); + AWSCredentials awsCredentials = (awsSessionToken == null)? new BasicAWSCredentials(awsAccessKey, awsSecretKey) : new BasicSessionCredentials(awsAccessKey, awsSecretKey, awsSessionToken); ClientConfiguration clientConfiguration = new ClientConfiguration(); String proxyHost = System.getProperty("http.proxyHost"); String proxyPort = System.getProperty("http.proxyPort"); diff --git a/nevado-jms/src/main/java/org/skyscreamer/nevado/jms/connector/amazonaws/AmazonAwsSQSConnectorFactory.java b/nevado-jms/src/main/java/org/skyscreamer/nevado/jms/connector/amazonaws/AmazonAwsSQSConnectorFactory.java index 1f6e6cd..cb5a50a 100644 --- a/nevado-jms/src/main/java/org/skyscreamer/nevado/jms/connector/amazonaws/AmazonAwsSQSConnectorFactory.java +++ b/nevado-jms/src/main/java/org/skyscreamer/nevado/jms/connector/amazonaws/AmazonAwsSQSConnectorFactory.java @@ -12,8 +12,8 @@ public class AmazonAwsSQSConnectorFactory extends AbstractSQSConnectorFactory { protected boolean _useAsyncSend = false; @Override - public AmazonAwsSQSConnector getInstance(String awsAccessKey, String awsSecretKey, String awsSQSEndpoint, String awsSNSEndpoint) { - AmazonAwsSQSConnector amazonAwsSQSConnector = new AmazonAwsSQSConnector(awsAccessKey, awsSecretKey, _isSecure, + public AmazonAwsSQSConnector getInstance(String awsAccessKey, String awsSecretKey, String awsSessionToken, String awsSQSEndpoint, String awsSNSEndpoint) { + AmazonAwsSQSConnector amazonAwsSQSConnector = new AmazonAwsSQSConnector(awsAccessKey, awsSecretKey, awsSessionToken, _isSecure, _receiveCheckIntervalMs, _useAsyncSend); if (StringUtils.isNotEmpty(awsSQSEndpoint)) { amazonAwsSQSConnector.getAmazonSQS().setEndpoint(awsSQSEndpoint); diff --git a/nevado-jms/src/main/java/org/skyscreamer/nevado/jms/connector/mock/MockSQSConnectorFactory.java b/nevado-jms/src/main/java/org/skyscreamer/nevado/jms/connector/mock/MockSQSConnectorFactory.java index 8b3d4dd..b6b92f5 100644 --- a/nevado-jms/src/main/java/org/skyscreamer/nevado/jms/connector/mock/MockSQSConnectorFactory.java +++ b/nevado-jms/src/main/java/org/skyscreamer/nevado/jms/connector/mock/MockSQSConnectorFactory.java @@ -15,12 +15,12 @@ public class MockSQSConnectorFactory implements SQSConnectorFactory, ResettableM private MockSQSConnector _mockSQSConnector = new MockSQSConnector(); @Override - public SQSConnector getInstance(String awsAccessKey, String awsSecretKey) throws ResourceAllocationException { - return getInstance(awsAccessKey, awsSecretKey, null, null); + public SQSConnector getInstance(String awsAccessKey, String awsSecretKey, String awsSessionToken) throws ResourceAllocationException { + return getInstance(awsAccessKey, awsSecretKey, awsSessionToken, null, null); } @Override - public SQSConnector getInstance(String awsAccessKey, String awsSecretKey, String awsSQSEndpoint, String awsSNSEndpoint) throws ResourceAllocationException { + public SQSConnector getInstance(String awsAccessKey, String awsSecretKey, String awsSessionToken, String awsSQSEndpoint, String awsSNSEndpoint) throws ResourceAllocationException { if (BAD_ENDPOINT_URL.equals(awsSQSEndpoint) || BAD_ENDPOINT_URL.equals(awsSNSEndpoint)) { throw new ResourceAllocationException("Bad endpoint"); } diff --git a/nevado-jms/src/test/java/org/skyscreamer/nevado/jms/connector/mock/MockSQSConnectorFactoryTest.java b/nevado-jms/src/test/java/org/skyscreamer/nevado/jms/connector/mock/MockSQSConnectorFactoryTest.java index 85bb2bd..01b1557 100644 --- a/nevado-jms/src/test/java/org/skyscreamer/nevado/jms/connector/mock/MockSQSConnectorFactoryTest.java +++ b/nevado-jms/src/test/java/org/skyscreamer/nevado/jms/connector/mock/MockSQSConnectorFactoryTest.java @@ -26,7 +26,7 @@ public class MockSQSConnectorFactoryTest { @Before public void setUp() throws Exception { _mockSQSConnectorFactory = new MockSQSConnectorFactory(); - _mockSQSConnector = (MockSQSConnector) _mockSQSConnectorFactory.getInstance(ACCESS_KEY, SECRET_KEY); + _mockSQSConnector = (MockSQSConnector) _mockSQSConnectorFactory.getInstance(ACCESS_KEY, SECRET_KEY, null); _nevadoConnection = new NevadoConnection(_mockSQSConnector); _nevadoConnection.start();