Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
爱吃血肠
spring-framework
提交
2474c487
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,体验更适合开发者的 AI 搜索 >>
提交
2474c487
编写于
8月 02, 2018
作者:
J
Juergen Hoeller
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Polishing
上级
dc36bb34
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
160 addition
and
176 deletion
+160
-176
spring-test/src/main/java/org/springframework/test/context/support/AbstractDelegatingSmartContextLoader.java
...context/support/AbstractDelegatingSmartContextLoader.java
+51
-54
spring-web/src/main/java/org/springframework/web/method/annotation/InitBinderDataBinderFactory.java
...rk/web/method/annotation/InitBinderDataBinderFactory.java
+8
-10
spring-webflux/src/main/java/org/springframework/web/reactive/result/method/annotation/InitBinderBindingContext.java
...ve/result/method/annotation/InitBinderBindingContext.java
+6
-13
spring-webmvc/src/main/java/org/springframework/web/servlet/config/AnnotationDrivenBeanDefinitionParser.java
.../servlet/config/AnnotationDrivenBeanDefinitionParser.java
+55
-57
spring-webmvc/src/main/java/org/springframework/web/servlet/config/ResourcesBeanDefinitionParser.java
...ork/web/servlet/config/ResourcesBeanDefinitionParser.java
+9
-9
spring-websocket/src/main/java/org/springframework/web/socket/config/HandlersBeanDefinitionParser.java
...ework/web/socket/config/HandlersBeanDefinitionParser.java
+14
-14
spring-websocket/src/main/java/org/springframework/web/socket/config/MessageBrokerBeanDefinitionParser.java
.../web/socket/config/MessageBrokerBeanDefinitionParser.java
+9
-9
spring-websocket/src/main/java/org/springframework/web/socket/config/WebSocketNamespaceUtils.java
...gframework/web/socket/config/WebSocketNamespaceUtils.java
+8
-10
未找到文件。
spring-test/src/main/java/org/springframework/test/context/support/AbstractDelegatingSmartContextLoader.java
浏览文件 @
2474c487
...
...
@@ -16,9 +16,6 @@
package
org.springframework.test.context.support
;
import
java.util.Arrays
;
import
java.util.List
;
import
org.apache.commons.logging.Log
;
import
org.apache.commons.logging.LogFactory
;
...
...
@@ -88,33 +85,36 @@ public abstract class AbstractDelegatingSmartContextLoader implements SmartConte
protected
abstract
SmartContextLoader
getAnnotationConfigLoader
();
//
Smart
ContextLoader
// ContextLoader
private
static
void
delegateProcessing
(
SmartContextLoader
loader
,
ContextConfigurationAttributes
configAttributes
)
{
if
(
logger
.
isDebugEnabled
())
{
logger
.
debug
(
String
.
format
(
"Delegating to %s to process context configuration %s."
,
name
(
loader
),
configAttributes
));
}
loader
.
processContextConfiguration
(
configAttributes
);
/**
* {@code AbstractDelegatingSmartContextLoader} does not support the
* {@link ContextLoader#processLocations(Class, String...)} method. Call
* {@link #processContextConfiguration(ContextConfigurationAttributes)} instead.
* @throws UnsupportedOperationException in this implementation
*/
@Override
public
final
String
[]
processLocations
(
Class
<?>
clazz
,
@Nullable
String
...
locations
)
{
throw
new
UnsupportedOperationException
(
"DelegatingSmartContextLoaders do not support the ContextLoader SPI. "
+
"Call processContextConfiguration(ContextConfigurationAttributes) instead."
);
}
private
static
ApplicationContext
delegateLoading
(
SmartContextLoader
loader
,
MergedContextConfiguration
mergedConfig
)
throws
Exception
{
if
(
logger
.
isDebugEnabled
())
{
logger
.
debug
(
String
.
format
(
"Delegating to %s to load context from %s."
,
name
(
loader
),
mergedConfig
));
}
return
loader
.
loadContext
(
mergedConfig
);
/**
* {@code AbstractDelegatingSmartContextLoader} does not support the
* {@link ContextLoader#loadContext(String...) } method. Call
* {@link #loadContext(MergedContextConfiguration)} instead.
* @throws UnsupportedOperationException in this implementation
*/
@Override
public
final
ApplicationContext
loadContext
(
String
...
locations
)
throws
Exception
{
throw
new
UnsupportedOperationException
(
"DelegatingSmartContextLoaders do not support the ContextLoader SPI. "
+
"Call loadContext(MergedContextConfiguration) instead."
);
}
private
boolean
supports
(
SmartContextLoader
loader
,
MergedContextConfiguration
mergedConfig
)
{
if
(
loader
==
getAnnotationConfigLoader
())
{
return
(
mergedConfig
.
hasClasses
()
&&
!
mergedConfig
.
hasLocations
());
}
else
{
return
(
mergedConfig
.
hasLocations
()
&&
!
mergedConfig
.
hasClasses
());
}
}
// SmartContextLoader
/**
* Delegates to candidate {@code SmartContextLoaders} to process the supplied
...
...
@@ -228,7 +228,7 @@ public abstract class AbstractDelegatingSmartContextLoader implements SmartConte
*/
@Override
public
ApplicationContext
loadContext
(
MergedContextConfiguration
mergedConfig
)
throws
Exception
{
Assert
.
notNull
(
mergedConfig
,
"
mergedConfig
must not be null"
);
Assert
.
notNull
(
mergedConfig
,
"
MergedContextConfiguration
must not be null"
);
Assert
.
state
(!(
mergedConfig
.
hasLocations
()
&&
mergedConfig
.
hasClasses
()),
()
->
String
.
format
(
"Neither %s nor %s supports loading an ApplicationContext from %s: "
+
...
...
@@ -236,7 +236,6 @@ public abstract class AbstractDelegatingSmartContextLoader implements SmartConte
name
(
getAnnotationConfigLoader
()),
mergedConfig
));
SmartContextLoader
[]
candidates
=
{
getXmlLoader
(),
getAnnotationConfigLoader
()};
for
(
SmartContextLoader
loader
:
candidates
)
{
// Determine if each loader can load a context from the mergedConfig. If it
// can, let it; otherwise, keep iterating.
...
...
@@ -254,41 +253,39 @@ public abstract class AbstractDelegatingSmartContextLoader implements SmartConte
// else...
throw
new
IllegalStateException
(
String
.
format
(
"Neither %s nor %s was able to load an ApplicationContext from %s."
,
name
(
getXmlLoader
()),
name
(
getAnnotationConfigLoader
()),
mergedConfig
));
"Neither %s nor %s was able to load an ApplicationContext from %s."
,
name
(
get
XmlLoader
()),
name
(
get
AnnotationConfigLoader
()),
mergedConfig
));
}
private
static
String
name
(
SmartContextLoader
loader
)
{
return
loader
.
getClass
().
getSimpleName
();
private
static
void
delegateProcessing
(
SmartContextLoader
loader
,
ContextConfigurationAttributes
configAttributes
)
{
if
(
logger
.
isDebugEnabled
())
{
logger
.
debug
(
String
.
format
(
"Delegating to %s to process context configuration %s."
,
name
(
loader
),
configAttributes
));
}
loader
.
processContextConfiguration
(
configAttributes
);
}
private
static
ApplicationContext
delegateLoading
(
SmartContextLoader
loader
,
MergedContextConfiguration
mergedConfig
)
throws
Exception
{
// ContextLoader
if
(
logger
.
isDebugEnabled
())
{
logger
.
debug
(
String
.
format
(
"Delegating to %s to load context from %s."
,
name
(
loader
),
mergedConfig
));
}
return
loader
.
loadContext
(
mergedConfig
);
}
/**
* {@code AbstractDelegatingSmartContextLoader} does not support the
* {@link ContextLoader#processLocations(Class, String...)} method. Call
* {@link #processContextConfiguration(ContextConfigurationAttributes)} instead.
* @throws UnsupportedOperationException in this implementation
*/
@Override
public
final
String
[]
processLocations
(
Class
<?>
clazz
,
@Nullable
String
...
locations
)
{
throw
new
UnsupportedOperationException
(
"DelegatingSmartContextLoaders do not support the ContextLoader SPI. "
+
"Call processContextConfiguration(ContextConfigurationAttributes) instead."
);
private
boolean
supports
(
SmartContextLoader
loader
,
MergedContextConfiguration
mergedConfig
)
{
if
(
loader
==
getAnnotationConfigLoader
())
{
return
(
mergedConfig
.
hasClasses
()
&&
!
mergedConfig
.
hasLocations
());
}
else
{
return
(
mergedConfig
.
hasLocations
()
&&
!
mergedConfig
.
hasClasses
());
}
}
/**
* {@code AbstractDelegatingSmartContextLoader} does not support the
* {@link ContextLoader#loadContext(String...) } method. Call
* {@link #loadContext(MergedContextConfiguration)} instead.
* @throws UnsupportedOperationException in this implementation
*/
@Override
public
final
ApplicationContext
loadContext
(
String
...
locations
)
throws
Exception
{
throw
new
UnsupportedOperationException
(
"DelegatingSmartContextLoaders do not support the ContextLoader SPI. "
+
"Call loadContext(MergedContextConfiguration) instead."
);
private
static
String
name
(
SmartContextLoader
loader
)
{
return
loader
.
getClass
().
getSimpleName
();
}
}
spring-web/src/main/java/org/springframework/web/method/annotation/InitBinderDataBinderFactory.java
浏览文件 @
2474c487
/*
* Copyright 2002-201
7
the original author or authors.
* Copyright 2002-201
8
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.
...
...
@@ -16,8 +16,6 @@
package
org.springframework.web.method.annotation
;
import
java.util.Arrays
;
import
java.util.Collection
;
import
java.util.Collections
;
import
java.util.List
;
...
...
@@ -57,15 +55,15 @@ public class InitBinderDataBinderFactory extends DefaultDataBinderFactory {
/**
* Initialize a WebDataBinder with {@code @InitBinder} methods.
*
If the {@code @InitBinder} annotation specifies attributes names, it is
* invoked only if the names include the target object name.
*
<p>If the {@code @InitBinder} annotation specifies attributes names,
* i
t is i
nvoked only if the names include the target object name.
* @throws Exception if one of the invoked @{@link InitBinder} methods fail.
*/
@Override
public
void
initBinder
(
WebDataBinder
b
inder
,
NativeWebRequest
request
)
throws
Exception
{
public
void
initBinder
(
WebDataBinder
dataB
inder
,
NativeWebRequest
request
)
throws
Exception
{
for
(
InvocableHandlerMethod
binderMethod
:
this
.
binderMethods
)
{
if
(
isBinderMethodApplicable
(
binderMethod
,
b
inder
))
{
Object
returnValue
=
binderMethod
.
invokeForRequest
(
request
,
null
,
b
inder
);
if
(
isBinderMethodApplicable
(
binderMethod
,
dataB
inder
))
{
Object
returnValue
=
binderMethod
.
invokeForRequest
(
request
,
null
,
dataB
inder
);
if
(
returnValue
!=
null
)
{
throw
new
IllegalStateException
(
"@InitBinder methods should return void: "
+
binderMethod
);
...
...
@@ -79,11 +77,11 @@ public class InitBinderDataBinderFactory extends DefaultDataBinderFactory {
* the given WebDataBinder instance. By default we check the attributes
* names of the annotation, if present.
*/
protected
boolean
isBinderMethodApplicable
(
HandlerMethod
binderMethod
,
WebDataBinder
b
inder
)
{
protected
boolean
isBinderMethodApplicable
(
HandlerMethod
binderMethod
,
WebDataBinder
dataB
inder
)
{
InitBinder
ann
=
binderMethod
.
getMethodAnnotation
(
InitBinder
.
class
);
Assert
.
state
(
ann
!=
null
,
"No InitBinder annotation"
);
String
[]
names
=
ann
.
value
();
return
ObjectUtils
.
isEmpty
(
names
)
||
Arrays
.
asList
(
names
).
contains
(
binder
.
getObjectName
(
));
return
(
ObjectUtils
.
isEmpty
(
names
)
||
ObjectUtils
.
containsElement
(
names
,
dataBinder
.
getObjectName
()
));
}
}
spring-webflux/src/main/java/org/springframework/web/reactive/result/method/annotation/InitBinderBindingContext.java
浏览文件 @
2474c487
...
...
@@ -16,8 +16,6 @@
package
org.springframework.web.reactive.result.method.annotation
;
import
java.util.Arrays
;
import
java.util.Collection
;
import
java.util.List
;
import
org.springframework.lang.Nullable
;
...
...
@@ -44,7 +42,6 @@ class InitBinderBindingContext extends BindingContext {
private
final
List
<
SyncInvocableHandlerMethod
>
binderMethods
;
/* Simple BindingContext to help with the invoking @InitBinder methods */
private
final
BindingContext
binderMethodContext
;
private
final
SessionStatus
sessionStatus
=
new
SimpleSessionStatus
();
...
...
@@ -72,32 +69,28 @@ class InitBinderBindingContext extends BindingContext {
@Override
protected
WebExchangeDataBinder
initDataBinder
(
WebExchangeDataBinder
dataBinder
,
ServerWebExchange
exchange
)
{
protected
WebExchangeDataBinder
initDataBinder
(
WebExchangeDataBinder
dataBinder
,
ServerWebExchange
exchange
)
{
this
.
binderMethods
.
stream
()
.
filter
(
binderMethod
->
{
InitBinder
ann
=
binderMethod
.
getMethodAnnotation
(
InitBinder
.
class
);
Assert
.
state
(
ann
!=
null
,
"No InitBinder annotation"
);
String
[]
names
=
ann
.
value
();
return
ObjectUtils
.
isEmpty
(
names
)
||
Arrays
.
asList
(
names
).
contains
(
dataBinder
.
getObjectName
());
return
(
ObjectUtils
.
isEmpty
(
names
)
||
ObjectUtils
.
containsElement
(
names
,
dataBinder
.
getObjectName
()));
})
.
forEach
(
method
->
invokeBinderMethod
(
dataBinder
,
exchange
,
method
));
return
dataBinder
;
}
private
void
invokeBinderMethod
(
WebExchangeDataBinder
dataBinder
,
ServerWebExchange
exchange
,
SyncInvocableHandlerMethod
binderMethod
)
{
HandlerResult
result
=
binderMethod
.
invokeForHandlerResult
(
exchange
,
this
.
binderMethodContext
,
dataBinder
);
private
void
invokeBinderMethod
(
WebExchangeDataBinder
dataBinder
,
ServerWebExchange
exchange
,
SyncInvocableHandlerMethod
binderMethod
)
{
HandlerResult
result
=
binderMethod
.
invokeForHandlerResult
(
exchange
,
this
.
binderMethodContext
,
dataBinder
);
if
(
result
!=
null
&&
result
.
getReturnValue
()
!=
null
)
{
throw
new
IllegalStateException
(
"@InitBinder methods should return void: "
+
binderMethod
);
}
// Should not happen (no Model argument resolution) ...
if
(!
this
.
binderMethodContext
.
getModel
().
asMap
().
isEmpty
())
{
throw
new
IllegalStateException
(
...
...
spring-webmvc/src/main/java/org/springframework/web/servlet/config/AnnotationDrivenBeanDefinitionParser.java
浏览文件 @
2474c487
...
...
@@ -192,14 +192,14 @@ class AnnotationDrivenBeanDefinitionParser implements BeanDefinitionParser {
@Override
@Nullable
public
BeanDefinition
parse
(
Element
element
,
ParserContext
parserC
ontext
)
{
Object
source
=
parserC
ontext
.
extractSource
(
element
);
XmlReaderContext
readerContext
=
parserC
ontext
.
getReaderContext
();
public
BeanDefinition
parse
(
Element
element
,
ParserContext
c
ontext
)
{
Object
source
=
c
ontext
.
extractSource
(
element
);
XmlReaderContext
readerContext
=
c
ontext
.
getReaderContext
();
CompositeComponentDefinition
compDefinition
=
new
CompositeComponentDefinition
(
element
.
getTagName
(),
source
);
parserC
ontext
.
pushContainingComponent
(
compDefinition
);
c
ontext
.
pushContainingComponent
(
compDefinition
);
RuntimeBeanReference
contentNegotiationManager
=
getContentNegotiationManager
(
element
,
source
,
parserC
ontext
);
RuntimeBeanReference
contentNegotiationManager
=
getContentNegotiationManager
(
element
,
source
,
c
ontext
);
RootBeanDefinition
handlerMappingDef
=
new
RootBeanDefinition
(
RequestMappingHandlerMapping
.
class
);
handlerMappingDef
.
setSource
(
source
);
...
...
@@ -212,14 +212,14 @@ class AnnotationDrivenBeanDefinitionParser implements BeanDefinitionParser {
handlerMappingDef
.
getPropertyValues
().
add
(
"removeSemicolonContent"
,
!
enableMatrixVariables
);
}
configurePathMatchingProperties
(
handlerMappingDef
,
element
,
parserC
ontext
);
configurePathMatchingProperties
(
handlerMappingDef
,
element
,
c
ontext
);
readerContext
.
getRegistry
().
registerBeanDefinition
(
HANDLER_MAPPING_BEAN_NAME
,
handlerMappingDef
);
RuntimeBeanReference
corsRef
=
MvcNamespaceUtils
.
registerCorsConfigurations
(
null
,
parserC
ontext
,
source
);
RuntimeBeanReference
corsRef
=
MvcNamespaceUtils
.
registerCorsConfigurations
(
null
,
c
ontext
,
source
);
handlerMappingDef
.
getPropertyValues
().
add
(
"corsConfigurations"
,
corsRef
);
RuntimeBeanReference
conversionService
=
getConversionService
(
element
,
source
,
parserC
ontext
);
RuntimeBeanReference
validator
=
getValidator
(
element
,
source
,
parserC
ontext
);
RuntimeBeanReference
conversionService
=
getConversionService
(
element
,
source
,
c
ontext
);
RuntimeBeanReference
validator
=
getValidator
(
element
,
source
,
c
ontext
);
RuntimeBeanReference
messageCodesResolver
=
getMessageCodesResolver
(
element
);
RootBeanDefinition
bindingDef
=
new
RootBeanDefinition
(
ConfigurableWebBindingInitializer
.
class
);
...
...
@@ -229,13 +229,13 @@ class AnnotationDrivenBeanDefinitionParser implements BeanDefinitionParser {
bindingDef
.
getPropertyValues
().
add
(
"validator"
,
validator
);
bindingDef
.
getPropertyValues
().
add
(
"messageCodesResolver"
,
messageCodesResolver
);
ManagedList
<?>
messageConverters
=
getMessageConverters
(
element
,
source
,
parserC
ontext
);
ManagedList
<?>
argumentResolvers
=
getArgumentResolvers
(
element
,
parserC
ontext
);
ManagedList
<?>
returnValueHandlers
=
getReturnValueHandlers
(
element
,
parserC
ontext
);
ManagedList
<?>
messageConverters
=
getMessageConverters
(
element
,
source
,
c
ontext
);
ManagedList
<?>
argumentResolvers
=
getArgumentResolvers
(
element
,
c
ontext
);
ManagedList
<?>
returnValueHandlers
=
getReturnValueHandlers
(
element
,
c
ontext
);
String
asyncTimeout
=
getAsyncTimeout
(
element
);
RuntimeBeanReference
asyncExecutor
=
getAsyncExecutor
(
element
);
ManagedList
<?>
callableInterceptors
=
getCallableInterceptors
(
element
,
source
,
parserC
ontext
);
ManagedList
<?>
deferredResultInterceptors
=
getDeferredResultInterceptors
(
element
,
source
,
parserC
ontext
);
ManagedList
<?>
callableInterceptors
=
getCallableInterceptors
(
element
,
source
,
c
ontext
);
ManagedList
<?>
deferredResultInterceptors
=
getDeferredResultInterceptors
(
element
,
source
,
c
ontext
);
RootBeanDefinition
handlerAdapterDef
=
new
RootBeanDefinition
(
RequestMappingHandlerAdapter
.
class
);
handlerAdapterDef
.
setSource
(
source
);
...
...
@@ -312,18 +312,18 @@ class AnnotationDrivenBeanDefinitionParser implements BeanDefinitionParser {
defaultExceptionResolver
.
getPropertyValues
().
add
(
"order"
,
2
);
String
defaultExResolverName
=
readerContext
.
registerWithGeneratedName
(
defaultExceptionResolver
);
parserC
ontext
.
registerComponent
(
new
BeanComponentDefinition
(
handlerMappingDef
,
HANDLER_MAPPING_BEAN_NAME
));
parserC
ontext
.
registerComponent
(
new
BeanComponentDefinition
(
handlerAdapterDef
,
HANDLER_ADAPTER_BEAN_NAME
));
parserC
ontext
.
registerComponent
(
new
BeanComponentDefinition
(
uriContributorDef
,
uriContributorName
));
parserC
ontext
.
registerComponent
(
new
BeanComponentDefinition
(
mappedInterceptorDef
,
mappedInterceptorName
));
parserC
ontext
.
registerComponent
(
new
BeanComponentDefinition
(
methodExceptionResolver
,
methodExResolverName
));
parserC
ontext
.
registerComponent
(
new
BeanComponentDefinition
(
statusExceptionResolver
,
statusExResolverName
));
parserC
ontext
.
registerComponent
(
new
BeanComponentDefinition
(
defaultExceptionResolver
,
defaultExResolverName
));
c
ontext
.
registerComponent
(
new
BeanComponentDefinition
(
handlerMappingDef
,
HANDLER_MAPPING_BEAN_NAME
));
c
ontext
.
registerComponent
(
new
BeanComponentDefinition
(
handlerAdapterDef
,
HANDLER_ADAPTER_BEAN_NAME
));
c
ontext
.
registerComponent
(
new
BeanComponentDefinition
(
uriContributorDef
,
uriContributorName
));
c
ontext
.
registerComponent
(
new
BeanComponentDefinition
(
mappedInterceptorDef
,
mappedInterceptorName
));
c
ontext
.
registerComponent
(
new
BeanComponentDefinition
(
methodExceptionResolver
,
methodExResolverName
));
c
ontext
.
registerComponent
(
new
BeanComponentDefinition
(
statusExceptionResolver
,
statusExResolverName
));
c
ontext
.
registerComponent
(
new
BeanComponentDefinition
(
defaultExceptionResolver
,
defaultExResolverName
));
// Ensure BeanNameUrlHandlerMapping (SPR-8289) and default HandlerAdapters are not "turned off"
MvcNamespaceUtils
.
registerDefaultComponents
(
parserC
ontext
,
source
);
MvcNamespaceUtils
.
registerDefaultComponents
(
c
ontext
,
source
);
parserC
ontext
.
popAndRegisterContainingComponent
();
c
ontext
.
popAndRegisterContainingComponent
();
return
null
;
}
...
...
@@ -342,9 +342,7 @@ class AnnotationDrivenBeanDefinitionParser implements BeanDefinitionParser {
}
}
private
RuntimeBeanReference
getConversionService
(
Element
element
,
@Nullable
Object
source
,
ParserContext
parserContext
)
{
private
RuntimeBeanReference
getConversionService
(
Element
element
,
@Nullable
Object
source
,
ParserContext
context
)
{
RuntimeBeanReference
conversionServiceRef
;
if
(
element
.
hasAttribute
(
"conversion-service"
))
{
conversionServiceRef
=
new
RuntimeBeanReference
(
element
.
getAttribute
(
"conversion-service"
));
...
...
@@ -353,15 +351,15 @@ class AnnotationDrivenBeanDefinitionParser implements BeanDefinitionParser {
RootBeanDefinition
conversionDef
=
new
RootBeanDefinition
(
FormattingConversionServiceFactoryBean
.
class
);
conversionDef
.
setSource
(
source
);
conversionDef
.
setRole
(
BeanDefinition
.
ROLE_INFRASTRUCTURE
);
String
conversionName
=
parserC
ontext
.
getReaderContext
().
registerWithGeneratedName
(
conversionDef
);
parserC
ontext
.
registerComponent
(
new
BeanComponentDefinition
(
conversionDef
,
conversionName
));
String
conversionName
=
c
ontext
.
getReaderContext
().
registerWithGeneratedName
(
conversionDef
);
c
ontext
.
registerComponent
(
new
BeanComponentDefinition
(
conversionDef
,
conversionName
));
conversionServiceRef
=
new
RuntimeBeanReference
(
conversionName
);
}
return
conversionServiceRef
;
}
@Nullable
private
RuntimeBeanReference
getValidator
(
Element
element
,
@Nullable
Object
source
,
ParserContext
parserC
ontext
)
{
private
RuntimeBeanReference
getValidator
(
Element
element
,
@Nullable
Object
source
,
ParserContext
c
ontext
)
{
if
(
element
.
hasAttribute
(
"validator"
))
{
return
new
RuntimeBeanReference
(
element
.
getAttribute
(
"validator"
));
}
...
...
@@ -370,8 +368,8 @@ class AnnotationDrivenBeanDefinitionParser implements BeanDefinitionParser {
"org.springframework.validation.beanvalidation.OptionalValidatorFactoryBean"
);
validatorDef
.
setSource
(
source
);
validatorDef
.
setRole
(
BeanDefinition
.
ROLE_INFRASTRUCTURE
);
String
validatorName
=
parserC
ontext
.
getReaderContext
().
registerWithGeneratedName
(
validatorDef
);
parserC
ontext
.
registerComponent
(
new
BeanComponentDefinition
(
validatorDef
,
validatorName
));
String
validatorName
=
c
ontext
.
getReaderContext
().
registerWithGeneratedName
(
validatorDef
);
c
ontext
.
registerComponent
(
new
BeanComponentDefinition
(
validatorDef
,
validatorName
));
return
new
RuntimeBeanReference
(
validatorName
);
}
else
{
...
...
@@ -380,7 +378,7 @@ class AnnotationDrivenBeanDefinitionParser implements BeanDefinitionParser {
}
private
RuntimeBeanReference
getContentNegotiationManager
(
Element
element
,
@Nullable
Object
source
,
ParserContext
parserC
ontext
)
{
Element
element
,
@Nullable
Object
source
,
ParserContext
c
ontext
)
{
RuntimeBeanReference
beanRef
;
if
(
element
.
hasAttribute
(
"content-negotiation-manager"
))
{
...
...
@@ -393,19 +391,19 @@ class AnnotationDrivenBeanDefinitionParser implements BeanDefinitionParser {
factoryBeanDef
.
setRole
(
BeanDefinition
.
ROLE_INFRASTRUCTURE
);
factoryBeanDef
.
getPropertyValues
().
add
(
"mediaTypes"
,
getDefaultMediaTypes
());
String
name
=
CONTENT_NEGOTIATION_MANAGER_BEAN_NAME
;
parserC
ontext
.
getReaderContext
().
getRegistry
().
registerBeanDefinition
(
name
,
factoryBeanDef
);
parserC
ontext
.
registerComponent
(
new
BeanComponentDefinition
(
factoryBeanDef
,
name
));
c
ontext
.
getReaderContext
().
getRegistry
().
registerBeanDefinition
(
name
,
factoryBeanDef
);
c
ontext
.
registerComponent
(
new
BeanComponentDefinition
(
factoryBeanDef
,
name
));
beanRef
=
new
RuntimeBeanReference
(
name
);
}
return
beanRef
;
}
private
void
configurePathMatchingProperties
(
RootBeanDefinition
handlerMappingDef
,
Element
element
,
ParserContext
parserC
ontext
)
{
RootBeanDefinition
handlerMappingDef
,
Element
element
,
ParserContext
c
ontext
)
{
Element
pathMatchingElement
=
DomUtils
.
getChildElementByTagName
(
element
,
"path-matching"
);
if
(
pathMatchingElement
!=
null
)
{
Object
source
=
parserC
ontext
.
extractSource
(
element
);
Object
source
=
c
ontext
.
extractSource
(
element
);
if
(
pathMatchingElement
.
hasAttribute
(
"suffix-pattern"
))
{
Boolean
useSuffixPatternMatch
=
Boolean
.
valueOf
(
pathMatchingElement
.
getAttribute
(
"suffix-pattern"
));
...
...
@@ -424,14 +422,14 @@ class AnnotationDrivenBeanDefinitionParser implements BeanDefinitionParser {
if
(
pathMatchingElement
.
hasAttribute
(
"path-helper"
))
{
pathHelperRef
=
new
RuntimeBeanReference
(
pathMatchingElement
.
getAttribute
(
"path-helper"
));
}
pathHelperRef
=
MvcNamespaceUtils
.
registerUrlPathHelper
(
pathHelperRef
,
parserC
ontext
,
source
);
pathHelperRef
=
MvcNamespaceUtils
.
registerUrlPathHelper
(
pathHelperRef
,
c
ontext
,
source
);
handlerMappingDef
.
getPropertyValues
().
add
(
"urlPathHelper"
,
pathHelperRef
);
RuntimeBeanReference
pathMatcherRef
=
null
;
if
(
pathMatchingElement
.
hasAttribute
(
"path-matcher"
))
{
pathMatcherRef
=
new
RuntimeBeanReference
(
pathMatchingElement
.
getAttribute
(
"path-matcher"
));
}
pathMatcherRef
=
MvcNamespaceUtils
.
registerPathMatcher
(
pathMatcherRef
,
parserC
ontext
,
source
);
pathMatcherRef
=
MvcNamespaceUtils
.
registerPathMatcher
(
pathMatcherRef
,
c
ontext
,
source
);
handlerMappingDef
.
getPropertyValues
().
add
(
"pathMatcher"
,
pathMatcherRef
);
}
}
...
...
@@ -483,18 +481,18 @@ class AnnotationDrivenBeanDefinitionParser implements BeanDefinitionParser {
}
private
ManagedList
<?>
getCallableInterceptors
(
Element
element
,
@Nullable
Object
source
,
ParserContext
parserC
ontext
)
{
Element
element
,
@Nullable
Object
source
,
ParserContext
c
ontext
)
{
ManagedList
<
?
super
Object
>
interceptors
=
new
ManagedList
<>();
ManagedList
<
Object
>
interceptors
=
new
ManagedList
<>();
Element
asyncElement
=
DomUtils
.
getChildElementByTagName
(
element
,
"async-support"
);
if
(
asyncElement
!=
null
)
{
Element
interceptorsElement
=
DomUtils
.
getChildElementByTagName
(
asyncElement
,
"callable-interceptors"
);
if
(
interceptorsElement
!=
null
)
{
interceptors
.
setSource
(
source
);
for
(
Element
converter
:
DomUtils
.
getChildElementsByTagName
(
interceptorsElement
,
"bean"
))
{
BeanDefinitionHolder
beanDef
=
parserC
ontext
.
getDelegate
().
parseBeanDefinitionElement
(
converter
);
BeanDefinitionHolder
beanDef
=
c
ontext
.
getDelegate
().
parseBeanDefinitionElement
(
converter
);
if
(
beanDef
!=
null
)
{
beanDef
=
parserC
ontext
.
getDelegate
().
decorateBeanDefinitionIfRequired
(
converter
,
beanDef
);
beanDef
=
c
ontext
.
getDelegate
().
decorateBeanDefinitionIfRequired
(
converter
,
beanDef
);
interceptors
.
add
(
beanDef
);
}
}
...
...
@@ -504,18 +502,18 @@ class AnnotationDrivenBeanDefinitionParser implements BeanDefinitionParser {
}
private
ManagedList
<?>
getDeferredResultInterceptors
(
Element
element
,
@Nullable
Object
source
,
ParserContext
parserC
ontext
)
{
Element
element
,
@Nullable
Object
source
,
ParserContext
c
ontext
)
{
ManagedList
<
?
super
Object
>
interceptors
=
new
ManagedList
<>();
ManagedList
<
Object
>
interceptors
=
new
ManagedList
<>();
Element
asyncElement
=
DomUtils
.
getChildElementByTagName
(
element
,
"async-support"
);
if
(
asyncElement
!=
null
)
{
Element
interceptorsElement
=
DomUtils
.
getChildElementByTagName
(
asyncElement
,
"deferred-result-interceptors"
);
if
(
interceptorsElement
!=
null
)
{
interceptors
.
setSource
(
source
);
for
(
Element
converter
:
DomUtils
.
getChildElementsByTagName
(
interceptorsElement
,
"bean"
))
{
BeanDefinitionHolder
beanDef
=
parserC
ontext
.
getDelegate
().
parseBeanDefinitionElement
(
converter
);
BeanDefinitionHolder
beanDef
=
c
ontext
.
getDelegate
().
parseBeanDefinitionElement
(
converter
);
if
(
beanDef
!=
null
)
{
beanDef
=
parserC
ontext
.
getDelegate
().
decorateBeanDefinitionIfRequired
(
converter
,
beanDef
);
beanDef
=
c
ontext
.
getDelegate
().
decorateBeanDefinitionIfRequired
(
converter
,
beanDef
);
interceptors
.
add
(
beanDef
);
}
}
...
...
@@ -525,11 +523,11 @@ class AnnotationDrivenBeanDefinitionParser implements BeanDefinitionParser {
}
@Nullable
private
ManagedList
<?>
getArgumentResolvers
(
Element
element
,
ParserContext
parserC
ontext
)
{
private
ManagedList
<?>
getArgumentResolvers
(
Element
element
,
ParserContext
c
ontext
)
{
Element
resolversElement
=
DomUtils
.
getChildElementByTagName
(
element
,
"argument-resolvers"
);
if
(
resolversElement
!=
null
)
{
ManagedList
<
Object
>
resolvers
=
extractBeanSubElements
(
resolversElement
,
parserC
ontext
);
return
wrapLegacyResolvers
(
resolvers
,
parserC
ontext
);
ManagedList
<
Object
>
resolvers
=
extractBeanSubElements
(
resolversElement
,
c
ontext
);
return
wrapLegacyResolvers
(
resolvers
,
c
ontext
);
}
return
null
;
}
...
...
@@ -555,18 +553,18 @@ class AnnotationDrivenBeanDefinitionParser implements BeanDefinitionParser {
}
@Nullable
private
ManagedList
<?>
getReturnValueHandlers
(
Element
element
,
ParserContext
parserC
ontext
)
{
private
ManagedList
<?>
getReturnValueHandlers
(
Element
element
,
ParserContext
c
ontext
)
{
Element
handlers
=
DomUtils
.
getChildElementByTagName
(
element
,
"return-value-handlers"
);
return
(
handlers
!=
null
?
extractBeanSubElements
(
handlers
,
parserC
ontext
)
:
null
);
return
(
handlers
!=
null
?
extractBeanSubElements
(
handlers
,
c
ontext
)
:
null
);
}
private
ManagedList
<?>
getMessageConverters
(
Element
element
,
@Nullable
Object
source
,
ParserContext
parserC
ontext
)
{
private
ManagedList
<?>
getMessageConverters
(
Element
element
,
@Nullable
Object
source
,
ParserContext
c
ontext
)
{
Element
convertersElement
=
DomUtils
.
getChildElementByTagName
(
element
,
"message-converters"
);
ManagedList
<
?
super
Object
>
messageConverters
=
new
ManagedList
<>();
ManagedList
<
Object
>
messageConverters
=
new
ManagedList
<>();
if
(
convertersElement
!=
null
)
{
messageConverters
.
setSource
(
source
);
for
(
Element
beanElement
:
DomUtils
.
getChildElementsByTagName
(
convertersElement
,
"bean"
,
"ref"
))
{
Object
object
=
parserC
ontext
.
getDelegate
().
parsePropertySubElement
(
beanElement
,
null
);
Object
object
=
c
ontext
.
getDelegate
().
parsePropertySubElement
(
beanElement
,
null
);
messageConverters
.
add
(
object
);
}
}
...
...
@@ -647,11 +645,11 @@ class AnnotationDrivenBeanDefinitionParser implements BeanDefinitionParser {
return
beanDefinition
;
}
private
ManagedList
<
Object
>
extractBeanSubElements
(
Element
parentElement
,
ParserContext
parserC
ontext
)
{
private
ManagedList
<
Object
>
extractBeanSubElements
(
Element
parentElement
,
ParserContext
c
ontext
)
{
ManagedList
<
Object
>
list
=
new
ManagedList
<>();
list
.
setSource
(
parserC
ontext
.
extractSource
(
parentElement
));
list
.
setSource
(
c
ontext
.
extractSource
(
parentElement
));
for
(
Element
beanElement
:
DomUtils
.
getChildElementsByTagName
(
parentElement
,
"bean"
,
"ref"
))
{
Object
object
=
parserC
ontext
.
getDelegate
().
parsePropertySubElement
(
beanElement
,
null
);
Object
object
=
c
ontext
.
getDelegate
().
parsePropertySubElement
(
beanElement
,
null
);
list
.
add
(
object
);
}
return
list
;
...
...
spring-webmvc/src/main/java/org/springframework/web/servlet/config/ResourcesBeanDefinitionParser.java
浏览文件 @
2474c487
...
...
@@ -58,9 +58,9 @@ import org.springframework.web.servlet.resource.WebJarsResourceResolver;
/**
* {@link org.springframework.beans.factory.xml.BeanDefinitionParser} that parses a
* {@code resources} element to register a {@link ResourceHttpRequestHandler} and
* register a {@link SimpleUrlHandlerMapping} for mapping resource requests,
*
and a {@link HttpRequestHandlerAdapter}. Will also create a resource handling
*
chain with {@link ResourceResolver}s and {@link ResourceTransformer ResourceResolver}s and {@link
ResourceTransformers}.
* register a {@link SimpleUrlHandlerMapping} for mapping resource requests,
and a
*
{@link HttpRequestHandlerAdapter}. Will also create a resource handling chain with
*
{@link ResourceResolver ResourceResolvers} and {@link ResourceTransformer
ResourceTransformers}.
*
* @author Keith Donald
* @author Jeremy Grelle
...
...
@@ -250,9 +250,9 @@ class ResourcesBeanDefinitionParser implements BeanDefinitionParser {
String
autoRegistration
=
element
.
getAttribute
(
"auto-registration"
);
boolean
isAutoRegistration
=
!(
StringUtils
.
hasText
(
autoRegistration
)
&&
"false"
.
equals
(
autoRegistration
));
ManagedList
<
?
super
Object
>
resourceResolvers
=
new
ManagedList
<>();
ManagedList
<
Object
>
resourceResolvers
=
new
ManagedList
<>();
resourceResolvers
.
setSource
(
source
);
ManagedList
<
?
super
Object
>
resourceTransformers
=
new
ManagedList
<>();
ManagedList
<
Object
>
resourceTransformers
=
new
ManagedList
<>();
resourceTransformers
.
setSource
(
source
);
parseResourceCache
(
resourceResolvers
,
resourceTransformers
,
element
,
source
);
...
...
@@ -267,8 +267,8 @@ class ResourcesBeanDefinitionParser implements BeanDefinitionParser {
}
}
private
void
parseResourceCache
(
ManagedList
<
?
super
Object
>
resourceResolvers
,
ManagedList
<
?
super
Object
>
resourceTransformers
,
Element
element
,
@Nullable
Object
source
)
{
private
void
parseResourceCache
(
ManagedList
<
Object
>
resourceResolvers
,
ManagedList
<
Object
>
resourceTransformers
,
Element
element
,
@Nullable
Object
source
)
{
String
resourceCache
=
element
.
getAttribute
(
"resource-cache"
);
if
(
"true"
.
equals
(
resourceCache
))
{
...
...
@@ -306,7 +306,7 @@ class ResourcesBeanDefinitionParser implements BeanDefinitionParser {
}
private
void
parseResourceResolversTransformers
(
boolean
isAutoRegistration
,
ManagedList
<
?
super
Object
>
resourceResolvers
,
ManagedList
<?
super
Object
>
resourceTransformers
,
ManagedList
<
Object
>
resourceResolvers
,
ManagedList
<
Object
>
resourceTransformers
,
ParserContext
context
,
Element
element
,
@Nullable
Object
source
)
{
Element
resolversElement
=
DomUtils
.
getChildElementByTagName
(
element
,
"resolvers"
);
...
...
@@ -353,7 +353,7 @@ class ResourcesBeanDefinitionParser implements BeanDefinitionParser {
}
private
RootBeanDefinition
parseVersionResolver
(
ParserContext
context
,
Element
element
,
@Nullable
Object
source
)
{
ManagedMap
<
String
,
?
super
Object
>
strategyMap
=
new
ManagedMap
<>();
ManagedMap
<
String
,
Object
>
strategyMap
=
new
ManagedMap
<>();
strategyMap
.
setSource
(
source
);
RootBeanDefinition
versionResolverDef
=
new
RootBeanDefinition
(
VersionResourceResolver
.
class
);
versionResolverDef
.
setSource
(
source
);
...
...
spring-websocket/src/main/java/org/springframework/web/socket/config/HandlersBeanDefinitionParser.java
浏览文件 @
2474c487
...
...
@@ -40,10 +40,10 @@ import org.springframework.web.socket.server.support.WebSocketHttpRequestHandler
import
org.springframework.web.socket.sockjs.support.SockJsHttpRequestHandler
;
/**
* Parses the configuration for the {@code <websocket:handlers/>} namespace
*
element. Registers a Spring MVC {@code SimpleUrlHandlerMapping} to map HTTP
*
WebSocket
handshake (or SockJS) requests to
* {@link org.springframework.web.socket.WebSocketHandler WebSocketHandler
org.springframework.web.socket.WebSocketHandler WebSocketHandler
s}.
* Parses the configuration for the {@code <websocket:handlers/>} namespace
element.
*
Registers a Spring MVC {@code SimpleUrlHandlerMapping} to map HTTP WebSocket
* handshake (or SockJS) requests to
* {@link org.springframework.web.socket.WebSocketHandler WebSocketHandlers}.
*
* @author Brian Clozel
* @author Rossen Stoyanchev
...
...
@@ -58,10 +58,10 @@ class HandlersBeanDefinitionParser implements BeanDefinitionParser {
@Override
@Nullable
public
BeanDefinition
parse
(
Element
element
,
ParserContext
cxt
)
{
Object
source
=
cxt
.
extractSource
(
element
);
public
BeanDefinition
parse
(
Element
element
,
ParserContext
c
onte
xt
)
{
Object
source
=
c
onte
xt
.
extractSource
(
element
);
CompositeComponentDefinition
compDefinition
=
new
CompositeComponentDefinition
(
element
.
getTagName
(),
source
);
cxt
.
pushContainingComponent
(
compDefinition
);
c
onte
xt
.
pushContainingComponent
(
compDefinition
);
String
orderAttribute
=
element
.
getAttribute
(
"order"
);
int
order
=
orderAttribute
.
isEmpty
()
?
DEFAULT_MAPPING_ORDER
:
Integer
.
valueOf
(
orderAttribute
);
...
...
@@ -70,19 +70,19 @@ class HandlersBeanDefinitionParser implements BeanDefinitionParser {
handlerMappingDef
.
setSource
(
source
);
handlerMappingDef
.
setRole
(
BeanDefinition
.
ROLE_INFRASTRUCTURE
);
handlerMappingDef
.
getPropertyValues
().
add
(
"order"
,
order
);
String
handlerMappingName
=
cxt
.
getReaderContext
().
registerWithGeneratedName
(
handlerMappingDef
);
String
handlerMappingName
=
c
onte
xt
.
getReaderContext
().
registerWithGeneratedName
(
handlerMappingDef
);
RuntimeBeanReference
sockJsService
=
WebSocketNamespaceUtils
.
registerSockJsService
(
element
,
SOCK_JS_SCHEDULER_NAME
,
cxt
,
source
);
element
,
SOCK_JS_SCHEDULER_NAME
,
c
onte
xt
,
source
);
HandlerMappingStrategy
strategy
;
if
(
sockJsService
!=
null
)
{
strategy
=
new
SockJsHandlerMappingStrategy
(
sockJsService
);
}
else
{
RuntimeBeanReference
handler
=
WebSocketNamespaceUtils
.
registerHandshakeHandler
(
element
,
cxt
,
source
);
RuntimeBeanReference
handler
=
WebSocketNamespaceUtils
.
registerHandshakeHandler
(
element
,
c
onte
xt
,
source
);
Element
interceptElem
=
DomUtils
.
getChildElementByTagName
(
element
,
"handshake-interceptors"
);
ManagedList
<
?
super
Object
>
interceptors
=
WebSocketNamespaceUtils
.
parseBeanSubElements
(
interceptElem
,
c
xt
);
ManagedList
<
Object
>
interceptors
=
WebSocketNamespaceUtils
.
parseBeanSubElements
(
interceptElem
,
conte
xt
);
String
allowedOrigins
=
element
.
getAttribute
(
"allowed-origins"
);
List
<
String
>
origins
=
Arrays
.
asList
(
StringUtils
.
tokenizeToStringArray
(
allowedOrigins
,
","
));
interceptors
.
add
(
new
OriginHandshakeInterceptor
(
origins
));
...
...
@@ -92,12 +92,12 @@ class HandlersBeanDefinitionParser implements BeanDefinitionParser {
ManagedMap
<
String
,
Object
>
urlMap
=
new
ManagedMap
<>();
urlMap
.
setSource
(
source
);
for
(
Element
mappingElement
:
DomUtils
.
getChildElementsByTagName
(
element
,
"mapping"
))
{
strategy
.
addMapping
(
mappingElement
,
urlMap
,
cxt
);
strategy
.
addMapping
(
mappingElement
,
urlMap
,
c
onte
xt
);
}
handlerMappingDef
.
getPropertyValues
().
add
(
"urlMap"
,
urlMap
);
cxt
.
registerComponent
(
new
BeanComponentDefinition
(
handlerMappingDef
,
handlerMappingName
));
cxt
.
popAndRegisterContainingComponent
();
c
onte
xt
.
registerComponent
(
new
BeanComponentDefinition
(
handlerMappingDef
,
handlerMappingName
));
c
onte
xt
.
popAndRegisterContainingComponent
();
return
null
;
}
...
...
spring-websocket/src/main/java/org/springframework/web/socket/config/MessageBrokerBeanDefinitionParser.java
浏览文件 @
2474c487
...
...
@@ -254,7 +254,7 @@ class MessageBrokerBeanDefinitionParser implements BeanDefinitionParser {
}
RootBeanDefinition
channelDef
=
new
RootBeanDefinition
(
ExecutorSubscribableChannel
.
class
,
cargs
,
null
);
ManagedList
<
?
super
Object
>
interceptors
=
new
ManagedList
<>();
ManagedList
<
Object
>
interceptors
=
new
ManagedList
<>();
if
(
element
!=
null
)
{
Element
interceptorsElement
=
DomUtils
.
getChildElementByTagName
(
element
,
"interceptors"
);
interceptors
.
addAll
(
WebSocketNamespaceUtils
.
parseBeanSubElements
(
interceptorsElement
,
context
));
...
...
@@ -346,7 +346,7 @@ class MessageBrokerBeanDefinitionParser implements BeanDefinitionParser {
else
{
RuntimeBeanReference
handler
=
WebSocketNamespaceUtils
.
registerHandshakeHandler
(
element
,
ctx
,
source
);
Element
interceptElem
=
DomUtils
.
getChildElementByTagName
(
element
,
"handshake-interceptors"
);
ManagedList
<
?
super
Object
>
interceptors
=
WebSocketNamespaceUtils
.
parseBeanSubElements
(
interceptElem
,
ctx
);
ManagedList
<
Object
>
interceptors
=
WebSocketNamespaceUtils
.
parseBeanSubElements
(
interceptElem
,
ctx
);
String
allowedOrigins
=
element
.
getAttribute
(
"allowed-origins"
);
List
<
String
>
origins
=
Arrays
.
asList
(
StringUtils
.
tokenizeToStringArray
(
allowedOrigins
,
","
));
interceptors
.
add
(
new
OriginHandshakeInterceptor
(
origins
));
...
...
@@ -477,7 +477,7 @@ class MessageBrokerBeanDefinitionParser implements BeanDefinitionParser {
Element
element
,
ParserContext
context
,
@Nullable
Object
source
)
{
Element
convertersElement
=
DomUtils
.
getChildElementByTagName
(
element
,
"message-converters"
);
ManagedList
<
?
super
Object
>
converters
=
new
ManagedList
<>();
ManagedList
<
Object
>
converters
=
new
ManagedList
<>();
if
(
convertersElement
!=
null
)
{
converters
.
setSource
(
source
);
for
(
Element
beanElement
:
DomUtils
.
getChildElementsByTagName
(
convertersElement
,
"bean"
,
"ref"
))
{
...
...
@@ -567,7 +567,7 @@ class MessageBrokerBeanDefinitionParser implements BeanDefinitionParser {
@Nullable
private
RuntimeBeanReference
getValidator
(
Element
messageBrokerElement
,
@Nullable
Object
source
,
ParserContext
parserC
ontext
)
{
Element
messageBrokerElement
,
@Nullable
Object
source
,
ParserContext
c
ontext
)
{
if
(
messageBrokerElement
.
hasAttribute
(
"validator"
))
{
return
new
RuntimeBeanReference
(
messageBrokerElement
.
getAttribute
(
"validator"
));
...
...
@@ -577,8 +577,8 @@ class MessageBrokerBeanDefinitionParser implements BeanDefinitionParser {
"org.springframework.validation.beanvalidation.OptionalValidatorFactoryBean"
);
validatorDef
.
setSource
(
source
);
validatorDef
.
setRole
(
BeanDefinition
.
ROLE_INFRASTRUCTURE
);
String
validatorName
=
parserC
ontext
.
getReaderContext
().
registerWithGeneratedName
(
validatorDef
);
parserC
ontext
.
registerComponent
(
new
BeanComponentDefinition
(
validatorDef
,
validatorName
));
String
validatorName
=
c
ontext
.
getReaderContext
().
registerWithGeneratedName
(
validatorDef
);
c
ontext
.
registerComponent
(
new
BeanComponentDefinition
(
validatorDef
,
validatorName
));
return
new
RuntimeBeanReference
(
validatorName
);
}
else
{
...
...
@@ -586,11 +586,11 @@ class MessageBrokerBeanDefinitionParser implements BeanDefinitionParser {
}
}
private
ManagedList
<
Object
>
extractBeanSubElements
(
Element
parentElement
,
ParserContext
parserC
ontext
)
{
private
ManagedList
<
Object
>
extractBeanSubElements
(
Element
parentElement
,
ParserContext
c
ontext
)
{
ManagedList
<
Object
>
list
=
new
ManagedList
<>();
list
.
setSource
(
parserC
ontext
.
extractSource
(
parentElement
));
list
.
setSource
(
c
ontext
.
extractSource
(
parentElement
));
for
(
Element
beanElement
:
DomUtils
.
getChildElementsByTagName
(
parentElement
,
"bean"
,
"ref"
))
{
Object
object
=
parserC
ontext
.
getDelegate
().
parsePropertySubElement
(
beanElement
,
null
);
Object
object
=
c
ontext
.
getDelegate
().
parsePropertySubElement
(
beanElement
,
null
);
list
.
add
(
object
);
}
return
list
;
...
...
spring-websocket/src/main/java/org/springframework/web/socket/config/WebSocketNamespaceUtils.java
浏览文件 @
2474c487
...
...
@@ -65,8 +65,8 @@ abstract class WebSocketNamespaceUtils {
}
@Nullable
public
static
RuntimeBeanReference
registerSockJsService
(
Element
element
,
String
schedulerName
,
ParserContext
c
xt
,
@Nullable
Object
source
)
{
public
static
RuntimeBeanReference
registerSockJsService
(
Element
element
,
String
schedulerName
,
ParserContext
conte
xt
,
@Nullable
Object
source
)
{
Element
sockJsElement
=
DomUtils
.
getChildElementByTagName
(
element
,
"sockjs"
);
...
...
@@ -82,7 +82,7 @@ abstract class WebSocketNamespaceUtils {
scheduler
=
new
RuntimeBeanReference
(
customTaskSchedulerName
);
}
else
{
scheduler
=
registerScheduler
(
schedulerName
,
cxt
,
source
);
scheduler
=
registerScheduler
(
schedulerName
,
c
onte
xt
,
source
);
}
sockJsServiceDef
.
getConstructorArgumentValues
().
addIndexedArgumentValue
(
0
,
scheduler
);
...
...
@@ -92,7 +92,7 @@ abstract class WebSocketNamespaceUtils {
if
(
registerDefaults
.
equals
(
"false"
))
{
sockJsServiceDef
.
setBeanClass
(
TransportHandlingSockJsService
.
class
);
}
ManagedList
<?>
transportHandlers
=
parseBeanSubElements
(
transportHandlersElement
,
cxt
);
ManagedList
<?>
transportHandlers
=
parseBeanSubElements
(
transportHandlersElement
,
c
onte
xt
);
sockJsServiceDef
.
getConstructorArgumentValues
().
addIndexedArgumentValue
(
1
,
transportHandlers
);
}
else
if
(
handshakeHandler
!=
null
)
{
...
...
@@ -104,7 +104,7 @@ abstract class WebSocketNamespaceUtils {
}
Element
interceptElem
=
DomUtils
.
getChildElementByTagName
(
element
,
"handshake-interceptors"
);
ManagedList
<
?
super
Object
>
interceptors
=
WebSocketNamespaceUtils
.
parseBeanSubElements
(
interceptElem
,
c
xt
);
ManagedList
<
Object
>
interceptors
=
WebSocketNamespaceUtils
.
parseBeanSubElements
(
interceptElem
,
conte
xt
);
String
allowedOrigins
=
element
.
getAttribute
(
"allowed-origins"
);
List
<
String
>
origins
=
Arrays
.
asList
(
StringUtils
.
tokenizeToStringArray
(
allowedOrigins
,
","
));
sockJsServiceDef
.
getPropertyValues
().
add
(
"allowedOrigins"
,
origins
);
...
...
@@ -154,7 +154,7 @@ abstract class WebSocketNamespaceUtils {
sockJsServiceDef
.
getPropertyValues
().
add
(
"suppressCors"
,
Boolean
.
valueOf
(
attrValue
));
}
sockJsServiceDef
.
setRole
(
BeanDefinition
.
ROLE_INFRASTRUCTURE
);
String
sockJsServiceName
=
cxt
.
getReaderContext
().
registerWithGeneratedName
(
sockJsServiceDef
);
String
sockJsServiceName
=
c
onte
xt
.
getReaderContext
().
registerWithGeneratedName
(
sockJsServiceDef
);
return
new
RuntimeBeanReference
(
sockJsServiceName
);
}
return
null
;
...
...
@@ -176,10 +176,8 @@ abstract class WebSocketNamespaceUtils {
return
new
RuntimeBeanReference
(
schedulerName
);
}
public
static
ManagedList
<?
super
Object
>
parseBeanSubElements
(
@Nullable
Element
parentElement
,
ParserContext
context
)
{
ManagedList
<?
super
Object
>
beans
=
new
ManagedList
<>();
public
static
ManagedList
<
Object
>
parseBeanSubElements
(
@Nullable
Element
parentElement
,
ParserContext
context
)
{
ManagedList
<
Object
>
beans
=
new
ManagedList
<>();
if
(
parentElement
!=
null
)
{
beans
.
setSource
(
context
.
extractSource
(
parentElement
));
for
(
Element
beanElement
:
DomUtils
.
getChildElementsByTagName
(
parentElement
,
"bean"
,
"ref"
))
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录