question: public boolean invokeVelocimacro ( String vmName , String logTag , String params [ ] , Context context , Writer writer ) throws Exception { if ( vmName == null || params == null || context == null || writer == null || logTag == null ) { ri . error ( "VelocityEngine.invokeVelocimacro() : invalid parameter" ) ; return false ; } if ( ! ri . isVelocimacro ( vmName , logTag ) ) { ri . error ( "VelocityEngine.invokeVelocimacro() : VM '" + vmName + "' not registered." ) ; return false ; } StringBuffer construct = new StringBuffer ( "#" ) ; construct . append ( vmName ) ; construct . append ( "(" ) ; for ( int i = 0 ; i < params . length ; i ++ ) { construct . append ( " $" ) ; construct . append ( params [ i ] ) ; } construct . append ( " )" ) ; try { boolean retval = evaluate ( context , writer , logTag , construct . toString ( ) ) ; return retval ; } catch ( Exception e ) { ri . error ( "VelocityEngine.invokeVelocimacro() : error " + e ) ; throw e ; } }
target:  Invokes a currently registered Velocimacro with the parms provided and places the rendered stream into the writer. Note : currently only accepts args to the VM if they are in the context. 