import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
+
import net.sourceforge.phpdt.core.IClasspathEntry;
import net.sourceforge.phpdt.core.IJavaModelMarker;
+import net.sourceforge.phpdt.core.JavaCore;
import net.sourceforge.phpdt.core.JavaModelException;
import net.sourceforge.phpdt.core.compiler.CharOperation;
import net.sourceforge.phpdt.internal.core.JavaModel;
import net.sourceforge.phpdt.internal.core.JavaModelManager;
import net.sourceforge.phpdt.internal.core.JavaProject;
-import net.sourceforge.phpdt.internal.core.Util;
import net.sourceforge.phpdt.internal.core.util.SimpleLookupTable;
+import net.sourceforge.phpdt.internal.core.util.Util;
import net.sourceforge.phpdt.internal.ui.util.PHPFileUtil;
-import net.sourceforge.phpeclipse.PHPCore;
import net.sourceforge.phpeclipse.PHPeclipsePlugin;
import net.sourceforge.phpeclipse.builder.IdentifierIndexManager;
-import net.sourceforge.phpeclipse.phpeditor.PHPParserAction;
-import net.sourceforge.phpeclipse.resourcesview.PHPProject;
+
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IMarker;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.OperationCanceledException;
+
public class PHPBuilder extends IncrementalProjectBuilder {
IProject currentProject;
JavaProject javaProject;
IWorkspaceRoot workspaceRoot;
- NameEnvironment nameEnvironment;
+ NameEnvironment nameEnvironment;
SimpleLookupTable binaryLocationsPerProject; // maps a project to its binary
// resources (output folders,
// class folders, zip/jar files)
char[][] extraResourceFileFilters;
String[] extraResourceFolderFilters;
public static final String CLASS_EXTENSION = "class"; //$NON-NLS-1$
- public static boolean DEBUG = true;
+ public static boolean DEBUG = false;
/**
* A list of project names that have been built. This list is used to reset
* the JavaModel.existingExternalFiles cache when a build cycle begins so
public static void finishedBuilding(IResourceChangeEvent event) {
BuildNotifier.resetProblemCounters();
}
+ /**
+ * Hook allowing to initialize some static state before a complete build iteration.
+ * This hook is invoked during PRE_AUTO_BUILD notification
+ */
+ public static void buildStarting() {
+ // do nothing
+ // TODO (philippe) is it still needed?
+ }
+
+ /**
+ * Hook allowing to reset some static state after a complete build iteration.
+ * This hook is invoked during POST_AUTO_BUILD notification
+ */
+ public static void buildFinished() {
+ BuildNotifier.resetProblemCounters();
+ }
public static void removeProblemsFor(IResource resource) {
try {
if (resource != null && resource.exists())
marker.setAttribute(IMarker.MESSAGE, Util.bind("build.missingSourceFile",
e.missingSourceFile)); //$NON-NLS-1$
marker.setAttribute(IMarker.SEVERITY, IMarker.SEVERITY_ERROR);
+ } catch (Exception e) {
+ e.printStackTrace();
} finally {
if (!ok)
// If the build failed, clear the previously built state, forcing a
return false;
}
private void initializeBuilder() throws CoreException {
- this.javaProject = (JavaProject) PHPCore.create(currentProject);
+ this.javaProject = (JavaProject) JavaCore.create(currentProject);
this.workspaceRoot = currentProject.getWorkspace().getRoot();
// Flush the existing external files cache if this is the beginning of a
// build cycle
this.nameEnvironment = new NameEnvironment(workspaceRoot, javaProject,
binaryLocationsPerProject);
String filterSequence = javaProject.getOption(
- PHPCore.CORE_JAVA_BUILD_RESOURCE_COPY_FILTER, true);
+ JavaCore.CORE_JAVA_BUILD_RESOURCE_COPY_FILTER, true);
char[][] filters = filterSequence != null && filterSequence.length() > 0
? CharOperation.splitAndTrimOn(',', filterSequence.toCharArray())
: null;
return false;
}
private boolean isWorthBuilding() throws CoreException {
- boolean abortBuilds = PHPCore.ABORT.equals(javaProject.getOption(
- PHPCore.CORE_JAVA_BUILD_INVALID_CLASSPATH, true));
+ boolean abortBuilds = JavaCore.ABORT.equals(javaProject.getOption(
+ JavaCore.CORE_JAVA_BUILD_INVALID_CLASSPATH, true));
if (!abortBuilds)
return true;
// Abort build only if there are classpath errors
// IMarker marker =
// currentProject.createMarker(IJavaModelMarker.JAVA_MODEL_PROBLEM_MARKER);
// marker.setAttribute(IMarker.MESSAGE,
- // Util.bind("build.abortDueToClasspathProblems")); //$NON-NLS-1$
+ // ProjectPrefUtil.bind("build.abortDueToClasspathProblems")); //$NON-NLS-1$
// marker.setAttribute(IMarker.SEVERITY, IMarker.SEVERITY_ERROR);
// return false;
// }
if (getLastState(p) == null) {
// The prereq project has no build state: if this prereq project has a
// 'warning' cycle marker then allow build (see bug id 23357)
- JavaProject prereq = (JavaProject) PHPCore.create(p);
+ JavaProject prereq = (JavaProject) JavaCore.create(p);
if (prereq.hasCycleMarker()
- && PHPCore.WARNING.equals(javaProject.getOption(
- PHPCore.CORE_CIRCULAR_CLASSPATH, true)))
+ && JavaCore.WARNING.equals(javaProject.getOption(
+ JavaCore.CORE_CIRCULAR_CLASSPATH, true)))
continue;
if (DEBUG)
System.out.println("Aborted build because prereq project "
JavaModelManager.getJavaModelManager().setLastBuiltState(currentProject,
state);
}
- /**
- * String representation for debugging purposes
- */
- public String toString() {
+ /**
+ * String representation for debugging purposes
+ */
+ public String toString() {
return currentProject == null ? "JavaBuilder for unknown project" //$NON-NLS-1$
: "JavaBuilder for " + currentProject.getName(); //$NON-NLS-1$
}