@ Override public void execute ( FunctionContext < Object > functionContext ) { ResultSender < Object > sender = functionContext . getResultSender ( ) ; Cache cache = CacheFactory . getAnyInstance ( ) ; Logger logWriter = LogManager . getLogger ( getClass ( ) ) ; try { //export data String [ ] args = ( String [ ] ) functionContext . getArguments ( ) ; if ( args == null || args . length != 2 ) throw new FunctionException ( "Required array args: [region,extension]" ) ; String extensionArg = args [ 0 ] ; if ( extensionArg == null || extensionArg . length ( ) == 0 ) { throw new IllegalArgumentException ( "File extension required" ) ; } ExportFileType extension = ExportFileType . valueOf ( extensionArg ) ; String regionName = args [ 1 ] ; //TODO: accept multiple regions Region < Object , Object > region = cache . getRegion ( regionName ) ; if ( region == null ) { sender . lastResult ( null ) ; return ; } //TODO: get file from functions File file = new File ( new StringBuilder ( directoryPath ) . append ( "/" ) . append ( regionName ) . append ( "." ) . append ( extensionArg ) . toString ( ) ) ; //get server name String serverName = cache . getDistributedSystem ( ) . getDistributedMember ( ) . getName ( ) ; switch ( extension ) { case gfd : new GfdExportFunction ( ) . exportRegion ( region ) ; break ; default : throw new IllegalArgumentException ( "Unsupported extension file type:" + extension ) ; } Serializable content = readContent ( file , extension , logWriter ) ; Serializable [ ] arrayResults = { serverName , content , file . getAbsolutePath ( ) } ; sender . lastResult ( arrayResults ) ; } catch ( Exception e ) { String stackTrace = Debugger . stackTrace ( e ) ; logWriter . error ( stackTrace ) ; throw new FunctionException ( stackTrace ) ; } }
This function will use the JsonExportFunction function to export json data and read the results to be returned to callers