in extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/dependencyScan/loaders/ScannerClassloader.java [81:145]
public Class<?> loadClass(String className) throws ClassNotFoundException
{
//check if our class exists in the tempDir
if (_alreadyScanned.containsKey(className))
{
return _alreadyScanned.get(className);
}
File target = getClassFile(className);
if (!target.exists())
{
return super.loadClass(className);
}
//ClassResource data = WeavingContext.getFileChangedDaemon().getClassMap().get(className);
//if (data != null && !data.getRefreshAttribute().requiresRefresh()) {
// return data.getAClass();
//}
FileInputStream iStream = null;
int fileLength;
byte[] fileContent;
try
{
fileLength = (int) target.length();
fileContent = new byte[fileLength];
iStream = new FileInputStream(target);
int len = iStream.read(fileContent);
if (_logger.isLoggable(Level.FINER))
{
_logger.log(Level.FINER, "class read {0} bytes read", String.valueOf(len));
}
//we have to do it here because just in case
//a dependent class is loaded as well we run into classcast exceptions
Class retVal = super.defineClass(className, fileContent, 0, fileLength);
_alreadyScanned.put(className, retVal);
return retVal;
}
catch (FileNotFoundException e)
{
throw new ClassNotFoundException(e.toString());
}
catch (IOException e)
{
throw new ClassNotFoundException(e.toString());
}
finally
{
if (iStream != null)
{
try
{
iStream.close();
}
catch (Exception e)
{
_logger.log(Level.SEVERE, "", e);
}
}
}
}