Browse Source

addNestedMapper

pull/23217/head
Keith Donald 15 years ago
parent
commit
f692c765d2
  1. 10
      org.springframework.context/src/main/java/org/springframework/mapping/support/SpelMapper.java
  2. 10
      org.springframework.core/src/main/java/org/springframework/core/convert/support/GenericConversionService.java

10
org.springframework.context/src/main/java/org/springframework/mapping/support/SpelMapper.java

@ -115,6 +115,16 @@ public class SpelMapper implements Mapper<Object, Object> { @@ -115,6 +115,16 @@ public class SpelMapper implements Mapper<Object, Object> {
return mapping;
}
/**
* Adds a Mapper to apply to complex nested property mappings of a specific sourceType/targetType pair.
* @param sourceType the source nested property type
* @param targetType the target nested property type
* @param nestedMapper the nested mapper
*/
public void addNestedMapper(Class sourceType, Class targetType, Mapper<?, ?> nestedMapper) {
this.conversionService.addGenericConverter(sourceType, targetType, new MapperConverter(nestedMapper));
}
/**
* Return this mapper's converter registry.
* Allows for registration of simple type converters as well as converters that map nested objects using a Mapper.

10
org.springframework.core/src/main/java/org/springframework/core/convert/support/GenericConversionService.java

@ -183,15 +183,13 @@ public class GenericConversionService implements ConversionService, ConverterReg @@ -183,15 +183,13 @@ public class GenericConversionService implements ConversionService, ConverterReg
return invokeConverter(converter, source, sourceType, targetType);
}
// subclassing hooks
/**
* Registers a GenericConverter.
* @param sourceType the source type to convert from
* @param targetType the target type to convert to
* @param converter the generic converter.
*/
protected void addGenericConverter(Class<?> sourceType, Class<?> targetType, GenericConverter converter) {
public void addGenericConverter(Class<?> sourceType, Class<?> targetType, GenericConverter converter) {
getSourceMap(sourceType).put(targetType, converter);
}
@ -202,7 +200,7 @@ public class GenericConversionService implements ConversionService, ConverterReg @@ -202,7 +200,7 @@ public class GenericConversionService implements ConversionService, ConverterReg
* @param targetType the target type to convert to
* @param converter the converter.
*/
protected void addConverter(Class<?> sourceType, Class<?> targetType, Converter<?, ?> converter) {
public void addConverter(Class<?> sourceType, Class<?> targetType, Converter<?, ?> converter) {
addGenericConverter(sourceType, targetType, new ConverterAdapter(converter));
}
@ -213,10 +211,12 @@ public class GenericConversionService implements ConversionService, ConverterReg @@ -213,10 +211,12 @@ public class GenericConversionService implements ConversionService, ConverterReg
* @param targetType the target type to convert to
* @param converter the converter.factory
*/
protected void addConverterFactory(Class<?> sourceType, Class<?> targetType, ConverterFactory<?, ?> converterFactory) {
public void addConverterFactory(Class<?> sourceType, Class<?> targetType, ConverterFactory<?, ?> converterFactory) {
addGenericConverter(sourceType, targetType, new ConverterFactoryAdapter(converterFactory));
}
// subclassing hooks
/**
* Hook method to convert a null source.
* Default implementation returns <code>null</code>.

Loading…
Cancel
Save