PatternConverter.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.regex.Pattern;

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

  27.     /**
  28.      * Construct a <strong>{@link Pattern}</strong> <em>Converter</em> that throws a {@code ConversionException} if an error occurs.
  29.      */
  30.     public PatternConverter() {
  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 PatternConverter(final Pattern 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 Pattern} which represents the compiled configuration property.
  46.      * @throws NullPointerException                   If the value is null.
  47.      * @throws java.util.regex.PatternSyntaxException If the regular expression {@link String} provided is malformed.
  48.      */
  49.     @Override
  50.     protected <T> T convertToType(final Class<T> type, final Object value) throws Throwable {
  51.         if (Pattern.class.isAssignableFrom(type)) {
  52.             final String stringValue = toString(value);
  53.             return type.cast(Pattern.compile(stringValue));
  54.         }

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

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