You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by sebb <se...@gmail.com> on 2008/02/20 12:07:36 UTC

Re: svn commit: r629391 - in /commons/proper/configuration/branches/configuration2_experimental: src/main/java/org/apache/commons/configuration2/ src/main/java/org/apache/commons/configuration2/beanutils/ xdocs/

On 20/02/2008, ebourg@apache.org <eb...@apache.org> wrote:
> Author: ebourg
> Date: Wed Feb 20 01:16:32 2008
> New Revision: 629391
>
> URL: http://svn.apache.org/viewvc?rev=629391&view=rev
> Log:
> BeanUtils is no longer required to use DefaultConfigurationBuilder

The removal of BeanUtils was not the only change.

Best to use separate commits for independent changes; if not, please
use a log message that reflects all the actual updates.

>
> Modified:
>     commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/PropertyConverter.java
>     commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/beanutils/BeanHelper.java
>     commons/proper/configuration/branches/configuration2_experimental/xdocs/dependencies.xml
>
> Modified: commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/PropertyConverter.java
> URL: http://svn.apache.org/viewvc/commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/PropertyConverter.java?rev=629391&r1=629390&r2=629391&view=diff
> ==============================================================================
> --- commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/PropertyConverter.java (original)
> +++ commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/PropertyConverter.java Wed Feb 20 01:16:32 2008
> @@ -90,8 +90,7 @@
>       * @since 1.5
>       */
>      @SuppressWarnings("unchecked")
> -    static <T> T to(Class<T> cls, Object value, Object[] params)
> -            throws ConversionException
> +    public static <T> T to(Class<T> cls, Object value, Object... params) throws ConversionException
>      {
>          Object result = null;
>
> @@ -175,7 +174,7 @@
>                      + cls.getName() + " object");
>          }
>
> -        return cls.cast(result);
> +        return (T) result;
>      }
>
>      /**
>
> Modified: commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/beanutils/BeanHelper.java
> URL: http://svn.apache.org/viewvc/commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/beanutils/BeanHelper.java?rev=629391&r1=629390&r2=629391&view=diff
> ==============================================================================
> --- commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/beanutils/BeanHelper.java (original)
> +++ commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/beanutils/BeanHelper.java Wed Feb 20 01:16:32 2008
> @@ -14,18 +14,20 @@
>   * See the License for the specific language governing permissions and
>   * limitations under the License.
>   */
> +
>  package org.apache.commons.configuration2.beanutils;
>
> -import java.lang.reflect.InvocationTargetException;
> +import java.beans.BeanInfo;
> +import java.beans.Introspector;
> +import java.beans.PropertyDescriptor;
>  import java.util.Collections;
>  import java.util.HashMap;
>  import java.util.Iterator;
>  import java.util.Map;
>  import java.util.Set;
>
> -import org.apache.commons.beanutils.BeanUtils;
> -import org.apache.commons.beanutils.PropertyUtils;
>  import org.apache.commons.configuration2.ConfigurationRuntimeException;
> +import org.apache.commons.configuration2.PropertyConverter;
>  import org.apache.commons.lang.ClassUtils;
>
>  /**
> @@ -177,7 +179,7 @@
>      }
>
>      /**
> -     * Sets a property on the given bean using Common Beanutils.
> +     * Sets a property on the given bean.
>       *
>       * @param bean the bean
>       * @param propName the name of the property
> @@ -185,25 +187,41 @@
>       * @throws ConfigurationRuntimeException if the property is not writeable or
>       * an error occurred
>       */
> -    private static void initProperty(Object bean, String propName, Object value)
> -            throws ConfigurationRuntimeException
> +    private static void initProperty(Object bean, String propName, Object value) throws ConfigurationRuntimeException
>      {
> -        if (!PropertyUtils.isWriteable(bean, propName))
> -        {
> -            throw new ConfigurationRuntimeException("Property " + propName + " cannot be set!");
> -        }
> -
>          try
>          {
> -            BeanUtils.setProperty(bean, propName, value);
> +            // find the descriptor for the property requested
> +            BeanInfo info = Introspector.getBeanInfo(bean.getClass());
> +            PropertyDescriptor[] descriptors = info.getPropertyDescriptors();
> +            PropertyDescriptor descriptor =  null;
> +            for (PropertyDescriptor d : descriptors)
> +            {
> +                if (d.getName().equals(propName))
> +                {
> +                    descriptor = d;
> +                    break;
> +                }
> +            }
> +
> +            // check if the property is writeable
> +            if (descriptor == null || descriptor.getWriteMethod() == null)
> +            {
> +                throw new ConfigurationRuntimeException("Property " + propName + " cannot be set!");
> +            }
> +
> +            // set the property
> +            Class type = descriptor.getPropertyType();
> +            Object convertedValue = type.isAssignableFrom(value.getClass()) ? value : PropertyConverter.to(type, value);
> +            descriptor.getWriteMethod().invoke(bean, convertedValue);
>          }
> -        catch (IllegalAccessException iaex)
> +        catch (ConfigurationRuntimeException e)
>          {
> -            throw new ConfigurationRuntimeException(iaex);
> +            throw e;
>          }

The above catch clause is now redundant - why not remove it entirely?

> -        catch (InvocationTargetException itex)
> +        catch (Exception e)
>          {
> -            throw new ConfigurationRuntimeException(itex);
> +            throw new ConfigurationRuntimeException("Unable to set the property " + propName + " to '" + value + "'", e);
>          }
>      }
>
>
> Modified: commons/proper/configuration/branches/configuration2_experimental/xdocs/dependencies.xml
> URL: http://svn.apache.org/viewvc/commons/proper/configuration/branches/configuration2_experimental/xdocs/dependencies.xml?rev=629391&r1=629390&r2=629391&view=diff
> ==============================================================================
> --- commons/proper/configuration/branches/configuration2_experimental/xdocs/dependencies.xml (original)
> +++ commons/proper/configuration/branches/configuration2_experimental/xdocs/dependencies.xml Wed Feb 20 01:16:32 2008
> @@ -59,10 +59,6 @@
>                          </td>
>                      </tr>
>                      <tr>
> -                        <td>DefaultConfigurationBuilder</td>
> -                        <td>commons-beanutils</td>
> -                    </tr>
> -                    <tr>
>                          <td>ConfigurationDynaBean</td>
>                          <td>commons-beanutils</td>
>                      </tr>
>
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org


