22
22
import javax .jms .Session ;
23
23
24
24
import org .springframework .beans .factory .InitializingBean ;
25
+ import org .springframework .jms .InvalidDestinationException ;
25
26
import org .springframework .jms .JmsException ;
26
- import org .springframework .jms .support .JmsMessagingExceptionTranslator ;
27
27
import org .springframework .jms .support .converter .MessageConverter ;
28
28
import org .springframework .jms .support .converter .MessagingMessageConverter ;
29
29
import org .springframework .jms .support .converter .SimpleMessageConverter ;
30
30
import org .springframework .messaging .Message ;
31
31
import org .springframework .messaging .MessagingException ;
32
32
import org .springframework .messaging .converter .MessageConversionException ;
33
33
import org .springframework .messaging .core .AbstractMessagingTemplate ;
34
+ import org .springframework .messaging .core .DestinationResolutionException ;
34
35
import org .springframework .messaging .core .MessagePostProcessor ;
35
- import org .springframework .messaging .support .MessagingExceptionTranslator ;
36
36
import org .springframework .util .Assert ;
37
37
38
38
/**
@@ -48,8 +48,6 @@ public class JmsMessagingTemplate extends AbstractMessagingTemplate<Destination>
48
48
49
49
private MessageConverter jmsMessageConverter = new MessagingMessageConverter ();
50
50
51
- private MessagingExceptionTranslator exceptionTranslator = new JmsMessagingExceptionTranslator ();
52
-
53
51
private String defaultDestinationName ;
54
52
55
53
@@ -80,7 +78,7 @@ public void setJmsTemplate(JmsTemplate jmsTemplate) {
80
78
* Return the configured {@link JmsTemplate}.
81
79
*/
82
80
public JmsTemplate getJmsTemplate () {
83
- return jmsTemplate ;
81
+ return this . jmsTemplate ;
84
82
}
85
83
86
84
/**
@@ -98,11 +96,11 @@ public void setJmsMessageConverter(MessageConverter jmsMessageConverter) {
98
96
}
99
97
100
98
/**
101
- * Set the {@link MessagingExceptionTranslator } to use. Default to
102
- * {@link JmsMessagingExceptionTranslator }.
99
+ * Return the {@link MessageConverter } to use to convert a {@link Message}
100
+ * from the messaging to and from a {@link javax.jms.Message }.
103
101
*/
104
- public void setExceptionTranslator ( MessagingExceptionTranslator exceptionTranslator ) {
105
- this .exceptionTranslator = exceptionTranslator ;
102
+ public MessageConverter getJmsMessageConverter ( ) {
103
+ return this .jmsMessageConverter ;
106
104
}
107
105
108
106
/**
@@ -124,8 +122,8 @@ public String getDefaultDestinationName() {
124
122
125
123
@ Override
126
124
public void afterPropertiesSet () {
127
- Assert .notNull (this . jmsTemplate , "Property 'jmsTemplate' is required" );
128
- Assert .notNull (this . jmsMessageConverter , "Property 'jmsMessageConverter' is required" );
125
+ Assert .notNull (getJmsTemplate () , "Property 'jmsTemplate' is required" );
126
+ Assert .notNull (getJmsMessageConverter () , "Property 'jmsMessageConverter' is required" );
129
127
}
130
128
131
129
@@ -295,7 +293,7 @@ protected void doSend(Destination destination, Message<?> message) {
295
293
this .jmsTemplate .send (destination , createMessageCreator (message ));
296
294
}
297
295
catch (JmsException ex ) {
298
- throw translateIfNecessary (ex );
296
+ throw convertJmsException (ex );
299
297
}
300
298
}
301
299
@@ -304,28 +302,28 @@ protected void doSend(String destinationName, Message<?> message) {
304
302
this .jmsTemplate .send (destinationName , createMessageCreator (message ));
305
303
}
306
304
catch (JmsException ex ) {
307
- throw translateIfNecessary (ex );
305
+ throw convertJmsException (ex );
308
306
}
309
307
}
310
308
311
309
@ Override
312
310
protected Message <?> doReceive (Destination destination ) {
313
311
try {
314
312
javax .jms .Message jmsMessage = this .jmsTemplate .receive (destination );
315
- return doConvert (jmsMessage );
313
+ return convertJmsMessage (jmsMessage );
316
314
}
317
315
catch (JmsException ex ) {
318
- throw translateIfNecessary (ex );
316
+ throw convertJmsException (ex );
319
317
}
320
318
}
321
319
322
320
protected Message <?> doReceive (String destinationName ) {
323
321
try {
324
322
javax .jms .Message jmsMessage = this .jmsTemplate .receive (destinationName );
325
- return doConvert (jmsMessage );
323
+ return convertJmsMessage (jmsMessage );
326
324
}
327
325
catch (JmsException ex ) {
328
- throw translateIfNecessary (ex );
326
+ throw convertJmsException (ex );
329
327
}
330
328
}
331
329
@@ -334,26 +332,26 @@ protected Message<?> doSendAndReceive(Destination destination, Message<?> reques
334
332
try {
335
333
javax .jms .Message jmsMessage = this .jmsTemplate .sendAndReceive (
336
334
destination , createMessageCreator (requestMessage ));
337
- return doConvert (jmsMessage );
335
+ return convertJmsMessage (jmsMessage );
338
336
}
339
337
catch (JmsException ex ) {
340
- throw translateIfNecessary (ex );
338
+ throw convertJmsException (ex );
341
339
}
342
340
}
343
341
344
342
protected Message <?> doSendAndReceive (String destinationName , Message <?> requestMessage ) {
345
343
try {
346
344
javax .jms .Message jmsMessage = this .jmsTemplate .sendAndReceive (
347
345
destinationName , createMessageCreator (requestMessage ));
348
- return doConvert (jmsMessage );
346
+ return convertJmsMessage (jmsMessage );
349
347
}
350
348
catch (JmsException ex ) {
351
- throw translateIfNecessary (ex );
349
+ throw convertJmsException (ex );
352
350
}
353
351
}
354
352
355
353
private MessagingMessageCreator createMessageCreator (Message <?> message ) {
356
- return new MessagingMessageCreator (message , this . jmsMessageConverter );
354
+ return new MessagingMessageCreator (message , getJmsMessageConverter () );
357
355
}
358
356
359
357
protected String getRequiredDefaultDestinationName () {
@@ -365,25 +363,29 @@ protected String getRequiredDefaultDestinationName() {
365
363
return name ;
366
364
}
367
365
368
- protected Message <?> doConvert (javax .jms .Message message ) {
366
+ protected Message <?> convertJmsMessage (javax .jms .Message message ) {
369
367
if (message == null ) {
370
368
return null ;
371
369
}
372
370
try {
373
- return (Message <?>) this .jmsMessageConverter .fromMessage (message );
374
- }
375
- catch (JMSException ex ) {
376
- throw new MessageConversionException ("Could not convert '" + message + "'" , ex );
371
+ return (Message <?>) getJmsMessageConverter ().fromMessage (message );
377
372
}
378
- catch (JmsException ex ) {
373
+ catch (Exception ex ) {
379
374
throw new MessageConversionException ("Could not convert '" + message + "'" , ex );
380
375
}
381
376
}
382
377
383
378
@ SuppressWarnings ("ThrowableResultOfMethodCallIgnored" )
384
- protected RuntimeException translateIfNecessary (RuntimeException rawException ) {
385
- MessagingException messagingException = this .exceptionTranslator .translateExceptionIfPossible (rawException );
386
- return (messagingException != null ? messagingException : rawException );
379
+ protected MessagingException convertJmsException (JmsException ex ) {
380
+ if (ex instanceof org .springframework .jms .support .destination .DestinationResolutionException ||
381
+ ex instanceof InvalidDestinationException ) {
382
+ return new DestinationResolutionException (ex .getMessage (), ex );
383
+ }
384
+ if (ex instanceof org .springframework .jms .support .converter .MessageConversionException ) {
385
+ return new MessageConversionException (ex .getMessage (), ex );
386
+ }
387
+ // Fallback
388
+ return new MessagingException (ex .getMessage (), ex );
387
389
}
388
390
389
391
@@ -403,10 +405,7 @@ public javax.jms.Message createMessage(Session session) throws JMSException {
403
405
try {
404
406
return this .messageConverter .toMessage (this .message , session );
405
407
}
406
- catch (JMSException ex ) {
407
- throw new MessageConversionException ("Could not convert '" + this .message + "'" , ex );
408
- }
409
- catch (JmsException ex ) {
408
+ catch (Exception ex ) {
410
409
throw new MessageConversionException ("Could not convert '" + this .message + "'" , ex );
411
410
}
412
411
}
0 commit comments