org.dhatim.javabean.binding.model.get.BeanGetter Maven / Gradle / Ivy
/*
* Milyn - Copyright (C) 2006 - 2011
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License (version 2.1) as published by the Free Software
* Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
* See the GNU Lesser General Public License for more details:
* http://www.gnu.org/licenses/lgpl.txt
*/
package org.dhatim.javabean.binding.model.get;
import org.dhatim.javabean.binding.BeanSerializationException;
import org.dhatim.util.ClassUtil;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
/**
* Bean getter method.
*
* @author [email protected]
*/
public class BeanGetter implements Getter {
private Method getterMethod;
public BeanGetter(Class> beanClass, String property) {
getterMethod = ClassUtil.getGetterMethodByProperty(property, beanClass, null);
if(getterMethod == null) {
throw new IllegalStateException("Failed to get getter method for property '" + property + "' on bean type '" + beanClass.getName() + "'.");
}
}
public Object get(final T contextObject) throws BeanSerializationException {
try {
return getterMethod.invoke(contextObject);
} catch (IllegalArgumentException e) {
throw new BeanSerializationException("Error invoking bean getter method '" + getterMethod.getName() + "' on bean type '" + contextObject.getClass().getName() + "'.", e);
} catch (IllegalAccessException e) {
throw new BeanSerializationException("Error invoking bean getter method '" + getterMethod.getName() + "' on bean type '" + contextObject.getClass().getName() + "'.", e);
} catch (InvocationTargetException e) {
throw new BeanSerializationException("Error invoking bean getter method '" + getterMethod.getName() + "' on bean type '" + contextObject.getClass().getName() + "'.", e.getCause());
}
}
}