This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-beanutils.git


The following commit(s) were added to refs/heads/master by this push:
     new f4467c8  [BEANUTILS-527] Convert from Collections4 to 
java.util.function #8.
f4467c8 is described below

commit f4467c84ef3b0586189c2083f038c129525e82ff
Author: Gary Gregory <[email protected]>
AuthorDate: Sun Oct 20 19:04:01 2019 -0400

    [BEANUTILS-527] Convert from Collections4 to java.util.function #8.
    
    org.apache.commons.beanutils2.BeanToPropertyValueTransformer implements
    java.util.function.Function instead of
    org.apache.commons.collections4.Transformer.
---
 .../beanutils2/BeanToPropertyValueTransformer.java | 439 +++++++++---------
 .../BeanToPropertyValueTransformerTestCase.java    | 492 ++++++++++-----------
 2 files changed, 467 insertions(+), 464 deletions(-)

diff --git 
a/src/main/java/org/apache/commons/beanutils2/BeanToPropertyValueTransformer.java
 
b/src/main/java/org/apache/commons/beanutils2/BeanToPropertyValueTransformer.java
index f049032..015cf57 100644
--- 
a/src/main/java/org/apache/commons/beanutils2/BeanToPropertyValueTransformer.java
+++ 
b/src/main/java/org/apache/commons/beanutils2/BeanToPropertyValueTransformer.java
@@ -1,218 +1,221 @@
-/*
- * 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.beanutils2;
-
-import java.lang.reflect.InvocationTargetException;
-
-import org.apache.commons.collections4.Transformer;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-
-/**
- * <p><code>Transformer</code> that outputs a property value.</p>
- *
- * <p>An implementation of 
<code>org.apache.commons.collections4.Transformer</code> that transforms
- * the object provided by returning the value of a specified property of the 
object.  The
- * constructor for <code>BeanToPropertyValueTransformer</code> requires the 
name of the property
- * that will be used in the transformation.  The property can be a simple, 
nested, indexed, or
- * mapped property as defined by 
<code>org.apache.commons.beanutils2.PropertyUtils</code>. If any
- * object in the property path specified by <code>propertyName</code> is 
<code>null</code> then the
- * outcome is based on the value of the <code>ignoreNull</code> attribute.
- * </p>
- *
- * <p>
- * A typical usage might look like:
- * </p>
- * <pre><code>
- * // create the transformer
- * BeanToPropertyValueTransformer transformer = new 
BeanToPropertyValueTransformer( "person.address.city" );
- *
- * // transform the Collection
- * Collection peoplesCities = CollectionUtils.collect( peopleCollection, 
transformer );
- * </code></pre>
- *
- * <p>
- * This would take a <code>Collection</code> of person objects and return a 
<code>Collection</code>
- * of objects which represents the cities in which each person lived. 
Assuming...
- * <ul>
- *    <li>
- *       The top level object in the <code>peeopleCollection</code> is an 
object which represents a
- *       person.
- *    </li>
- *    <li>
- *       The person object has a <code>getAddress()</code> method which 
returns an object which
- *       represents a person's address.
- *    </li>
- *    <li>
- *       The address object has a <code>getCity()</code> method which returns 
an object which
- *       represents the city in which a person lives.
- *    </li>
- * </ul>
- *
- * @see org.apache.commons.beanutils2.PropertyUtils
- * @see org.apache.commons.collections4.Transformer
- */
-public class BeanToPropertyValueTransformer implements Transformer {
-
-    /** For logging. */
-    private final Log log = LogFactory.getLog(this.getClass());
-
-    /** The name of the property that will be used in the transformation of 
the object. */
-    private String propertyName;
-
-    /**
-     * <p>Should null objects on the property path throw an 
<code>IllegalArgumentException</code>?</p>
-     * <p>
-     * Determines whether <code>null</code> objects in the property path will 
genenerate an
-     * <code>IllegalArgumentException</code> or not. If set to 
<code>true</code> then if any objects
-     * in the property path evaluate to <code>null</code> then the
-     * <code>IllegalArgumentException</code> throw by 
<code>PropertyUtils</code> will be logged but
-     * not rethrown and <code>null</code> will be returned.  If set to 
<code>false</code> then if any
-     * objects in the property path evaluate to <code>null</code> then the
-     * <code>IllegalArgumentException</code> throw by 
<code>PropertyUtils</code> will be logged and
-     * rethrown.
-     * </p>
-     */
-    private boolean ignoreNull;
-
-    /**
-     * Constructs a Transformer which does not ignore nulls.
-     * Constructor which takes the name of the property that will be used in 
the transformation and
-     * assumes <code>ignoreNull</code> to be <code>false</code>.
-     *
-     * @param propertyName The name of the property that will be used in the 
transformation.
-     * @throws IllegalArgumentException If the <code>propertyName</code> is 
<code>null</code> or
-     * empty.
-     */
-    public BeanToPropertyValueTransformer(final String propertyName) {
-        this(propertyName, false);
-    }
-
-    /**
-     * Constructs a Transformer and sets ignoreNull.
-     * Constructor which takes the name of the property that will be used in 
the transformation and
-     * a boolean which determines whether <code>null</code> objects in the 
property path will
-     * genenerate an <code>IllegalArgumentException</code> or not.
-     *
-     * @param propertyName The name of the property that will be used in the 
transformation.
-     * @param ignoreNull Determines whether <code>null</code> objects in the 
property path will
-     * genenerate an <code>IllegalArgumentException</code> or not.
-     * @throws IllegalArgumentException If the <code>propertyName</code> is 
<code>null</code> or
-     * empty.
-     */
-    public BeanToPropertyValueTransformer(final String propertyName, final 
boolean ignoreNull) {
-        super();
-
-        if (propertyName != null && propertyName.length() > 0) {
-            this.propertyName = propertyName;
-            this.ignoreNull = ignoreNull;
-        } else {
-            throw new IllegalArgumentException(
-                "propertyName cannot be null or empty");
-        }
-    }
-
-    /**
-     * Returns the value of the property named in the transformer's 
constructor for
-     * the object provided. If any object in the property path leading up to 
the target property is
-     * <code>null</code> then the outcome will be based on the value of the 
<code>ignoreNull</code>
-     * attribute. By default, <code>ignoreNull</code> is <code>false</code> 
and would result in an
-     * <code>IllegalArgumentException</code> if an object in the property path 
leading up to the
-     * target property is <code>null</code>.
-     *
-     * @param object The object to be transformed.
-     * @return The value of the property named in the transformer's 
constructor for the object
-     * provided.
-     * @throws IllegalArgumentException If an IllegalAccessException, 
InvocationTargetException, or
-     * NoSuchMethodException is thrown when trying to access the property 
specified on the object
-     * provided. Or if an object in the property path provided is 
<code>null</code> and
-     * <code>ignoreNull</code> is set to <code>false</code>.
-     */
-    @Override
-    public Object transform(final Object object) {
-
-        Object propertyValue = null;
-
-        try {
-            propertyValue = PropertyUtils.getProperty(object, propertyName);
-        } catch (final IllegalArgumentException e) {
-            final String errorMsg = "Problem during transformation. Null value 
encountered in property path...";
-
-            if (ignoreNull) {
-                log.warn("WARNING: " + errorMsg + e);
-            } else {
-                final IllegalArgumentException iae = new 
IllegalArgumentException(errorMsg);
-                if (!BeanUtils.initCause(iae, e)) {
-                    log.error(errorMsg, e);
-                }
-                throw iae;
-            }
-        } catch (final IllegalAccessException e) {
-            final String errorMsg = "Unable to access the property provided.";
-            final IllegalArgumentException iae = new 
IllegalArgumentException(errorMsg);
-            if (!BeanUtils.initCause(iae, e)) {
-                log.error(errorMsg, e);
-            }
-            throw iae;
-        } catch (final InvocationTargetException e) {
-            final String errorMsg = "Exception occurred in property's getter";
-            final IllegalArgumentException iae = new 
IllegalArgumentException(errorMsg);
-            if (!BeanUtils.initCause(iae, e)) {
-                log.error(errorMsg, e);
-            }
-            throw iae;
-        } catch (final NoSuchMethodException e) {
-            final String errorMsg = "No property found for name [" +
-                propertyName + "]";
-            final IllegalArgumentException iae = new 
IllegalArgumentException(errorMsg);
-            if (!BeanUtils.initCause(iae, e)) {
-                log.error(errorMsg, e);
-            }
-            throw iae;
-        }
-
-        return propertyValue;
-    }
-
-    /**
-     * Returns the name of the property that will be used in the 
transformation of the bean.
-     *
-     * @return The name of the property that will be used in the 
transformation of the bean.
-     */
-    public String getPropertyName() {
-        return propertyName;
-    }
-
-    /**
-     * Returns the flag which determines whether <code>null</code> objects in 
the property path will
-     * genenerate an <code>IllegalArgumentException</code> or not. If set to 
<code>true</code> then
-     * if any objects in the property path evaluate to <code>null</code> then 
the
-     * <code>IllegalArgumentException</code> throw by 
<code>PropertyUtils</code> will be logged but
-     * not rethrown and <code>null</code> will be returned.  If set to 
<code>false</code> then if any
-     * objects in the property path evaluate to <code>null</code> then the
-     * <code>IllegalArgumentException</code> throw by 
<code>PropertyUtils</code> will be logged and
-     * rethrown.
-     *
-     * @return The flag which determines whether <code>null</code> objects in 
the property path will
-     * genenerate an <code>IllegalArgumentException</code> or not.
-     */
-    public boolean isIgnoreNull() {
-        return ignoreNull;
-    }
-}
+/*
+ * 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.beanutils2;
+
+import java.lang.reflect.InvocationTargetException;
+import java.util.function.Function;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+
+/**
+ * <p><code>Transformer</code> that outputs a property value.</p>
+ *
+ * <p>An implementation of 
<code>org.apache.commons.collections4.Transformer</code> that transforms
+ * the object provided by returning the value of a specified property of the 
object.  The
+ * constructor for <code>BeanToPropertyValueTransformer</code> requires the 
name of the property
+ * that will be used in the transformation.  The property can be a simple, 
nested, indexed, or
+ * mapped property as defined by 
<code>org.apache.commons.beanutils2.PropertyUtils</code>. If any
+ * object in the property path specified by <code>propertyName</code> is 
<code>null</code> then the
+ * outcome is based on the value of the <code>ignoreNull</code> attribute.
+ * </p>
+ *
+ * <p>
+ * A typical usage might look like:
+ * </p>
+ * <pre><code>
+ * // create the transformer
+ * BeanToPropertyValueTransformer transformer = new 
BeanToPropertyValueTransformer( "person.address.city" );
+ *
+ * // transform the Collection
+ * Collection peoplesCities = CollectionUtils.collect( peopleCollection, 
transformer );
+ * </code></pre>
+ *
+ * <p>
+ * This would take a <code>Collection</code> of person objects and return a 
<code>Collection</code>
+ * of objects which represents the cities in which each person lived. 
Assuming...
+ * <ul>
+ *    <li>
+ *       The top level object in the <code>peeopleCollection</code> is an 
object which represents a
+ *       person.
+ *    </li>
+ *    <li>
+ *       The person object has a <code>getAddress()</code> method which 
returns an object which
+ *       represents a person's address.
+ *    </li>
+ *    <li>
+ *       The address object has a <code>getCity()</code> method which returns 
an object which
+ *       represents the city in which a person lives.
+ *    </li>
+ * </ul>
+ *
+ * @param <T> the type of the input to the function
+ * @param <R> the type of the result of the function
+ * 
+ * @see org.apache.commons.beanutils2.PropertyUtils
+ * @see java.util.function.Function
+ */
+public class BeanToPropertyValueTransformer<T, R> implements Function<T, R> {
+
+    /** For logging. */
+    private final Log log = LogFactory.getLog(this.getClass());
+
+    /** The name of the property that will be used in the transformation of 
the object. */
+    private String propertyName;
+
+    /**
+     * <p>Should null objects on the property path throw an 
<code>IllegalArgumentException</code>?</p>
+     * <p>
+     * Determines whether <code>null</code> objects in the property path will 
genenerate an
+     * <code>IllegalArgumentException</code> or not. If set to 
<code>true</code> then if any objects
+     * in the property path evaluate to <code>null</code> then the
+     * <code>IllegalArgumentException</code> throw by 
<code>PropertyUtils</code> will be logged but
+     * not rethrown and <code>null</code> will be returned.  If set to 
<code>false</code> then if any
+     * objects in the property path evaluate to <code>null</code> then the
+     * <code>IllegalArgumentException</code> throw by 
<code>PropertyUtils</code> will be logged and
+     * rethrown.
+     * </p>
+     */
+    private boolean ignoreNull;
+
+    /**
+     * Constructs a Transformer which does not ignore nulls.
+     * Constructor which takes the name of the property that will be used in 
the transformation and
+     * assumes <code>ignoreNull</code> to be <code>false</code>.
+     *
+     * @param propertyName The name of the property that will be used in the 
transformation.
+     * @throws IllegalArgumentException If the <code>propertyName</code> is 
<code>null</code> or
+     * empty.
+     */
+    public BeanToPropertyValueTransformer(final String propertyName) {
+        this(propertyName, false);
+    }
+
+    /**
+     * Constructs a Transformer and sets ignoreNull.
+     * Constructor which takes the name of the property that will be used in 
the transformation and
+     * a boolean which determines whether <code>null</code> objects in the 
property path will
+     * genenerate an <code>IllegalArgumentException</code> or not.
+     *
+     * @param propertyName The name of the property that will be used in the 
transformation.
+     * @param ignoreNull Determines whether <code>null</code> objects in the 
property path will
+     * genenerate an <code>IllegalArgumentException</code> or not.
+     * @throws IllegalArgumentException If the <code>propertyName</code> is 
<code>null</code> or
+     * empty.
+     */
+    public BeanToPropertyValueTransformer(final String propertyName, final 
boolean ignoreNull) {
+        super();
+
+        if (propertyName != null && propertyName.length() > 0) {
+            this.propertyName = propertyName;
+            this.ignoreNull = ignoreNull;
+        } else {
+            throw new IllegalArgumentException(
+                "propertyName cannot be null or empty");
+        }
+    }
+
+    /**
+     * Returns the value of the property named in the transformer's 
constructor for
+     * the object provided. If any object in the property path leading up to 
the target property is
+     * <code>null</code> then the outcome will be based on the value of the 
<code>ignoreNull</code>
+     * attribute. By default, <code>ignoreNull</code> is <code>false</code> 
and would result in an
+     * <code>IllegalArgumentException</code> if an object in the property path 
leading up to the
+     * target property is <code>null</code>.
+     *
+     * @param object The object to be transformed.
+     * @return The value of the property named in the transformer's 
constructor for the object
+     * provided.
+     * @throws IllegalArgumentException If an IllegalAccessException, 
InvocationTargetException, or
+     * NoSuchMethodException is thrown when trying to access the property 
specified on the object
+     * provided. Or if an object in the property path provided is 
<code>null</code> and
+     * <code>ignoreNull</code> is set to <code>false</code>.
+     */
+    @Override
+    public R apply(final T object) {
+
+        R propertyValue = null;
+
+        try {
+            propertyValue = (R) PropertyUtils.getProperty(object, 
propertyName);
+        } catch (final IllegalArgumentException e) {
+            final String errorMsg = "Problem during transformation. Null value 
encountered in property path...";
+
+            if (ignoreNull) {
+                log.warn("WARNING: " + errorMsg + e);
+            } else {
+                final IllegalArgumentException iae = new 
IllegalArgumentException(errorMsg);
+                if (!BeanUtils.initCause(iae, e)) {
+                    log.error(errorMsg, e);
+                }
+                throw iae;
+            }
+        } catch (final IllegalAccessException e) {
+            final String errorMsg = "Unable to access the property provided.";
+            final IllegalArgumentException iae = new 
IllegalArgumentException(errorMsg);
+            if (!BeanUtils.initCause(iae, e)) {
+                log.error(errorMsg, e);
+            }
+            throw iae;
+        } catch (final InvocationTargetException e) {
+            final String errorMsg = "Exception occurred in property's getter";
+            final IllegalArgumentException iae = new 
IllegalArgumentException(errorMsg);
+            if (!BeanUtils.initCause(iae, e)) {
+                log.error(errorMsg, e);
+            }
+            throw iae;
+        } catch (final NoSuchMethodException e) {
+            final String errorMsg = "No property found for name [" +
+                propertyName + "]";
+            final IllegalArgumentException iae = new 
IllegalArgumentException(errorMsg);
+            if (!BeanUtils.initCause(iae, e)) {
+                log.error(errorMsg, e);
+            }
+            throw iae;
+        }
+
+        return propertyValue;
+    }
+
+    /**
+     * Returns the name of the property that will be used in the 
transformation of the bean.
+     *
+     * @return The name of the property that will be used in the 
transformation of the bean.
+     */
+    public String getPropertyName() {
+        return propertyName;
+    }
+
+    /**
+     * Returns the flag which determines whether <code>null</code> objects in 
the property path will
+     * genenerate an <code>IllegalArgumentException</code> or not. If set to 
<code>true</code> then
+     * if any objects in the property path evaluate to <code>null</code> then 
the
+     * <code>IllegalArgumentException</code> throw by 
<code>PropertyUtils</code> will be logged but
+     * not rethrown and <code>null</code> will be returned.  If set to 
<code>false</code> then if any
+     * objects in the property path evaluate to <code>null</code> then the
+     * <code>IllegalArgumentException</code> throw by 
<code>PropertyUtils</code> will be logged and
+     * rethrown.
+     *
+     * @return The flag which determines whether <code>null</code> objects in 
the property path will
+     * genenerate an <code>IllegalArgumentException</code> or not.
+     */
+    public boolean isIgnoreNull() {
+        return ignoreNull;
+    }
+}
diff --git 
a/src/test/java/org/apache/commons/beanutils2/BeanToPropertyValueTransformerTestCase.java
 
