public boolean isReloadRequired()

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