Package org.springframework.batch.item.adapter

# Class AbstractMethodInvokingDelegator<T>

java.lang.Object
org.springframework.batch.item.adapter.AbstractMethodInvokingDelegator<T>

All Implemented Interfaces:
  `org.springframework.beans.factory.InitializingBean`

Direct Known Subclasses:
  `ItemProcessorAdapter`, `ItemReaderAdapter`, `ItemWriterAdapter`, `MethodInvokingTaskletAdapter`, `PropertyExtractingDelegatingItemWriter`

public abstract class AbstractMethodInvokingDelegator<T> extends Object implements org.springframework.beans.factory.InitializingBean
Superclass for delegating classes which dynamically call a custom method of injected object. Provides convenient API for dynamic method invocation shielding subclasses from low-level details and exception handling. `Exception`s thrown by a successfully invoked delegate method are re-thrown without wrapping. In case the delegate method throws a `Throwable` that doesn't subclass `Exception` it will be wrapped by `AbstractMethodInvokingDelegator.InvocationTargetThrowableWrapper`.

Author:
  Robert Kasanicky, Mahmoud Ben Hassine

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Class
  Description
  `static class`
  `AbstractMethodInvokingDelegator.InvocationTargetThrowableWrapper`
  Used to wrap a `Throwable` (not an `Exception`) thrown by a reflectively-invoked delegate.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `AbstractMethodInvokingDelegator()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `afterPropertiesSet()`
  `protected Object[]`
  `getArguments()`
  Return arguments.
  `protected T`
  `invokeDelegateMethod()`
  Invoker the target method with arguments set by `setArguments(Object[])`.
  `protected T`
  `invokeDelegateMethodWithArgument(Object object)`
  Invokes the target method with given argument.
  `protected T`
  `invokeDelegateMethodWithArguments(Object[] args)`
  Invokes the target method with given arguments.
  `void`
  `setArguments(Object[] arguments)`
  `void`
  `setTargetMethod(String targetMethod)`
  `void`
  `setTargetObject(Object targetObject)`

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

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

- ## Constructor Details

  - ### AbstractMethodInvokingDelegator

    public AbstractMethodInvokingDelegator()

- ## Method Details

  - ### invokeDelegateMethod

    protected T invokeDelegateMethod() throws Exception
    Invoker the target method with arguments set by `setArguments(Object[])`.
    Returns:
      object returned by invoked method
    Throws:
      `Exception` - exception thrown when executing the delegate method.

  - ### invokeDelegateMethodWithArgument

    protected T invokeDelegateMethodWithArgument(Object object) throws Exception
    Invokes the target method with given argument.
    Parameters:
      `object` - argument for the target method
    Returns:
      object returned by target method
    Throws:
      `Exception` - exception thrown when executing the delegate method.

  - ### invokeDelegateMethodWithArguments

    protected T invokeDelegateMethodWithArguments(Object[] args) throws Exception
    Invokes the target method with given arguments.
    Parameters:
      `args` - arguments for the invoked method
    Returns:
      object returned by invoked method
    Throws:
      `Exception` - exception thrown when executing the delegate method.

  - ### afterPropertiesSet

    public void afterPropertiesSet() throws Exception
    Specified by:
      `afterPropertiesSet` in interface `org.springframework.beans.factory.InitializingBean`
    Throws:
      `Exception`

  - ### setTargetObject

    public void setTargetObject(Object targetObject)
    Parameters:
      `targetObject` - the delegate - bean id can be used to set this value in Spring configuration

  - ### setTargetMethod

    public void setTargetMethod(String targetMethod)
    Parameters:
      `targetMethod` - name of the method to be invoked on `setTargetObject(Object)`.

  - ### setArguments

    public void setArguments(Object[] arguments)
    Parameters:
      `arguments` - arguments values for the { `setTargetMethod(String)`. These will be used only when the subclass tries to invoke the target method without providing explicit argument values. If arguments are set to not-null value `afterPropertiesSet()` will check the values are compatible with target method's signature. In case arguments are null (not set) method signature will not be checked and it is assumed correct values will be supplied at runtime.

  - ### getArguments

    protected Object[] getArguments()
    Return arguments.
    Returns:
      arguments