Make CompiledResourcesMonitor#getRClassName more error proof.
This commit is contained in:
@@ -670,22 +670,23 @@ public class AndroidManifestParser {
|
|||||||
boolean markErrors)
|
boolean markErrors)
|
||||||
throws CoreException {
|
throws CoreException {
|
||||||
try {
|
try {
|
||||||
SAXParser parser = sParserFactory.newSAXParser();
|
if (manifestFile != null) {
|
||||||
|
SAXParser parser = sParserFactory.newSAXParser();
|
||||||
|
|
||||||
ManifestHandler manifestHandler = new ManifestHandler(manifestFile,
|
ManifestHandler manifestHandler = new ManifestHandler(manifestFile,
|
||||||
errorListener, gatherData, javaProject, markErrors);
|
errorListener, gatherData, javaProject, markErrors);
|
||||||
parser.parse(new InputSource(manifestFile.getContents()), manifestHandler);
|
parser.parse(new InputSource(manifestFile.getContents()), manifestHandler);
|
||||||
|
|
||||||
// get the result from the handler
|
// get the result from the handler
|
||||||
|
return new AndroidManifestParser(manifestHandler.getPackage(),
|
||||||
return new AndroidManifestParser(manifestHandler.getPackage(),
|
manifestHandler.getActivities(),
|
||||||
manifestHandler.getActivities(),
|
manifestHandler.getLauncherActivity(),
|
||||||
manifestHandler.getLauncherActivity(),
|
manifestHandler.getProcesses(),
|
||||||
manifestHandler.getProcesses(),
|
manifestHandler.getDebuggable(),
|
||||||
manifestHandler.getDebuggable(),
|
manifestHandler.getApiLevelRequirement(),
|
||||||
manifestHandler.getApiLevelRequirement(),
|
manifestHandler.getInstrumentations(),
|
||||||
manifestHandler.getInstrumentations(),
|
manifestHandler.getUsesLibraries());
|
||||||
manifestHandler.getUsesLibraries());
|
}
|
||||||
} catch (ParserConfigurationException e) {
|
} catch (ParserConfigurationException e) {
|
||||||
AdtPlugin.logAndPrintError(e, AndroidManifestParser.class.getCanonicalName(),
|
AdtPlugin.logAndPrintError(e, AndroidManifestParser.class.getCanonicalName(),
|
||||||
"Bad parser configuration for %s: %s",
|
"Bad parser configuration for %s: %s",
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ import com.android.ide.eclipse.adt.internal.resources.manager.ResourceMonitor.IP
|
|||||||
import org.eclipse.core.resources.IFile;
|
import org.eclipse.core.resources.IFile;
|
||||||
import org.eclipse.core.resources.IMarkerDelta;
|
import org.eclipse.core.resources.IMarkerDelta;
|
||||||
import org.eclipse.core.resources.IProject;
|
import org.eclipse.core.resources.IProject;
|
||||||
|
import org.eclipse.core.resources.IResource;
|
||||||
import org.eclipse.core.resources.IResourceDelta;
|
import org.eclipse.core.resources.IResourceDelta;
|
||||||
import org.eclipse.core.runtime.CoreException;
|
import org.eclipse.core.runtime.CoreException;
|
||||||
import org.eclipse.core.runtime.IStatus;
|
import org.eclipse.core.runtime.IStatus;
|
||||||
@@ -216,10 +217,12 @@ public final class CompiledResourcesMonitor implements IFileListener, IProjectLi
|
|||||||
private String getRClassName(IProject project) {
|
private String getRClassName(IProject project) {
|
||||||
try {
|
try {
|
||||||
IFile manifestFile = AndroidManifestParser.getManifest(project);
|
IFile manifestFile = AndroidManifestParser.getManifest(project);
|
||||||
AndroidManifestParser data = AndroidManifestParser.parseForData(manifestFile);
|
if (manifestFile != null && manifestFile.isSynchronized(IResource.DEPTH_ZERO)) {
|
||||||
if (data != null) {
|
AndroidManifestParser data = AndroidManifestParser.parseForData(manifestFile);
|
||||||
String javaPackage = data.getPackage();
|
if (data != null) {
|
||||||
return javaPackage + ".R"; //$NON-NLS-1$
|
String javaPackage = data.getPackage();
|
||||||
|
return javaPackage + ".R"; //$NON-NLS-1$
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} catch (CoreException e) {
|
} catch (CoreException e) {
|
||||||
// This will typically happen either because the manifest file is not present
|
// This will typically happen either because the manifest file is not present
|
||||||
|
|||||||
Reference in New Issue
Block a user