2626
2727import com .amazonaws .AmazonClientException ;
2828import com .amazonaws .AmazonServiceException ;
29+ import com .amazonaws .AmazonWebServiceRequest ;
30+ import com .amazonaws .auth .AWSCredentialsProvider ;
2931import com .amazonaws .regions .Region ;
3032import com .amazonaws .services .sqs .AmazonSQS ;
3133import com .amazonaws .services .sqs .model .ChangeMessageVisibilityBatchRequest ;
@@ -67,6 +69,7 @@ public class AmazonSQSMessagingClientWrapper {
6769 }
6870
6971 private final AmazonSQS amazonSQSClient ;
72+ private final AWSCredentialsProvider credentialsProvider ;
7073
7174 /**
7275 * @param amazonSQSClient
@@ -75,10 +78,21 @@ public class AmazonSQSMessagingClientWrapper {
7578 * if the client is null
7679 */
7780 public AmazonSQSMessagingClientWrapper (AmazonSQS amazonSQSClient ) throws JMSException {
81+ this (amazonSQSClient , null );
82+ }
83+
84+ /**
85+ * @param amazonSQSClient
86+ * The AWS SDK Client for SQS.
87+ * @throws JMSException
88+ * if the client is null
89+ */
90+ public AmazonSQSMessagingClientWrapper (AmazonSQS amazonSQSClient , AWSCredentialsProvider credentialsProvider ) throws JMSException {
7891 if (amazonSQSClient == null ) {
7992 throw new JMSException ("Amazon SQS client cannot be null" );
8093 }
8194 this .amazonSQSClient = amazonSQSClient ;
95+ this .credentialsProvider = credentialsProvider ;
8296 }
8397
8498 /**
@@ -92,13 +106,15 @@ public AmazonSQS getAmazonSQSClient() {
92106 }
93107
94108 /**
95- * Sets SQS endpoint and wraps IllegalArgumentException.
109+ * Sets SQS endpoint and wraps IllegalArgumentException.
110+ * Deprecated. Instead of manipulating settings of existing AmazonSQS client, provide correct configuration when creating it through SQSConnectionFactory constructors.
96111 *
97112 * @param endpoint
98113 * The endpoint (ex: "sqs.us-east-1.amazonaws.com") of the region
99114 * specific AWS endpoint this client will communicate with.
100115 * @throws JMSException
101116 */
117+ @ Deprecated
102118 public void setEndpoint (String endpoint ) throws JMSException {
103119 try {
104120 amazonSQSClient .setEndpoint (endpoint );
@@ -109,15 +125,16 @@ public void setEndpoint(String endpoint) throws JMSException {
109125 }
110126
111127 /**
112- * Sets SQS region and wraps <code>IllegalArgumentException</code>. This is the recommend
113- * way to set-up the SQS end-points .
128+ * Sets SQS region and wraps <code>IllegalArgumentException</code>.
129+ * Deprecated. Instead of manipulating settings of existing AmazonSQS client, provide correct configuration when creating it through SQSConnectionFactory constructors .
114130 *
115131 * @param region
116132 * The region this client will communicate with. See
117133 * {@link Region#getRegion(com.amazonaws.regions.Regions)} for
118134 * accessing a given region.
119135 * @throws JMSException
120136 */
137+ @ Deprecated
121138 public void setRegion (Region region ) throws JMSException {
122139 try {
123140 amazonSQSClient .setRegion (region );
@@ -138,6 +155,7 @@ public void setRegion(Region region) throws JMSException {
138155 */
139156 public void deleteMessage (DeleteMessageRequest deleteMessageRequest ) throws JMSException {
140157 try {
158+ prepareRequest (deleteMessageRequest );
141159 amazonSQSClient .deleteMessage (deleteMessageRequest );
142160 } catch (AmazonClientException e ) {
143161 throw handleException (e , "deleteMessage" );
@@ -160,6 +178,7 @@ public void deleteMessage(DeleteMessageRequest deleteMessageRequest) throws JMSE
160178 */
161179 public DeleteMessageBatchResult deleteMessageBatch (DeleteMessageBatchRequest deleteMessageBatchRequest ) throws JMSException {
162180 try {
181+ prepareRequest (deleteMessageBatchRequest );
163182 return amazonSQSClient .deleteMessageBatch (deleteMessageBatchRequest );
164183 } catch (AmazonClientException e ) {
165184 throw handleException (e , "deleteMessageBatch" );
@@ -179,6 +198,7 @@ public DeleteMessageBatchResult deleteMessageBatch(DeleteMessageBatchRequest del
179198 */
180199 public SendMessageResult sendMessage (SendMessageRequest sendMessageRequest ) throws JMSException {
181200 try {
201+ prepareRequest (sendMessageRequest );
182202 return amazonSQSClient .sendMessage (sendMessageRequest );
183203 } catch (AmazonClientException e ) {
184204 throw handleException (e , "sendMessage" );
@@ -197,7 +217,7 @@ public SendMessageResult sendMessage(SendMessageRequest sendMessageRequest) thro
197217 */
198218 public boolean queueExists (String queueName ) throws JMSException {
199219 try {
200- amazonSQSClient .getQueueUrl (new GetQueueUrlRequest (queueName ));
220+ amazonSQSClient .getQueueUrl (prepareRequest ( new GetQueueUrlRequest (queueName ) ));
201221 return true ;
202222 } catch (QueueDoesNotExistException e ) {
203223 return false ;
@@ -223,6 +243,7 @@ public boolean queueExists(String queueName, String queueOwnerAccountId) throws
223243 try {
224244 GetQueueUrlRequest getQueueUrlRequest = new GetQueueUrlRequest (queueName );
225245 getQueueUrlRequest .setQueueOwnerAWSAccountId (queueOwnerAccountId );
246+ prepareRequest (getQueueUrlRequest );
226247 amazonSQSClient .getQueueUrl (getQueueUrlRequest );
227248 return true ;
228249 } catch (QueueDoesNotExistException e ) {
@@ -254,9 +275,7 @@ public GetQueueUrlResult getQueueUrl(String queueName) throws JMSException {
254275 * @throws JMSException
255276 */
256277 public GetQueueUrlResult getQueueUrl (String queueName , String queueOwnerAccountId ) throws JMSException {
257- GetQueueUrlRequest getQueueUrlRequest = new GetQueueUrlRequest (queueName );
258- getQueueUrlRequest .setQueueOwnerAWSAccountId (queueOwnerAccountId );
259- return getQueueUrl (getQueueUrlRequest );
278+ return getQueueUrl (new GetQueueUrlRequest (queueName ).withQueueOwnerAWSAccountId (queueOwnerAccountId ));
260279 }
261280
262281 /**
@@ -271,6 +290,7 @@ public GetQueueUrlResult getQueueUrl(String queueName, String queueOwnerAccountI
271290 */
272291 public GetQueueUrlResult getQueueUrl (GetQueueUrlRequest getQueueUrlRequest ) throws JMSException {
273292 try {
293+ prepareRequest (getQueueUrlRequest );
274294 return amazonSQSClient .getQueueUrl (getQueueUrlRequest );
275295 } catch (AmazonClientException e ) {
276296 throw handleException (e , "getQueueUrl" );
@@ -288,11 +308,7 @@ public GetQueueUrlResult getQueueUrl(GetQueueUrlRequest getQueueUrlRequest) thro
288308 * @throws JMSException
289309 */
290310 public CreateQueueResult createQueue (String queueName ) throws JMSException {
291- try {
292- return amazonSQSClient .createQueue (queueName );
293- } catch (AmazonClientException e ) {
294- throw handleException (e , "createQueue" );
295- }
311+ return createQueue (new CreateQueueRequest (queueName ));
296312 }
297313
298314 /**
@@ -309,6 +325,7 @@ public CreateQueueResult createQueue(String queueName) throws JMSException {
309325 */
310326 public CreateQueueResult createQueue (CreateQueueRequest createQueueRequest ) throws JMSException {
311327 try {
328+ prepareRequest (createQueueRequest );
312329 return amazonSQSClient .createQueue (createQueueRequest );
313330 } catch (AmazonClientException e ) {
314331 throw handleException (e , "createQueue" );
@@ -330,6 +347,7 @@ public CreateQueueResult createQueue(CreateQueueRequest createQueueRequest) thro
330347 */
331348 public ReceiveMessageResult receiveMessage (ReceiveMessageRequest receiveMessageRequest ) throws JMSException {
332349 try {
350+ prepareRequest (receiveMessageRequest );
333351 return amazonSQSClient .receiveMessage (receiveMessageRequest );
334352 } catch (AmazonClientException e ) {
335353 throw handleException (e , "receiveMessage" );
@@ -347,6 +365,7 @@ public ReceiveMessageResult receiveMessage(ReceiveMessageRequest receiveMessageR
347365 */
348366 public void changeMessageVisibility (ChangeMessageVisibilityRequest changeMessageVisibilityRequest ) throws JMSException {
349367 try {
368+ prepareRequest (changeMessageVisibilityRequest );
350369 amazonSQSClient .changeMessageVisibility (changeMessageVisibilityRequest );
351370 } catch (AmazonClientException e ) {
352371 throw handleException (e , "changeMessageVisibility" );
@@ -368,6 +387,7 @@ public void changeMessageVisibility(ChangeMessageVisibilityRequest changeMessage
368387 public ChangeMessageVisibilityBatchResult changeMessageVisibilityBatch (ChangeMessageVisibilityBatchRequest changeMessageVisibilityBatchRequest )
369388 throws JMSException {
370389 try {
390+ prepareRequest (changeMessageVisibilityBatchRequest );
371391 return amazonSQSClient .changeMessageVisibilityBatch (changeMessageVisibilityBatchRequest );
372392 } catch (AmazonClientException e ) {
373393 throw handleException (e , "changeMessageVisibilityBatch" );
@@ -422,4 +442,13 @@ private JMSException handleException(AmazonClientException e, String operationNa
422442 private boolean isJMSSecurityException (AmazonServiceException e ) {
423443 return SECURITY_EXCEPTION_ERROR_CODES .contains (e .getErrorCode ()) ;
424444 }
445+
446+ private <T extends AmazonWebServiceRequest > T prepareRequest (T request ) {
447+ request .getRequestClientOptions ().appendUserAgent (SQSMessagingClientConstants .APPENDED_USER_AGENT_HEADER_VERSION );
448+ if (credentialsProvider != null ) {
449+ request .setRequestCredentialsProvider (credentialsProvider );
450+ }
451+ return request ;
452+ }
453+
425454}
0 commit comments