001
014
015 package com.liferay.portal.util;
016
017 import com.liferay.portal.kernel.util.MethodParameter;
018 import com.liferay.portal.kernel.util.MethodParametersResolver;
019
020 import java.lang.reflect.AccessibleObject;
021 import java.lang.reflect.Method;
022
023 import java.util.HashMap;
024 import java.util.Map;
025
026 import jodd.paramo.Paramo;
027
028
031 public class MethodParametersResolverImpl implements MethodParametersResolver {
032
033 @Override
034 public MethodParameter[] resolveMethodParameters(Method method) {
035 MethodParameter[] methodParameters = _methodParameters.get(method);
036
037 if (methodParameters != null) {
038 return methodParameters;
039 }
040
041 Class<?>[] methodParameterTypes = method.getParameterTypes();
042
043 jodd.paramo.MethodParameter[] joddMethodParameters =
044 Paramo.resolveParameters(method);
045
046 methodParameters = new MethodParameter[joddMethodParameters.length];
047
048 for (int i = 0; i < joddMethodParameters.length; i++) {
049 methodParameters[i] = new MethodParameter(
050 joddMethodParameters[i].getName(),
051 joddMethodParameters[i].getSignature(),
052 methodParameterTypes[i], true);
053 }
054
055 _methodParameters.put(method, methodParameters);
056
057 return methodParameters;
058 }
059
060 private Map<AccessibleObject, MethodParameter[]> _methodParameters =
061 new HashMap<AccessibleObject, MethodParameter[]>();
062
063 }