/** * Returns an ant {@link Path} that contains a file set with all included source files. * * @param javaProjectRole the java project role * @return the ant {@link Path} */ public final Path createFilteredSourceFilePath(JavaProjectRole javaProjectRole) { // the ant path Path antPath = new Path(this._projectComponent.getProject()); // the source folder for (String sourceFolder : javaProjectRole.getSourceFolders()) { File folder = javaProjectRole.getEclipseProject().getChild(sourceFolder); String includePattern = javaProjectRole.getIncludePatternsForSourceFolder(sourceFolder); String excludePattern = javaProjectRole.getExcludePatternsForSourceFolder(sourceFolder); FileSet fileSet = new FileSet(); fileSet.setDir(folder); fileSet.setIncludes(includePattern); fileSet.setExcludes(excludePattern); antPath.addFileset(fileSet); } // return the ant path return antPath; }
/** * @param eclipseProject * @param jdtClasspathContainerArguments * @param executionValues */ public EcjAdditionalCompilerArguments provideExecutorValues( JavaProjectRole javaProjectRole, List<JdtClasspathContainerArgument> jdtClasspathContainerArguments, MacroExecutionValues executionValues, Set<String> requestedPaths) { PerformanceLogging.start(getClass(), "provideExecutorValues"); // provide the executor values from the platform component this._platformExecutorValuesProvider.provideExecutorValues( javaProjectRole.getEclipseProject(), executionValues); // create compiler arguments EcjAdditionalCompilerArguments compilerArguments = new EcjAdditionalCompilerArguments(); executionValues.getReferences().put(COMPILER_ARGS, compilerArguments); // resolve (boot) class path ResolvedClasspath cpAbsoluteCompiletime = null; if (requestedPaths.contains(ExecuteJdtProjectTask.CLASSPATH_ABSOLUTE_COMPILETIME)) { cpAbsoluteCompiletime = JdtResolver.resolveProjectClasspath( javaProjectRole.getEclipseProject(), false, false, jdtClasspathContainerArguments); } ResolvedClasspath cpRelativeCompiletime = null; if (requestedPaths.contains(ExecuteJdtProjectTask.CLASSPATH_RELATIVE_COMPILETIME)) { cpRelativeCompiletime = JdtResolver.resolveProjectClasspath( javaProjectRole.getEclipseProject(), true, false, jdtClasspathContainerArguments); } ResolvedClasspath cpAbsoluteRuntime = null; if (requestedPaths.contains(ExecuteJdtProjectTask.CLASSPATH_ABSOLUTE_RUNTIME)) { cpAbsoluteRuntime = JdtResolver.resolveProjectClasspath( javaProjectRole.getEclipseProject(), false, true, jdtClasspathContainerArguments); } ResolvedClasspath cpRelativeRuntime = null; if (requestedPaths.contains(ExecuteJdtProjectTask.CLASSPATH_RELATIVE_RUNTIME)) { cpRelativeRuntime = JdtResolver.resolveProjectClasspath( javaProjectRole.getEclipseProject(), true, true, jdtClasspathContainerArguments); } if (cpAbsoluteCompiletime != null) { if (cpAbsoluteCompiletime.hasBootClasspath()) { if (cpAbsoluteCompiletime.getBootClasspath().hasAccessRestrictions()) { // TODO compilerArguments.setBootClassPathAccessRestrictions( cpAbsoluteCompiletime.getBootClasspath().getAccessRestrictions().asFormattedString()); } } ResolvedClasspathEntry[] classpathEntries = cpAbsoluteCompiletime.getClasspath(); for (ResolvedClasspathEntry resolvedClasspathEntry : classpathEntries) { // set source folder for output folder if (resolvedClasspathEntry.hasSourcePathEntries()) { File[] sourcePathEntries = resolvedClasspathEntry.getSourcePathEntries(); for (File file : resolvedClasspathEntry.getClassPathEntries()) { compilerArguments.addSourceFolderForOutputFolder(file, sourcePathEntries); } } if (A4ELogging.isDebuggingEnabled()) { A4ELogging.debug("Resolved cp entry: %s", resolvedClasspathEntry.toString()); } // set access restrictions if (resolvedClasspathEntry.hasAccessRestrictions()) { AccessRestrictions accessRestrictions = resolvedClasspathEntry.getAccessRestrictions(); for (File file : resolvedClasspathEntry.getClassPathEntries()) { compilerArguments.addAccessRestrictions(file, accessRestrictions.asFormattedString()); } } } if (cpAbsoluteCompiletime.hasBootClasspath()) { executionValues .getProperties() .put( BOOT_CLASSPATH, this._pathComponent.convertToString(cpAbsoluteCompiletime.getBootClasspathFiles())); } executionValues .getProperties() .put( CLASSPATH_ABSOLUTE_COMPILETIME, this._pathComponent.convertToString(cpAbsoluteCompiletime.getClasspathFiles())); if (cpAbsoluteCompiletime.hasBootClasspath()) { executionValues .getReferences() .put( BOOT_CLASSPATH_PATH, this._pathComponent.convertToPath(cpAbsoluteCompiletime.getBootClasspathFiles())); } executionValues .getReferences() .put( CLASSPATH_ABSOLUTE_COMPILETIME_PATH, this._pathComponent.convertToPath(cpAbsoluteCompiletime.getClasspathFiles())); } if (cpRelativeCompiletime != null) { executionValues .getProperties() .put( CLASSPATH_RELATIVE_COMPILETIME, this._pathComponent.convertToString(cpRelativeCompiletime.getClasspathFiles())); executionValues .getReferences() .put( CLASSPATH_RELATIVE_COMPILETIME_PATH, this._pathComponent.convertToPath(cpRelativeCompiletime.getClasspathFiles())); } if (cpAbsoluteRuntime != null) { executionValues .getProperties() .put( CLASSPATH_ABSOLUTE_RUNTIME, this._pathComponent.convertToString(cpAbsoluteRuntime.getClasspathFiles())); executionValues .getReferences() .put( CLASSPATH_ABSOLUTE_RUNTIME_PATH, this._pathComponent.convertToPath(cpAbsoluteRuntime.getClasspathFiles())); } if (cpRelativeRuntime != null) { executionValues .getProperties() .put( CLASSPATH_RELATIVE_RUNTIME, this._pathComponent.convertToString(cpRelativeRuntime.getClasspathFiles())); executionValues .getReferences() .put( CLASSPATH_RELATIVE_RUNTIME_PATH, this._pathComponent.convertToPath(cpRelativeRuntime.getClasspathFiles())); } // resolve default output folder String defaultOutputFolderName = javaProjectRole.getDefaultOutputFolder(); if (defaultOutputFolderName == null) { A4ELogging.info( "Project '%s' has no output folder", javaProjectRole.getEclipseProject().getSpecifiedName()); } else { File defaultOutputFolder = javaProjectRole.getEclipseProject().getChild(defaultOutputFolderName); executionValues.getProperties().put(DEFAULT_OUTPUT_DIRECTORY_NAME, defaultOutputFolderName); executionValues .getProperties() .put(DEFAULT_OUTPUT_DIRECTORY, this._pathComponent.convertToString(defaultOutputFolder)); executionValues .getReferences() .put( DEFAULT_OUTPUT_DIRECTORY_PATH, this._pathComponent.convertToPath(defaultOutputFolder)); } if (javaProjectRole.getSourceFolders().length > 0) { executionValues .getProperties() .put( SOURCE_DIRECTORIES, this._pathComponent.convertToString( javaProjectRole .getEclipseProject() .getChildren(javaProjectRole.getSourceFolders()))); executionValues .getReferences() .put( SOURCE_DIRECTORIES_PATH, this._pathComponent.convertToPath( javaProjectRole .getEclipseProject() .getChildren(javaProjectRole.getSourceFolders()))); // Support for filtered java source directory: // in this case we create a path that contains a file set with // all included java source files... if (javaProjectRole.hasExcludeOrIncludeFiltersForSourceFolders()) { Path sourceFilteredFileSetPath = createFilteredSourceFilePath(javaProjectRole); compilerArguments.setSourceFilteredFilesetPath(sourceFilteredFileSetPath); executionValues .getReferences() .put(SOURCE_FILTERED_FILESET_PATH, sourceFilteredFileSetPath); } executionValues .getProperties() .put( OUTPUT_DIRECTORIES, this._pathComponent.convertToString( javaProjectRole .getEclipseProject() .getChildren(javaProjectRole.getAllOutputFolders()))); executionValues .getReferences() .put( OUTPUT_DIRECTORIES_PATH, this._pathComponent.convertToPath( javaProjectRole .getEclipseProject() .getChildren(javaProjectRole.getAllOutputFolders()))); for (String sourceFolderName : javaProjectRole.getSourceFolders()) { String outputFolderName = javaProjectRole.getOutputFolderForSourceFolder(sourceFolderName); File sourceFolder = javaProjectRole.getEclipseProject().getChild(sourceFolderName); File outputFolder = javaProjectRole.getEclipseProject().getChild(outputFolderName); compilerArguments.addOutputFolderForSourceFolder(sourceFolder, outputFolder); } } PerformanceLogging.stop(getClass(), "provideExecutorValues"); // return compilerArguments return compilerArguments; }