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