Browse Source

Merge branch '3.1.x'

pull/7/merge
Chris Beams 14 years ago
parent
commit
22de6b76f1
  1. 5
      build-spring-framework/resources/changelog.txt
  2. 3
      org.springframework.beans/src/main/java/org/springframework/beans/TypeConverterDelegate.java
  3. 25
      org.springframework.context/src/test/java/org/springframework/validation/DataBinderTests.java

5
build-spring-framework/resources/changelog.txt

@ -6,13 +6,16 @@ http://www.springsource.org
Changes in version 3.1.1 (2012-01-16) Changes in version 3.1.1 (2012-01-16)
------------------------------------- -------------------------------------
* official support for Hibernate 4.0 GA
* context:property-placeholder's "file-encoding" attribute value is being applied correctly * context:property-placeholder's "file-encoding" attribute value is being applied correctly
* DataBinder correctly handles ParseException from Formatter for String->String case
* CacheNamespaceHandler actually parses cache:annotation-driven's "key-generator" attribute
* officially deprecated TopLinkJpaDialect in favor of EclipseLink and Spring's EclipseLinkJpaDialect * officially deprecated TopLinkJpaDialect in favor of EclipseLink and Spring's EclipseLinkJpaDialect
* fixed LocalContainerEntityManagerFactoryBean's "packagesToScan" to avoid additional provider scan * fixed LocalContainerEntityManagerFactoryBean's "packagesToScan" to avoid additional provider scan
* added protected "isPersistenceUnitOverrideAllowed()" method to DefaultPersistenceUnitManager * added protected "isPersistenceUnitOverrideAllowed()" method to DefaultPersistenceUnitManager
* Hibernate synchronization properly unbinds Session even in case of afterCompletion exception
* Hibernate 4 LocalSessionFactoryBean implements PersistenceExceptionTranslator interface as well * Hibernate 4 LocalSessionFactoryBean implements PersistenceExceptionTranslator interface as well
* Hibernate 4 LocalSessionFactoryBean does not insist on a "dataSource" reference being set * Hibernate 4 LocalSessionFactoryBean does not insist on a "dataSource" reference being set
* Hibernate synchronization properly unbinds Session even in case of afterCompletion exception
* added "entityInterceptor" property to Hibernate 4 LocalSessionFactoryBean * added "entityInterceptor" property to Hibernate 4 LocalSessionFactoryBean
* corrected fix for QuartzJobBean to work with Quartz 2.0/2.1 * corrected fix for QuartzJobBean to work with Quartz 2.0/2.1

3
org.springframework.beans/src/main/java/org/springframework/beans/TypeConverterDelegate.java

@ -244,6 +244,9 @@ class TypeConverterDelegate {
} }
if (firstAttemptEx != null) { if (firstAttemptEx != null) {
if (editor == null) {
throw firstAttemptEx;
}
logger.debug("Original ConversionService attempt failed - ignored since " + logger.debug("Original ConversionService attempt failed - ignored since " +
"PropertyEditor based conversion eventually succeeded", firstAttemptEx); "PropertyEditor based conversion eventually succeeded", firstAttemptEx);
} }

25
org.springframework.context/src/test/java/org/springframework/validation/DataBinderTests.java

@ -22,6 +22,7 @@ import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.ObjectInputStream; import java.io.ObjectInputStream;
import java.io.ObjectOutputStream; import java.io.ObjectOutputStream;
import java.text.ParseException;
import java.util.AbstractList; import java.util.AbstractList;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
@ -51,8 +52,8 @@ import org.springframework.beans.propertyeditors.CustomNumberEditor;
import org.springframework.context.i18n.LocaleContextHolder; import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.context.support.ResourceBundleMessageSource; import org.springframework.context.support.ResourceBundleMessageSource;
import org.springframework.context.support.StaticMessageSource; import org.springframework.context.support.StaticMessageSource;
import org.springframework.core.convert.support.ConversionServiceFactory;
import org.springframework.core.convert.support.DefaultConversionService; import org.springframework.core.convert.support.DefaultConversionService;
import org.springframework.format.Formatter;
import org.springframework.format.number.NumberFormatter; import org.springframework.format.number.NumberFormatter;
import org.springframework.format.support.FormattingConversionService; import org.springframework.format.support.FormattingConversionService;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
@ -374,6 +375,28 @@ public class DataBinderTests extends TestCase {
} }
} }
public void testBindingErrorWithStringFormatter() {
TestBean tb = new TestBean();
DataBinder binder = new DataBinder(tb);
FormattingConversionService conversionService = new FormattingConversionService();
DefaultConversionService.addDefaultConverters(conversionService);
conversionService.addFormatterForFieldType(String.class, new Formatter<String>() {
public String parse(String text, Locale locale) throws ParseException {
throw new ParseException(text, 0);
}
public String print(String object, Locale locale) {
return object;
}
});
binder.setConversionService(conversionService);
MutablePropertyValues pvs = new MutablePropertyValues();
pvs.add("name", "test");
binder.bind(pvs);
assertTrue(binder.getBindingResult().hasFieldErrors("name"));
assertEquals("test", binder.getBindingResult().getFieldValue("name"));
}
public void testBindingWithFormatterAgainstList() { public void testBindingWithFormatterAgainstList() {
BeanWithIntegerList tb = new BeanWithIntegerList(); BeanWithIntegerList tb = new BeanWithIntegerList();
DataBinder binder = new DataBinder(tb); DataBinder binder = new DataBinder(tb);

Loading…
Cancel
Save