BeanUtils.java
Home
/
sm-shop /
src /
main /
java /
com /
salesmanager /
shop /
utils /
BeanUtils.java
package com.salesmanager.shop.utils;
import java.beans.BeanInfo;
import java.beans.IntrospectionException;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class BeanUtils
{
private BeanUtils(){
}
public static BeanUtils newInstance(){
return new BeanUtils();
}
@SuppressWarnings( "nls" )
public Object getPropertyValue( Object bean, String property )
throws IntrospectionException, IllegalArgumentException, IllegalAccessException, InvocationTargetException
{
if (bean == null) {
throw new IllegalArgumentException("No bean specified");
}
if(property == null){
throw new IllegalArgumentException("No name specified for bean class '" + bean.getClass() + "'");
}
Class<?> beanClass = bean.getClass();
PropertyDescriptor propertyDescriptor = getPropertyDescriptor( beanClass, property );
if ( propertyDescriptor == null )
{
throw new IllegalArgumentException( "No such property " + property + " for " + beanClass + " exists" );
}
Method readMethod = propertyDescriptor.getReadMethod();
if ( readMethod == null )
{
throw new IllegalStateException( "No getter available for property " + property + " on " + beanClass );
}
return readMethod.invoke( bean );
}
private PropertyDescriptor getPropertyDescriptor( Class<?> beanClass, String propertyname )
throws IntrospectionException
{
BeanInfo beanInfo = Introspector.getBeanInfo( beanClass );
PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
PropertyDescriptor propertyDescriptor = null;
for ( int i = 0; i < propertyDescriptors.length; i++ )
{
PropertyDescriptor currentPropertyDescriptor = propertyDescriptors[i];
if ( currentPropertyDescriptor.getName().equals( propertyname ) )
{
propertyDescriptor = currentPropertyDescriptor;
}
}
return propertyDescriptor;
}
}