in core/src/main/java/org/apache/commons/jci2/core/listeners/CompilingListener.java [124:180]
public boolean isReloadRequired( final FilesystemAlterationObserver pObserver ) {
boolean reload = false;
final Collection<File> created = getCreatedFiles();
final Collection<File> changed = getChangedFiles();
final Collection<File> deleted = getDeletedFiles();
log.debug("created:" + created.size() + " changed:" + changed.size() + " deleted:" + deleted.size() + " resources");
if (!deleted.isEmpty()) {
for (final File deletedFile : deleted) {
final String resourceName = ConversionUtils.getResourceNameFromFileName(ConversionUtils.relative(pObserver.getRootDirectory(), deletedFile));
if (resourceName.endsWith(getSourceFileExtension())) {
// if source resource got removed delete the corresponding class
transactionalStore.remove(ConversionUtils.stripExtension(resourceName) + ".class");
} else {
// ordinary resource to be removed
transactionalStore.remove(resourceName);
}
// FIXME: does not remove nested classes
}
reload = true;
}
final String[] resourcesToCompile = getResourcesToCompile(pObserver);
if (resourcesToCompile.length > 0) {
log.debug(resourcesToCompile.length + " classes to compile");
final CompilationResult result = compiler.compile(resourcesToCompile, reader, transactionalStore);
synchronized(this) {
lastResult = result;
}
final CompilationProblem[] errors = result.getErrors();
final CompilationProblem[] warnings = result.getWarnings();
log.debug(errors.length + " errors, " + warnings.length + " warnings");
if (errors.length > 0) {
// FIXME: they need to be marked for re-compilation
// and then added as compileables again
for (final String element : resourcesToCompile) {
transactionalStore.remove(element);
}
}
reload = true;
}
return reload;
}