org.codehaus.groovy.runtime
Class MethodRankHelper

java.lang.Object
  extended by org.codehaus.groovy.runtime.MethodRankHelper

public class MethodRankHelper
extends Object

Utility class for MissingMethodException, MissingProperyException etc. This class contains methods assisting in ranking and listing probable intended methods/fields when a exception is thrown.

Author:
Hjalmar Ekengren

Field Summary
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
MethodRankHelper()
           
 
Method Summary
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 missning field or property if no good solutions can be found a empty string is returned.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

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 Detail

MethodRankHelper

public MethodRankHelper()
Method Detail

getMethodSuggestionString

public 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.

Parameters:
methodName - the name of the method that doesn't exist
type - the class on which the method is invoked
arguments - the arguments passed to the method
Returns:
a string with probable solutions to the exception

getConstructorSuggestionString

public 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.

Parameters:
arguments - the arguments passed to the constructor
type - the class on which the constructor is invoked
Returns:
a string with probable solutions to the exception

getPropertySuggestionString

public static String getPropertySuggestionString(String fieldName,
                                                 Class type)
Returns a string detailing possible solutions to a missning field or property if no good solutions can be found a empty string is returned.

Parameters:
fieldname - the missing field
type - the class on which the field is sought
Returns:
a string with probable solutions to the exception

boxVar

protected static Class boxVar(Class c)
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

public static int delDistance(CharSequence s,
                              CharSequence t)
This is a slightly modified version of the Damerau Levenshtein distance algorithm. It has a additional test to see if a charackter 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 isnt cached, its probable that some speed could be gained from this. This version is based on Chas Emerick's implementation of Lenenshtein Distance for jakarta commons.

Parameters:
s - a CharSequence
t - the CharSequence to be compared to s
Returns:
a value representing the edit distance between s and t

damerauLevenshteinDistance

public static int damerauLevenshteinDistance(Object[] s,
                                             Object[] t)
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 Lenenshtein Distance for jakarta commons.

Parameters:
s - a Object array
t - this array is compared to s
Returns:
the edit distance between the two arrays

Copyright © 2003-2009 The Codehaus. All rights reserved.