alvinalexander.com | career | drupal | java | mac | mysql | perl | scala | uml | unix  

Commons Beanutils example source code file (BooleanConverter.java)

This example Commons Beanutils source code file (BooleanConverter.java) is included in the DevDaily.com "Java Source Code Warehouse" project. The intent of this project is to help you "Learn Java by Example" TM.

Java - Commons Beanutils tags/keywords

abstractconverter, boolean, booleanconverter, booleanconverter, can't, class, conversionexception, no_default, no_default, object, object, string, string, throwable

The Commons Beanutils BooleanConverter.java source code

/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You 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.apache.commons.beanutils.converters;

import org.apache.commons.beanutils.ConversionException;

/**
 * {@link org.apache.commons.beanutils.Converter} implementaion that handles conversion
 * to and from <b>Boolean objects.
 * {@link org.apache.commons.beanutils.Converter} implementaion that
 * handles conversion to and from <b>java.lang.Boolean objects.
 * <p>
 * Can be configured to either return a <i>default value or throw a
 * <code>ConversionException if a conversion error occurs.
 * <p>
 * By default any object whose string representation is one of the values
 * {"yes", "y", "true", "on", "1"} is converted to Boolean.TRUE, and 
 * string representations {"no", "n", "false", "off", "0"} are converted
 * to Boolean.FALSE. The recognised true/false strings can be changed by:
 * <pre>
 *  String[] trueStrings = {"oui", "o", "1"};
 *  String[] falseStrings = {"non", "n", "0"};
 *  Converter bc = new BooleanConverter(trueStrings, falseStrings);
 *  ConvertUtils.register(bc, Boolean.class);
 *  ConvertUtils.register(bc, Boolean.TYPE);
 * </pre>
 * In addition, it is recommended that the BooleanArrayConverter also be
 * modified to recognise the same set of values:
 * <pre>
 *   Converter bac = new BooleanArrayConverter(bc, BooleanArrayConverter.NO_DEFAULT);
 *   ConvertUtils.register(bac, bac.MODEL);
 * </pre>
 * </p>
 * 
 * <p>Case is ignored when converting values to true or false.

* * @author Craig R. McClanahan * @version $Revision: 801644 $ $Date: 2009-08-06 14:38:56 +0100 (Thu, 06 Aug 2009) $ * @since 1.3 */ public final class BooleanConverter extends AbstractConverter { // ----------------------------------------------------------- Constructors /** * Create a {@link org.apache.commons.beanutils.Converter} that will throw a {@link ConversionException} * if a conversion error occurs, ie the string value being converted is * not one of the known true strings, nor one of the known false strings. */ public BooleanConverter() { super(); } /** * Create a {@link org.apache.commons.beanutils.Converter} that will return the specified default value * if a conversion error occurs, ie the string value being converted is * not one of the known true strings, nor one of the known false strings. * * @param defaultValue The default value to be returned if the value * being converted is not recognised. This value may be null, in which * case null will be returned on conversion failure. When non-null, it is * expected that this value will be either Boolean.TRUE or Boolean.FALSE. * The special value BooleanConverter.NO_DEFAULT can also be passed here, * in which case this constructor acts like the no-argument one. */ public BooleanConverter(Object defaultValue) { super(); if (defaultValue != NO_DEFAULT) { setDefaultValue(defaultValue); } } /** * Create a {@link org.apache.commons.beanutils.Converter} that will throw a {@link ConversionException} * if a conversion error occurs, ie the string value being converted is * not one of the known true strings, nor one of the known false strings. * <p> * The provided string arrays are copied, so that changes to the elements * of the array after this call is made do not affect this object. * * @param trueStrings is the set of strings which should convert to the * value Boolean.TRUE. The value null must not be present. Case is * ignored. * * @param falseStrings is the set of strings which should convert to the * value Boolean.TRUE. The value null must not be present. Case is * ignored. * @since 1.8.0 */ public BooleanConverter(String[] trueStrings, String[] falseStrings) { super(); this.trueStrings = copyStrings(trueStrings); this.falseStrings = copyStrings(falseStrings); } /** * Create a {@link org.apache.commons.beanutils.Converter} that will return * the specified default value if a conversion error occurs. * <p> * The provided string arrays are copied, so that changes to the elements * of the array after this call is made do not affect this object. * * @param trueStrings is the set of strings which should convert to the * value Boolean.TRUE. The value null must not be present. Case is * ignored. * * @param falseStrings is the set of strings which should convert to the * value Boolean.TRUE. The value null must not be present. Case is * ignored. * * @param defaultValue The default value to be returned if the value * being converted is not recognised. This value may be null, in which * case null will be returned on conversion failure. When non-null, it is * expected that this value will be either Boolean.TRUE or Boolean.FALSE. * The special value BooleanConverter.NO_DEFAULT can also be passed here, * in which case an exception will be thrown on conversion failure. * @since 1.8.0 */ public BooleanConverter(String[] trueStrings, String[] falseStrings, Object defaultValue) { super(); this.trueStrings = copyStrings(trueStrings); this.falseStrings = copyStrings(falseStrings); if (defaultValue != NO_DEFAULT) { setDefaultValue(defaultValue); } } // ----------------------------------------------------- Static Variables /** * This is a special reference that can be passed as the "default object" * to the constructor to indicate that no default is desired. Note that * the value 'null' cannot be used for this purpose, as the caller may * want a null to be returned as the default. * @deprecated Use constructors without default value. */ public static final Object NO_DEFAULT = new Object(); // ----------------------------------------------------- Instance Variables /** * The set of strings that are known to map to Boolean.TRUE. */ private String[] trueStrings = {"true", "yes", "y", "on", "1"}; /** * The set of strings that are known to map to Boolean.FALSE. */ private String[] falseStrings = {"false", "no", "n", "off", "0"}; // --------------------------------------------------------- Protected Methods /** * Return the default type this <code>Converter handles. * * @return The default type this <code>Converter handles. * @since 1.8.0 */ protected Class getDefaultType() { return Boolean.class; } /** * Convert the specified input object into an output object of the * specified type. * * @param type is the type to which this value should be converted. In the * case of this BooleanConverter class, this value is ignored. * * @param value is the input value to be converted. The toString method * shall be invoked on this object, and the result compared (ignoring * case) against the known "true" and "false" string values. * * @return Boolean.TRUE if the value was a recognised "true" value, * Boolean.FALSE if the value was a recognised "false" value, or * the default value if the value was not recognised and the constructor * was provided with a default value. * * @throws Throwable if an error occurs converting to the specified type * @since 1.8.0 */ protected Object convertToType(Class type, Object value) throws Throwable { // All the values in the trueStrings and falseStrings arrays are // guaranteed to be lower-case. By converting the input value // to lowercase too, we can use the efficient String.equals method // instead of the less-efficient String.equalsIgnoreCase method. String stringValue = value.toString().toLowerCase(); for(int i=0; i<trueStrings.length; ++i) { if (trueStrings[i].equals(stringValue)) { return Boolean.TRUE; } } for(int i=0; i<falseStrings.length; ++i) { if (falseStrings[i].equals(stringValue)) { return Boolean.FALSE; } } throw new ConversionException("Can't convert value '" + value + "' to a Boolean"); } /** * This method creates a copy of the provided array, and ensures that * all the strings in the newly created array contain only lower-case * letters. * <p> * Using this method to copy string arrays means that changes to the * src array do not modify the dst array. */ private static String[] copyStrings(String[] src) { String[] dst = new String[src.length]; for(int i=0; i<src.length; ++i) { dst[i] = src[i].toLowerCase(); } return dst; } }

Other Commons Beanutils examples (source code examples)

Here is a short list of links related to this Commons Beanutils BooleanConverter.java source code file:

... this post is sponsored by my books ...

#1 New Release!

FP Best Seller

 

new blog posts

 

Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.

A percentage of advertising revenue from
pages under the /java/jwarehouse URI on this website is
paid back to open source projects.