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 java.lang.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

- - ### Nested Class Summary

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

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `AbstractMethodInvokingDelegator()`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `afterPropertiesSet()`
    `protected T` | `invokeDelegateMethod()` Invoker the target method with arguments set by `setArguments(Object[])`.
    `protected T` | `invokeDelegateMethodWithArgument(java.lang.Object object)` Invokes the target method with given argument.
    `protected T` | `invokeDelegateMethodWithArguments(java.lang.Object[] args)` Invokes the target method with given arguments.
    `void` | `setArguments(java.lang.Object[] arguments)`
    `void` | `setTargetMethod(java.lang.String targetMethod)`
    `void` | `setTargetObject(java.lang.Object targetObject)`

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

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

- - ### Constructor Detail

    - #### AbstractMethodInvokingDelegator

          public AbstractMethodInvokingDelegator()

  - ### Method Detail

    - #### invokeDelegateMethod

          protected T invokeDelegateMethod()
                                    throws java.lang.Exception

      Invoker the target method with arguments set by `setArguments(Object[])`.
      Returns:
        object returned by invoked method
      Throws:
        `DynamicMethodInvocationException` - if the `MethodInvoker` used throws exception
        `java.lang.Exception`

    - #### invokeDelegateMethodWithArgument

          protected T invokeDelegateMethodWithArgument(java.lang.Object object)
                                                throws java.lang.Exception

      Invokes the target method with given argument.
      Parameters:
        `object` - argument for the target method
      Returns:
        object returned by target method
      Throws:
        `DynamicMethodInvocationException` - if the `MethodInvoker` used throws exception
        `java.lang.Exception`

    - #### invokeDelegateMethodWithArguments

          protected T invokeDelegateMethodWithArguments(java.lang.Object[] args)
                                                 throws java.lang.Exception

      Invokes the target method with given arguments.
      Parameters:
        `args` - arguments for the invoked method
      Returns:
        object returned by invoked method
      Throws:
        `DynamicMethodInvocationException` - if the `MethodInvoker` used throws exception
        `java.lang.Exception`

    - #### afterPropertiesSet

          public void afterPropertiesSet()
                                  throws java.lang.Exception

      Specified by:
        `afterPropertiesSet` in interface `org.springframework.beans.factory.InitializingBean`
      Throws:
        `java.lang.Exception`

    - #### setTargetObject

          public void setTargetObject(java.lang.Object targetObject)

      Parameters:
        `targetObject` - the delegate - bean id can be used to set this value in Spring configuration

    - #### setTargetMethod

          public void setTargetMethod(java.lang.String targetMethod)

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

    - #### setArguments

          public void setArguments(java.lang.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.