static void interceptWritingFiles( Properties props, File outputDirectory ) throws IOException {

		if( outputDirectory == null )
			return;

		Logger logger = Logger.getLogger( UserDataHelpers.class.getName());
		Set<String> keys = props.stringPropertyNames();
		for( final String key : keys ) {
			if( ! key.startsWith( ENCODE_FILE_CONTENT_PREFIX ))
				continue;

			// Get the file content
			String encodedFileContent = props.getProperty( key );
			String realKey = key.substring( ENCODE_FILE_CONTENT_PREFIX.length());
			if( encodedFileContent == null ) {
				logger.fine( "No file content was provided for " + realKey + ". Skipping it..." );
				continue;
			}

			byte[] fileContent = decodeFromBase64( encodedFileContent );

			// Write it to the disk
			String targetFile = props.getProperty( realKey );
			if( targetFile == null ) {
				logger.fine( "No property named " + realKey + " was found. Skipping it..." );
				continue;
			}

			Utils.createDirectory( outputDirectory );
			File output = new File( outputDirectory, new File( targetFile ).getName());
			Utils.copyStream( new ByteArrayInputStream( fileContent ), output );
			logger.finer( "Writing " + key + " from user data in " + output.getAbsolutePath());

			// Update the properties
			props.remove( key );
			props.setProperty( realKey, output.getAbsolutePath());
		}
	}
static void interceptWritingFiles ( Properties props , File outputDirectory ) throws IOException { if ( outputDirectory == null ) return ; Logger logger = Logger . getLogger ( UserDataHelpers . class . getName ( ) ) ; Set < String > keys = props . stringPropertyNames ( ) ; for ( final String key : keys ) { if ( ! key . startsWith ( ENCODE_FILE_CONTENT_PREFIX ) ) continue ; String encodedFileContent = props . getProperty ( key ) ; String realKey = key . substring ( ENCODE_FILE_CONTENT_PREFIX . length ( ) ) ; if ( encodedFileContent == null ) { logger . fine ( "No file content was provided for " + realKey + ". Skipping it..." ) ; continue ; } byte [ ] fileContent = decodeFromBase64 ( encodedFileContent ) ; String targetFile = props . getProperty ( realKey ) ; if ( targetFile == null ) { logger . fine ( "No property named " + realKey + " was found. Skipping it..." ) ; continue ; } Utils . createDirectory ( outputDirectory ) ; File output = new File ( outputDirectory , new File ( targetFile ) . getName ( ) ) ; Utils . copyStream ( new ByteArrayInputStream ( fileContent ) , output ) ; logger . finer ( "Writing " + key + " from user data in " + output . getAbsolutePath ( ) ) ; props . remove ( key ) ; props . setProperty ( realKey , output . getAbsolutePath ( ) ) ; } }
Intercepts the properties and writes file contents.
@param props non-null properties
@param outputDirectory a directory into which files should be written
<p>
If null, files sent with {@link #ENCODE_FILE_CONTENT_PREFIX} will not be written.
</p>

@throws IOException