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