nl_tokens: Get an array of arguments suitable for a method invocation . This method did its best to fill the arguments array . The logic is simple : ignore query extra parameters and set to null the missing ones . Both cases are recorded to debug log . Returned arguments array has the same size as requested formal parameters array . <p > Parameter values from parsed { @link #parameters } are converted to requested type using { @link #asObject ( String Type ) } utility method . If formal parameters has a single type that has no converter uses reflection to map query parameters to object field by name . <p > Note that because parameter names are not preserved on run - time query parameters are mapped by position to invocation arguments . This means is caller responsibility to match formal parameters order and type with actual query string parameters .
pl_tokens: public Object [ ] getArguments ( Type [ ] formalParameters ) { if ( formalParameters . length == 0 ) { return new Object [ 0 ] ; } Object [ ] arguments = new Object [ formalParameters . length ] ; if ( isObject ( formalParameters ) ) { // if there is single formal parameter and it is not a value type create object instance and initialize fields from
   // request parameters; object class should have no arguments constructor
   Class < ? > type = ( Class < ? > ) formalParameters [ 0 ] ; Object object = Classes . newInstance ( type ) ; for ( Parameter parameter : parameters ) { Field field = Classes . getField ( type , Strings . toMemberName ( parameter . getName ( ) ) ) ; Classes . setFieldValue ( object , field , asObject ( parameter . getValue ( ) , field . getType ( ) ) ) ; } return new Object [ ] { object } ; } int i = 0 , argumentsCount = Math . <mask> ( formalParameters . length , parameters . size ( ) ) ; for ( i = 0 ; i < argumentsCount ; ++ i ) { arguments [ i ] = asObject ( parameters . get ( i ) . getValue ( ) , formalParameters [ i ] ) ; } for ( ; i < formalParameters . length ; ++ i ) { log . debug ( "Missing request parameter |%s|. Set it to null." , i , formalParameters [ i ] ) ; arguments [ i ] = null ; } for ( ; i < parameters . size ( ) ; ++ i ) { log . debug ( "Unused request parameter |%s|. Ignore it." , parameters . get ( i ) ) ; } return arguments ; }