LocaleConverter.java

  1. /*
  2.  * Licensed to the Apache Software Foundation (ASF) under one
  3.  * or more contributor license agreements. See the NOTICE file
  4.  * distributed with this work for additional information
  5.  * regarding copyright ownership. The ASF licenses this file
  6.  * to you under the Apache License, Version 2.0 (the
  7.  * "License"); you may not use this file except in compliance
  8.  * with the License. You may obtain a copy of the License at
  9.  *
  10.  * http://www.apache.org/licenses/LICENSE-2.0
  11.  *
  12.  * Unless required by applicable law or agreed to in writing,
  13.  * software distributed under the License is distributed on an
  14.  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  15.  * KIND, either express or implied. See the License for the
  16.  * specific language governing permissions and limitations
  17.  * under the License.
  18.  */
  19. package org.apache.commons.beanutils2.converters;

  20. import java.util.Locale;

  21. /**
  22.  * {@link org.apache.commons.beanutils2.Converter} implementation that handles conversion to and from {@link Locale}.
  23.  *
  24.  * @since 2.0.0
  25.  */
  26. public class LocaleConverter extends AbstractConverter<Locale> {

  27.     /**
  28.      * Construct a <strong>{@link Locale}</strong> <em>Converter</em> that throws a {@code ConversionException} if an error occurs.
  29.      */
  30.     public LocaleConverter() {
  31.     }

  32.     /**
  33.      * Constructs a {@link org.apache.commons.beanutils2.Converter} that will return the specified default value if a conversion error occurs.
  34.      *
  35.      * @param defaultValue The default value to be returned if the value to be converted is missing or an error occurs converting the value.
  36.      */
  37.     public LocaleConverter(final Locale defaultValue) {
  38.         super(defaultValue);
  39.     }

  40.     /**
  41.      * Converts the specified input object into an output object of the specified type.
  42.      *
  43.      * @param type  Data type to which this value should be converted.
  44.      * @param value The String property value to convert.
  45.      * @return A {@link Locale} which represents the configuration property value.
  46.      * @throws NullPointerException If the value is null.
  47.      */
  48.     @Override
  49.     protected <T> T convertToType(final Class<T> type, final Object value) throws Throwable {
  50.         if (Locale.class.isAssignableFrom(type)) {
  51.             final String stringValue = toString(value);
  52.             return type.cast(Locale.forLanguageTag(stringValue));
  53.         }

  54.         throw conversionException(type, value);
  55.     }

  56.     /**
  57.      * Gets the default type this {@code Converter} handles.
  58.      *
  59.      * @return The default type this {@code Converter} handles.
  60.      * @since 2.0.0
  61.      */
  62.     @Override
  63.     protected Class<Locale> getDefaultType() {
  64.         return Locale.class;
  65.     }
  66. }