private GeneratedFile openUniqueFile()

in src/main/java/org/apache/bsf/engines/java/JavaEngine.java [288:319]


    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;
    }