Class SmartBinder


  • public class SmartBinder
    extends java.lang.Object
    Maintains both a Binder, for building a series of transformations, and a current Signature that maps symbolic names to arguments.
    • Field Detail

      • signatures

        private final java.util.List<Signature> signatures
      • binder

        private final Binder binder
    • Method Detail

      • binder

        public Binder binder()
      • from

        public static SmartBinder from​(java.lang.invoke.MethodHandles.Lookup lookup,
                                       Signature inbound)
      • fold

        public SmartBinder fold​(java.lang.String newName,
                                java.lang.invoke.MethodHandle function)
      • foldVoid

        public SmartBinder foldVoid​(java.lang.invoke.MethodHandle function)
      • foldStatic

        public SmartBinder foldStatic​(java.lang.String newName,
                                      java.lang.invoke.MethodHandles.Lookup lookup,
                                      java.lang.Class target,
                                      java.lang.String method)
      • foldStatic

        public SmartBinder foldStatic​(java.lang.String newName,
                                      java.lang.Class target,
                                      java.lang.String method)
      • foldVirtual

        public SmartBinder foldVirtual​(java.lang.String newName,
                                       java.lang.invoke.MethodHandles.Lookup lookup,
                                       java.lang.String method)
      • foldVirtual

        public SmartBinder foldVirtual​(java.lang.String newName,
                                       java.lang.String method)
      • permute

        public SmartBinder permute​(java.lang.String... targetNames)
      • exclude

        public SmartBinder exclude​(java.lang.String... excludeNames)
        Permute all parameters except the names given. Blacklisting to #permute's whitelisting.
        Parameters:
        excludeNames -
        Returns:
        a new SmartBinder
      • spread

        public SmartBinder spread​(java.lang.String[] spreadNames,
                                  java.lang.Class... spreadTypes)
        Spread a trailing Object[] into the specified argument types.
        Parameters:
        spreadTypes - the types into which to spread the incoming Object[]
        Returns:
        a new Binder
      • spread

        public SmartBinder spread​(java.lang.String baseName,
                                  int count)
      • insert

        public SmartBinder insert​(int index,
                                  java.lang.String name,
                                  java.lang.Object value)
      • insert

        public SmartBinder insert​(int index,
                                  java.lang.String name,
                                  boolean value)
      • insert

        public SmartBinder insert​(int index,
                                  java.lang.String name,
                                  byte value)
      • insert

        public SmartBinder insert​(int index,
                                  java.lang.String name,
                                  short value)
      • insert

        public SmartBinder insert​(int index,
                                  java.lang.String name,
                                  char value)
      • insert

        public SmartBinder insert​(int index,
                                  java.lang.String name,
                                  int value)
      • insert

        public SmartBinder insert​(int index,
                                  java.lang.String name,
                                  long value)
      • insert

        public SmartBinder insert​(int index,
                                  java.lang.String name,
                                  float value)
      • insert

        public SmartBinder insert​(int index,
                                  java.lang.String name,
                                  double value)
      • insert

        public SmartBinder insert​(int index,
                                  java.lang.String[] names,
                                  java.lang.Class[] types,
                                  java.lang.Object... values)
      • append

        public SmartBinder append​(java.lang.String name,
                                  java.lang.Object value)
      • append

        public SmartBinder append​(java.lang.String name,
                                  boolean value)
      • append

        public SmartBinder append​(java.lang.String name,
                                  byte value)
      • append

        public SmartBinder append​(java.lang.String name,
                                  short value)
      • append

        public SmartBinder append​(java.lang.String name,
                                  char value)
      • append

        public SmartBinder append​(java.lang.String name,
                                  int value)
      • append

        public SmartBinder append​(java.lang.String name,
                                  long value)
      • append

        public SmartBinder append​(java.lang.String name,
                                  float value)
      • append

        public SmartBinder append​(java.lang.String name,
                                  double value)
      • append

        public SmartBinder append​(java.lang.String[] names,
                                  java.lang.Class[] types,
                                  java.lang.Object... values)
      • prepend

        public SmartBinder prepend​(java.lang.String name,
                                   java.lang.Object value)
      • prepend

        public SmartBinder prepend​(java.lang.String name,
                                   boolean value)
      • prepend

        public SmartBinder prepend​(java.lang.String name,
                                   byte value)
      • prepend

        public SmartBinder prepend​(java.lang.String name,
                                   short value)
      • prepend

        public SmartBinder prepend​(java.lang.String name,
                                   char value)
      • prepend

        public SmartBinder prepend​(java.lang.String name,
                                   int value)
      • prepend

        public SmartBinder prepend​(java.lang.String name,
                                   long value)
      • prepend

        public SmartBinder prepend​(java.lang.String name,
                                   float value)
      • prepend

        public SmartBinder prepend​(java.lang.String name,
                                   double value)
      • prepend

        public SmartBinder prepend​(java.lang.String[] names,
                                   java.lang.Class[] types,
                                   java.lang.Object... values)
      • cast

        public SmartBinder cast​(java.lang.Class returnType,
                                java.lang.Class... argTypes)
      • castArg

        public SmartBinder castArg​(java.lang.String name,
                                   java.lang.Class type)
      • castReturn

        public SmartBinder castReturn​(java.lang.Class type)
      • filterReturn

        public SmartBinder filterReturn​(java.lang.invoke.MethodHandle filter)
      • invokeVirtualQuiet

        public SmartHandle invokeVirtualQuiet​(java.lang.invoke.MethodHandles.Lookup lookup,
                                              java.lang.String name)
      • invokeStaticQuiet

        public SmartHandle invokeStaticQuiet​(java.lang.invoke.MethodHandles.Lookup lookup,
                                             java.lang.Class target,
                                             java.lang.String name)
      • invoke

        public SmartHandle invoke​(java.lang.invoke.MethodHandle target)
      • invoker

        public SmartHandle invoker()
        Produce a SmartHandle from this binder that invokes a leading MethodHandle argument with the remaining arguments.
        Returns:
        a SmartHandle that invokes its leading MethodHandle argument