private GeneratedFile openUniqueFile()

in src/main/java/org/apache/bsf/engines/java/JavaEngine.java [323:355]


    private GeneratedFile openUniqueFile(final String directory,final String prefix,final String suffix) {
        File file = null;
        FileOutputStream fos = null;
        final int max = 1000;     // Don't try forever
        GeneratedFile gf = null;
        int i;
        String className = null;
        for(i=max,++uniqueFileOffset; fos==null && i>0;--i,++uniqueFileOffset) {
            // Probably a timing hazard here... ***************
            try {
                className = prefix+uniqueFileOffset;
                file = new File(directory+File.separatorChar+className+suffix);
                if(file != null && !file.exists()) {
                    fos = new FileOutputStream(file);
                }
            }
            catch(final Exception e) {
                // File could not be opened for write, or Security Exception
                // was thrown. If someone else created the file before we could
                // open it, that's probably a threading conflict and we don't
                // bother reporting it.
                if(!file.exists()) {
                    logger.error("openUniqueFile: unexpected ", e);
                }
            }
        }
        if(fos==null) {
            logger.error("openUniqueFile: Failed "+max+"attempts.");
        } else {
            gf = new GeneratedFile(file,fos,className);
        }
        return gf;
    }