26
26
27
27
import com .amazonaws .AmazonClientException ;
28
28
import com .amazonaws .AmazonServiceException ;
29
+ import com .amazonaws .AmazonWebServiceRequest ;
30
+ import com .amazonaws .auth .AWSCredentialsProvider ;
29
31
import com .amazonaws .regions .Region ;
30
32
import com .amazonaws .services .sqs .AmazonSQS ;
31
33
import com .amazonaws .services .sqs .model .ChangeMessageVisibilityBatchRequest ;
@@ -67,6 +69,7 @@ public class AmazonSQSMessagingClientWrapper {
67
69
}
68
70
69
71
private final AmazonSQS amazonSQSClient ;
72
+ private final AWSCredentialsProvider credentialsProvider ;
70
73
71
74
/**
72
75
* @param amazonSQSClient
@@ -75,10 +78,21 @@ public class AmazonSQSMessagingClientWrapper {
75
78
* if the client is null
76
79
*/
77
80
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 {
78
91
if (amazonSQSClient == null ) {
79
92
throw new JMSException ("Amazon SQS client cannot be null" );
80
93
}
81
94
this .amazonSQSClient = amazonSQSClient ;
95
+ this .credentialsProvider = credentialsProvider ;
82
96
}
83
97
84
98
/**
@@ -92,13 +106,15 @@ public AmazonSQS getAmazonSQSClient() {
92
106
}
93
107
94
108
/**
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.
96
111
*
97
112
* @param endpoint
98
113
* The endpoint (ex: "sqs.us-east-1.amazonaws.com") of the region
99
114
* specific AWS endpoint this client will communicate with.
100
115
* @throws JMSException
101
116
*/
117
+ @ Deprecated
102
118
public void setEndpoint (String endpoint ) throws JMSException {
103
119
try {
104
120
amazonSQSClient .setEndpoint (endpoint );
@@ -109,15 +125,16 @@ public void setEndpoint(String endpoint) throws JMSException {
109
125
}
110
126
111
127
/**
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 .
114
130
*
115
131
* @param region
116
132
* The region this client will communicate with. See
117
133
* {@link Region#getRegion(com.amazonaws.regions.Regions)} for
118
134
* accessing a given region.
119
135
* @throws JMSException
120
136
*/
137
+ @ Deprecated
121
138
public void setRegion (Region region ) throws JMSException {
122
139
try {
123
140
amazonSQSClient .setRegion (region );
@@ -138,6 +155,7 @@ public void setRegion(Region region) throws JMSException {
138
155
*/
139
156
public void deleteMessage (DeleteMessageRequest deleteMessageRequest ) throws JMSException {
140
157
try {
158
+ prepareRequest (deleteMessageRequest );
141
159
amazonSQSClient .deleteMessage (deleteMessageRequest );
142
160
} catch (AmazonClientException e ) {
143
161
throw handleException (e , "deleteMessage" );
@@ -160,6 +178,7 @@ public void deleteMessage(DeleteMessageRequest deleteMessageRequest) throws JMSE
160
178
*/
161
179
public DeleteMessageBatchResult deleteMessageBatch (DeleteMessageBatchRequest deleteMessageBatchRequest ) throws JMSException {
162
180
try {
181
+ prepareRequest (deleteMessageBatchRequest );
163
182
return amazonSQSClient .deleteMessageBatch (deleteMessageBatchRequest );
164
183
} catch (AmazonClientException e ) {
165
184
throw handleException (e , "deleteMessageBatch" );
@@ -179,6 +198,7 @@ public DeleteMessageBatchResult deleteMessageBatch(DeleteMessageBatchRequest del
179
198
*/
180
199
public SendMessageResult sendMessage (SendMessageRequest sendMessageRequest ) throws JMSException {
181
200
try {
201
+ prepareRequest (sendMessageRequest );
182
202
return amazonSQSClient .sendMessage (sendMessageRequest );
183
203
} catch (AmazonClientException e ) {
184
204
throw handleException (e , "sendMessage" );
@@ -197,7 +217,7 @@ public SendMessageResult sendMessage(SendMessageRequest sendMessageRequest) thro
197
217
*/
198
218
public boolean queueExists (String queueName ) throws JMSException {
199
219
try {
200
- amazonSQSClient .getQueueUrl (new GetQueueUrlRequest (queueName ));
220
+ amazonSQSClient .getQueueUrl (prepareRequest ( new GetQueueUrlRequest (queueName ) ));
201
221
return true ;
202
222
} catch (QueueDoesNotExistException e ) {
203
223
return false ;
@@ -223,6 +243,7 @@ public boolean queueExists(String queueName, String queueOwnerAccountId) throws
223
243
try {
224
244
GetQueueUrlRequest getQueueUrlRequest = new GetQueueUrlRequest (queueName );
225
245
getQueueUrlRequest .setQueueOwnerAWSAccountId (queueOwnerAccountId );
246
+ prepareRequest (getQueueUrlRequest );
226
247
amazonSQSClient .getQueueUrl (getQueueUrlRequest );
227
248
return true ;
228
249
} catch (QueueDoesNotExistException e ) {
@@ -254,9 +275,7 @@ public GetQueueUrlResult getQueueUrl(String queueName) throws JMSException {
254
275
* @throws JMSException
255
276
*/
256
277
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 ));
260
279
}
261
280
262
281
/**
@@ -271,6 +290,7 @@ public GetQueueUrlResult getQueueUrl(String queueName, String queueOwnerAccountI
271
290
*/
272
291
public GetQueueUrlResult getQueueUrl (GetQueueUrlRequest getQueueUrlRequest ) throws JMSException {
273
292
try {
293
+ prepareRequest (getQueueUrlRequest );
274
294
return amazonSQSClient .getQueueUrl (getQueueUrlRequest );
275
295
} catch (AmazonClientException e ) {
276
296
throw handleException (e , "getQueueUrl" );
@@ -288,11 +308,7 @@ public GetQueueUrlResult getQueueUrl(GetQueueUrlRequest getQueueUrlRequest) thro
288
308
* @throws JMSException
289
309
*/
290
310
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 ));
296
312
}
297
313
298
314
/**
@@ -309,6 +325,7 @@ public CreateQueueResult createQueue(String queueName) throws JMSException {
309
325
*/
310
326
public CreateQueueResult createQueue (CreateQueueRequest createQueueRequest ) throws JMSException {
311
327
try {
328
+ prepareRequest (createQueueRequest );
312
329
return amazonSQSClient .createQueue (createQueueRequest );
313
330
} catch (AmazonClientException e ) {
314
331
throw handleException (e , "createQueue" );
@@ -330,6 +347,7 @@ public CreateQueueResult createQueue(CreateQueueRequest createQueueRequest) thro
330
347
*/
331
348
public ReceiveMessageResult receiveMessage (ReceiveMessageRequest receiveMessageRequest ) throws JMSException {
332
349
try {
350
+ prepareRequest (receiveMessageRequest );
333
351
return amazonSQSClient .receiveMessage (receiveMessageRequest );
334
352
} catch (AmazonClientException e ) {
335
353
throw handleException (e , "receiveMessage" );
@@ -347,6 +365,7 @@ public ReceiveMessageResult receiveMessage(ReceiveMessageRequest receiveMessageR
347
365
*/
348
366
public void changeMessageVisibility (ChangeMessageVisibilityRequest changeMessageVisibilityRequest ) throws JMSException {
349
367
try {
368
+ prepareRequest (changeMessageVisibilityRequest );
350
369
amazonSQSClient .changeMessageVisibility (changeMessageVisibilityRequest );
351
370
} catch (AmazonClientException e ) {
352
371
throw handleException (e , "changeMessageVisibility" );
@@ -368,6 +387,7 @@ public void changeMessageVisibility(ChangeMessageVisibilityRequest changeMessage
368
387
public ChangeMessageVisibilityBatchResult changeMessageVisibilityBatch (ChangeMessageVisibilityBatchRequest changeMessageVisibilityBatchRequest )
369
388
throws JMSException {
370
389
try {
390
+ prepareRequest (changeMessageVisibilityBatchRequest );
371
391
return amazonSQSClient .changeMessageVisibilityBatch (changeMessageVisibilityBatchRequest );
372
392
} catch (AmazonClientException e ) {
373
393
throw handleException (e , "changeMessageVisibilityBatch" );
@@ -422,4 +442,13 @@ private JMSException handleException(AmazonClientException e, String operationNa
422
442
private boolean isJMSSecurityException (AmazonServiceException e ) {
423
443
return SECURITY_EXCEPTION_ERROR_CODES .contains (e .getErrorCode ()) ;
424
444
}
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
+
425
454
}
0 commit comments