Package org.codehaus.groovy.runtime
Class MethodRankHelper
java.lang.Object
org.codehaus.groovy.runtime.MethodRankHelper
public class MethodRankHelper extends Object
Utility class for MissingMethodException, MissingPropertyException etc.
This class contains methods assisting in ranking and listing probable intended
methods/fields when a exception is thrown.
-
Field Summary
Fields Modifier and Type Field Description static int
DL_CASE
static int
DL_DELETE
static int
DL_SUBSTITUTION
static int
DL_TRANSPOSITION
static int
MAX_CONSTRUCTOR_SCORE
static int
MAX_FIELD_SCORE
static int
MAX_METHOD_SCORE
static int
MAX_RECOMENDATIONS
-
Constructor Summary
Constructors Constructor Description MethodRankHelper()
-
Method Summary
Modifier and Type Method Description protected static Class
boxVar(Class c)
If c is a primitive class this method returns a boxed version otherwise c is returned.static int
damerauLevenshteinDistance(Object[] s, Object[] t)
This is a implementation of DL distance between two Object arrays instead of character streams.static int
delDistance(CharSequence s, CharSequence t)
This is a slightly modified version of the Damerau Levenshtein distance algorithm.static String
getConstructorSuggestionString(Class type, Object[] arguments)
Returns a string detailing possible solutions to a missing constructor if no good solutions can be found a empty string is returned.static String
getMethodSuggestionString(String methodName, Class type, Object[] arguments)
Returns a string detailing possible solutions to a missing method if no good solutions can be found a empty string is returned.static String
getPropertySuggestionString(String fieldName, Class type)
Returns a string detailing possible solutions to a missing field or property if no good solutions can be found a empty string is returned.
-
Field Details
-
DL_SUBSTITUTION
public static final int DL_SUBSTITUTION- See Also:
- Constant Field Values
-
DL_DELETE
public static final int DL_DELETE- See Also:
- Constant Field Values
-
DL_TRANSPOSITION
public static final int DL_TRANSPOSITION- See Also:
- Constant Field Values
-
DL_CASE
public static final int DL_CASE- See Also:
- Constant Field Values
-
MAX_RECOMENDATIONS
public static final int MAX_RECOMENDATIONS- See Also:
- Constant Field Values
-
MAX_METHOD_SCORE
public static final int MAX_METHOD_SCORE- See Also:
- Constant Field Values
-
MAX_CONSTRUCTOR_SCORE
public static final int MAX_CONSTRUCTOR_SCORE- See Also:
- Constant Field Values
-
MAX_FIELD_SCORE
public static final int MAX_FIELD_SCORE- See Also:
- Constant Field Values
-
-
Constructor Details
-
MethodRankHelper
public MethodRankHelper()
-
-
Method Details
-
getMethodSuggestionString
Returns a string detailing possible solutions to a missing method if no good solutions can be found a empty string is returned.- Parameters:
methodName
- the name of the method that doesn't existtype
- the class on which the method is invokedarguments
- the arguments passed to the method- Returns:
- a string with probable solutions to the exception
-
getConstructorSuggestionString
Returns a string detailing possible solutions to a missing constructor if no good solutions can be found a empty string is returned.- Parameters:
arguments
- the arguments passed to the constructortype
- the class on which the constructor is invoked- Returns:
- a string with probable solutions to the exception
-
getPropertySuggestionString
Returns a string detailing possible solutions to a missing field or property if no good solutions can be found a empty string is returned.- Parameters:
fieldName
- the missing fieldtype
- the class on which the field is sought- Returns:
- a string with probable solutions to the exception
-
boxVar
If c is a primitive class this method returns a boxed version otherwise c is returned. In java 1.5 this can be simplified thanks to the Type class.- Parameters:
c
-- Returns:
- a boxed version of c if c can be boxed, else c
-
delDistance
This is a slightly modified version of the Damerau Levenshtein distance algorithm. It has a additional test to see if a character has switched case, in the original algorithm this counts as a substitution. The "cost" for a substitution is given as 10 instead of 1 in this version, this enables transpositions and case modifications to have a lower cost than substitutions. Currently the lowercase versions of t_j and s_i isn't cached, its probable that some speed could be gained from this. This version is based on Chas Emerick's implementation of Levenshtein Distance for jakarta commons.- Parameters:
s
- a CharSequencet
- the CharSequence to be compared to s- Returns:
- a value representing the edit distance between s and t
-
damerauLevenshteinDistance
This is a implementation of DL distance between two Object arrays instead of character streams. The objects are compared using their equals method. No objects may be null. This implementation is based on Chas Emerick's implementation of Levenshtein Distance for jakarta commons.- Parameters:
s
- an Object arrayt
- this array is compared to s- Returns:
- the edit distance between the two arrays
-