Parse a method signature in the form methodName[([arg_list])],
where arg_list is an optional, comma-separated list of fully-qualified
type names, and attempts to resolve that signature against the supplied Class.

findMethod

Find a method with the given method name and the given parameter types,
declared on the given class or one of its superclasses. Prefers public methods,
but will return a protected, package access, or private method too.

Checks Class.getMethod first, falling back to
findDeclaredMethod. This allows to find public methods
without issues even in environments with restricted Java security settings.

findMethodWithMinimalParameters

Find a method with the given method name and minimal parameters (best case: none),
declared on the given class or one of its superclasses. Prefers public methods,
but will return a protected, package access, or private method too.

Checks Class.getMethods first, falling back to
findDeclaredMethodWithMinimalParameters. This allows for finding public
methods without issues even in environments with restricted Java security settings.

Parameters:

clazz - the class to check

methodName - the name of the method to find

Returns:

the Method object, or null if not found

Throws:

IllegalArgumentException - if methods of the given name were found but
could not be resolved to a unique method with minimal parameters

findDeclaredMethodWithMinimalParameters

Find a method with the given method name and minimal parameters (best case: none),
declared on the given class or one of its superclasses. Will return a public,
protected, package access, or private method.

resolveSignature

Parse a method signature in the form methodName[([arg_list])],
where arg_list is an optional, comma-separated list of fully-qualified
type names, and attempts to resolve that signature against the supplied Class.

When not supplying an argument list (methodName) the method whose name
matches and has the least number of parameters will be returned. When supplying an
argument type list, only the method whose name and argument types match will be returned.

Note then that methodName and methodName() are not
resolved in the same way. The signature methodName means the method called
methodName with the least number of arguments, whereas methodName()
means the method called methodName with exactly 0 arguments.

copyProperties

Copy the property values of the given source bean into the target bean.

Note: The source and target classes do not have to match or even be derived
from each other, as long as the properties match. Any bean properties that the
source bean exposes but the target bean does not will silently be ignored.

This is just a convenience method. For more complex transfer needs,
consider using a full BeanWrapper.

copyProperties

Copy the property values of the given source bean into the given target bean,
only setting properties defined in the given "editable" class (or interface).

Note: The source and target classes do not have to match or even be derived
from each other, as long as the properties match. Any bean properties that the
source bean exposes but the target bean does not will silently be ignored.

This is just a convenience method. For more complex transfer needs,
consider using a full BeanWrapper.

copyProperties

Copy the property values of the given source bean into the given target bean,
ignoring the given "ignoreProperties".

Note: The source and target classes do not have to match or even be derived
from each other, as long as the properties match. Any bean properties that the
source bean exposes but the target bean does not will silently be ignored.

This is just a convenience method. For more complex transfer needs,
consider using a full BeanWrapper.