package ch.qos.logback.core.joran.util.beans;

import java.lang.reflect.Method;

Encapsulates utility methods associated with standard java beans.
Author:urechm
/** * Encapsulates utility methods associated with standard java beans. * @author urechm */
public class BeanUtil { //public static final BeanUtil SINGLETON = new BeanUtil(); public static final String PREFIX_GETTER_IS = "is"; public static final String PREFIX_GETTER_GET = "get"; public static final String PREFIX_SETTER = "set"; public static final String PREFIX_ADDER = "add";
Params:
  • method – to check if it is an 'adder' method.
Returns:true if the given method is an 'adder' method.
/** * * @param method to check if it is an 'adder' method. * @return true if the given method is an 'adder' method. */
static public boolean isAdder(Method method) { int parameterCount = getParameterCount(method); if (parameterCount != 1) { return false; } Class<?> returnType = method.getReturnType(); if (returnType != void.class) { return false; } String methodName = method.getName(); return methodName.startsWith(PREFIX_ADDER); }
Params:
  • method – to check if it is a standard java beans getter.
Returns:true if the given method is a standard java beans getter.
/** * * @param method to check if it is a standard java beans getter. * @return true if the given method is a standard java beans getter. */
static public boolean isGetter(Method method) { int parameterCount = getParameterCount(method); if (parameterCount > 0) { return false; } Class<?> returnType = method.getReturnType(); if (returnType == void.class) { return false; } String methodName = method.getName(); if (!methodName.startsWith(PREFIX_GETTER_GET) && !methodName.startsWith(PREFIX_GETTER_IS)) { return false; } if (methodName.startsWith(PREFIX_GETTER_IS)) { if (!returnType.equals(boolean.class) && !returnType.equals(Boolean.class)) { return false; } } return true; } static private int getParameterCount(Method method) { return method.getParameterTypes().length; }
Params:
  • method – to check if it is a standard java beans setter.
Returns:true if the given method is a standard java beans setter.
/** * * @param method to check if it is a standard java beans setter. * @return true if the given method is a standard java beans setter. */
static public boolean isSetter(Method method) { int parameterCount = getParameterCount(method); if (parameterCount != 1) { return false; } Class<?> returnType = method.getReturnType(); if (returnType != void.class) { return false; } String methodName = method.getName(); if (!methodName.startsWith(PREFIX_SETTER)) { return false; } return true; }
Params:
  • method – to get the associated property name for.
Returns:The property name of the associated property if the given method matches a standard java beans getter or setter.
/** * @param method to get the associated property name for. * @return The property name of the associated property if the given method matches a standard java beans getter or setter. */
static public String getPropertyName(Method method) { String methodName = method.getName(); String rawPropertyName = getSubstringIfPrefixMatches(methodName, PREFIX_GETTER_GET); if (rawPropertyName == null) { rawPropertyName = getSubstringIfPrefixMatches(methodName, PREFIX_SETTER); } if (rawPropertyName == null) { rawPropertyName = getSubstringIfPrefixMatches(methodName, PREFIX_GETTER_IS); } if (rawPropertyName == null) { rawPropertyName = getSubstringIfPrefixMatches(methodName, PREFIX_ADDER); } return toLowerCamelCase(rawPropertyName); }
Converts the given String into lower camel case form.
Params:
  • string – to decapitalize.
Returns:null if the given String is null. Emtpy string if the given string is empty. The given string if the first two consecutive letters are in upper case. The given string with the first letter in lower case otherwise, which might be the given string.
/** * Converts the given String into lower camel case form. * @param string to decapitalize. * @return null if the given String is null. * Emtpy string if the given string is empty. * The given string if the first two consecutive letters are in upper case. * The given string with the first letter in lower case otherwise, which might be the given string. */
static public String toLowerCamelCase(String string) { if (string == null) { return null; } if (string.isEmpty()) { return string; } if (string.length() > 1 && Character.isUpperCase(string.charAt(1)) && Character.isUpperCase(string.charAt(0))) { return string; } char chars[] = string.toCharArray(); chars[0] = Character.toLowerCase(chars[0]); return new String(chars); } static private String getSubstringIfPrefixMatches(String wholeString, String prefix) { if (wholeString.startsWith(prefix)) { return wholeString.substring(prefix.length()); } return null; } }