Class ApiMethodHelper<T extends Enum<T> & ApiMethod>

java.lang.Object
org.apache.camel.support.component.ApiMethodHelper<T>

public final class ApiMethodHelper<T extends Enum<T> & ApiMethod> extends Object
Helper class for working with ApiMethod.
  • Constructor Details

    • ApiMethodHelper

      public ApiMethodHelper(Class<T> apiMethodEnum, Map<String,String> aliases, List<String> nullableArguments)
      Create a helper to work with a ApiMethod, using optional method aliases.
      Parameters:
      apiMethodEnum - ApiMethod enumeration class
      aliases - Aliases mapped to actual method names
      nullableArguments - names of arguments that default to null value
  • Method Details

    • getCandidateMethods

      public List<ApiMethod> getCandidateMethods(String name)
      Gets methods that match the given name and arguments.

      Note that the args list is a required subset of arguments for returned methods.

      Parameters:
      name - case sensitive method name or alias to lookup
      Returns:
      non-null unmodifiable list of methods that take all of the given arguments, empty if there is no match
    • getCandidateMethods

      public List<ApiMethod> getCandidateMethods(String name, Collection<String> argNames)
      Gets methods that match the given name and arguments.

      Note that the args list is a required subset of arguments for returned methods.

      Parameters:
      name - case sensitive method name or alias to lookup
      argNames - unordered required argument names
      Returns:
      non-null unmodifiable list of methods that take all of the given arguments, empty if there is no match
    • filterMethods

      public List<ApiMethod> filterMethods(List<? extends ApiMethod> methods, ApiMethodHelper.MatchType matchType)
      Filters a list of methods to those that take the given set of arguments.
      Parameters:
      methods - list of methods to filter
      matchType - whether the arguments are an exact match, a subset or a super set of method args
      Returns:
      methods with arguments that satisfy the match type.

      For SUPER_SET match, if methods with exact match are found, methods that take a subset are ignored

    • filterMethods

      public List<ApiMethod> filterMethods(List<? extends ApiMethod> methods, ApiMethodHelper.MatchType matchType, Collection<String> argNames)
      Filters a list of methods to those that take the given set of arguments.
      Parameters:
      methods - list of methods to filter
      matchType - whether the arguments are an exact match, a subset or a super set of method args
      argNames - argument names to filter the list
      Returns:
      methods with arguments that satisfy the match type.

      For SUPER_SET match, if methods with exact match are found, methods that take a subset are ignored

    • getArguments

      public List<Object> getArguments(String name) throws IllegalArgumentException
      Gets argument types and names for all overloaded methods and aliases with the given name.
      Parameters:
      name - method name, either an exact name or an alias, exact matches are checked first
      Returns:
      list of arguments of the form Class type1, String name1, Class type2, String name2,...
      Throws:
      IllegalArgumentException
    • getMissingProperties

      public Set<String> getMissingProperties(String methodName, Set<String> argNames)
      Get missing properties.
      Parameters:
      methodName - method name
      argNames - available arguments
      Returns:
      Set of missing argument names
    • getAliases

      public Map<String,Set<String>> getAliases()
      Returns alias map.
      Returns:
      alias names mapped to method names.
    • allArguments

      public Map<String,Class<?>> allArguments()
      Returns argument types and names used by all methods.
      Returns:
      map with argument names as keys, and types as values
    • getNullableArguments

      public List<String> getNullableArguments()
      Returns argument names that can be set to null if not specified.
      Returns:
      list of argument names
    • getType

      public Class<?> getType(String argName) throws IllegalArgumentException
      Get the type for the given argument name.
      Parameters:
      argName - argument name
      Returns:
      argument type
      Throws:
      IllegalArgumentException
    • getHighestPriorityMethod

      public static ApiMethod getHighestPriorityMethod(List<? extends ApiMethod> filteredMethods)
    • invokeMethod

      public static Object invokeMethod(Object proxy, ApiMethod method, Map<String,Object> properties) throws org.apache.camel.RuntimeCamelException
      Invokes given method with argument values from given properties.
      Parameters:
      proxy - Proxy object for invoke
      method - method to invoke
      properties - Map of arguments
      Returns:
      result of method invocation
      Throws:
      org.apache.camel.RuntimeCamelException - on errors