Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
爱吃血肠
spring-framework
提交
ed611be8
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,发现更多精彩内容 >>
提交
ed611be8
编写于
9月 22, 2009
作者:
K
Keith Donald
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
conversion utils helper for common code
上级
871fc14f
变更
12
隐藏空白更改
内联
并排
Showing
12 changed file
with
91 addition
and
80 deletion
+91
-80
org.springframework.core/src/main/java/org/springframework/core/convert/support/ArrayToArrayGenericConverter.java
...rk/core/convert/support/ArrayToArrayGenericConverter.java
+6
-2
org.springframework.core/src/main/java/org/springframework/core/convert/support/ArrayToCollectionGenericConverter.java
...re/convert/support/ArrayToCollectionGenericConverter.java
+7
-3
org.springframework.core/src/main/java/org/springframework/core/convert/support/ArrayToObjectGenericConverter.java
...k/core/convert/support/ArrayToObjectGenericConverter.java
+4
-2
org.springframework.core/src/main/java/org/springframework/core/convert/support/CollectionToArrayGenericConverter.java
...re/convert/support/CollectionToArrayGenericConverter.java
+9
-13
org.springframework.core/src/main/java/org/springframework/core/convert/support/CollectionToCollectionGenericConverter.java
...nvert/support/CollectionToCollectionGenericConverter.java
+9
-16
org.springframework.core/src/main/java/org/springframework/core/convert/support/CollectionToObjectGenericConverter.java
...e/convert/support/CollectionToObjectGenericConverter.java
+3
-1
org.springframework.core/src/main/java/org/springframework/core/convert/support/ConversionUtils.java
...springframework/core/convert/support/ConversionUtils.java
+27
-0
org.springframework.core/src/main/java/org/springframework/core/convert/support/GenericConversionService.java
...mework/core/convert/support/GenericConversionService.java
+12
-34
org.springframework.core/src/main/java/org/springframework/core/convert/support/MapToMapGenericConverter.java
...mework/core/convert/support/MapToMapGenericConverter.java
+4
-2
org.springframework.core/src/main/java/org/springframework/core/convert/support/ObjectToArrayGenericConverter.java
...k/core/convert/support/ObjectToArrayGenericConverter.java
+6
-4
org.springframework.core/src/main/java/org/springframework/core/convert/support/ObjectToCollectionGenericConverter.java
...e/convert/support/ObjectToCollectionGenericConverter.java
+3
-1
org.springframework.core/src/test/java/org/springframework/core/convert/support/GenericConversionServiceTests.java
...k/core/convert/support/GenericConversionServiceTests.java
+1
-2
未找到文件。
org.springframework.core/src/main/java/org/springframework/core/convert/support/ArrayToArrayGenericConverter.java
浏览文件 @
ed611be8
...
...
@@ -15,6 +15,8 @@
*/
package
org.springframework.core.convert.support
;
import
static
org
.
springframework
.
core
.
convert
.
support
.
ConversionUtils
.
invokeConverter
;
import
java.lang.reflect.Array
;
import
org.springframework.core.convert.ConverterNotFoundException
;
...
...
@@ -35,12 +37,14 @@ final class ArrayToArrayGenericConverter implements GenericConverter {
TypeDescriptor
sourceElementType
=
sourceType
.
getElementTypeDescriptor
();
TypeDescriptor
targetElementType
=
targetType
.
getElementTypeDescriptor
();
Object
target
=
Array
.
newInstance
(
targetElementType
.
getType
(),
Array
.
getLength
(
source
));
GenericConverter
converter
=
this
.
conversionService
.
getConverter
(
sourceElementType
,
targetElementType
);
GenericConverter
converter
=
this
.
conversionService
.
getConverter
(
sourceElementType
,
targetElementType
);
if
(
converter
==
null
)
{
throw
new
ConverterNotFoundException
(
sourceElementType
,
targetElementType
);
}
for
(
int
i
=
0
;
i
<
Array
.
getLength
(
target
);
i
++)
{
Array
.
set
(
target
,
i
,
converter
.
convert
(
Array
.
get
(
source
,
i
),
sourceElementType
,
targetElementType
));
Object
sourceElement
=
Array
.
get
(
source
,
i
);
Object
targetElement
=
invokeConverter
(
converter
,
sourceElement
,
sourceElementType
,
targetElementType
);
Array
.
set
(
target
,
i
,
targetElement
);
}
return
target
;
}
...
...
org.springframework.core/src/main/java/org/springframework/core/convert/support/ArrayToCollectionGenericConverter.java
浏览文件 @
ed611be8
...
...
@@ -15,6 +15,8 @@
*/
package
org.springframework.core.convert.support
;
import
static
org
.
springframework
.
core
.
convert
.
support
.
ConversionUtils
.
invokeConverter
;
import
java.lang.reflect.Array
;
import
java.util.Collection
;
...
...
@@ -29,7 +31,7 @@ final class ArrayToCollectionGenericConverter implements GenericConverter {
public
ArrayToCollectionGenericConverter
(
GenericConversionService
conversionService
)
{
this
.
conversionService
=
conversionService
;
}
public
Object
convert
(
Object
source
,
TypeDescriptor
sourceType
,
TypeDescriptor
targetType
)
{
int
length
=
Array
.
getLength
(
source
);
Collection
collection
=
CollectionFactory
.
createCollection
(
targetType
.
getType
(),
length
);
...
...
@@ -43,9 +45,11 @@ final class ArrayToCollectionGenericConverter implements GenericConverter {
GenericConverter
converter
=
this
.
conversionService
.
getConverter
(
sourceElementType
,
targetElementType
);
if
(
converter
==
null
)
{
throw
new
ConverterNotFoundException
(
sourceElementType
,
targetElementType
);
}
}
for
(
int
i
=
0
;
i
<
length
;
i
++)
{
collection
.
add
(
converter
.
convert
(
Array
.
get
(
source
,
i
),
sourceElementType
,
targetElementType
));
Object
sourceElement
=
Array
.
get
(
source
,
i
);
Object
targetElement
=
invokeConverter
(
converter
,
sourceElement
,
sourceElementType
,
targetElementType
);
collection
.
add
(
targetElement
);
}
}
return
collection
;
...
...
org.springframework.core/src/main/java/org/springframework/core/convert/support/ArrayToObjectGenericConverter.java
浏览文件 @
ed611be8
...
...
@@ -15,6 +15,8 @@
*/
package
org.springframework.core.convert.support
;
import
static
org
.
springframework
.
core
.
convert
.
support
.
ConversionUtils
.
invokeConverter
;
import
java.lang.reflect.Array
;
import
org.springframework.core.convert.ConverterNotFoundException
;
...
...
@@ -27,7 +29,7 @@ final class ArrayToObjectGenericConverter implements GenericConverter {
public
ArrayToObjectGenericConverter
(
GenericConversionService
conversionService
)
{
this
.
conversionService
=
conversionService
;
}
public
Object
convert
(
Object
source
,
TypeDescriptor
sourceType
,
TypeDescriptor
targetType
)
{
int
length
=
Array
.
getLength
(
source
);
if
(
length
==
0
)
{
...
...
@@ -41,7 +43,7 @@ final class ArrayToObjectGenericConverter implements GenericConverter {
if
(
converter
==
null
)
{
throw
new
ConverterNotFoundException
(
sourceElementType
,
targetType
);
}
return
converter
.
convert
(
Array
.
get
(
source
,
0
),
sourceElementType
,
targetType
);
return
invokeConverter
(
converter
,
Array
.
get
(
source
,
0
),
sourceElementType
,
targetType
);
}
}
}
...
...
org.springframework.core/src/main/java/org/springframework/core/convert/support/CollectionToArrayGenericConverter.java
浏览文件 @
ed611be8
...
...
@@ -15,6 +15,9 @@
*/
package
org.springframework.core.convert.support
;
import
static
org
.
springframework
.
core
.
convert
.
support
.
ConversionUtils
.
getElementType
;
import
static
org
.
springframework
.
core
.
convert
.
support
.
ConversionUtils
.
invokeConverter
;
import
java.lang.reflect.Array
;
import
java.util.Collection
;
import
java.util.Iterator
;
...
...
@@ -29,7 +32,7 @@ final class CollectionToArrayGenericConverter implements GenericConverter {
public
CollectionToArrayGenericConverter
(
GenericConversionService
conversionService
)
{
this
.
conversionService
=
conversionService
;
}
public
Object
convert
(
Object
source
,
TypeDescriptor
sourceType
,
TypeDescriptor
targetType
)
{
Collection
sourceCollection
=
(
Collection
)
source
;
TypeDescriptor
sourceElementType
=
sourceType
.
getElementTypeDescriptor
();
...
...
@@ -38,7 +41,7 @@ final class CollectionToArrayGenericConverter implements GenericConverter {
}
TypeDescriptor
targetElementType
=
targetType
.
getElementTypeDescriptor
();
Object
array
=
Array
.
newInstance
(
targetElementType
.
getType
(),
sourceCollection
.
size
());
int
i
=
0
;
int
i
=
0
;
if
(
sourceElementType
==
TypeDescriptor
.
NULL
||
sourceElementType
.
isAssignableTo
(
targetElementType
))
{
for
(
Iterator
it
=
sourceCollection
.
iterator
();
it
.
hasNext
();
i
++)
{
Array
.
set
(
array
,
i
,
it
.
next
());
...
...
@@ -47,21 +50,14 @@ final class CollectionToArrayGenericConverter implements GenericConverter {
GenericConverter
converter
=
this
.
conversionService
.
getConverter
(
sourceElementType
,
targetElementType
);
if
(
converter
==
null
)
{
throw
new
ConverterNotFoundException
(
sourceElementType
,
targetElementType
);
}
}
for
(
Iterator
it
=
sourceCollection
.
iterator
();
it
.
hasNext
();
i
++)
{
Array
.
set
(
array
,
i
,
converter
.
convert
(
it
.
next
(),
sourceElementType
,
targetElementType
));
Object
sourceElement
=
it
.
next
();
Object
targetElement
=
invokeConverter
(
converter
,
sourceElement
,
sourceElementType
,
targetElementType
);
Array
.
set
(
array
,
i
,
targetElement
);
}
}
return
array
;
}
private
TypeDescriptor
getElementType
(
Collection
collection
)
{
for
(
Object
element
:
collection
)
{
if
(
element
!=
null
)
{
return
TypeDescriptor
.
valueOf
(
element
.
getClass
());
}
}
return
TypeDescriptor
.
NULL
;
}
}
org.springframework.core/src/main/java/org/springframework/core/convert/support/CollectionToCollectionGenericConverter.java
浏览文件 @
ed611be8
...
...
@@ -15,6 +15,9 @@
*/
package
org.springframework.core.convert.support
;
import
static
org
.
springframework
.
core
.
convert
.
support
.
ConversionUtils
.
getElementType
;
import
static
org
.
springframework
.
core
.
convert
.
support
.
ConversionUtils
.
invokeConverter
;
import
java.util.Collection
;
import
org.springframework.core.CollectionFactory
;
...
...
@@ -40,30 +43,20 @@ final class CollectionToCollectionGenericConverter implements GenericConverter {
if
(
sourceType
.
isAssignableTo
(
targetType
))
{
return
sourceCollection
;
}
else
{
Collection
targetCollection
=
CollectionFactory
.
createCollection
(
targetType
.
getType
(),
sourceCollection
.
size
());
targetCollection
.
addAll
(
sourceCollection
);
return
targetCollection
;
Collection
target
=
CollectionFactory
.
createCollection
(
targetType
.
getType
(),
sourceCollection
.
size
());
target
.
addAll
(
sourceCollection
);
return
target
;
}
}
Collection
target
Collection
=
CollectionFactory
.
createCollection
(
targetType
.
getType
(),
sourceCollection
.
size
());
Collection
target
=
CollectionFactory
.
createCollection
(
targetType
.
getType
(),
sourceCollection
.
size
());
GenericConverter
converter
=
this
.
conversionService
.
getConverter
(
sourceElementType
,
targetElementType
);
if
(
converter
==
null
)
{
throw
new
ConverterNotFoundException
(
sourceElementType
,
targetElementType
);
}
for
(
Object
element
:
sourceCollection
)
{
targetCollection
.
add
(
converter
.
convert
(
element
,
sourceElementType
,
targetElementType
));
}
return
targetCollection
;
}
private
TypeDescriptor
getElementType
(
Collection
collection
)
{
for
(
Object
element
:
collection
)
{
if
(
element
!=
null
)
{
return
TypeDescriptor
.
valueOf
(
element
.
getClass
());
}
target
.
add
(
invokeConverter
(
converter
,
element
,
sourceElementType
,
targetElementType
));
}
return
TypeDescriptor
.
NULL
;
return
target
;
}
}
\ No newline at end of file
org.springframework.core/src/main/java/org/springframework/core/convert/support/CollectionToObjectGenericConverter.java
浏览文件 @
ed611be8
...
...
@@ -15,6 +15,8 @@
*/
package
org.springframework.core.convert.support
;
import
static
org
.
springframework
.
core
.
convert
.
support
.
ConversionUtils
.
invokeConverter
;
import
java.util.Collection
;
import
org.springframework.core.convert.ConverterNotFoundException
;
...
...
@@ -45,7 +47,7 @@ final class CollectionToObjectGenericConverter implements GenericConverter {
if
(
converter
==
null
)
{
throw
new
ConverterNotFoundException
(
sourceElementType
,
targetType
);
}
return
converter
.
convert
(
firstElement
,
sourceElementType
,
targetType
);
return
invokeConverter
(
converter
,
firstElement
,
sourceElementType
,
targetType
);
}
}
}
...
...
org.springframework.core/src/main/java/org/springframework/core/convert/support/ConversionUtils.java
0 → 100644
浏览文件 @
ed611be8
package
org.springframework.core.convert.support
;
import
java.util.Collection
;
import
org.springframework.core.convert.ConversionFailedException
;
import
org.springframework.core.convert.TypeDescriptor
;
final
class
ConversionUtils
{
public
static
Object
invokeConverter
(
GenericConverter
converter
,
Object
source
,
TypeDescriptor
sourceType
,
TypeDescriptor
targetType
)
{
try
{
return
converter
.
convert
(
source
,
sourceType
,
targetType
);
}
catch
(
Exception
ex
)
{
throw
new
ConversionFailedException
(
sourceType
,
targetType
,
source
,
ex
);
}
}
public
static
TypeDescriptor
getElementType
(
Collection
collection
)
{
for
(
Object
element
:
collection
)
{
if
(
element
!=
null
)
{
return
TypeDescriptor
.
valueOf
(
element
.
getClass
());
}
}
return
TypeDescriptor
.
NULL
;
}
}
org.springframework.core/src/main/java/org/springframework/core/convert/support/GenericConversionService.java
浏览文件 @
ed611be8
...
...
@@ -16,6 +16,8 @@
package
org.springframework.core.convert.support
;
import
static
org
.
springframework
.
core
.
convert
.
support
.
ConversionUtils
.
invokeConverter
;
import
java.lang.reflect.Array
;
import
java.lang.reflect.ParameterizedType
;
import
java.lang.reflect.Type
;
...
...
@@ -30,7 +32,6 @@ import java.util.Map;
import
java.util.Set
;
import
org.springframework.core.GenericTypeResolver
;
import
org.springframework.core.convert.ConversionFailedException
;
import
org.springframework.core.convert.ConversionService
;
import
org.springframework.core.convert.ConverterNotFoundException
;
import
org.springframework.core.convert.TypeDescriptor
;
...
...
@@ -58,7 +59,6 @@ public class GenericConversionService implements ConversionService, ConverterReg
}
};
private
final
Map
<
Class
,
Map
<
Class
,
GenericConverter
>>
sourceTypeConverters
=
new
HashMap
<
Class
,
Map
<
Class
,
GenericConverter
>>();
private
ConversionService
parent
;
...
...
@@ -69,12 +69,10 @@ public class GenericConversionService implements ConversionService, ConverterReg
}
};
public
GenericConversionService
()
{
initGenericConverters
();
}
/**
* Registers the converters in the set provided.
* JavaBean-friendly alternative to calling {@link #addConverter(Converter)}.
...
...
@@ -111,7 +109,6 @@ public class GenericConversionService implements ConversionService, ConverterReg
return
this
.
parent
;
}
// implementing ConverterRegistry
public
void
addConverter
(
Converter
converter
)
{
...
...
@@ -140,7 +137,6 @@ public class GenericConversionService implements ConversionService, ConverterReg
getSourceMap
(
sourceType
).
remove
(
targetType
);
}
// implementing ConversionService
public
boolean
canConvert
(
Class
<?>
sourceType
,
Class
<?>
targetType
)
{
...
...
@@ -177,15 +173,7 @@ public class GenericConversionService implements ConversionService, ConverterReg
if
(
converter
==
null
)
{
throw
new
ConverterNotFoundException
(
sourceType
,
targetType
);
}
try
{
return
converter
.
convert
(
source
,
sourceType
,
targetType
);
}
catch
(
ConversionFailedException
ex
)
{
throw
ex
;
}
catch
(
Exception
ex
)
{
throw
new
ConversionFailedException
(
sourceType
,
targetType
,
source
,
ex
);
}
return
invokeConverter
(
converter
,
source
,
sourceType
,
targetType
);
}
// subclassing hooks
...
...
@@ -203,6 +191,7 @@ public class GenericConversionService implements ConversionService, ConverterReg
addGenericConverter
(
Map
.
class
,
Map
.
class
,
new
MapToMapGenericConverter
(
this
));
addGenericConverter
(
Object
.
class
,
Object
[].
class
,
new
ObjectToArrayGenericConverter
(
this
));
addGenericConverter
(
Object
.
class
,
Collection
.
class
,
new
ObjectToCollectionGenericConverter
(
this
));
addGenericConverter
(
String
.
class
,
Object
[].
class
,
new
StringToArrayGenericConverter
(
this
));
}
/**
...
...
@@ -242,21 +231,17 @@ public class GenericConversionService implements ConversionService, ConverterReg
GenericConverter
converter
=
findConverterByClassPair
(
sourceType
.
getObjectType
(),
targetType
.
getObjectType
());
if
(
converter
!=
null
)
{
return
converter
;
}
else
if
(
this
.
parent
!=
null
&&
this
.
parent
.
canConvert
(
sourceType
,
targetType
))
{
}
else
if
(
this
.
parent
!=
null
&&
this
.
parent
.
canConvert
(
sourceType
,
targetType
))
{
return
this
.
parentConverterAdapter
;
}
else
{
}
else
{
if
(
sourceType
.
isAssignableTo
(
targetType
))
{
return
NO_OP_CONVERTER
;
}
else
{
}
else
{
return
null
;
}
}
}
// internal helpers
private
List
<
Class
>
getRequiredTypeInfo
(
Object
converter
)
{
...
...
@@ -298,12 +283,10 @@ public class GenericConversionService implements ConversionService, ConverterReg
if
(
typeInfo
.
size
()
==
2
)
{
return
typeInfo
;
}
}
else
if
(
Converter
.
class
.
isAssignableFrom
((
Class
)
rawType
))
{
}
else
if
(
Converter
.
class
.
isAssignableFrom
((
Class
)
rawType
))
{
return
getConverterTypeInfo
((
Class
)
rawType
);
}
}
else
if
(
Converter
.
class
.
isAssignableFrom
((
Class
)
ifc
))
{
}
else
if
(
Converter
.
class
.
isAssignableFrom
((
Class
)
ifc
))
{
return
getConverterTypeInfo
((
Class
)
ifc
);
}
}
...
...
@@ -330,8 +313,7 @@ public class GenericConversionService implements ConversionService, ConverterReg
}
Map
<
Class
,
GenericConverter
>
objectConverters
=
getConvertersForSource
(
Object
.
class
);
return
getConverter
(
objectConverters
,
targetType
);
}
else
{
}
else
{
LinkedList
<
Class
>
classQueue
=
new
LinkedList
<
Class
>();
classQueue
.
addFirst
(
sourceType
);
while
(!
classQueue
.
isEmpty
())
{
...
...
@@ -393,8 +375,7 @@ public class GenericConversionService implements ConversionService, ConverterReg
}
}
return
converters
.
get
(
Object
.
class
);
}
else
{
}
else
{
LinkedList
<
Class
>
classQueue
=
new
LinkedList
<
Class
>();
classQueue
.
addFirst
(
targetType
);
while
(!
classQueue
.
isEmpty
())
{
...
...
@@ -408,8 +389,7 @@ public class GenericConversionService implements ConversionService, ConverterReg
if
(
componentType
.
getSuperclass
()
!=
null
)
{
classQueue
.
addFirst
(
Array
.
newInstance
(
componentType
.
getSuperclass
(),
0
).
getClass
());
}
}
else
{
}
else
{
if
(
currentClass
.
getSuperclass
()
!=
null
)
{
classQueue
.
addFirst
(
currentClass
.
getSuperclass
());
}
...
...
@@ -423,7 +403,6 @@ public class GenericConversionService implements ConversionService, ConverterReg
}
}
private
static
class
ConverterAdapter
implements
GenericConverter
{
private
Converter
converter
;
...
...
@@ -438,7 +417,6 @@ public class GenericConversionService implements ConversionService, ConverterReg
}
}
private
static
class
ConverterFactoryAdapter
implements
GenericConverter
{
private
ConverterFactory
converterFactory
;
...
...
org.springframework.core/src/main/java/org/springframework/core/convert/support/MapToMapGenericConverter.java
浏览文件 @
ed611be8
package
org.springframework.core.convert.support
;
import
static
org
.
springframework
.
core
.
convert
.
support
.
ConversionUtils
.
invokeConverter
;
import
java.util.Map
;
import
org.springframework.core.CollectionFactory
;
...
...
@@ -114,7 +116,7 @@ final class MapToMapGenericConverter implements GenericConverter {
public
Object
convertKey
(
Object
sourceKey
)
{
if
(
sourceKey
!=
null
&&
this
.
keyConverter
!=
null
)
{
return
this
.
keyConverter
.
convert
(
sourceKey
,
this
.
sourceKeyType
,
this
.
targetKeyType
);
return
invokeConverter
(
this
.
keyConverter
,
sourceKey
,
this
.
sourceKeyType
,
this
.
targetKeyType
);
}
else
{
return
sourceKey
;
}
...
...
@@ -122,7 +124,7 @@ final class MapToMapGenericConverter implements GenericConverter {
public
Object
convertValue
(
Object
sourceValue
)
{
if
(
sourceValue
!=
null
&&
this
.
valueConverter
!=
null
)
{
return
this
.
valueConverter
.
convert
(
sourceValue
,
this
.
sourceValueType
,
this
.
targetValueType
);
return
invokeConverter
(
this
.
valueConverter
,
sourceValue
,
this
.
sourceValueType
,
this
.
targetValueType
);
}
else
{
return
sourceValue
;
}
...
...
org.springframework.core/src/main/java/org/springframework/core/convert/support/ObjectToArrayGenericConverter.java
浏览文件 @
ed611be8
...
...
@@ -15,6 +15,8 @@
*/
package
org.springframework.core.convert.support
;
import
static
org
.
springframework
.
core
.
convert
.
support
.
ConversionUtils
.
invokeConverter
;
import
java.lang.reflect.Array
;
import
org.springframework.core.convert.ConverterNotFoundException
;
...
...
@@ -27,18 +29,18 @@ final class ObjectToArrayGenericConverter implements GenericConverter {
public
ObjectToArrayGenericConverter
(
GenericConversionService
conversionService
)
{
this
.
conversionService
=
conversionService
;
}
public
Object
convert
(
Object
source
,
TypeDescriptor
sourceType
,
TypeDescriptor
targetType
)
{
TypeDescriptor
targetElementType
=
targetType
.
getElementTypeDescriptor
();
Object
target
=
Array
.
newInstance
(
targetElementType
.
getType
(),
1
);
if
(
sourceType
.
isAssignableTo
(
targetElementType
))
{
Array
.
set
(
target
,
0
,
source
);
Array
.
set
(
target
,
0
,
source
);
}
else
{
GenericConverter
converter
=
this
.
conversionService
.
getConverter
(
sourceType
,
targetElementType
);
if
(
converter
==
null
)
{
throw
new
ConverterNotFoundException
(
sourceType
,
targetElementType
);
}
Array
.
set
(
target
,
0
,
converter
.
convert
(
source
,
sourceType
,
targetElementType
));
}
Array
.
set
(
target
,
0
,
invokeConverter
(
converter
,
source
,
sourceType
,
targetElementType
));
}
return
target
;
}
...
...
org.springframework.core/src/main/java/org/springframework/core/convert/support/ObjectToCollectionGenericConverter.java
浏览文件 @
ed611be8
...
...
@@ -15,6 +15,8 @@
*/
package
org.springframework.core.convert.support
;
import
static
org
.
springframework
.
core
.
convert
.
support
.
ConversionUtils
.
invokeConverter
;
import
java.util.Collection
;
import
org.springframework.core.CollectionFactory
;
...
...
@@ -39,7 +41,7 @@ final class ObjectToCollectionGenericConverter implements GenericConverter {
if
(
converter
==
null
)
{
throw
new
ConverterNotFoundException
(
sourceType
,
targetElementType
);
}
target
.
add
(
converter
.
convert
(
source
,
sourceType
,
targetElementType
));
target
.
add
(
invokeConverter
(
converter
,
source
,
sourceType
,
targetElementType
));
}
return
target
;
}
...
...
org.springframework.core/src/test/java/org/springframework/core/convert/support/GenericConversionServiceTests.java
浏览文件 @
ed611be8
...
...
@@ -96,7 +96,7 @@ public class GenericConversionServiceTests {
}
@Test
public
void
convertNull
ConversionPointType
()
{
public
void
convertNull
TypeDescriptor
()
{
assertEquals
(
null
,
converter
.
convert
(
3
,
TypeDescriptor
.
valueOf
(
String
.
class
),
TypeDescriptor
.
NULL
));
}
...
...
@@ -304,7 +304,6 @@ public class GenericConversionServiceTests {
}
@Test
@Ignore
public
void
convertStringToArrayWithElementConversion
()
{
converter
.
addConverterFactory
(
new
StringToNumberConverterFactory
());
Integer
[]
result
=
converter
.
convert
(
"1,2,3"
,
Integer
[].
class
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录