Checks whether the property is editable or not. - Java Reflection

Java examples for Reflection:Property

Description

Checks whether the property is editable or not.

Demo Code

/**   /*ww  w.j  av a2 s .c om*/
 *  Copyright (c) 2005-2014 VedantaTree all rights reserved.
 * 
 *  This file is part of ExpressionOasis.
 *
 *  ExpressionOasis is free software. You can redistribute it and/or modify
 *  it under the terms of the GNU Lesser General Public License as published by
 *  the Free Software Foundation, either version 3 of the License, or
 *  (at your option) any later version.
 *
 *  ExpressionOasis 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. IN NO EVENT SHALL 
 *  THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES 
 *  OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 
 *  ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE 
 *  OR OTHER DEALINGS IN THE SOFTWARE.See the GNU Lesser General Public License 
 *  for more details.
 *
 *  You should have received a copy of the GNU Lesser General Public License
 *  along with ExpressionOasis. If not, see <http://www.gnu.org/licenses/>.
 *  
 *  Please consider to contribute any enhancements to upstream codebase. 
 *  It will help the community in getting improved code and features, and 
 *  may help you to get the later releases with your changes.
 */
//package com.java2s;
import java.beans.BeanInfo;
import java.beans.IntrospectionException;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;

public class Main {

    /**
     * Checks whether the property is editable or not. Generally it checks
     * whether the mutator is available for this property or not. A property is
     * editable iff the property mutator is available.
     * 
     * @param beanClass the class of bean whose property is being inspecting.
     * @param property the name of property to inspect.
     * @return Returns <code>true</code> if the property is editable else <code>false</code>
     * @throws IntrospectionException
     */
    public static final boolean isPropertyEditable(Class beanClass,
            String property) throws IntrospectionException {
        // Gets the property descriptor for given property
        PropertyDescriptor descriptor = getPropertyDescriptor(beanClass,
                property);
        return descriptor == null ? false
                : descriptor.getWriteMethod() != null;
    }

    /**
     * Gets the property descriptor for the property name from given class.
     * 
     * @param beanClass the class of bean
     * @param property the name of property.
     * @return the property descriptor if property name found else return <code>null</code>.
     * @throws IntrospectionException
     */
    public static final PropertyDescriptor getPropertyDescriptor(
            Class beanClass, String property) throws IntrospectionException {
        BeanInfo beanInfo = Introspector.getBeanInfo(beanClass);
        PropertyDescriptor[] descriptors = beanInfo
                .getPropertyDescriptors();
        int length = descriptors == null ? 0 : descriptors.length;
        for (int i = 0; i < length; i++) {
            if (descriptors[i].getDisplayName().equals(property)) {
                return descriptors[i];
            }
        }
        return null;
    }
}

Related Tutorials