summaryrefslogtreecommitdiffstats
path: root/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide
diff options
context:
space:
mode:
authorXavier Ducrohet <xav@android.com>2009-12-15 14:41:24 -0800
committerXavier Ducrohet <xav@android.com>2009-12-15 14:46:29 -0800
commit9a68767a27170689fd647276cb0b082d192448fd (patch)
treefdbc79df5921a69d43a0a65012ee65ea5a560c3b /eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide
parent2758c672a9d5bb9ef66e4aed5db1183be28b192c (diff)
downloaddevice_generic_opengl-transport-9a68767a27170689fd647276cb0b082d192448fd.tar.gz
device_generic_opengl-transport-9a68767a27170689fd647276cb0b082d192448fd.tar.bz2
device_generic_opengl-transport-9a68767a27170689fd647276cb0b082d192448fd.zip
Cleaned up Markers in ADT.
New packaging marker specific to packaging error coming from ApkBuilder. This prevent conflicts with other builders adding or removing those same markers (which apparently prevent those markers from appearing if ApkBuilder sets them. Fixed some conflicts between different version of BaseProjectHelper.addMarker. Renamed the method markResource and markProject to make it clearer. Change-Id: I53663a052e3014fd0bff1757a9ae3d642133689f
Diffstat (limited to 'eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide')
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/AndroidConstants.java25
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/build/ApkBuilder.java52
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/build/BaseBuilder.java20
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/build/PreCompilerBuilder.java25
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/build/ResourceManagerBuilder.java11
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/project/AndroidClasspathContainerInitializer.java4
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/project/AndroidManifestParser.java5
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/project/BaseProjectHelper.java49
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/project/XmlErrorHandler.java39
9 files changed, 128 insertions, 102 deletions
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/AndroidConstants.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/AndroidConstants.java
index 65d739c00..9578a1da3 100644
--- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/AndroidConstants.java
+++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/AndroidConstants.java
@@ -16,6 +16,9 @@
package com.android.ide.eclipse.adt;
+import com.android.ide.eclipse.adt.internal.build.ApkBuilder;
+import com.android.ide.eclipse.adt.internal.build.PreCompilerBuilder;
+import com.android.ide.eclipse.adt.internal.build.ResourceManagerBuilder;
import com.android.sdklib.SdkConstants;
import java.io.File;
@@ -140,7 +143,7 @@ public class AndroidConstants {
/** The old common plug-in ID. Please do not use for new features. */
private static final String LEGACY_PLUGIN_ID = "com.android.ide.eclipse.common"; //$NON-NLS-1$
- /** Generic marker for ADT errors. */
+ /** Generic marker for ADT errors, only to be used in the {@link ResourceManagerBuilder} */
public final static String MARKER_ADT = AdtPlugin.PLUGIN_ID + ".adtProblem"; //$NON-NLS-1$
/** Marker for Android Target errors.
@@ -149,21 +152,27 @@ public class AndroidConstants {
* AndroidClasspathContainer */
public final static String MARKER_TARGET = AdtPlugin.PLUGIN_ID + ".targetProblem"; //$NON-NLS-1$
- /** aapt marker error when running the compile command */
+ /** aapt marker error when running the compile command, only to be used
+ * in {@link PreCompilerBuilder} */
public final static String MARKER_AAPT_COMPILE = LEGACY_PLUGIN_ID + ".aaptProblem"; //$NON-NLS-1$
- /** aapt marker error when running the package command */
- public final static String MARKER_AAPT_PACKAGE = LEGACY_PLUGIN_ID + ".aapt2Problem"; //$NON-NLS-1$
-
- /** XML marker error. */
+ /** XML marker error, only to be used in {@link PreCompilerBuilder} */
public final static String MARKER_XML = LEGACY_PLUGIN_ID + ".xmlProblem"; //$NON-NLS-1$
- /** aidl marker error. */
+ /** aidl marker error, only to be used in {@link PreCompilerBuilder} */
public final static String MARKER_AIDL = LEGACY_PLUGIN_ID + ".aidlProblem"; //$NON-NLS-1$
- /** android marker error */
+ /** android marker error, only to be used in the Manifest parsing
+ * from the {@link PreCompilerBuilder} */
public final static String MARKER_ANDROID = LEGACY_PLUGIN_ID + ".androidProblem"; //$NON-NLS-1$
+ /** aapt marker error when running the package command, only to be used in {@link ApkBuilder} */
+ public final static String MARKER_AAPT_PACKAGE = LEGACY_PLUGIN_ID + ".aapt2Problem"; //$NON-NLS-1$
+
+ /** final packaging error marker, only to be used in {@link ApkBuilder} */
+ public final static String MARKER_PACKAGING = AdtPlugin.PLUGIN_ID + ".packagingProblem"; //$NON-NLS-1$
+
+
/** Name for the "type" marker attribute */
public final static String MARKER_ATTR_TYPE = "android.type"; //$NON-NLS-1$
/** Name for the "class" marker attribute */
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/build/ApkBuilder.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/build/ApkBuilder.java
index b2f89f6f9..c6fe72bfe 100644
--- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/build/ApkBuilder.java
+++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/build/ApkBuilder.java
@@ -240,6 +240,18 @@ public class ApkBuilder extends BaseBuilder {
super();
}
+ @Override
+ protected void clean(IProgressMonitor monitor) throws CoreException {
+ super.clean(monitor);
+
+ // Get the project.
+ IProject project = getProject();
+
+ // Clear the project of the generic markers
+ removeMarkersFromProject(project, AndroidConstants.MARKER_AAPT_COMPILE);
+ removeMarkersFromProject(project, AndroidConstants.MARKER_PACKAGING);
+ }
+
// build() returns a list of project from which this project depends for future compilation.
@SuppressWarnings("unchecked")
@Override
@@ -329,9 +341,12 @@ public class ApkBuilder extends BaseBuilder {
return referencedProjects;
}
+ // remove older packaging markers.
+ removeMarkersFromProject(javaProject.getProject(), AndroidConstants.MARKER_PACKAGING);
+
if (outputFolder == null) {
// mark project and exit
- markProject(AndroidConstants.MARKER_ADT, Messages.Failed_To_Get_Output,
+ markProject(AndroidConstants.MARKER_PACKAGING, Messages.Failed_To_Get_Output,
IMarker.SEVERITY_ERROR);
return referencedProjects;
}
@@ -440,7 +455,7 @@ public class ApkBuilder extends BaseBuilder {
if (mPackageResources || mConvertToDex || mBuildFinalPackage) {
IPath binLocation = outputFolder.getLocation();
if (binLocation == null) {
- markProject(AndroidConstants.MARKER_ADT, Messages.Output_Missing,
+ markProject(AndroidConstants.MARKER_PACKAGING, Messages.Output_Missing,
IMarker.SEVERITY_ERROR);
return referencedProjects;
}
@@ -483,7 +498,7 @@ public class ApkBuilder extends BaseBuilder {
// mark project and exit
String msg = String.format(Messages.s_File_Missing,
AndroidConstants.FN_ANDROID_MANIFEST);
- markProject(AndroidConstants.MARKER_ADT, msg, IMarker.SEVERITY_ERROR);
+ markProject(AndroidConstants.MARKER_PACKAGING, msg, IMarker.SEVERITY_ERROR);
return referencedProjects;
}
@@ -628,7 +643,7 @@ public class ApkBuilder extends BaseBuilder {
msg = String.format("Unknown error: %1$s", msg);
AdtPlugin.printErrorToConsole(project, msg);
- markProject(AndroidConstants.MARKER_ADT, msg, IMarker.SEVERITY_ERROR);
+ markProject(AndroidConstants.MARKER_PACKAGING, msg, IMarker.SEVERITY_ERROR);
}
return referencedProjects;
@@ -729,7 +744,7 @@ public class ApkBuilder extends BaseBuilder {
// not all files that should have been marked, were marked), we put a generic
// marker on the project and abort.
if (parsingError) {
- markProject(AndroidConstants.MARKER_ADT, Messages.Unparsed_AAPT_Errors,
+ markProject(AndroidConstants.MARKER_PACKAGING, Messages.Unparsed_AAPT_Errors,
IMarker.SEVERITY_ERROR);
}
@@ -738,11 +753,11 @@ public class ApkBuilder extends BaseBuilder {
}
} catch (IOException e1) {
String msg = String.format(Messages.AAPT_Exec_Error, command[0]);
- markProject(AndroidConstants.MARKER_ADT, msg, IMarker.SEVERITY_ERROR);
+ markProject(AndroidConstants.MARKER_PACKAGING, msg, IMarker.SEVERITY_ERROR);
return false;
} catch (InterruptedException e) {
String msg = String.format(Messages.AAPT_Exec_Error, command[0]);
- markProject(AndroidConstants.MARKER_ADT, msg, IMarker.SEVERITY_ERROR);
+ markProject(AndroidConstants.MARKER_PACKAGING, msg, IMarker.SEVERITY_ERROR);
return false;
}
@@ -810,7 +825,7 @@ public class ApkBuilder extends BaseBuilder {
String message = String.format(Messages.Dalvik_Error_d,
res);
AdtPlugin.printErrorToConsole(getProject(), message);
- markProject(AndroidConstants.MARKER_ADT, message, IMarker.SEVERITY_ERROR);
+ markProject(AndroidConstants.MARKER_PACKAGING, message, IMarker.SEVERITY_ERROR);
return false;
}
} catch (Throwable ex) {
@@ -820,7 +835,7 @@ public class ApkBuilder extends BaseBuilder {
}
message = String.format(Messages.Dalvik_Error_s, message);
AdtPlugin.printErrorToConsole(getProject(), message);
- markProject(AndroidConstants.MARKER_ADT, message, IMarker.SEVERITY_ERROR);
+ markProject(AndroidConstants.MARKER_PACKAGING, message, IMarker.SEVERITY_ERROR);
if ((ex instanceof NoClassDefFoundError)
|| (ex instanceof NoSuchMethodError)) {
AdtPlugin.printErrorToConsole(getProject(), Messages.Incompatible_VM_Warning,
@@ -844,6 +859,7 @@ public class ApkBuilder extends BaseBuilder {
*/
private boolean finalPackage(String intermediateApk, String dex, String output,
final IJavaProject javaProject, IJavaProject[] referencedJavaProjects) {
+
FileOutputStream fos = null;
try {
IPreferenceStore store = AdtPlugin.getDefault().getPreferenceStore();
@@ -878,7 +894,7 @@ public class ApkBuilder extends BaseBuilder {
String msg = String.format(Messages.Final_Archive_Error_s,
Messages.ApkBuilder_Unable_To_Gey_Key);
AdtPlugin.printErrorToConsole(javaProject.getProject(), msg);
- markProject(AndroidConstants.MARKER_ADT, msg, IMarker.SEVERITY_ERROR);
+ markProject(AndroidConstants.MARKER_PACKAGING, msg, IMarker.SEVERITY_ERROR);
return false;
}
@@ -889,7 +905,7 @@ public class ApkBuilder extends BaseBuilder {
String.format(Messages.ApkBuilder_Certificate_Expired_on_s,
DateFormat.getInstance().format(certificate.getNotAfter())));
AdtPlugin.printErrorToConsole(javaProject.getProject(), msg);
- markProject(AndroidConstants.MARKER_ADT, msg, IMarker.SEVERITY_ERROR);
+ markProject(AndroidConstants.MARKER_PACKAGING, msg, IMarker.SEVERITY_ERROR);
return false;
}
@@ -935,7 +951,7 @@ public class ApkBuilder extends BaseBuilder {
String msg = String.format("Native libraries detected in '%1$s'. See console for more information.",
libName);
- markProject(AndroidConstants.MARKER_ADT, msg,
+ markProject(AndroidConstants.MARKER_PACKAGING, msg,
nativeInterference ?
IMarker.SEVERITY_ERROR : IMarker.SEVERITY_WARNING);
@@ -976,20 +992,20 @@ public class ApkBuilder extends BaseBuilder {
// mark project and return
String msg = String.format(Messages.Final_Archive_Error_s, e1.getMessage());
AdtPlugin.printErrorToConsole(javaProject.getProject(), msg);
- markProject(AndroidConstants.MARKER_ADT, msg, IMarker.SEVERITY_ERROR);
+ markProject(AndroidConstants.MARKER_PACKAGING, msg, IMarker.SEVERITY_ERROR);
return false;
} catch (IOException e1) {
// mark project and return
String msg = String.format(Messages.Final_Archive_Error_s, e1.getMessage());
AdtPlugin.printErrorToConsole(javaProject.getProject(), msg);
- markProject(AndroidConstants.MARKER_ADT, msg, IMarker.SEVERITY_ERROR);
+ markProject(AndroidConstants.MARKER_PACKAGING, msg, IMarker.SEVERITY_ERROR);
return false;
} catch (KeytoolException e) {
String eMessage = e.getMessage();
// mark the project with the standard message
String msg = String.format(Messages.Final_Archive_Error_s, eMessage);
- markProject(AndroidConstants.MARKER_ADT, msg, IMarker.SEVERITY_ERROR);
+ markProject(AndroidConstants.MARKER_PACKAGING, msg, IMarker.SEVERITY_ERROR);
// output more info in the console
AdtPlugin.printErrorToConsole(javaProject.getProject(),
@@ -1002,7 +1018,7 @@ public class ApkBuilder extends BaseBuilder {
// mark the project with the standard message
String msg = String.format(Messages.Final_Archive_Error_s, eMessage);
- markProject(AndroidConstants.MARKER_ADT, msg, IMarker.SEVERITY_ERROR);
+ markProject(AndroidConstants.MARKER_PACKAGING, msg, IMarker.SEVERITY_ERROR);
// and also output it in the console
AdtPlugin.printErrorToConsole(javaProject.getProject(), msg);
@@ -1010,7 +1026,7 @@ public class ApkBuilder extends BaseBuilder {
// mark project and return
String msg = String.format(Messages.Final_Archive_Error_s, e.getMessage());
AdtPlugin.printErrorToConsole(javaProject.getProject(), msg);
- markProject(AndroidConstants.MARKER_ADT, msg, IMarker.SEVERITY_ERROR);
+ markProject(AndroidConstants.MARKER_PACKAGING, msg, IMarker.SEVERITY_ERROR);
return false;
} catch (Exception e) {
// try to catch other exception to actually display an error. This will be useful
@@ -1024,7 +1040,7 @@ public class ApkBuilder extends BaseBuilder {
msg = String.format("Unknown error: %1$s", msg);
AdtPlugin.printErrorToConsole(javaProject.getProject(), msg);
- markProject(AndroidConstants.MARKER_ADT, msg, IMarker.SEVERITY_ERROR);
+ markProject(AndroidConstants.MARKER_PACKAGING, msg, IMarker.SEVERITY_ERROR);
return false;
} finally {
if (fos != null) {
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/build/BaseBuilder.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/build/BaseBuilder.java
index 270d1f209..cc82efb67 100644
--- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/build/BaseBuilder.java
+++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/build/BaseBuilder.java
@@ -277,17 +277,19 @@ abstract class BaseBuilder extends IncrementalProjectBuilder {
}
/**
- * Adds a marker to the current project.
+ * Adds a marker to the current project. This methods catches thrown {@link CoreException},
+ * and returns null instead.
*
* @param markerId The id of the marker to add.
* @param message the message associated with the mark
* @param severity the severity of the marker.
+ * @return the marker that was created (or null if failure)
+ * @see IMarker
*/
- protected final void markProject(String markerId, String message, int severity) {
- BaseProjectHelper.addMarker(getProject(), markerId, message, severity);
+ protected final IMarker markProject(String markerId, String message, int severity) {
+ return BaseProjectHelper.markResource(getProject(), markerId, message, severity);
}
-
/**
* Removes markers from a file.
* @param file The file from which to delete the markers.
@@ -332,7 +334,7 @@ abstract class BaseBuilder extends IncrementalProjectBuilder {
String markerId) {
try {
if (project.exists()) {
- project.deleteMarkers(markerId, true, IResource.DEPTH_ZERO);
+ project.deleteMarkers(markerId, true, IResource.DEPTH_INFINITE);
}
} catch (CoreException ce) {
String msg = String.format(Messages.Marker_Delete_Error, markerId, project.getName());
@@ -763,11 +765,7 @@ abstract class BaseBuilder extends IncrementalProjectBuilder {
}
if (markerAlreadyExists == false) {
- if (line != -1) {
- BaseProjectHelper.addMarker(f2, markerId, message, line, severity);
- } else {
- BaseProjectHelper.addMarker(f2, markerId, message, severity);
- }
+ BaseProjectHelper.markResource(f2, markerId, message, line, severity);
}
return true;
@@ -866,7 +864,7 @@ abstract class BaseBuilder extends IncrementalProjectBuilder {
project, message);
// Also put a warning marker on the project
- markProject(AndroidConstants.MARKER_ADT, message,
+ markProject(AndroidConstants.MARKER_PACKAGING, message,
IMarker.SEVERITY_WARNING);
}
}
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/build/PreCompilerBuilder.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/build/PreCompilerBuilder.java
index 2e1972882..9ca7842a0 100644
--- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/build/PreCompilerBuilder.java
+++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/build/PreCompilerBuilder.java
@@ -342,7 +342,7 @@ public class PreCompilerBuilder extends BaseBuilder {
"Platform %1$s is a preview and requires appication manifest to set %2$s to '%1$s'",
codename, AndroidManifest.ATTRIBUTE_MIN_SDK_VERSION);
AdtPlugin.printErrorToConsole(project, msg);
- BaseProjectHelper.addMarker(manifest, AndroidConstants.MARKER_ADT, msg,
+ BaseProjectHelper.markResource(manifest, AndroidConstants.MARKER_ADT, msg,
IMarker.SEVERITY_ERROR);
stopBuild(msg);
} else if (minSdkValue < projectVersion.getApiLevel()) {
@@ -352,7 +352,7 @@ public class PreCompilerBuilder extends BaseBuilder {
AndroidManifest.ATTRIBUTE_MIN_SDK_VERSION,
minSdkValue, projectVersion.getApiLevel());
AdtPlugin.printBuildToConsole(BuildVerbosity.VERBOSE, project, msg);
- BaseProjectHelper.addMarker(manifest, AndroidConstants.MARKER_ADT, msg,
+ BaseProjectHelper.markResource(manifest, AndroidConstants.MARKER_ADT, msg,
IMarker.SEVERITY_WARNING);
} else if (minSdkValue > projectVersion.getApiLevel()) {
// integer minSdk is too high for the target => warning
@@ -361,7 +361,7 @@ public class PreCompilerBuilder extends BaseBuilder {
AndroidManifest.ATTRIBUTE_MIN_SDK_VERSION,
minSdkValue, projectVersion.getApiLevel());
AdtPlugin.printBuildToConsole(BuildVerbosity.VERBOSE, project, msg);
- BaseProjectHelper.addMarker(manifest, AndroidConstants.MARKER_ADT, msg,
+ BaseProjectHelper.markResource(manifest, AndroidConstants.MARKER_ADT, msg,
IMarker.SEVERITY_WARNING);
}
} else {
@@ -374,7 +374,7 @@ public class PreCompilerBuilder extends BaseBuilder {
"Manifest attribute '%1$s' is set to '%2$s'. Integer is expected.",
AndroidManifest.ATTRIBUTE_MIN_SDK_VERSION, minSdkVersion);
AdtPlugin.printErrorToConsole(project, msg);
- BaseProjectHelper.addMarker(manifest, AndroidConstants.MARKER_ADT, msg,
+ BaseProjectHelper.markResource(manifest, AndroidConstants.MARKER_ADT, msg,
IMarker.SEVERITY_ERROR);
stopBuild(msg);
} else if (codename.equals(minSdkVersion) == false) {
@@ -383,7 +383,7 @@ public class PreCompilerBuilder extends BaseBuilder {
"Value of manifest attribute '%1$s' does not match platform codename '%2$s'",
AndroidManifest.ATTRIBUTE_MIN_SDK_VERSION, codename);
AdtPlugin.printErrorToConsole(project, msg);
- BaseProjectHelper.addMarker(manifest, AndroidConstants.MARKER_ADT, msg,
+ BaseProjectHelper.markResource(manifest, AndroidConstants.MARKER_ADT, msg,
IMarker.SEVERITY_ERROR);
stopBuild(msg);
}
@@ -396,7 +396,7 @@ public class PreCompilerBuilder extends BaseBuilder {
"Platform %1$s is a preview and requires appication manifests to set %2$s to '%1$s'",
codename, AndroidManifest.ATTRIBUTE_MIN_SDK_VERSION);
AdtPlugin.printErrorToConsole(project, msg);
- BaseProjectHelper.addMarker(manifest, AndroidConstants.MARKER_ADT, msg,
+ BaseProjectHelper.markResource(manifest, AndroidConstants.MARKER_ADT, msg,
IMarker.SEVERITY_ERROR);
stopBuild(msg);
}
@@ -608,11 +608,20 @@ public class PreCompilerBuilder extends BaseBuilder {
protected void clean(IProgressMonitor monitor) throws CoreException {
super.clean(monitor);
- AdtPlugin.printBuildToConsole(BuildVerbosity.VERBOSE, getProject(),
+ // Get the project.
+ IProject project = getProject();
+
+ AdtPlugin.printBuildToConsole(BuildVerbosity.VERBOSE, project,
Messages.Removing_Generated_Classes);
// remove all the derived resources from the 'gen' source folder.
removeDerivedResources(mGenFolder, monitor);
+
+
+ // Clear the project of the generic markers
+ removeMarkersFromProject(project, AndroidConstants.MARKER_AAPT_COMPILE);
+ removeMarkersFromProject(project, AndroidConstants.MARKER_XML);
+ removeMarkersFromProject(project, AndroidConstants.MARKER_AIDL);
}
@Override
@@ -1011,7 +1020,7 @@ public class PreCompilerBuilder extends BaseBuilder {
}
// mark the file
- BaseProjectHelper.addMarker(file, AndroidConstants.MARKER_AIDL, msg, line,
+ BaseProjectHelper.markResource(file, AndroidConstants.MARKER_AIDL, msg, line,
IMarker.SEVERITY_ERROR);
// success, go to the next line
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/build/ResourceManagerBuilder.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/build/ResourceManagerBuilder.java
index 7bad5ad30..b6e6ac3fe 100644
--- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/build/ResourceManagerBuilder.java
+++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/build/ResourceManagerBuilder.java
@@ -55,6 +55,17 @@ public class ResourceManagerBuilder extends BaseBuilder {
super();
}
+ @Override
+ protected void clean(IProgressMonitor monitor) throws CoreException {
+ super.clean(monitor);
+
+ // Get the project.
+ IProject project = getProject();
+
+ // Clear the project of the generic markers
+ removeMarkersFromProject(project, AndroidConstants.MARKER_ADT);
+ }
+
// build() returns a list of project from which this project depends for future compilation.
@SuppressWarnings("unchecked")
@Override
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/project/AndroidClasspathContainerInitializer.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/project/AndroidClasspathContainerInitializer.java
index 347b08805..163445083 100644
--- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/project/AndroidClasspathContainerInitializer.java
+++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/project/AndroidClasspathContainerInitializer.java
@@ -259,7 +259,7 @@ public class AndroidClasspathContainerInitializer extends ClasspathContainerInit
}
try {
- BaseProjectHelper.addMarker(iProject, AndroidConstants.MARKER_TARGET,
+ BaseProjectHelper.markProject(iProject, AndroidConstants.MARKER_TARGET,
markerMessage, IMarker.SEVERITY_ERROR, IMarker.PRIORITY_HIGH);
} catch (CoreException e) {
// In some cases, the workspace may be locked for modification when we
@@ -270,7 +270,7 @@ public class AndroidClasspathContainerInitializer extends ClasspathContainerInit
@Override
protected IStatus run(IProgressMonitor monitor) {
try {
- BaseProjectHelper.addMarker(iProject,
+ BaseProjectHelper.markProject(iProject,
AndroidConstants.MARKER_TARGET,
fmessage, IMarker.SEVERITY_ERROR,
IMarker.PRIORITY_HIGH);
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/project/AndroidManifestParser.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/project/AndroidManifestParser.java
index f03749ccd..189fb81ad 100644
--- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/project/AndroidManifestParser.java
+++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/project/AndroidManifestParser.java
@@ -562,9 +562,8 @@ public class AndroidManifestParser {
int line = mLocator.getLineNumber();
// mark the file
- IMarker marker = BaseProjectHelper.addMarker(getFile(),
- AndroidConstants.MARKER_ANDROID,
- result, line, IMarker.SEVERITY_ERROR);
+ IMarker marker = BaseProjectHelper.markResource(getFile(),
+ AndroidConstants.MARKER_ANDROID, result, line, IMarker.SEVERITY_ERROR);
// add custom attributes to be used by the manifest editor.
if (marker != null) {
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/project/BaseProjectHelper.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/project/BaseProjectHelper.java
index 8a8d1a324..772470049 100644
--- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/project/BaseProjectHelper.java
+++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/project/BaseProjectHelper.java
@@ -84,34 +84,40 @@ public final class BaseProjectHelper {
/**
* Adds a marker to a file on a specific line. This methods catches thrown
* {@link CoreException}, and returns null instead.
- * @param file the file to be marked
+ * @param resource the resource to be marked
* @param markerId The id of the marker to add.
* @param message the message associated with the mark
* @param lineNumber the line number where to put the mark. If line is < 1, it puts the marker
- * on line 1.
+ * on line 1,
* @param severity the severity of the marker.
* @return the IMarker that was added or null if it failed to add one.
*/
- public final static IMarker addMarker(IResource file, String markerId,
+ public final static IMarker markResource(IResource resource, String markerId,
String message, int lineNumber, int severity) {
try {
- IMarker marker = file.createMarker(markerId);
+ IMarker marker = resource.createMarker(markerId);
marker.setAttribute(IMarker.MESSAGE, message);
marker.setAttribute(IMarker.SEVERITY, severity);
- if (lineNumber < 1) {
+
+ // if marker is text type, enforce a line number so that it shows in the editor
+ // somewhere (line 1)
+ if (lineNumber < 1 && marker.isSubtypeOf(IMarker.TEXT)) {
lineNumber = 1;
}
- marker.setAttribute(IMarker.LINE_NUMBER, lineNumber);
+
+ if (lineNumber >= 1) {
+ marker.setAttribute(IMarker.LINE_NUMBER, lineNumber);
+ }
// on Windows, when adding a marker to a project, it takes a refresh for the marker
// to show. In order to fix this we're forcing a refresh of elements receiving
// markers (and only the element, not its children), to force the marker display.
- file.refreshLocal(IResource.DEPTH_ZERO, new NullProgressMonitor());
+ resource.refreshLocal(IResource.DEPTH_ZERO, new NullProgressMonitor());
return marker;
} catch (CoreException e) {
AdtPlugin.log(e, "Failed to add marker '%1$s' to '%2$s'", //$NON-NLS-1$
- markerId, file.getFullPath());
+ markerId, resource.getFullPath());
}
return null;
@@ -126,30 +132,15 @@ public final class BaseProjectHelper {
* @param severity the severity of the marker.
* @return the IMarker that was added or null if it failed to add one.
*/
- public final static IMarker addMarker(IResource resource, String markerId,
+ public final static IMarker markResource(IResource resource, String markerId,
String message, int severity) {
- try {
- IMarker marker = resource.createMarker(markerId);
- marker.setAttribute(IMarker.MESSAGE, message);
- marker.setAttribute(IMarker.SEVERITY, severity);
-
- // on Windows, when adding a marker to a project, it takes a refresh for the marker
- // to show. In order to fix this we're forcing a refresh of elements receiving
- // markers (and only the element, not its children), to force the marker display.
- resource.refreshLocal(IResource.DEPTH_ZERO, new NullProgressMonitor());
-
- return marker;
- } catch (CoreException e) {
- AdtPlugin.log(e, "Failed to add marker '%1$s' to '%2$s'", //$NON-NLS-1$
- markerId, resource.getFullPath());
- }
-
- return null;
+ return markResource(resource, markerId, message, -1, severity);
}
/**
- * Adds a marker to a resource. This method does not catch {@link CoreException} and instead
- * throw them.
+ * Adds a marker to an {@link IProject}. This method does not catch {@link CoreException}, like
+ * {@link #markResource(IResource, String, String, int)}.
+ *
* @param resource the file to be marked
* @param markerId The id of the marker to add.
* @param message the message associated with the mark
@@ -158,7 +149,7 @@ public final class BaseProjectHelper {
* @return the IMarker that was added.
* @throws CoreException
*/
- public final static IMarker addMarker(IProject project, String markerId,
+ public final static IMarker markProject(IProject project, String markerId,
String message, int severity, int priority) throws CoreException {
IMarker marker = project.createMarker(markerId);
marker.setAttribute(IMarker.MESSAGE, message);
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/project/XmlErrorHandler.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/project/XmlErrorHandler.java
index fe73d49b6..ab0022560 100644
--- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/project/XmlErrorHandler.java
+++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/project/XmlErrorHandler.java
@@ -34,7 +34,7 @@ public class XmlErrorHandler extends DefaultHandler {
/** link to the delta visitor, to set the xml error flag */
private XmlErrorListener mErrorListener;
-
+
/**
* Classes which implement this interface provide a method that deals
* with XML errors.
@@ -45,10 +45,10 @@ public class XmlErrorHandler extends DefaultHandler {
*/
public void errorFound();
}
-
+
public static class BasicXmlErrorListener implements XmlErrorListener {
public boolean mHasXmlError = false;
-
+
public void errorFound() {
mHasXmlError = true;
}
@@ -62,7 +62,7 @@ public class XmlErrorHandler extends DefaultHandler {
/**
* Xml Error call back
* @param exception the parsing exception
- * @throws SAXException
+ * @throws SAXException
*/
@Override
public void error(SAXParseException exception) throws SAXException {
@@ -72,7 +72,7 @@ public class XmlErrorHandler extends DefaultHandler {
/**
* Xml Fatal Error call back
* @param exception the parsing exception
- * @throws SAXException
+ * @throws SAXException
*/
@Override
public void fatalError(SAXParseException exception) throws SAXException {
@@ -82,23 +82,23 @@ public class XmlErrorHandler extends DefaultHandler {
/**
* Xml Warning call back
* @param exception the parsing exception
- * @throws SAXException
+ * @throws SAXException
*/
@Override
public void warning(SAXParseException exception) throws SAXException {
if (mFile != null) {
- BaseProjectHelper.addMarker(mFile,
+ BaseProjectHelper.markResource(mFile,
AndroidConstants.MARKER_XML,
exception.getMessage(),
exception.getLineNumber(),
IMarker.SEVERITY_WARNING);
}
}
-
+
protected final IFile getFile() {
return mFile;
}
-
+
/**
* Handles a parsing error and an optional line number.
* @param exception
@@ -108,25 +108,18 @@ public class XmlErrorHandler extends DefaultHandler {
if (mErrorListener != null) {
mErrorListener.errorFound();
}
-
+
String message = exception.getMessage();
if (message == null) {
message = "Unknown error " + exception.getClass().getCanonicalName();
}
-
+
if (mFile != null) {
- if (lineNumber != -1) {
- BaseProjectHelper.addMarker(mFile,
- AndroidConstants.MARKER_XML,
- message,
- lineNumber,
- IMarker.SEVERITY_ERROR);
- } else {
- BaseProjectHelper.addMarker(mFile,
- AndroidConstants.MARKER_XML,
- message,
- IMarker.SEVERITY_ERROR);
- }
+ BaseProjectHelper.markResource(mFile,
+ AndroidConstants.MARKER_XML,
+ message,
+ lineNumber,
+ IMarker.SEVERITY_ERROR);
}
}
}