Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
爱吃血肠
spring-framework
提交
fa4f51c5
S
spring-framework
项目概览
爱吃血肠
/
spring-framework
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
spring-framework
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
fa4f51c5
编写于
7月 09, 2014
作者:
J
Juergen Hoeller
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Subpackage rearrangements within 4.1's jms-messaging alignment
Issue: SPR-10873
上级
1fadd1c9
变更
18
隐藏空白更改
内联
并排
Showing
18 changed file
with
165 addition
and
214 deletion
+165
-214
spring-jms/src/main/java/org/springframework/jms/annotation/JmsListener.java
.../java/org/springframework/jms/annotation/JmsListener.java
+1
-1
spring-jms/src/main/java/org/springframework/jms/core/JmsMessageOperations.java
...va/org/springframework/jms/core/JmsMessageOperations.java
+1
-1
spring-jms/src/main/java/org/springframework/jms/core/JmsMessagingTemplate.java
...va/org/springframework/jms/core/JmsMessagingTemplate.java
+23
-23
spring-jms/src/main/java/org/springframework/jms/listener/adapter/AbstractAdaptableMessageListener.java
...ms/listener/adapter/AbstractAdaptableMessageListener.java
+20
-31
spring-jms/src/main/java/org/springframework/jms/listener/adapter/MessageListenerAdapter.java
...ramework/jms/listener/adapter/MessageListenerAdapter.java
+0
-3
spring-jms/src/main/java/org/springframework/jms/listener/adapter/MessagingMessageListenerAdapter.java
...jms/listener/adapter/MessagingMessageListenerAdapter.java
+14
-13
spring-jms/src/main/java/org/springframework/jms/messaging/package-info.java
.../java/org/springframework/jms/messaging/package-info.java
+0
-20
spring-jms/src/main/java/org/springframework/jms/support/JmsHeaderMapper.java
...java/org/springframework/jms/support/JmsHeaderMapper.java
+2
-2
spring-jms/src/main/java/org/springframework/jms/support/JmsHeaders.java
...main/java/org/springframework/jms/support/JmsHeaders.java
+10
-10
spring-jms/src/main/java/org/springframework/jms/support/JmsMessageHeaderAccessor.java
...springframework/jms/support/JmsMessageHeaderAccessor.java
+10
-10
spring-jms/src/main/java/org/springframework/jms/support/SimpleJmsHeaderMapper.java
...rg/springframework/jms/support/SimpleJmsHeaderMapper.java
+49
-54
spring-jms/src/main/java/org/springframework/jms/support/converter/MessagingMessageConverter.java
...work/jms/support/converter/MessagingMessageConverter.java
+12
-9
spring-jms/src/test/java/org/springframework/jms/config/MethodJmsListenerEndpointTests.java
...gframework/jms/config/MethodJmsListenerEndpointTests.java
+1
-1
spring-jms/src/test/java/org/springframework/jms/core/JmsMessagingTemplateTests.java
...g/springframework/jms/core/JmsMessagingTemplateTests.java
+3
-6
spring-jms/src/test/java/org/springframework/jms/support/JmsMessageHeaderAccessorTests.java
...gframework/jms/support/JmsMessageHeaderAccessorTests.java
+0
-1
spring-jms/src/test/java/org/springframework/jms/support/SimpleJmsHeaderMapperTests.java
...ringframework/jms/support/SimpleJmsHeaderMapperTests.java
+5
-4
spring-messaging/src/main/java/org/springframework/messaging/mapping/package-info.java
...a/org/springframework/messaging/mapping/package-info.java
+0
-20
spring-messaging/src/main/java/org/springframework/messaging/support/HeaderMapper.java
...a/org/springframework/messaging/support/HeaderMapper.java
+14
-5
未找到文件。
spring-jms/src/main/java/org/springframework/jms/annotation/JmsListener.java
浏览文件 @
fa4f51c5
...
...
@@ -48,7 +48,7 @@ import org.springframework.messaging.handler.annotation.MessageMapping;
* arguments including the support of validation</li>
* <li>{@link org.springframework.messaging.handler.annotation.Header @Header}-annotated method
* arguments to extract a specific header value, including standard JMS headers defined by
* {@link org.springframework.jms.support.
converter.
JmsHeaders JmsHeaders}</li>
* {@link org.springframework.jms.support.JmsHeaders JmsHeaders}</li>
* <li>{@link org.springframework.messaging.handler.annotation.Headers @Headers}-annotated
* argument that must also be assignable to {@link java.util.Map} for getting access to all
* headers.</li>
...
...
spring-jms/src/main/java/org/springframework/jms/
messaging
/JmsMessageOperations.java
→
spring-jms/src/main/java/org/springframework/jms/
core
/JmsMessageOperations.java
浏览文件 @
fa4f51c5
...
...
@@ -14,7 +14,7 @@
* limitations under the License.
*/
package
org.springframework.jms.
messaging
;
package
org.springframework.jms.
core
;
import
java.util.Map
;
...
...
spring-jms/src/main/java/org/springframework/jms/
messaging
/JmsMessagingTemplate.java
→
spring-jms/src/main/java/org/springframework/jms/
core
/JmsMessagingTemplate.java
浏览文件 @
fa4f51c5
...
...
@@ -14,21 +14,17 @@
* limitations under the License.
*/
package
org.springframework.jms.
messaging
;
package
org.springframework.jms.
core
;
import
java.util.Map
;
import
javax.jms.Destination
;
import
javax.jms.JMSException
;
import
javax.jms.Session
;
import
org.springframework.beans.factory.InitializingBean
;
import
org.springframework.jms.core.JmsTemplate
;
import
org.springframework.jms.core.MessageCreator
;
import
org.springframework.jms.support.converter.MessageConversionException
;
import
org.springframework.jms.support.converter.MessageConverter
;
import
org.springframework.jms.support.converter.MessagingMessageConverter
;
import
org.springframework.jms.support.converter.SimpleJmsHeaderMapper
;
import
org.springframework.jms.support.converter.SimpleMessageConverter
;
import
org.springframework.messaging.Message
;
import
org.springframework.messaging.MessagingException
;
...
...
@@ -42,17 +38,20 @@ import org.springframework.util.Assert;
* @author Stephane Nicoll
* @since 4.1
*/
public
class
JmsMessagingTemplate
extends
AbstractMessageReceivingTemplate
<
Destination
>
public
class
JmsMessagingTemplate
extends
AbstractMessageReceivingTemplate
<
Destination
>
implements
JmsMessageOperations
,
InitializingBean
{
private
JmsTemplate
jmsTemplate
;
private
MessageConverter
jmsMessageConverter
=
new
MessagingMessageConverter
(
new
SimpleMessageConverter
(),
new
SimpleJmsHeaderMapper
());
private
MessageConverter
jmsMessageConverter
=
new
MessagingMessageConverter
();
private
String
defaultDestinationName
;
/**
* Constructor for use with bean properties.
* Requires {@link #setJmsTemplate} to be called.
*/
public
JmsMessagingTemplate
()
{
}
...
...
@@ -64,6 +63,7 @@ public class JmsMessagingTemplate
this
.
jmsTemplate
=
jmsTemplate
;
}
/**
* Set the {@link JmsTemplate} to use.
*/
...
...
@@ -79,7 +79,6 @@ public class JmsMessagingTemplate
* <p>Consider configuring a {@link MessagingMessageConverter} with a different
* {@link MessagingMessageConverter#setPayloadConverter(MessageConverter) payload converter}
* for more advanced scenario.
*
* @see org.springframework.jms.support.converter.MessagingMessageConverter
*/
public
void
setJmsMessageConverter
(
MessageConverter
jmsMessageConverter
)
{
...
...
@@ -150,18 +149,21 @@ public class JmsMessagingTemplate
@Override
public
void
convertAndSend
(
String
destinationName
,
Object
payload
,
Map
<
String
,
Object
>
headers
)
throws
MessagingException
{
convertAndSend
(
destinationName
,
payload
,
headers
,
null
);
}
@Override
public
void
convertAndSend
(
String
destinationName
,
Object
payload
,
MessagePostProcessor
postProcessor
)
throws
MessagingException
{
convertAndSend
(
destinationName
,
payload
,
null
,
postProcessor
);
}
@Override
public
void
convertAndSend
(
String
destinationName
,
Object
payload
,
Map
<
String
,
Object
>
headers
,
MessagePostProcessor
postProcessor
)
throws
MessagingException
{
Message
<?>
message
=
doConvert
(
payload
,
headers
,
postProcessor
);
send
(
destinationName
,
message
);
}
...
...
@@ -206,31 +208,29 @@ public class JmsMessagingTemplate
@Override
protected
void
doSend
(
Destination
destination
,
Message
<?>
message
)
{
jmsTemplate
.
send
(
destination
,
new
MessagingMessageCreator
(
message
,
this
.
jmsMessageConverter
));
this
.
jmsTemplate
.
send
(
destination
,
new
MessagingMessageCreator
(
message
,
this
.
jmsMessageConverter
));
}
protected
void
doSend
(
String
destinationName
,
Message
<?>
message
)
{
jmsTemplate
.
send
(
destinationName
,
new
MessagingMessageCreator
(
message
,
this
.
jmsMessageConverter
));
this
.
jmsTemplate
.
send
(
destinationName
,
new
MessagingMessageCreator
(
message
,
this
.
jmsMessageConverter
));
}
@Override
protected
Message
<?>
doReceive
(
Destination
destination
)
{
javax
.
jms
.
Message
jmsMessage
=
jmsTemplate
.
receive
(
destination
);
javax
.
jms
.
Message
jmsMessage
=
this
.
jmsTemplate
.
receive
(
destination
);
return
doConvert
(
jmsMessage
);
}
protected
Message
<?>
doReceive
(
String
destinationName
)
{
javax
.
jms
.
Message
jmsMessage
=
jmsTemplate
.
receive
(
destinationName
);
javax
.
jms
.
Message
jmsMessage
=
this
.
jmsTemplate
.
receive
(
destinationName
);
return
doConvert
(
jmsMessage
);
}
protected
String
getRequiredDefaultDestinationName
()
{
String
name
=
getDefaultDestinationName
();
if
(
name
==
null
)
{
throw
new
IllegalStateException
(
"No 'defaultDestination' or 'defaultDestinationName' specified. "
+
"Check configuration of JmsMessagingTemplate."
);
throw
new
IllegalStateException
(
"No 'defaultDestination' or 'defaultDestinationName' specified. "
+
"Check configuration of JmsMessagingTemplate."
);
}
return
name
;
}
...
...
@@ -240,10 +240,10 @@ public class JmsMessagingTemplate
return
null
;
}
try
{
return
(
Message
<?>)
jmsMessageConverter
.
fromMessage
(
message
);
return
(
Message
<?>)
this
.
jmsMessageConverter
.
fromMessage
(
message
);
}
catch
(
JMSException
e
)
{
throw
new
MessageConversionException
(
"Could not convert '"
+
message
+
"'"
,
e
);
catch
(
JMSException
e
x
)
{
throw
new
MessageConversionException
(
"Could not convert '"
+
message
+
"'"
,
e
x
);
}
}
...
...
@@ -254,14 +254,14 @@ public class JmsMessagingTemplate
private
final
MessageConverter
messageConverter
;
p
rivate
MessagingMessageCreator
(
Message
<?>
message
,
MessageConverter
messageConverter
)
{
p
ublic
MessagingMessageCreator
(
Message
<?>
message
,
MessageConverter
messageConverter
)
{
this
.
message
=
message
;
this
.
messageConverter
=
messageConverter
;
}
@Override
public
javax
.
jms
.
Message
createMessage
(
Session
session
)
throws
JMSException
{
return
messageConverter
.
toMessage
(
message
,
session
);
return
this
.
messageConverter
.
toMessage
(
this
.
message
,
session
);
}
}
...
...
spring-jms/src/main/java/org/springframework/jms/listener/adapter/AbstractAdaptableMessageListener.java
浏览文件 @
fa4f51c5
...
...
@@ -28,12 +28,12 @@ import org.apache.commons.logging.Log;
import
org.apache.commons.logging.LogFactory
;
import
org.springframework.jms.listener.SessionAwareMessageListener
;
import
org.springframework.jms.support.JmsHeaderMapper
;
import
org.springframework.jms.support.JmsUtils
;
import
org.springframework.jms.support.
converter.
JmsHeaderMapper
;
import
org.springframework.jms.support.
Simple
JmsHeaderMapper
;
import
org.springframework.jms.support.converter.MessageConversionException
;
import
org.springframework.jms.support.converter.MessageConverter
;
import
org.springframework.jms.support.converter.MessagingMessageConverter
;
import
org.springframework.jms.support.converter.SimpleJmsHeaderMapper
;
import
org.springframework.jms.support.converter.SimpleMessageConverter
;
import
org.springframework.jms.support.destination.DestinationResolver
;
import
org.springframework.jms.support.destination.DynamicDestinationResolver
;
...
...
@@ -59,18 +59,11 @@ public abstract class AbstractAdaptableMessageListener
private
DestinationResolver
destinationResolver
=
new
DynamicDestinationResolver
();
private
MessageConverter
messageConverter
;
private
MessageConverter
messageConverter
=
new
SimpleMessageConverter
()
;
private
MessagingMessageConverterAdapter
messagingMessageConverter
=
new
MessagingMessageConverterAdapter
();
private
final
MessagingMessageConverterAdapter
messagingMessageConverter
=
new
MessagingMessageConverterAdapter
();
/**
* Create a new instance with default settings.
*/
protected
AbstractAdaptableMessageListener
()
{
initDefaultStrategies
();
}
/**
* Set the default destination to send response messages to. This will be applied
* in case of a request message that does not carry a "JMSReplyTo" field.
...
...
@@ -153,14 +146,9 @@ public abstract class AbstractAdaptableMessageListener
return
this
.
messageConverter
;
}
protected
MessageConverter
getMessagingMessageConverter
()
{
return
this
.
messagingMessageConverter
;
}
/**
* Set the {@link JmsHeaderMapper} implementation to use to map the
* standard JMS headers. By default {@link SimpleJmsHeaderMapper} is
* used
* Set the {@link JmsHeaderMapper} implementation to use to map the standard
* JMS headers. By default, a {@link SimpleJmsHeaderMapper} is used.
* @see SimpleJmsHeaderMapper
*/
public
void
setHeaderMapper
(
JmsHeaderMapper
headerMapper
)
{
...
...
@@ -168,6 +156,15 @@ public abstract class AbstractAdaptableMessageListener
this
.
messagingMessageConverter
.
setHeaderMapper
(
headerMapper
);
}
/**
* Return the{@link MessagingMessageConverter} for this listener,
* being able to convert {@link org.springframework.messaging.Message}.
*/
protected
final
MessagingMessageConverter
getMessagingMessageConverter
()
{
return
this
.
messagingMessageConverter
;
}
/**
* Standard JMS {@link MessageListener} entry point.
* <p>Delegates the message to the target listener method, with appropriate
...
...
@@ -191,15 +188,6 @@ public abstract class AbstractAdaptableMessageListener
}
}
/**
* Initialize the default implementations for the adapter's strategies.
* @see #setMessageConverter
* @see org.springframework.jms.support.converter.SimpleMessageConverter
*/
protected
void
initDefaultStrategies
()
{
setMessageConverter
(
new
SimpleMessageConverter
());
}
/**
* Handle the given exception that arose during listener execution.
* The default implementation logs the exception at error level.
...
...
@@ -228,8 +216,8 @@ public abstract class AbstractAdaptableMessageListener
}
return
message
;
}
catch
(
JMSException
e
)
{
throw
new
MessageConversionException
(
"Could not unmarshal message"
,
e
);
catch
(
JMSException
e
x
)
{
throw
new
MessageConversionException
(
"Could not unmarshal message"
,
e
x
);
}
}
...
...
@@ -257,8 +245,8 @@ public abstract class AbstractAdaptableMessageListener
Destination
destination
=
getResponseDestination
(
request
,
response
,
session
);
sendResponse
(
session
,
destination
,
response
);
}
catch
(
Exception
e
)
{
throw
new
ReplyFailureException
(
"Failed to send reply with payload '"
+
result
+
"'"
,
e
);
catch
(
Exception
e
x
)
{
throw
new
ReplyFailureException
(
"Failed to send reply with payload '"
+
result
+
"'"
,
e
x
);
}
}
else
{
...
...
@@ -410,6 +398,7 @@ public abstract class AbstractAdaptableMessageListener
}
}
/**
* Internal class combining a destination name
* and its target destination type (queue or topic).
...
...
spring-jms/src/main/java/org/springframework/jms/listener/adapter/MessageListenerAdapter.java
浏览文件 @
fa4f51c5
...
...
@@ -17,7 +17,6 @@
package
org.springframework.jms.listener.adapter
;
import
java.lang.reflect.InvocationTargetException
;
import
javax.jms.JMSException
;
import
javax.jms.Message
;
import
javax.jms.MessageListener
;
...
...
@@ -137,7 +136,6 @@ public class MessageListenerAdapter extends AbstractAdaptableMessageListener
* Create a new {@link MessageListenerAdapter} with default settings.
*/
public
MessageListenerAdapter
()
{
initDefaultStrategies
();
this
.
delegate
=
this
;
}
...
...
@@ -146,7 +144,6 @@ public class MessageListenerAdapter extends AbstractAdaptableMessageListener
* @param delegate the delegate object
*/
public
MessageListenerAdapter
(
Object
delegate
)
{
initDefaultStrategies
();
setDelegate
(
delegate
);
}
...
...
spring-jms/src/main/java/org/springframework/jms/listener/adapter/MessagingMessageListenerAdapter.java
浏览文件 @
fa4f51c5
...
...
@@ -19,7 +19,7 @@ package org.springframework.jms.listener.adapter;
import
javax.jms.JMSException
;
import
javax.jms.Session
;
import
org.springframework.jms.support.
converter.
JmsHeaderMapper
;
import
org.springframework.jms.support.JmsHeaderMapper
;
import
org.springframework.jms.support.converter.MessageConversionException
;
import
org.springframework.messaging.Message
;
import
org.springframework.messaging.MessagingException
;
...
...
@@ -56,6 +56,7 @@ public class MessagingMessageListenerAdapter extends AbstractAdaptableMessageLis
this
.
handlerMethod
=
handlerMethod
;
}
@Override
public
void
onMessage
(
javax
.
jms
.
Message
jmsMessage
,
Session
session
)
throws
JMSException
{
Message
<?>
message
=
toMessagingMessage
(
jmsMessage
);
...
...
@@ -76,34 +77,34 @@ public class MessagingMessageListenerAdapter extends AbstractAdaptableMessageLis
try
{
return
(
Message
<?>)
getMessagingMessageConverter
().
fromMessage
(
jmsMessage
);
}
catch
(
JMSException
e
)
{
throw
new
MessageConversionException
(
"Could not unmarshal message"
,
e
);
catch
(
JMSException
e
x
)
{
throw
new
MessageConversionException
(
"Could not unmarshal message"
,
e
x
);
}
}
/**
* Invoke the handler, wrapping any exception to a {@link ListenerExecutionFailedException}
with
* a dedicated error message.
* Invoke the handler, wrapping any exception to a {@link ListenerExecutionFailedException}
*
with
a dedicated error message.
*/
private
Object
invokeHandler
(
javax
.
jms
.
Message
jmsMessage
,
Session
session
,
Message
<?>
message
)
{
try
{
return
handlerMethod
.
invoke
(
message
,
jmsMessage
,
session
);
return
this
.
handlerMethod
.
invoke
(
message
,
jmsMessage
,
session
);
}
catch
(
MessagingException
e
)
{
catch
(
MessagingException
e
x
)
{
throw
new
ListenerExecutionFailedException
(
createMessagingErrorMessage
(
"Listener method could not "
+
"be invoked with the incoming message"
),
e
);
"be invoked with the incoming message"
),
e
x
);
}
catch
(
Exception
e
)
{
throw
new
ListenerExecutionFailedException
(
"Listener method '"
+
handlerMethod
.
getMethod
().
toGenericString
()
+
"' threw exception"
,
e
);
catch
(
Exception
e
x
)
{
throw
new
ListenerExecutionFailedException
(
"Listener method '"
+
this
.
handlerMethod
.
getMethod
().
toGenericString
()
+
"' threw exception"
,
ex
);
}
}
private
String
createMessagingErrorMessage
(
String
description
)
{
StringBuilder
sb
=
new
StringBuilder
(
description
).
append
(
"\n"
)
.
append
(
"Endpoint handler details:\n"
)
.
append
(
"Method ["
).
append
(
handlerMethod
.
getMethod
()).
append
(
"]\n"
)
.
append
(
"Bean ["
).
append
(
handlerMethod
.
getBean
()).
append
(
"]\n"
);
.
append
(
"Method ["
).
append
(
this
.
handlerMethod
.
getMethod
()).
append
(
"]\n"
)
.
append
(
"Bean ["
).
append
(
this
.
handlerMethod
.
getBean
()).
append
(
"]\n"
);
return
sb
.
toString
();
}
...
...
spring-jms/src/main/java/org/springframework/jms/messaging/package-info.java
已删除
100644 → 0
浏览文件 @
1fadd1c9
/*
* Copyright 2002-2014 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* JMS integration for Spring's messaging module.
*/
package
org.springframework.jms.messaging
;
\ No newline at end of file
spring-jms/src/main/java/org/springframework/jms/support/
converter/
JmsHeaderMapper.java
→
spring-jms/src/main/java/org/springframework/jms/support/JmsHeaderMapper.java
浏览文件 @
fa4f51c5
...
...
@@ -14,11 +14,11 @@
* limitations under the License.
*/
package
org.springframework.jms.support
.converter
;
package
org.springframework.jms.support
;
import
javax.jms.Message
;
import
org.springframework.messaging.
mapping
.HeaderMapper
;
import
org.springframework.messaging.
support
.HeaderMapper
;
/**
* Strategy interface for mapping messaging Message headers to an outbound
...
...
spring-jms/src/main/java/org/springframework/jms/support/
converter/
JmsHeaders.java
→
spring-jms/src/main/java/org/springframework/jms/support/JmsHeaders.java
浏览文件 @
fa4f51c5
...
...
@@ -14,11 +14,11 @@
* limitations under the License.
*/
package
org.springframework.jms.support
.converter
;
package
org.springframework.jms.support
;
/**
* Pre-defined names and prefixes to be used for setting and/or retrieving
JMS
*
attributes from/to integration Message H
eaders.
* Pre-defined names and prefixes to be used for setting and/or retrieving
*
JMS attributes from/to generic message h
eaders.
*
* @author Mark Fisher
* @author Stephane Nicoll
...
...
@@ -43,7 +43,7 @@ public interface JmsHeaders {
/**
* Name of the destination (topic or queue) of the message.
* <p>Read
only value.
* <p>Read
-
only value.
* @see javax.jms.Message#getJMSDestination()
* @see javax.jms.Destination
* @see javax.jms.Queue
...
...
@@ -53,7 +53,7 @@ public interface JmsHeaders {
/**
* Distribution mode.
* <p>Read
only value.
* <p>Read
-
only value.
* @see javax.jms.Message#getJMSDeliveryMode()
* @see javax.jms.DeliveryMode
*/
...
...
@@ -61,21 +61,21 @@ public interface JmsHeaders {
/**
* Message expiration date and time.
* <p>Read
only value.
* <p>Read
-
only value.
* @see javax.jms.Message#getJMSExpiration()
*/
public
static
final
String
EXPIRATION
=
PREFIX
+
"expiration"
;
/**
* Unique Identifier for a message.
* <p>Read
only value.
* <p>Read
-
only value.
* @see javax.jms.Message#getJMSMessageID()
*/
public
static
final
String
MESSAGE_ID
=
PREFIX
+
"messageId"
;
/**
* The message priority level.
* <p>Read
only value.
* <p>Read
-
only value.
* @see javax.jms.Message#getJMSPriority()
*/
public
static
final
String
PRIORITY
=
PREFIX
+
"priority"
;
...
...
@@ -90,7 +90,7 @@ public interface JmsHeaders {
/**
* Specify if the message was resent. This occurs when a message
* consumer fails to acknowledge the message reception.
* <p>Read
only value.
* <p>Read
-
only value.
* @see javax.jms.Message#getJMSRedelivered()
*/
public
static
final
String
REDELIVERED
=
PREFIX
+
"redelivered"
;
...
...
@@ -104,7 +104,7 @@ public interface JmsHeaders {
/**
* Date and time of the message sending operation.
* <p>Read
only value.
* <p>Read
-
only value.
* @see javax.jms.Message#getJMSTimestamp()
*/
public
static
final
String
TIMESTAMP
=
PREFIX
+
"timestamp"
;
...
...
spring-jms/src/main/java/org/springframework/jms/support/JmsMessageHeaderAccessor.java
浏览文件 @
fa4f51c5
...
...
@@ -18,10 +18,8 @@ package org.springframework.jms.support;
import
java.util.List
;
import
java.util.Map
;
import
javax.jms.Destination
;
import
org.springframework.jms.support.converter.JmsHeaders
;
import
org.springframework.messaging.Message
;
import
org.springframework.messaging.support.NativeMessageHeaderAccessor
;
...
...
@@ -43,14 +41,6 @@ public class JmsMessageHeaderAccessor extends NativeMessageHeaderAccessor {
}
/**
* Create {@link JmsMessageHeaderAccessor} from the headers of an existing message.
*/
public
static
JmsMessageHeaderAccessor
wrap
(
Message
<?>
message
)
{
return
new
JmsMessageHeaderAccessor
(
message
);
}
/**
* Return the {@link JmsHeaders#CORRELATION_ID correlationId}.
* @see JmsHeaders#CORRELATION_ID
...
...
@@ -131,4 +121,14 @@ public class JmsMessageHeaderAccessor extends NativeMessageHeaderAccessor {
return
(
Long
)
getHeader
(
JmsHeaders
.
TIMESTAMP
);
}
// Static factory method
/**
* Create a {@link JmsMessageHeaderAccessor} from the headers of an existing message.
*/
public
static
JmsMessageHeaderAccessor
wrap
(
Message
<?>
message
)
{
return
new
JmsMessageHeaderAccessor
(
message
);
}
}
spring-jms/src/main/java/org/springframework/jms/support/
converter/
SimpleJmsHeaderMapper.java
→
spring-jms/src/main/java/org/springframework/jms/support/SimpleJmsHeaderMapper.java
浏览文件 @
fa4f51c5
...
...
@@ -14,15 +14,14 @@
* limitations under the License.
*/
package
org.springframework.jms.support
.converter
;
package
org.springframework.jms.support
;
import
java.util.Arrays
;
import
java.util.Enumeration
;
import
java.util.HashMap
;
import
java.util.
Lis
t
;
import
java.util.
HashSe
t
;
import
java.util.Map
;
import
java.util.Set
;
import
javax.jms.Destination
;
import
javax.jms.JMSException
;
...
...
@@ -34,16 +33,16 @@ import org.springframework.util.StringUtils;
/**
* Simple implementation of {@link JmsHeaderMapper}.
*
<p>
* This implementation copies JMS API headers (e.g. JMSReplyTo) to and from
*
*
<p>
This implementation copies JMS API headers (e.g. JMSReplyTo) to and from
* {@link org.springframework.messaging.Message Messages}. Any user-defined
* properties will also be copied from a JMS Message to a Message, and any
* other headers on a Message (beyond the JMS API headers) will likewise
* be copied to a JMS Message. Those other headers will be copied to the
* general properties of a JMS Message whereas the JMS API headers are passed
* to the appropriate setter methods (e.g. setJMSReplyTo).
*
<p>
* Constants for the JMS API headers are defined in {@link JmsHeaders}.
*
*
<p>
Constants for the JMS API headers are defined in {@link JmsHeaders}.
* Note that most of the JMS headers are read-only: the JMSDestination,
* JMSDeliveryMode, JMSExpiration, JMSMessageID, JMSPriority, JMSRedelivered
* and JMSTimestamp flags are only copied <em>from</em> a JMS Message. Those
...
...
@@ -51,51 +50,47 @@ import org.springframework.util.StringUtils;
* JMS Message.
*
* @author Mark Fisher
* @author Gary Russel
* @author Gary Russel
l
* @since 4.1
*/
public
class
SimpleJmsHeaderMapper
implements
JmsHeaderMapper
{
private
static
List
<
Class
<?>>
SUPPORTED_PROPERTY_TYPES
=
Arrays
.
asList
(
new
Class
<?>[]
{
Boolean
.
class
,
Byte
.
class
,
Double
.
class
,
Float
.
class
,
Integer
.
class
,
Long
.
class
,
Short
.
class
,
String
.
class
});
private
static
Set
<
Class
<?>>
SUPPORTED_PROPERTY_TYPES
=
new
HashSet
<
Class
<?>>(
Arrays
.
asList
(
new
Class
<?>[]
{
Boolean
.
class
,
Byte
.
class
,
Double
.
class
,
Float
.
class
,
Integer
.
class
,
Long
.
class
,
Short
.
class
,
String
.
class
})
)
;
private
final
Log
logger
=
LogFactory
.
getLog
(
this
.
getClass
());
private
final
Log
logger
=
LogFactory
.
getLog
(
getClass
());
private
volatile
String
inboundPrefix
=
""
;
private
String
inboundPrefix
=
""
;
private
String
outboundPrefix
=
""
;
private
volatile
String
outboundPrefix
=
""
;
/**
* Specify a prefix to be appended to the message header name for any
* JMS property that is being mapped into the MessageHeaders. The
* default is an empty string (no prefix).
* <p>
* This does not affect the JMS properties covered by the specification/API,
* <p>This does not affect the JMS properties covered by the specification/API,
* such as JMSCorrelationID, etc. The header names used for mapping such
* properties are all defined in our {@link JmsHeaders}.
*
* @param inboundPrefix The inbound prefix.
* properties are all defined in our {@link org.springframework.jms.support.JmsHeaders}.
*/
public
void
setInboundPrefix
(
String
inboundPrefix
)
{
this
.
inboundPrefix
=
(
inboundPrefix
!=
null
)
?
inboundPrefix
:
""
;
this
.
inboundPrefix
=
(
inboundPrefix
!=
null
?
inboundPrefix
:
""
)
;
}
/**
* Specify a prefix to be appended to the JMS property name for any
* message header that is being mapped into the JMS Message. The
* default is an empty string (no prefix).
* <p>
* This does not affect the JMS properties covered by the specification/API,
* <p>This does not affect the JMS properties covered by the specification/API,
* such as JMSCorrelationID, etc. The header names used for mapping such
* properties are all defined in our {@link JmsHeaders}.
*
* @param outboundPrefix The outbound prefix.
* properties are all defined in our {@link org.springframework.jms.support.JmsHeaders}.
*/
public
void
setOutboundPrefix
(
String
outboundPrefix
)
{
this
.
outboundPrefix
=
(
outboundPrefix
!=
null
)
?
outboundPrefix
:
""
;
this
.
outboundPrefix
=
(
outboundPrefix
!=
null
?
outboundPrefix
:
""
)
;
}
@Override
public
void
fromHeaders
(
MessageHeaders
headers
,
javax
.
jms
.
Message
jmsMessage
)
{
try
{
...
...
@@ -152,15 +147,15 @@ public class SimpleJmsHeaderMapper implements JmsHeaderMapper {
}
}
}
catch
(
Exception
e
)
{
catch
(
Exception
e
x
)
{
if
(
logger
.
isWarnEnabled
())
{
logger
.
warn
(
"error occurred while mapping from MessageHeaders to JMS properties"
,
e
);
logger
.
warn
(
"error occurred while mapping from MessageHeaders to JMS properties"
,
e
x
);
}
}
}
@Override
public
M
ap
<
String
,
Object
>
toHeaders
(
javax
.
jms
.
Message
jmsMessage
)
{
public
M
essageHeaders
toHeaders
(
javax
.
jms
.
Message
jmsMessage
)
{
Map
<
String
,
Object
>
headers
=
new
HashMap
<
String
,
Object
>();
try
{
try
{
...
...
@@ -169,8 +164,8 @@ public class SimpleJmsHeaderMapper implements JmsHeaderMapper {
headers
.
put
(
JmsHeaders
.
CORRELATION_ID
,
correlationId
);
}
}
catch
(
Exception
e
)
{
logger
.
info
(
"failed to read JMSCorrelationID property, skipping"
,
e
);
catch
(
Exception
e
x
)
{
logger
.
info
(
"failed to read JMSCorrelationID property, skipping"
,
e
x
);
}
try
{
Destination
destination
=
jmsMessage
.
getJMSDestination
();
...
...
@@ -178,22 +173,22 @@ public class SimpleJmsHeaderMapper implements JmsHeaderMapper {
headers
.
put
(
JmsHeaders
.
DESTINATION
,
destination
);
}
}
catch
(
Exception
e
)
{
logger
.
info
(
"failed to read JMSDestination property, skipping"
,
e
);
catch
(
Exception
e
x
)
{
logger
.
info
(
"failed to read JMSDestination property, skipping"
,
e
x
);
}
try
{
int
deliveryMode
=
jmsMessage
.
getJMSDeliveryMode
();
headers
.
put
(
JmsHeaders
.
DELIVERY_MODE
,
deliveryMode
);
}
catch
(
Exception
e
)
{
logger
.
info
(
"failed to read JMSDeliveryMode property, skipping"
,
e
);
catch
(
Exception
e
x
)
{
logger
.
info
(
"failed to read JMSDeliveryMode property, skipping"
,
e
x
);
}
try
{
long
expiration
=
jmsMessage
.
getJMSExpiration
();
headers
.
put
(
JmsHeaders
.
EXPIRATION
,
expiration
);
}
catch
(
Exception
e
)
{
logger
.
info
(
"failed to read JMSExpiration property, skipping"
,
e
);
catch
(
Exception
e
x
)
{
logger
.
info
(
"failed to read JMSExpiration property, skipping"
,
e
x
);
}
try
{
String
messageId
=
jmsMessage
.
getJMSMessageID
();
...
...
@@ -201,14 +196,14 @@ public class SimpleJmsHeaderMapper implements JmsHeaderMapper {
headers
.
put
(
JmsHeaders
.
MESSAGE_ID
,
messageId
);
}
}
catch
(
Exception
e
)
{
logger
.
info
(
"failed to read JMSMessageID property, skipping"
,
e
);
catch
(
Exception
e
x
)
{
logger
.
info
(
"failed to read JMSMessageID property, skipping"
,
e
x
);
}
try
{
headers
.
put
(
JmsHeaders
.
PRIORITY
,
jmsMessage
.
getJMSPriority
());
}
catch
(
Exception
e
)
{
logger
.
info
(
"failed to read JMSPriority property, skipping"
,
e
);
catch
(
Exception
e
x
)
{
logger
.
info
(
"failed to read JMSPriority property, skipping"
,
e
x
);
}
try
{
Destination
replyTo
=
jmsMessage
.
getJMSReplyTo
();
...
...
@@ -216,14 +211,14 @@ public class SimpleJmsHeaderMapper implements JmsHeaderMapper {
headers
.
put
(
JmsHeaders
.
REPLY_TO
,
replyTo
);
}
}
catch
(
Exception
e
)
{
logger
.
info
(
"failed to read JMSReplyTo property, skipping"
,
e
);
catch
(
Exception
e
x
)
{
logger
.
info
(
"failed to read JMSReplyTo property, skipping"
,
e
x
);
}
try
{
headers
.
put
(
JmsHeaders
.
REDELIVERED
,
jmsMessage
.
getJMSRedelivered
());
}
catch
(
Exception
e
)
{
logger
.
info
(
"failed to read JMSRedelivered property, skipping"
,
e
);
catch
(
Exception
e
x
)
{
logger
.
info
(
"failed to read JMSRedelivered property, skipping"
,
e
x
);
}
try
{
String
type
=
jmsMessage
.
getJMSType
();
...
...
@@ -231,14 +226,14 @@ public class SimpleJmsHeaderMapper implements JmsHeaderMapper {
headers
.
put
(
JmsHeaders
.
TYPE
,
type
);
}
}
catch
(
Exception
e
)
{
logger
.
info
(
"failed to read JMSType property, skipping"
,
e
);
catch
(
Exception
e
x
)
{
logger
.
info
(
"failed to read JMSType property, skipping"
,
e
x
);
}
try
{
headers
.
put
(
JmsHeaders
.
TIMESTAMP
,
jmsMessage
.
getJMSTimestamp
());
}
catch
(
Exception
e
)
{
logger
.
info
(
"failed to read JMSTimestamp property, skipping"
,
e
);
catch
(
Exception
e
x
)
{
logger
.
info
(
"failed to read JMSTimestamp property, skipping"
,
e
x
);
}
...
...
@@ -250,21 +245,21 @@ public class SimpleJmsHeaderMapper implements JmsHeaderMapper {
String
headerName
=
this
.
toHeaderName
(
propertyName
);
headers
.
put
(
headerName
,
jmsMessage
.
getObjectProperty
(
propertyName
));
}
catch
(
Exception
e
)
{
catch
(
Exception
e
x
)
{
if
(
logger
.
isWarnEnabled
())
{
logger
.
warn
(
"
error occurred while mapping JMS property '"
+
propertyName
+
"' to Message header"
,
e
);
logger
.
warn
(
"
Error occurred while mapping JMS property '"
+
propertyName
+
"' to Message header"
,
ex
);
}
}
}
}
}
catch
(
JMSException
e
)
{
catch
(
JMSException
e
x
)
{
if
(
logger
.
isWarnEnabled
())
{
logger
.
warn
(
"
error occurred while mapping from JMS properties to MessageHeaders"
,
e
);
logger
.
warn
(
"
Error occurred while mapping from JMS properties to MessageHeaders"
,
ex
);
}
}
return
headers
;
return
new
MessageHeaders
(
headers
)
;
}
/**
...
...
spring-jms/src/main/java/org/springframework/jms/support/converter/MessagingMessageConverter.java
浏览文件 @
fa4f51c5
...
...
@@ -17,19 +17,20 @@
package
org.springframework.jms.support.converter
;
import
java.util.Map
;
import
javax.jms.JMSException
;
import
javax.jms.Session
;
import
org.springframework.beans.factory.InitializingBean
;
import
org.springframework.jms.support.JmsHeaderMapper
;
import
org.springframework.jms.support.SimpleJmsHeaderMapper
;
import
org.springframework.messaging.Message
;
import
org.springframework.messaging.support.MessageBuilder
;
import
org.springframework.util.Assert
;
/**
* Convert a {@link Message} from the messaging abstraction to
*
and from a {@link javax.jms.Message} using an underlying
*
{@link MessageConverter} for the payload and a {@link
JmsHeaderMapper}
* Convert a {@link Message} from the messaging abstraction to
and from a
*
{@link javax.jms.Message} using an underlying {@link MessageConverter}
*
for the payload and a {@link org.springframework.jms.support.
JmsHeaderMapper}
* to map the JMS headers to and from standard message headers.
*
* @author Stephane Nicoll
...
...
@@ -41,10 +42,11 @@ public class MessagingMessageConverter implements MessageConverter, Initializing
private
JmsHeaderMapper
headerMapper
;
/**
* Create an instance with a default payload converter.
* @see org.springframework.jms.support.converter.SimpleMessageConverter
* @see org.springframework.jms.support.
converter.
SimpleJmsHeaderMapper
* @see org.springframework.jms.support.SimpleJmsHeaderMapper
*/
public
MessagingMessageConverter
()
{
this
(
new
SimpleMessageConverter
(),
new
SimpleJmsHeaderMapper
());
...
...
@@ -61,6 +63,7 @@ public class MessagingMessageConverter implements MessageConverter, Initializing
this
.
headerMapper
=
headerMapper
;
}
/**
* Set the {@link MessageConverter} to use to convert the payload.
*/
...
...
@@ -82,13 +85,13 @@ public class MessagingMessageConverter implements MessageConverter, Initializing
Assert
.
notNull
(
this
.
headerMapper
,
"Property 'headerMapper' is required"
);
}
@Override
public
javax
.
jms
.
Message
toMessage
(
Object
object
,
Session
session
)
throws
JMSException
,
MessageConversionException
{
if
(!(
object
instanceof
Message
))
{
throw
new
IllegalArgumentException
(
"Could not convert ["
+
object
+
"]
only ["
+
Message
.
class
.
getName
()
+
"] is handled by this converter"
);
throw
new
IllegalArgumentException
(
"Could not convert ["
+
object
+
"]
- only ["
+
Message
.
class
.
getName
()
+
"] is handled by this converter"
);
}
Message
<?>
input
=
(
Message
<?>)
object
;
javax
.
jms
.
Message
reply
=
this
.
payloadConverter
.
toMessage
(
input
.
getPayload
(),
session
);
this
.
headerMapper
.
fromHeaders
(
input
.
getHeaders
(),
reply
);
...
...
@@ -110,7 +113,7 @@ public class MessagingMessageConverter implements MessageConverter, Initializing
}
/**
* Extract the payload of the specified {@link javax.jms.Message}
* Extract the payload of the specified {@link javax.jms.Message}
.
*/
protected
Object
extractPayload
(
javax
.
jms
.
Message
message
)
throws
JMSException
{
return
this
.
payloadConverter
.
fromMessage
(
message
);
...
...
spring-jms/src/test/java/org/springframework/jms/config/MethodJmsListenerEndpointTests.java
浏览文件 @
fa4f51c5
...
...
@@ -50,7 +50,7 @@ import org.springframework.jms.listener.adapter.ReplyFailureException;
import
org.springframework.jms.listener.adapter.ListenerExecutionFailedException
;
import
org.springframework.jms.listener.adapter.MessagingMessageListenerAdapter
;
import
org.springframework.jms.support.JmsMessageHeaderAccessor
;
import
org.springframework.jms.support.
converter.
JmsHeaders
;
import
org.springframework.jms.support.JmsHeaders
;
import
org.springframework.jms.support.destination.DestinationResolver
;
import
org.springframework.messaging.Message
;
import
org.springframework.messaging.MessageHeaders
;
...
...
spring-jms/src/test/java/org/springframework/jms/
messaging
/JmsMessagingTemplateTests.java
→
spring-jms/src/test/java/org/springframework/jms/
core
/JmsMessagingTemplateTests.java
浏览文件 @
fa4f51c5
...
...
@@ -14,12 +14,11 @@
* limitations under the License.
*/
package
org.springframework.jms.
messaging
;
package
org.springframework.jms.
core
;
import
java.io.Writer
;
import
java.util.HashMap
;
import
java.util.Map
;
import
javax.jms.Destination
;
import
javax.jms.JMSException
;
import
javax.jms.Session
;
...
...
@@ -36,10 +35,8 @@ import org.mockito.Mock;
import
org.mockito.MockitoAnnotations
;
import
org.mockito.invocation.InvocationOnMock
;
import
org.mockito.stubbing.Answer
;
import
org.springframework.core.convert.support.DefaultConversionService
;
import
org.springframework.jms.StubTextMessage
;
import
org.springframework.jms.core.JmsTemplate
;
import
org.springframework.jms.core.MessageCreator
;
import
org.springframework.jms.support.converter.MessageConversionException
;
import
org.springframework.jms.support.converter.SimpleMessageConverter
;
import
org.springframework.messaging.Message
;
...
...
@@ -317,7 +314,7 @@ public class JmsMessagingTemplateTests {
javax
.
jms
.
Message
jmsMessage
=
createJmsTextMessage
(
"123"
);
given
(
jmsTemplate
.
receive
(
"myQueue"
)).
willReturn
(
jmsMessage
);
messagingTemplate
.
setMessageConverter
(
new
GenericMessageConverter
(
new
DefaultConversionService
()
));
messagingTemplate
.
setMessageConverter
(
new
GenericMessageConverter
());
Integer
payload
=
messagingTemplate
.
receiveAndConvert
(
"myQueue"
,
Integer
.
class
);
assertEquals
(
Integer
.
valueOf
(
123
),
payload
);
...
...
spring-jms/src/test/java/org/springframework/jms/support/JmsMessageHeaderAccessorTests.java
浏览文件 @
fa4f51c5
...
...
@@ -26,7 +26,6 @@ import javax.jms.JMSException;
import
org.junit.Test
;
import
org.springframework.jms.StubTextMessage
;
import
org.springframework.jms.support.converter.SimpleJmsHeaderMapper
;
import
org.springframework.messaging.Message
;
import
org.springframework.messaging.support.MessageBuilder
;
...
...
spring-jms/src/test/java/org/springframework/jms/support/
converter/
SimpleJmsHeaderMapperTests.java
→
spring-jms/src/test/java/org/springframework/jms/support/SimpleJmsHeaderMapperTests.java
浏览文件 @
fa4f51c5
...
...
@@ -14,13 +14,10 @@
* limitations under the License.
*/
package
org.springframework.jms.support.converter
;
import
static
org
.
junit
.
Assert
.*;
package
org.springframework.jms.support
;
import
java.util.Date
;
import
java.util.Map
;
import
javax.jms.DeliveryMode
;
import
javax.jms.Destination
;
import
javax.jms.JMSException
;
...
...
@@ -32,6 +29,8 @@ import org.springframework.messaging.Message;
import
org.springframework.messaging.MessageHeaders
;
import
org.springframework.messaging.support.MessageBuilder
;
import
static
org
.
junit
.
Assert
.*;
/**
*
* @author Mark Fisher
...
...
@@ -42,6 +41,7 @@ public class SimpleJmsHeaderMapperTests {
private
final
SimpleJmsHeaderMapper
mapper
=
new
SimpleJmsHeaderMapper
();
// Outbound mapping
@Test
...
...
@@ -559,4 +559,5 @@ public class SimpleJmsHeaderMapperTests {
private
MessageBuilder
<
String
>
initBuilder
()
{
return
MessageBuilder
.
withPayload
(
"test"
);
}
}
spring-messaging/src/main/java/org/springframework/messaging/mapping/package-info.java
已删除
100644 → 0
浏览文件 @
1fadd1c9
/*
* Copyright 2002-2014 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* Provides classes related to mapping to/from message headers.
*/
package
org.springframework.messaging.mapping
;
\ No newline at end of file
spring-messaging/src/main/java/org/springframework/messaging/
mapping
/HeaderMapper.java
→
spring-messaging/src/main/java/org/springframework/messaging/
support
/HeaderMapper.java
浏览文件 @
fa4f51c5
...
...
@@ -14,9 +14,7 @@
* limitations under the License.
*/
package
org.springframework.messaging.mapping
;
import
java.util.Map
;
package
org.springframework.messaging.support
;
import
org.springframework.messaging.MessageHeaders
;
...
...
@@ -26,12 +24,23 @@ import org.springframework.messaging.MessageHeaders;
* has a concept of headers or properties (HTTP, JMS, AMQP, etc).
*
* @author Mark Fisher
* @param <T> type of the instance to and from which headers will be mapped.
* @since 4.1
* @param <T> type of the instance to and from which headers will be mapped
*/
public
interface
HeaderMapper
<
T
>
{
/**
* Map from the given {@link MessageHeaders} to the specified target message.
* @param headers the abstracted MessageHeaders
* @param target the native target message
*/
void
fromHeaders
(
MessageHeaders
headers
,
T
target
);
Map
<
String
,
Object
>
toHeaders
(
T
source
);
/**
* Map from the given target message to abstracted {@link MessageHeaders}.
* @param source the native target message
* @return the abstracted MessageHeaders
*/
MessageHeaders
toHeaders
(
T
source
);
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录