Re: svn commit: r629391 - in /commons/proper/configuration/branches/configuration2_experimental: src/main/java/org/apache/commons/configuration2/ src/main/java/org/apache/commons/configuration2/beanutils/ xdocs/

Posted by Emmanuel Bourg <eb...@apache.org>.
sebb a écrit :

> The method signature was also changed to public - was this intended?

Yes this was necessary to access the method from the beanutils package.

Emmanuel Bourg

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org


Re: svn commit: r629391 - in /commons/proper/configuration/branches/configuration2_experimental: src/main/java/org/apache/commons/configuration2/ src/main/java/org/apache/commons/configuration2/beanutils/ xdocs/

Posted by sebb <se...@gmail.com>.
On 20/02/2008, Emmanuel Bourg <eb...@apache.org> wrote:
> sebb a écrit :
>
> > The removal of BeanUtils was not the only change.
> >
> > Best to use separate commits for independent changes; if not, please
> > use a log message that reflects all the actual updates.
>
> Actually the change to PropertyConverter was related to this removal to
> avoid a ClassCastException, this exception didn't occur anywhere else
> but from the code that replaced beanutils.
>

It may have been related, but it was certainly not obvious from the
log message or from the other diffs.

The method signature was also changed to public - was this intended?

> Emmanuel Bourg
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
> For additional commands, e-mail: dev-help@commons.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org


Re: svn commit: r629391 - in /commons/proper/configuration/branches/configuration2_experimental: src/main/java/org/apache/commons/configuration2/ src/main/java/org/apache/commons/configuration2/beanutils/ xdocs/

Posted by Emmanuel Bourg <eb...@apache.org>.
sebb a écrit :

> The removal of BeanUtils was not the only change.
> 
> Best to use separate commits for independent changes; if not, please
> use a log message that reflects all the actual updates.

Actually the change to PropertyConverter was related to this removal to 
avoid a ClassCastException, this exception didn't occur anywhere else 
but from the code that replaced beanutils.

Emmanuel Bourg

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org