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. Contains methods for assisting in ranking and listing probable intended methods/fields when an exception is thrown.

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final int`
  `DL_CASE`
  Cost for case change in Damerau-Levenshtein distance calculation.
  `static final int`
  `DL_DELETE`
  Cost for delete operation in Damerau-Levenshtein distance calculation (also used for insert).
  `static final int`
  `DL_SUBSTITUTION`
  Cost for substitution in Damerau-Levenshtein distance calculation.
  `static final int`
  `DL_TRANSPOSITION`
  Cost for transposition in Damerau-Levenshtein distance calculation.
  `static final int`
  `MAX_CONSTRUCTOR_SCORE`
  Maximum score threshold for constructor ranking.
  `static final int`
  `MAX_FIELD_SCORE`
  Maximum score threshold for field ranking.
  `static final int`
  `MAX_METHOD_SCORE`
  Maximum score threshold for method ranking.
  `static final int`
  `MAX_RECOMENDATIONS`
  Maximum number of method recommendations to suggest.

- ## 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 an 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 an 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 an empty string is returned.
  `static String`
  `getPropertySuggestionString(String name, Class type)`
  Returns a string detailing possible solutions to a missing field/property if no good solutions can be found an empty string is returned.

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Field Details

  - ### DL_CASE

    public static final int DL_CASE
    Cost for case change in Damerau-Levenshtein distance calculation.
    See Also:
      - Constant Field Values

  - ### DL_DELETE

    public static final int DL_DELETE
    Cost for delete operation in Damerau-Levenshtein distance calculation (also used for insert).
    See Also:
      - Constant Field Values

  - ### DL_SUBSTITUTION

    public static final int DL_SUBSTITUTION
    Cost for substitution in Damerau-Levenshtein distance calculation.
    See Also:
      - Constant Field Values

  - ### DL_TRANSPOSITION

    public static final int DL_TRANSPOSITION
    Cost for transposition in Damerau-Levenshtein distance calculation.
    See Also:
      - Constant Field Values

  - ### MAX_RECOMENDATIONS

    public static final int MAX_RECOMENDATIONS
    Maximum number of method recommendations to suggest.
    See Also:
      - Constant Field Values

  - ### MAX_METHOD_SCORE

    public static final int MAX_METHOD_SCORE
    Maximum score threshold for method ranking.
    See Also:
      - Constant Field Values

  - ### MAX_CONSTRUCTOR_SCORE

    public static final int MAX_CONSTRUCTOR_SCORE
    Maximum score threshold for constructor ranking.
    See Also:
      - Constant Field Values

  - ### MAX_FIELD_SCORE

    public static final int MAX_FIELD_SCORE
    Maximum score threshold for field ranking.
    See Also:
      - Constant Field Values

- ## Constructor Details

  - ### MethodRankHelper

    public MethodRankHelper()

- ## Method Details

  - ### 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 an 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 an 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 name, Class type)
    Returns a string detailing possible solutions to a missing field/property if no good solutions can be found an empty string is returned.
    Parameters:
      `name` - the missing field/property
      `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 an 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 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 an 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 array
      `t` - this array is compared to s
    Returns:
      the edit distance between the two arrays