public CompilationResult compile()

in extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/compiler/JSR199Compiler.java [78:127]


    public CompilationResult compile(File sourceRoot, File destination, ClassLoader loader)   {
            WeavingContext context = WeavingContext.getInstance();
            Configuration configuration = context.getConfiguration();
            destination.mkdirs();
            fileManager =  javaCompiler.getStandardFileManager(new
                            DiagnosticCollector<JavaFileObject>(), Locale.getDefault(), null);

            DiagnosticCollector<JavaFileObject> diagnosticCollector = new DiagnosticCollector<JavaFileObject>();

            getLog().info("[EXT-SCRIPTING] Doing a full recompile");
            
            List<File> sourceFiles = FileUtils.fetchSourceFiles(configuration.getWhitelistedSourceDirs
                    (ENGINE_TYPE_JSF_JAVA), JAVA_WILDCARD);
            
            HashSet<String> alreadyProcessed = new HashSet<String>();
            Iterator<File> sourceIt = sourceFiles.iterator();
            while(sourceIt.hasNext()) {
                File currentProcessed = sourceIt.next();
                if(alreadyProcessed.contains(currentProcessed.getAbsolutePath())) {
                    sourceIt.remove();
                } else {
                    alreadyProcessed.add(currentProcessed.getAbsolutePath());
                }

            }
        
        
            for (File sourceFile : sourceFiles)
            {
                if (!sourceFile.exists())
                {
                    getLog().log(Level.WARNING, "[EXT-SCRIPTING] Source file with path {0} does not exist it might cause an error in the compilation process", sourceFile.getAbsolutePath());
                }
            }
            Iterable<? extends JavaFileObject> fileObjects = fileManager.getJavaFileObjects(sourceFiles.toArray(new File[sourceFiles.size()]));
            String[] options = new String[]{JC_CLASSPATH, /*fileManager.getClassPath()*/
                                            ClassLoaderUtils.buildClasspath(ClassLoaderUtils.getDefaultClassLoader())
                    , JC_TARGET_PATH,
                                            destination.getAbsolutePath(), JC_SOURCEPATH,
            sourceRoot.getAbsolutePath(), JC_DEBUG};

            javaCompiler.getTask(null, fileManager, diagnosticCollector, Arrays.asList(options), null, fileObjects).call();


            CompilationResult result =  handleDiagnostics(diagnosticCollector);


            return result;

    }