/*
 * Hibernate, Relational Persistence for Idiomatic Java
 *
 * Copyright (c) 2011, Red Hat Inc. or third-party contributors as
 * indicated by the @author tags or express copyright attribution
 * statements applied by the authors.  All third-party contributions are
 * distributed under license by Red Hat Inc.
 *
 * This copyrighted material is made available to anyone wishing to use, modify,
 * copy, or redistribute it subject to the terms and conditions of the GNU
 * Lesser General Public License, as published by the Free Software Foundation.
 *
 * This program 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.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this distribution; if not, write to:
 * Free Software Foundation, Inc.
 * 51 Franklin Street, Fifth Floor
 * Boston, MA  02110-1301  USA
 */
package org.hibernate.metamodel.source.annotations;

import java.beans.Introspector;
import java.lang.reflect.Field;
import java.lang.reflect.Member;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;

Some helper methods for reflection tasks
Author:Hardy Ferentschik
/** * Some helper methods for reflection tasks * * @author Hardy Ferentschik */
public class ReflectionHelper { private ReflectionHelper() { }
Process bean properties getter by applying the JavaBean naming conventions.
Params:
  • member – the member for which to get the property name.
Returns:The bean method name with the "is" or "get" prefix stripped off, null the method name id not according to the JavaBeans standard.
/** * Process bean properties getter by applying the JavaBean naming conventions. * * @param member the member for which to get the property name. * * @return The bean method name with the "is" or "get" prefix stripped off, {@code null} * the method name id not according to the JavaBeans standard. */
public static String getPropertyName(Member member) { String name = null; if ( member instanceof Field ) { name = member.getName(); } if ( member instanceof Method ) { String methodName = member.getName(); if ( methodName.startsWith( "is" ) ) { name = Introspector.decapitalize( methodName.substring( 2 ) ); } else if ( methodName.startsWith( "has" ) ) { name = Introspector.decapitalize( methodName.substring( 3 ) ); } else if ( methodName.startsWith( "get" ) ) { name = Introspector.decapitalize( methodName.substring( 3 ) ); } } return name; } public static boolean isProperty(Member m) { if ( m instanceof Method ) { Method method = (Method) m; return !method.isSynthetic() && !method.isBridge() && !Modifier.isStatic( method.getModifiers() ) && method.getParameterTypes().length == 0 && ( method.getName().startsWith( "get" ) || method.getName().startsWith( "is" ) ); } else { return !Modifier.isTransient( m.getModifiers() ) && !m.isSynthetic(); } } }