Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
爱吃血肠
spring-framework
提交
899ebd8e
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,发现更多精彩内容 >>
提交
899ebd8e
编写于
8月 29, 2016
作者:
J
Juergen Hoeller
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Avoid collection lookups in StompCommand
Issue: SPR-14636
上级
728a5481
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
140 addition
and
43 deletion
+140
-43
spring-messaging/src/main/java/org/springframework/messaging/simp/stomp/StompCommand.java
...rg/springframework/messaging/simp/stomp/StompCommand.java
+40
-43
spring-messaging/src/test/java/org/springframework/messaging/simp/stomp/StompCommandTests.java
...ringframework/messaging/simp/stomp/StompCommandTests.java
+100
-0
未找到文件。
spring-messaging/src/main/java/org/springframework/messaging/simp/stomp/StompCommand.java
浏览文件 @
899ebd8e
...
...
@@ -16,79 +16,76 @@
package
org.springframework.messaging.simp.stomp
;
import
java.util.Arrays
;
import
java.util.Collection
;
import
java.util.HashMap
;
import
java.util.Map
;
import
org.springframework.messaging.simp.SimpMessageType
;
/**
* Represents a STOMP command.
*
* @author Rossen Stoyanchev
* @author Juergen Hoeller
* @since 4.0
*/
public
enum
StompCommand
{
// client
CONNECT
,
STOMP
,
DISCONNECT
,
SUBSCRIBE
,
UNSUBSCRIBE
,
SEND
,
ACK
,
NACK
,
BEGIN
,
COMMIT
,
ABORT
,
STOMP
(
SimpMessageType
.
CONNECT
)
,
CONNECT
(
SimpMessageType
.
CONNECT
)
,
DISCONNECT
(
SimpMessageType
.
DISCONNECT
)
,
SUBSCRIBE
(
SimpMessageType
.
SUBSCRIBE
,
true
,
true
,
false
)
,
UNSUBSCRIBE
(
SimpMessageType
.
UNSUBSCRIBE
,
false
,
true
,
false
)
,
SEND
(
SimpMessageType
.
MESSAGE
,
true
,
false
,
true
)
,
ACK
(
SimpMessageType
.
OTHER
)
,
NACK
(
SimpMessageType
.
OTHER
)
,
BEGIN
(
SimpMessageType
.
OTHER
)
,
COMMIT
(
SimpMessageType
.
OTHER
)
,
ABORT
(
SimpMessageType
.
OTHER
)
,
// server
CONNECTED
,
MESSAGE
,
RECEIPT
,
ERROR
;
private
static
Map
<
StompCommand
,
SimpMessageType
>
messageTypes
=
new
HashMap
<>();
static
{
messageTypes
.
put
(
StompCommand
.
CONNECT
,
SimpMessageType
.
CONNECT
);
messageTypes
.
put
(
StompCommand
.
STOMP
,
SimpMessageType
.
CONNECT
);
messageTypes
.
put
(
StompCommand
.
SEND
,
SimpMessageType
.
MESSAGE
);
messageTypes
.
put
(
StompCommand
.
MESSAGE
,
SimpMessageType
.
MESSAGE
);
messageTypes
.
put
(
StompCommand
.
SUBSCRIBE
,
SimpMessageType
.
SUBSCRIBE
);
messageTypes
.
put
(
StompCommand
.
UNSUBSCRIBE
,
SimpMessageType
.
UNSUBSCRIBE
);
messageTypes
.
put
(
StompCommand
.
DISCONNECT
,
SimpMessageType
.
DISCONNECT
);
}
CONNECTED
(
SimpMessageType
.
OTHER
),
RECEIPT
(
SimpMessageType
.
OTHER
),
MESSAGE
(
SimpMessageType
.
MESSAGE
,
true
,
true
,
true
),
ERROR
(
SimpMessageType
.
OTHER
,
false
,
false
,
true
);
private
static
Collection
<
StompCommand
>
destinationRequired
=
Arrays
.
asList
(
SEND
,
SUBSCRIBE
,
MESSAGE
);
private
static
Collection
<
StompCommand
>
subscriptionIdRequired
=
Arrays
.
asList
(
SUBSCRIBE
,
UNSUBSCRIBE
,
MESSAGE
);
private
static
Collection
<
StompCommand
>
contentLengthRequired
=
Arrays
.
asList
(
SEND
,
MESSAGE
,
ERROR
);
private
static
Collection
<
StompCommand
>
bodyAllowed
=
Arrays
.
asList
(
SEND
,
MESSAGE
,
ERROR
);
private
final
SimpMessageType
messageType
;
private
final
boolean
destination
;
private
final
boolean
subscriptionId
;
private
final
boolean
body
;
StompCommand
(
SimpMessageType
messageType
)
{
this
(
messageType
,
false
,
false
,
false
);
}
StompCommand
(
SimpMessageType
messageType
,
boolean
destination
,
boolean
subscriptionId
,
boolean
body
)
{
this
.
messageType
=
messageType
;
this
.
destination
=
destination
;
this
.
subscriptionId
=
subscriptionId
;
this
.
body
=
body
;
}
public
SimpMessageType
getMessageType
()
{
SimpMessageType
type
=
messageTypes
.
get
(
this
);
return
(
type
!=
null
)
?
type
:
SimpMessageType
.
OTHER
;
return
this
.
messageType
;
}
public
boolean
requiresDestination
()
{
return
destinationRequired
.
contains
(
this
)
;
return
this
.
destination
;
}
public
boolean
requiresSubscriptionId
()
{
return
subscriptionIdRequired
.
contains
(
this
)
;
return
this
.
subscriptionId
;
}
public
boolean
requiresContentLength
()
{
return
contentLengthRequired
.
contains
(
this
)
;
return
this
.
body
;
}
public
boolean
isBodyAllowed
()
{
return
bodyAllowed
.
contains
(
this
)
;
return
this
.
body
;
}
}
spring-messaging/src/test/java/org/springframework/messaging/simp/stomp/StompCommandTests.java
0 → 100644
浏览文件 @
899ebd8e
/*
* Copyright 2002-2016 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.
*/
package
org.springframework.messaging.simp.stomp
;
import
java.util.Arrays
;
import
java.util.Collection
;
import
java.util.EnumMap
;
import
java.util.Map
;
import
org.junit.Test
;
import
org.springframework.messaging.simp.SimpMessageType
;
import
static
org
.
junit
.
Assert
.*;
/**
* @author Juergen Hoeller
*/
public
class
StompCommandTests
{
private
static
final
Collection
<
StompCommand
>
destinationRequired
=
Arrays
.
asList
(
StompCommand
.
SEND
,
StompCommand
.
SUBSCRIBE
,
StompCommand
.
MESSAGE
);
private
static
final
Collection
<
StompCommand
>
subscriptionIdRequired
=
Arrays
.
asList
(
StompCommand
.
SUBSCRIBE
,
StompCommand
.
UNSUBSCRIBE
,
StompCommand
.
MESSAGE
);
private
static
final
Collection
<
StompCommand
>
contentLengthRequired
=
Arrays
.
asList
(
StompCommand
.
SEND
,
StompCommand
.
MESSAGE
,
StompCommand
.
ERROR
);
private
static
final
Collection
<
StompCommand
>
bodyAllowed
=
Arrays
.
asList
(
StompCommand
.
SEND
,
StompCommand
.
MESSAGE
,
StompCommand
.
ERROR
);
private
static
final
Map
<
StompCommand
,
SimpMessageType
>
messageTypes
=
new
EnumMap
<>(
StompCommand
.
class
);
static
{
messageTypes
.
put
(
StompCommand
.
STOMP
,
SimpMessageType
.
CONNECT
);
messageTypes
.
put
(
StompCommand
.
CONNECT
,
SimpMessageType
.
CONNECT
);
messageTypes
.
put
(
StompCommand
.
DISCONNECT
,
SimpMessageType
.
DISCONNECT
);
messageTypes
.
put
(
StompCommand
.
SUBSCRIBE
,
SimpMessageType
.
SUBSCRIBE
);
messageTypes
.
put
(
StompCommand
.
UNSUBSCRIBE
,
SimpMessageType
.
UNSUBSCRIBE
);
messageTypes
.
put
(
StompCommand
.
SEND
,
SimpMessageType
.
MESSAGE
);
messageTypes
.
put
(
StompCommand
.
MESSAGE
,
SimpMessageType
.
MESSAGE
);
}
@Test
public
void
getMessageType
()
throws
Exception
{
for
(
StompCommand
stompCommand
:
StompCommand
.
values
())
{
SimpMessageType
simp
=
messageTypes
.
get
(
stompCommand
);
if
(
simp
==
null
)
{
simp
=
SimpMessageType
.
OTHER
;
}
assertSame
(
simp
,
stompCommand
.
getMessageType
());
}
}
@Test
public
void
requiresDestination
()
throws
Exception
{
for
(
StompCommand
stompCommand
:
StompCommand
.
values
())
{
assertEquals
(
destinationRequired
.
contains
(
stompCommand
),
stompCommand
.
requiresDestination
());
}
}
@Test
public
void
requiresSubscriptionId
()
throws
Exception
{
for
(
StompCommand
stompCommand
:
StompCommand
.
values
())
{
assertEquals
(
subscriptionIdRequired
.
contains
(
stompCommand
),
stompCommand
.
requiresSubscriptionId
());
}
}
@Test
public
void
requiresContentLength
()
throws
Exception
{
for
(
StompCommand
stompCommand
:
StompCommand
.
values
())
{
assertEquals
(
contentLengthRequired
.
contains
(
stompCommand
),
stompCommand
.
requiresContentLength
());
}
}
@Test
public
void
isBodyAllowed
()
throws
Exception
{
for
(
StompCommand
stompCommand
:
StompCommand
.
values
())
{
assertEquals
(
bodyAllowed
.
contains
(
stompCommand
),
stompCommand
.
isBodyAllowed
());
}
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录