default config for web binding initializer and formatting/conversion system w/ mvc namespace

This commit is contained in:
Keith Donald
2009-11-07 00:41:08 +00:00
parent 8ece98c694
commit fe4f41d33c
8 changed files with 164 additions and 11 deletions

View File

@@ -25,7 +25,7 @@ import java.lang.annotation.Target;
* @author Keith Donald
* @since 3.0
*/
@Target( { ElementType.METHOD, ElementType.FIELD })
@Target( { ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER })
@Retention(RetentionPolicy.RUNTIME)
public @interface DateTimeFormat {

View File

@@ -25,7 +25,7 @@ import java.lang.annotation.Target;
* @author Keith Donald
* @since 3.0
*/
@Target( { ElementType.METHOD, ElementType.FIELD })
@Target( { ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER })
@Retention(RetentionPolicy.RUNTIME)
public @interface ISODateTimeFormat {

View File

@@ -0,0 +1,76 @@
/*
* Copyright 2002-2009 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.format.support;
import org.springframework.beans.factory.FactoryBean;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.core.convert.ConversionService;
import org.springframework.format.datetime.joda.JodaTimeFormattingConfigurer;
import org.springframework.util.ClassUtils;
/**
* A factory for a FormattingConversionService that installs default formatters for common types such as numbers and datetimes.
* @author Keith Donald
* @since 3.0
*/
public class FormattingConversionServiceFactoryBean implements FactoryBean<ConversionService>, InitializingBean {
private ConversionService parent;
private FormattingConversionService conversionService;
public void setParent(ConversionService parent) {
this.parent = parent;
}
// implementing InitializingBean
public void afterPropertiesSet() {
initConversionService();
installJodaTimeFormattingIfPresent();
}
// implementing FactoryBean
public ConversionService getObject() {
return this.conversionService;
}
public Class<? extends ConversionService> getObjectType() {
return ConversionService.class;
}
public boolean isSingleton() {
return true;
}
// internal helpers
private void initConversionService() {
if (this.parent != null) {
this.conversionService = new FormattingConversionService(this.parent);
} else {
this.conversionService = new FormattingConversionService();
}
}
private void installJodaTimeFormattingIfPresent() {
if (ClassUtils.isPresent("org.joda.time.DateTime", FormattingConversionService.class.getClassLoader())) {
new JodaTimeFormattingConfigurer().installJodaTimeFormatting(this.conversionService);
}
}
}