*** empty log message ***
diff --git a/batch/org/eclipse/jdt/internal/compiler/batch/messages.properties b/batch/org/eclipse/jdt/internal/compiler/batch/messages.properties index 392c785..100f450 100644 --- a/batch/org/eclipse/jdt/internal/compiler/batch/messages.properties +++ b/batch/org/eclipse/jdt/internal/compiler/batch/messages.properties
@@ -1,7 +1,7 @@ ### JavaBatchCompiler messages. ### compiler version id -compiler.version = 0.245 +compiler.version = 0.242b ### scanning scanning.start = Collecting source files inside {0}
diff --git a/model/org/eclipse/jdt/internal/core/Util.java b/model/org/eclipse/jdt/internal/core/Util.java index 60115bb..f9dc4a6 100644 --- a/model/org/eclipse/jdt/internal/core/Util.java +++ b/model/org/eclipse/jdt/internal/core/Util.java
@@ -166,7 +166,7 @@ } /** * Concatenate two strings with a char in between. - * @see #concat(String, String) + * @see concat(String, String) */ public static String concat(String s1, char c, String s2) { if (s1 == null) s1 = "null"; //$NON-NLS-1$ @@ -202,7 +202,7 @@ /** * Concatenate three strings. - * @see #concat(String, String) + * @see concat(String, String) */ public static String concat(String s1, String s2, String s3) { if (s1 == null) s1 = "null"; //$NON-NLS-1$ @@ -260,11 +260,7 @@ int len = a.length; if (len != b.length) return false; for (int i = 0; i < len; ++i) { - if (a[i] == null) { - if (b[i] != null) return false; - } else { - if (!a[i].equals(b[i])) return false; - } + if (!a[i].equals(b[i])) return false; } return true; } @@ -535,19 +531,33 @@ return JavaConventions.validateIdentifier(folderName).getSeverity() != IStatus.ERROR; } - /* - * Add a log entry - */ - public static void log(Throwable e, String message) { - IStatus status= new Status( - IStatus.ERROR, - JavaCore.getPlugin().getDescriptor().getUniqueIdentifier(), - IStatus.ERROR, - message, - e); - JavaCore.getPlugin().getLog().log(status); - } - +/** + * Add entry into the workspace log file + */ +public static void log(String message){ + JavaCore.getPlugin().getLog().log( + new JavaModelStatus(IStatus.ERROR, message)); +} + +/** + * Add entry into the workspace log file + */ +public static void log(Throwable e){ + JavaCore.getPlugin().getLog().log( + new JavaModelStatus(IStatus.ERROR, e)); +} +/* + * Add a log entry + */ +public static void log(Throwable e, String message) { + IStatus status= new Status( + IStatus.ERROR, + JavaCore.getPlugin().getDescriptor().getUniqueIdentifier(), + IStatus.ERROR, + message, + e); + JavaCore.getPlugin().getLog().log(status); +} /** * Normalizes the cariage returns in the given text. * They are all changed to use the given buffer's line sepatator. @@ -1048,9 +1058,10 @@ int suffixLength = SUFFIX_CLASS.length; if (nameLength < suffixLength) return false; - for (int i = 0, offset = nameLength - suffixLength; i < suffixLength; i++) { - char c = name.charAt(offset + i); - if (c != SUFFIX_class[i] && c != SUFFIX_CLASS[i]) return false; + for (int i = 0; i < suffixLength; i++) { + char c = name.charAt(nameLength - i - 1); + int suffixIndex = suffixLength - i - 1; + if (c != SUFFIX_class[suffixIndex] && c != SUFFIX_CLASS[suffixIndex]) return false; } return true; } @@ -1100,9 +1111,10 @@ int suffixLength = SUFFIX_JAVA.length; if (nameLength < suffixLength) return false; - for (int i = 0, offset = nameLength - suffixLength; i < suffixLength; i++) { - char c = name.charAt(offset + i); - if (c != SUFFIX_java[i] && c != SUFFIX_JAVA[i]) return false; + for (int i = 0; i < suffixLength; i++) { + char c = name.charAt(nameLength - i - 1); + int suffixIndex = suffixLength - i - 1; + if (c != SUFFIX_java[suffixIndex] && c != SUFFIX_JAVA[suffixIndex]) return false; } return true; }
diff --git a/model/org/eclipse/jdt/internal/core/builder/JavaBuilder.java b/model/org/eclipse/jdt/internal/core/builder/JavaBuilder.java index 4bd0223..128d540 100644 --- a/model/org/eclipse/jdt/internal/core/builder/JavaBuilder.java +++ b/model/org/eclipse/jdt/internal/core/builder/JavaBuilder.java
@@ -11,7 +11,6 @@ import org.eclipse.jdt.core.*; import org.eclipse.jdt.internal.core.*; -import org.eclipse.jdt.internal.compiler.impl.CompilerOptions; import org.eclipse.jdt.internal.compiler.util.CharOperation; import org.eclipse.jdt.internal.core.Util; @@ -35,7 +34,6 @@ public static final String CLASS_EXTENSION = "class"; //$NON-NLS-1$ public static final String JAR_EXTENSION = "jar"; //$NON-NLS-1$ public static final String ZIP_EXTENSION = "zip"; //$NON-NLS-1$ -public static final String OPTION_InvalidClasspathSwitch = "org.eclipse.jdt.core.builder.invalidClasspath"; //$NON-NLS-1$ public static final String OPTION_ResourceCopyFilter = "org.eclipse.jdt.core.builder.resourceCopyExclusionFilter"; //$NON-NLS-1$ public static boolean DEBUG = false; @@ -76,7 +74,7 @@ protected IProject[] build(int kind, Map ignored, IProgressMonitor monitor) throws CoreException { this.currentProject = getProject(); - if (currentProject == null || !currentProject.isAccessible()) return new IProject[0]; + if (currentProject == null || !currentProject.exists()) return new IProject[0]; if (DEBUG) System.out.println("\nStarting build of " + currentProject.getName() //$NON-NLS-1$ @@ -88,29 +86,27 @@ notifier.checkCancel(); initializeBuilder(); - if (isWorthBuilding()) { - if (kind == FULL_BUILD) { + if (kind == FULL_BUILD) { + buildAll(); + } else { + if ((this.lastState = getLastState(currentProject)) == null) { + if (DEBUG) + System.out.println("Performing full build since last saved state was not found"); //$NON-NLS-1$ buildAll(); - } else { - if ((this.lastState = getLastState(currentProject)) == null) { - if (DEBUG) - System.out.println("Performing full build since last saved state was not found"); //$NON-NLS-1$ + } else if (hasClasspathChanged() || hasOutputLocationChanged()) { + // if the output location changes, do not delete the binary files from old location + // the user may be trying something + buildAll(); + } else if (sourceFolders.length > 0) { // if there is no source to compile & no classpath changes then we are done + clearLastState(); // clear the previously built state so if the build fails, a full build will occur next time + SimpleLookupTable deltas = findDeltas(); + if (deltas == null) buildAll(); - } else if (hasClasspathChanged() || hasOutputLocationChanged()) { - // if the output location changes, do not delete the binary files from old location - // the user may be trying something - buildAll(); - } else if (sourceFolders.length > 0) { // if there is no source to compile & no classpath changes then we are done - clearLastState(); // clear the previously built state so if the build fails, a full build will occur next time - SimpleLookupTable deltas = findDeltas(); - if (deltas == null) - buildAll(); - else - buildDeltas(deltas); - } + else + buildDeltas(deltas); } - ok = true; } + ok = true; } catch (CoreException e) { Util.log(e, "JavaBuilder handling CoreException"); //$NON-NLS-1$ try { @@ -121,7 +117,7 @@ throw e; } } catch (ImageBuilderInternalException e) { - Util.log(e.getThrowable(), "JavaBuilder handling ImageBuilderInternalException"); //$NON-NLS-1$ + Util.log(e, "JavaBuilder handling ImageBuilderInternalException"); //$NON-NLS-1$ try { IMarker marker = currentProject.createMarker(ProblemMarkerTag); marker.setAttribute(IMarker.MESSAGE, Util.bind("build.inconsistentProject")); //$NON-NLS-1$ @@ -129,17 +125,11 @@ } catch (CoreException ignore) { throw e.getThrowable(); } - } catch (MissingClassFileException e) { - // do not log this exception since its thrown to handle aborted compiles because of missing class files - if (DEBUG) - System.out.println(Util.bind("build.incompleteClassPath", e.missingClassFile)); //$NON-NLS-1$ + } catch (IncompleteClassPathException e) { IMarker marker = currentProject.createMarker(ProblemMarkerTag); marker.setAttribute(IMarker.MESSAGE, Util.bind("build.incompleteClassPath", e.missingClassFile)); //$NON-NLS-1$ marker.setAttribute(IMarker.SEVERITY, IMarker.SEVERITY_ERROR); } catch (MissingSourceFileException e) { - // do not log this exception since its thrown to handle aborted compiles because of missing source files - if (DEBUG) - System.out.println(Util.bind("build.missingSourceFile", e.missingSourceFile)); //$NON-NLS-1$ removeProblemsFor(currentProject); // make this the only problem for this project IMarker marker = currentProject.createMarker(ProblemMarkerTag); marker.setAttribute(IMarker.MESSAGE, Util.bind("build.missingSourceFile", e.missingSourceFile)); //$NON-NLS-1$ @@ -278,9 +268,10 @@ Object[] keyTable = binaryResources.keyTable; for (int i = 0, l = keyTable.length; i < l; i++) { IProject p = (IProject) keyTable[i]; - if (p != null && p != currentProject && !projects.contains(p)) + if (p != null && !projects.contains(p)) projects.add(p); } + this.binaryResources = null; } } catch(JavaModelException e) { return new IProject[0]; @@ -364,12 +355,12 @@ binaryResources); this.sourceFolders = new IContainer[sourceList.size()]; sourceList.toArray(this.sourceFolders); - + String filterSequence = (String) JavaCore.getOptions().get(OPTION_ResourceCopyFilter); this.resourceFilters = filterSequence != null && filterSequence.length() > 0 ? CharOperation.splitOn(',', filterSequence.toCharArray()) : null; - + // Flush the existing external files cache if this is the beginning of a build cycle String projectName = this.currentProject.getName(); if (builtProjects == null || builtProjects.contains(projectName)) { @@ -379,46 +370,6 @@ builtProjects.add(projectName); } -private boolean isWorthBuilding() throws CoreException { -// boolean abortBuilds = JavaCore.ABORT.equals(JavaCore.getOptions().get(OPTION_InvalidClasspathSwitch)); -// if (abortBuilds) { -// IMarker[] markers = -// currentProject.findMarkers(IJavaModelMarker.BUILDPATH_PROBLEM_MARKER, false, IResource.DEPTH_ONE); -// if (markers.length > 0) { -// if (DEBUG) -// System.out.println("Aborted build because project is involved in a cycle or has classpath problems"); //$NON-NLS-1$ -// -// // remove all existing class files... causes all dependent projects to do the same -// new BatchImageBuilder(this).scrubOutputFolder(); -// -// removeProblemsFor(currentProject); // make this the only problem for this project -// return false; -// } -// } -// -// // make sure all prereq projects have valid build states -// IProject[] requiredProjects = getRequiredProjects(); -// next : for (int i = 0, length = requiredProjects.length; i < length; i++) { -// IProject p = requiredProjects[i]; -// if (getLastState(p) == null) { -// if (!abortBuilds && !p.isOpen()) continue next; // skip closed projects if we're not aborting builds because of classpath problems -// if (DEBUG) -// System.out.println("Aborted build because prereq project " + p.getName() //$NON-NLS-1$ -// + " was not built"); //$NON-NLS-1$ -// -// // remove all existing class files... causes all dependent projects to do the same -// new BatchImageBuilder(this).scrubOutputFolder(); -// -// removeProblemsFor(currentProject); // make this the only problem for this project -// IMarker marker = currentProject.createMarker(ProblemMarkerTag); -// marker.setAttribute(IMarker.MESSAGE, Util.bind("build.prereqProjectWasNotBuilt", p.getName())); //$NON-NLS-1$ -// marker.setAttribute(IMarker.SEVERITY, IMarker.SEVERITY_ERROR); -// return false; -// } -// } - return true; -} - private void recordNewState(State state) { Object[] keyTable = binaryResources.keyTable; for (int i = 0, l = keyTable.length; i < l; i++) {