b/src/test/java/org/apache/commons/beanutils2/BeanToPropertyValueTransformerTestCase.java
index 6cc7eba..c5c73c6 100644
--- 
a/src/test/java/org/apache/commons/beanutils2/BeanToPropertyValueTransformerTestCase.java
+++ 
b/src/test/java/org/apache/commons/beanutils2/BeanToPropertyValueTransformerTestCase.java
@@ -1,246 +1,246 @@
-/*
- * 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.beanutils2;
-
-import junit.framework.TestCase;
-
-
-/**
- * Test cases for <code>BeanToPropertyValueTransformer</code>.
- *
- */
-public class BeanToPropertyValueTransformerTestCase extends TestCase {
-
-    private static final Integer expectedIntegerValue = new Integer(123);
-    private static final Long expectedLongValue = new Long(123);
-    private static final Float expectedFloatValue = new Float(123.123f);
-    private static final Double expectedDoubleValue = new 
Double(567879.12344d);
-    private static final Boolean expectedBooleanValue = Boolean.TRUE;
-    private static final Byte expectedByteValue = new Byte("12");
-
-    /**
-     * Constructor for BeanToPropertyValueTransformerTestCase.
-     *
-     * @param name Name of this test case.
-     */
-    public BeanToPropertyValueTransformerTestCase(final String name) {
-        super(name);
-    }
-
-    /**
-     * Test transform with simple String property.
-     */
-    public void testTransformWithSimpleStringProperty() {
-        final BeanToPropertyValueTransformer transformer =
-            new BeanToPropertyValueTransformer("stringProperty");
-        final TestBean testBean = new TestBean("foo");
-        assertEquals("foo", transformer.transform(testBean));
-    }
-
-    /**
-     * Test transform with simple String property and null value.
-     *
-     */
-    public void testTransformWithSimpleStringPropertyAndNullValue() {
-        final BeanToPropertyValueTransformer transformer =
-            new BeanToPropertyValueTransformer("stringProperty");
-        final TestBean testBean = new TestBean((String) null);
-        assertNull(transformer.transform(testBean));
-    }
-
-    /**
-     * Test transform with simple int property.
-     */
-    public void testTransformWithSimpleIntProperty() {
-        final BeanToPropertyValueTransformer transformer =
-            new BeanToPropertyValueTransformer("intProperty");
-        final TestBean testBean = new 
TestBean(expectedIntegerValue.intValue());
-        assertEquals(expectedIntegerValue, transformer.transform(testBean));
-    }
-
-    /**
-     * Test transform with simple long property.
-     */
-    public void testTransformWithSimpleLongProperty() {
-        final BeanToPropertyValueTransformer transformer =
-            new BeanToPropertyValueTransformer("longProperty");
-        final TestBean testBean = new TestBean();
-        testBean.setLongProperty(expectedLongValue.longValue());
-        assertEquals(expectedLongValue, transformer.transform(testBean));
-    }
-
-    /**
-     * Test transform with simple float property.
-     */
-    public void testTransformWithSimpleFloatProperty() {
-        final BeanToPropertyValueTransformer transformer =
-            new BeanToPropertyValueTransformer("floatProperty");
-        final TestBean testBean = new 
TestBean(expectedFloatValue.floatValue());
-        assertEquals(expectedFloatValue, transformer.transform(testBean));
-    }
-
-    /**
-     * Test transform with simple double property.
-     */
-    public void testTransformWithSimpleDoubleProperty() {
-        final BeanToPropertyValueTransformer transformer =
-            new BeanToPropertyValueTransformer("doubleProperty");
-        final TestBean testBean = new 
TestBean(expectedDoubleValue.doubleValue());
-        assertEquals(expectedDoubleValue, transformer.transform(testBean));
-    }
-
-    /**
-     * Test transform with simple byte property.
-     */
-    public void testTransformWithSimpleByteProperty() {
-        final BeanToPropertyValueTransformer transformer =
-            new BeanToPropertyValueTransformer("byteProperty");
-        final TestBean testBean = new TestBean();
-        testBean.setByteProperty(expectedByteValue.byteValue());
-        assertEquals(expectedByteValue, transformer.transform(testBean));
-    }
-
-    /**
-     * Test transform with simple boolean property.
-     */
-    public void testTransformWithSimpleBooleanProperty() {
-        final BeanToPropertyValueTransformer transformer =
-            new BeanToPropertyValueTransformer("booleanProperty");
-        final TestBean testBean = new 
TestBean(expectedBooleanValue.booleanValue());
-        assertEquals(expectedBooleanValue, transformer.transform(testBean));
-    }
-
-    /**
-     * Test transform with write only property.
-     */
-    public void testTransformWithWriteOnlyProperty() {
-        try {
-            new 
BeanToPropertyValueTransformer("writeOnlyProperty").transform(new TestBean());
-        } catch (final IllegalArgumentException e) {
-            /* This is what should happen */
-        }
-    }
-
-    /**
-     * Test transform with read only property.
-     */
-    public void testTransformWithReadOnlyProperty() {
-        final BeanToPropertyValueTransformer transformer =
-            new BeanToPropertyValueTransformer("readOnlyProperty");
-        final TestBean testBean = new TestBean();
-        assertEquals(testBean.getReadOnlyProperty(), 
transformer.transform(testBean));
-    }
-
-    /**
-     * Test transform with invalid property.
-     */
-    public void testTransformWithInvalidProperty() {
-        try {
-            new BeanToPropertyValueTransformer("bogusProperty").transform(new 
TestBean());
-        } catch (final IllegalArgumentException e) {
-            /* This is what should happen */
-        }
-    }
-
-    /**
-     * Test transform with nested property.
-     */
-    public void testTransformWithNestedProperty() {
-        final BeanToPropertyValueTransformer transformer =
-            new BeanToPropertyValueTransformer("anotherNested.stringProperty");
-        final TestBean testBean = new TestBean();
-        final TestBean nestedBean = new TestBean("foo");
-        testBean.setAnotherNested(nestedBean);
-        assertEquals("foo", transformer.transform(testBean));
-    }
-
-    /**
-     * Test transform with mapped property.
-     */
-    public void testTransformWithMappedProperty() {
-        BeanToPropertyValueTransformer transformer =
-            new BeanToPropertyValueTransformer("mappedProperty(test-key)");
-        final TestBean testBean = new TestBean();
-
-        // try a valid key
-        testBean.setMappedProperty("test-key", "test-value");
-        assertEquals("test-value", transformer.transform(testBean));
-
-        // now try an invalid key
-        transformer = new 
BeanToPropertyValueTransformer("mappedProperty(bogus-key)");
-        assertEquals(null, transformer.transform(testBean));
-    }
-
-    /**
-     * Test transform with indexed property.
-     */
-    public void testTransformWithIndexedProperty() {
-        BeanToPropertyValueTransformer transformer =
-            new BeanToPropertyValueTransformer("intIndexed[0]");
-        final TestBean testBean = new TestBean();
-        testBean.setIntIndexed(0, expectedIntegerValue.intValue());
-        assertEquals(expectedIntegerValue, transformer.transform(testBean));
-
-        // test index out of range
-        transformer = new BeanToPropertyValueTransformer("intIndexed[9999]");
-
-        try {
-            transformer.transform(testBean);
-            fail("Should have thrown an ArrayIndexOutOfBoundsException");
-        } catch (final ArrayIndexOutOfBoundsException e) {
-            /* this is what should happen */
-        }
-    }
-
-    /**
-     * Test transform with nested indexed property.
-     */
-    public void testTransformWithNestedIndexedProperty() {
-        final BeanToPropertyValueTransformer transformer =
-            new BeanToPropertyValueTransformer("anotherNested.intIndexed[0]");
-        final TestBean testBean = new TestBean();
-        final TestBean nestedBean = new TestBean();
-        nestedBean.setIntIndexed(0, expectedIntegerValue.intValue());
-        testBean.setAnotherNested(nestedBean);
-        assertEquals(expectedIntegerValue, transformer.transform(testBean));
-    }
-
-    /**
-     * Test transform with null in property path.
-     */
-    public void testTransformWithNullInPath() {
-        final BeanToPropertyValueTransformer transformer =
-            new BeanToPropertyValueTransformer("anotherNested.stringProperty");
-
-        try {
-            transformer.transform(new TestBean());
-            fail("Should have throw IllegalArgumentException");
-        } catch (final IllegalArgumentException e) {
-            /* ignore this is what should happen */
-        }
-    }
-
-    /**
-     * Test transform with null in property path and ignore = true.
-     */
-    public void testTransformWithNullInPathAndIgnoreTrue() {
-        final BeanToPropertyValueTransformer transformer =
-            new 
BeanToPropertyValueTransformer("anotherNested.stringProperty",true);
-        assertEquals(null, transformer.transform(new TestBean()));
-    }
-}
+/*
+ * 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.beanutils2;
+
+import junit.framework.TestCase;
+
+
+/**
+ * Test cases for <code>BeanToPropertyValueTransformer</code>.
+ *
+ */
+public class BeanToPropertyValueTransformerTestCase extends TestCase {
+
+    private static final Integer expectedIntegerValue = new Integer(123);
+    private static final Long expectedLongValue = new Long(123);
+    private static final Float expectedFloatValue = new Float(123.123f);
+    private static final Double expectedDoubleValue = new 
Double(567879.12344d);
+    private static final Boolean expectedBooleanValue = Boolean.TRUE;
+    private static final Byte expectedByteValue = new Byte("12");
+
+    /**
+     * Constructor for BeanToPropertyValueTransformerTestCase.
+     *
+     * @param name Name of this test case.
+     */
+    public BeanToPropertyValueTransformerTestCase(final String name) {
+        super(name);
+    }
+
+    /**
+     * Test transform with simple String property.
+     */
+    public void testTransformWithSimpleStringProperty() {
+        final BeanToPropertyValueTransformer<TestBean, String> transformer =
+            new BeanToPropertyValueTransformer<>("stringProperty");
+        final TestBean testBean = new TestBean("foo");
+        assertEquals("foo", transformer.apply(testBean));
+    }
+
+    /**
+     * Test transform with simple String property and null value.
+     *
+     */
+    public void testTransformWithSimpleStringPropertyAndNullValue() {
+        final BeanToPropertyValueTransformer<TestBean, String> transformer =
+            new BeanToPropertyValueTransformer<>("stringProperty");
+        final TestBean testBean = new TestBean((String) null);
+        assertNull(transformer.apply(testBean));
+    }
+
+    /**
+     * Test transform with simple int property.
+     */
+    public void testTransformWithSimpleIntProperty() {
+        final BeanToPropertyValueTransformer<TestBean, Integer> transformer =
+            new BeanToPropertyValueTransformer<>("intProperty");
+        final TestBean testBean = new 
TestBean(expectedIntegerValue.intValue());
+        assertEquals(expectedIntegerValue, transformer.apply(testBean));
+    }
+
+    /**
+     * Test transform with simple long property.
+     */
+    public void testTransformWithSimpleLongProperty() {
+        final BeanToPropertyValueTransformer<TestBean, Long> transformer =
+            new BeanToPropertyValueTransformer<>("longProperty");
+        final TestBean testBean = new TestBean();
+        testBean.setLongProperty(expectedLongValue.longValue());
+        assertEquals(expectedLongValue, transformer.apply(testBean));
+    }
+
+    /**
+     * Test transform with simple float property.
+     */
+    public void testTransformWithSimpleFloatProperty() {
+        final BeanToPropertyValueTransformer<TestBean, Float> transformer =
+            new BeanToPropertyValueTransformer<>("floatProperty");
+        final TestBean testBean = new 
TestBean(expectedFloatValue.floatValue());
+        assertEquals(expectedFloatValue, transformer.apply(testBean));
+    }
+
+    /**
+     * Test transform with simple double property.
+     */
+    public void testTransformWithSimpleDoubleProperty() {
+        final BeanToPropertyValueTransformer<TestBean, Double> transformer =
+            new BeanToPropertyValueTransformer<>("doubleProperty");
+        final TestBean testBean = new 
TestBean(expectedDoubleValue.doubleValue());
+        assertEquals(expectedDoubleValue, transformer.apply(testBean));
+    }
+
+    /**
+     * Test transform with simple byte property.
+     */
+    public void testTransformWithSimpleByteProperty() {
+        final BeanToPropertyValueTransformer<TestBean, Byte> transformer =
+            new BeanToPropertyValueTransformer<>("byteProperty");
+        final TestBean testBean = new TestBean();
+        testBean.setByteProperty(expectedByteValue.byteValue());
+        assertEquals(expectedByteValue, transformer.apply(testBean));
+    }
+
+    /**
+     * Test transform with simple boolean property.
+     */
+    public void testTransformWithSimpleBooleanProperty() {
+        final BeanToPropertyValueTransformer<TestBean, Boolean> transformer =
+            new BeanToPropertyValueTransformer<>("booleanProperty");
+        final TestBean testBean = new 
TestBean(expectedBooleanValue.booleanValue());
+        assertEquals(expectedBooleanValue, transformer.apply(testBean));
+    }
+
+    /**
+     * Test transform with write only property.
+     */
+    public void testTransformWithWriteOnlyProperty() {
+        try {
+            new 
BeanToPropertyValueTransformer<>("writeOnlyProperty").apply(new TestBean());
+        } catch (final IllegalArgumentException e) {
+            /* This is what should happen */
+        }
+    }
+
+    /**
+     * Test transform with read only property.
+     */
+    public void testTransformWithReadOnlyProperty() {
+        final BeanToPropertyValueTransformer<TestBean, String> transformer =
+            new BeanToPropertyValueTransformer<>("readOnlyProperty");
+        final TestBean testBean = new TestBean();
+        assertEquals(testBean.getReadOnlyProperty(), 
transformer.apply(testBean));
+    }
+
+    /**
+     * Test transform with invalid property.
+     */
+    public void testTransformWithInvalidProperty() {
+        try {
+            new BeanToPropertyValueTransformer<>("bogusProperty").apply(new 
TestBean());
+        } catch (final IllegalArgumentException e) {
+            /* This is what should happen */
+        }
+    }
+
+    /**
+     * Test transform with nested property.
+     */
+    public void testTransformWithNestedProperty() {
+        final BeanToPropertyValueTransformer<TestBean, String> transformer =
+            new 
BeanToPropertyValueTransformer<>("anotherNested.stringProperty");
+        final TestBean testBean = new TestBean();
+        final TestBean nestedBean = new TestBean("foo");
+        testBean.setAnotherNested(nestedBean);
+        assertEquals("foo", transformer.apply(testBean));
+    }
+
+    /**
+     * Test transform with mapped property.
+     */
+    public void testTransformWithMappedProperty() {
+        BeanToPropertyValueTransformer<TestBean, String> transformer =
+            new BeanToPropertyValueTransformer<>("mappedProperty(test-key)");
+        final TestBean testBean = new TestBean();
+
+        // try a valid key
+        testBean.setMappedProperty("test-key", "test-value");
+        assertEquals("test-value", transformer.apply(testBean));
+
+        // now try an invalid key
+        transformer = new 
BeanToPropertyValueTransformer<>("mappedProperty(bogus-key)");
+        assertEquals(null, transformer.apply(testBean));
+    }
+
+    /**
+     * Test transform with indexed property.
+     */
+    public void testTransformWithIndexedProperty() {
+        BeanToPropertyValueTransformer<TestBean, Integer> transformer =
+            new BeanToPropertyValueTransformer<>("intIndexed[0]");
+        final TestBean testBean = new TestBean();
+        testBean.setIntIndexed(0, expectedIntegerValue.intValue());
+        assertEquals(expectedIntegerValue, transformer.apply(testBean));
+
+        // test index out of range
+        transformer = new BeanToPropertyValueTransformer<>("intIndexed[9999]");
+
+        try {
+            transformer.apply(testBean);
+            fail("Should have thrown an ArrayIndexOutOfBoundsException");
+        } catch (final ArrayIndexOutOfBoundsException e) {
+            /* this is what should happen */
+        }
+    }
+
+    /**
+     * Test transform with nested indexed property.
+     */
+    public void testTransformWithNestedIndexedProperty() {
+        final BeanToPropertyValueTransformer<TestBean, Integer> transformer =
+            new 
BeanToPropertyValueTransformer<>("anotherNested.intIndexed[0]");
+        final TestBean testBean = new TestBean();
+        final TestBean nestedBean = new TestBean();
+        nestedBean.setIntIndexed(0, expectedIntegerValue.intValue());
+        testBean.setAnotherNested(nestedBean);
+        assertEquals(expectedIntegerValue, transformer.apply(testBean));
+    }
+
+    /**
+     * Test transform with null in property path.
+     */
+    public void testTransformWithNullInPath() {
+        final BeanToPropertyValueTransformer<TestBean, String> transformer =
+            new 
BeanToPropertyValueTransformer<>("anotherNested.stringProperty");
+
+        try {
+            transformer.apply(new TestBean());
+            fail("Should have throw IllegalArgumentException");
+        } catch (final IllegalArgumentException e) {
+            /* ignore this is what should happen */
+        }
+    }
+
+    /**
+     * Test transform with null in property path and ignore = true.
+     */
+    public void testTransformWithNullInPathAndIgnoreTrue() {
+        final BeanToPropertyValueTransformer<TestBean, String> transformer =
+            new 
BeanToPropertyValueTransformer<>("anotherNested.stringProperty",true);
+        assertEquals(null, transformer.apply(new TestBean()));
+    }
+}

Reply via email to