All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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());
        }
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy