Package org.springframework.format.support

Source Code of org.springframework.format.support.DefaultFormattingConversionService

/*
* Copyright 2002-2012 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.core.convert.support.DefaultConversionService;
import org.springframework.format.FormatterRegistry;
import org.springframework.format.datetime.DateFormatterRegistrar;
import org.springframework.format.datetime.joda.JodaTimeFormatterRegistrar;
import org.springframework.format.number.NumberFormatAnnotationFormatterFactory;
import org.springframework.util.ClassUtils;
import org.springframework.util.StringValueResolver;

/**
* A specialization of {@link FormattingConversionService} configured by default with
* converters and formatters appropriate for most applications.
*
* <p>Designed for direct instantiation but also exposes the static {@link #addDefaultFormatters}
* utility method for ad hoc use against any {@code FormatterRegistry} instance, just
* as {@code DefaultConversionService} exposes its own
* {@link DefaultConversionService#addDefaultConverters addDefaultConverters} method.
*
* @author Chris Beams
* @since 3.1
*/
public class DefaultFormattingConversionService extends FormattingConversionService {

  private static final boolean jodaTimePresent = ClassUtils.isPresent(
      "org.joda.time.LocalDate", DefaultFormattingConversionService.class.getClassLoader());

  /**
   * Create a new {@code DefaultFormattingConversionService} with the set of
   * {@linkplain DefaultConversionService#addDefaultConverters default converters} and
   * {@linkplain #addDefaultFormatters default formatters}.
   */
  public DefaultFormattingConversionService() {
    this(null, true);
  }

  /**
   * Create a new {@code DefaultFormattingConversionService} with the set of
   * {@linkplain DefaultConversionService#addDefaultConverters default converters} and,
   * based on the value of {@code registerDefaultFormatters}, the set of
   * {@linkplain #addDefaultFormatters default formatters}.
   * @param registerDefaultFormatters whether to register default formatters
   */
  public DefaultFormattingConversionService(boolean registerDefaultFormatters) {
    this(null, registerDefaultFormatters);
  }

  /**
   * Create a new {@code DefaultFormattingConversionService} with the set of
   * {@linkplain DefaultConversionService#addDefaultConverters default converters} and,
   * based on the value of {@code registerDefaultFormatters}, the set of
   * {@linkplain #addDefaultFormatters default formatters}
   * @param embeddedValueResolver delegated to {@link #setEmbeddedValueResolver(StringValueResolver)}
   * prior to calling {@link #addDefaultFormatters}.
   * @param registerDefaultFormatters whether to register default formatters
   */
  public DefaultFormattingConversionService(StringValueResolver embeddedValueResolver, boolean registerDefaultFormatters) {
    this.setEmbeddedValueResolver(embeddedValueResolver);
    DefaultConversionService.addDefaultConverters(this);
    if (registerDefaultFormatters) {
      addDefaultFormatters(this);
    }
  }

  /**
   * Add formatters appropriate for most environments, including number formatters and a Joda-Time
   * date formatter if Joda-Time is present on the classpath.
   * @param formatterRegistry the service to register default formatters against
   */
  public static void addDefaultFormatters(FormatterRegistry formatterRegistry) {
    formatterRegistry.addFormatterForFieldAnnotation(new NumberFormatAnnotationFormatterFactory());
    if (jodaTimePresent) {
      new JodaTimeFormatterRegistrar().registerFormatters(formatterRegistry);
    }
    else {
      new DateFormatterRegistrar().registerFormatters(formatterRegistry);
    }
  }

}
TOP

Related Classes of org.springframework.format.support.DefaultFormattingConversionService

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.