aboutsummaryrefslogtreecommitdiffstats
path: root/eclipse
diff options
context:
space:
mode:
authorTor Norbye <tnorbye@google.com>2014-03-13 19:57:31 -0700
committerTor Norbye <tnorbye@google.com>2014-03-14 17:29:43 -0700
commit6fa428acd0a9317b204c7b226fbee822244d4053 (patch)
tree4352a74f3faf1c45221d93b5f5ff85fcfda0ee9a /eclipse
parentcddd575a43240900730dc36705212144de21c412 (diff)
downloadsdk-6fa428acd0a9317b204c7b226fbee822244d4053.zip
sdk-6fa428acd0a9317b204c7b226fbee822244d4053.tar.gz
sdk-6fa428acd0a9317b204c7b226fbee822244d4053.tar.bz2
Track lint API changes
Change-Id: I3e6f2c4228da78b48df8d138df20e0b0126c4926
Diffstat (limited to 'eclipse')
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/lint/EclipseLintClient.java194
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.tests/src/com/android/ide/eclipse/adt/internal/lint/ProjectLintConfigurationTest.java8
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.tests/src/com/android/ide/eclipse/adt/internal/wizards/templates/TemplateHandlerTest.java14
3 files changed, 110 insertions, 106 deletions
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/lint/EclipseLintClient.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/lint/EclipseLintClient.java
index 1f90779..fd8125e 100644
--- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/lint/EclipseLintClient.java
+++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/lint/EclipseLintClient.java
@@ -33,10 +33,10 @@ import com.android.ide.eclipse.adt.internal.sdk.Sdk;
import com.android.sdklib.IAndroidTarget;
import com.android.tools.lint.checks.BuiltinIssueRegistry;
import com.android.tools.lint.client.api.Configuration;
-import com.android.tools.lint.client.api.IDomParser;
-import com.android.tools.lint.client.api.IJavaParser;
import com.android.tools.lint.client.api.IssueRegistry;
+import com.android.tools.lint.client.api.JavaParser;
import com.android.tools.lint.client.api.LintClient;
+import com.android.tools.lint.client.api.XmlParser;
import com.android.tools.lint.detector.api.ClassContext;
import com.android.tools.lint.detector.api.Context;
import com.android.tools.lint.detector.api.DefaultPosition;
@@ -105,7 +105,6 @@ import java.util.List;
import java.util.Map;
import java.util.WeakHashMap;
-import lombok.ast.TypeReference;
import lombok.ast.ecj.EcjTreeConverter;
import lombok.ast.grammar.ParseProblem;
import lombok.ast.grammar.Source;
@@ -114,7 +113,7 @@ import lombok.ast.grammar.Source;
* Eclipse implementation for running lint on workspace files and projects.
*/
@SuppressWarnings("restriction") // DOM model
-public class EclipseLintClient extends LintClient implements IDomParser {
+public class EclipseLintClient extends LintClient {
static final String MARKER_CHECKID_PROPERTY = "checkid"; //$NON-NLS-1$
private static final String MODEL_PROPERTY = "model"; //$NON-NLS-1$
private final List<? extends IResource> mResources;
@@ -206,51 +205,103 @@ public class EclipseLintClient extends LintClient implements IDomParser {
}
@Override
- public IDomParser getDomParser() {
- return this;
- }
+ public XmlParser getXmlParser() {
+ return new XmlParser() {
+ @Override
+ public Document parseXml(@NonNull XmlContext context) {
+ // Map File to IFile
+ IFile file = AdtUtils.fileToIFile(context.file);
+ if (file == null || !file.exists()) {
+ String path = context.file.getPath();
+ AdtPlugin.log(IStatus.ERROR, "Can't find file %1$s in workspace", path);
+ return null;
+ }
- @Override
- public IJavaParser getJavaParser() {
- if (mJavaParser == null) {
- mJavaParser = new EclipseJavaParser();
- }
+ IStructuredModel model = null;
+ try {
+ IModelManager modelManager = StructuredModelManager.getModelManager();
+ if (modelManager == null) {
+ // This can happen if incremental lint is running right as Eclipse is
+ // shutting down
+ return null;
+ }
+ model = modelManager.getModelForRead(file);
+ if (model instanceof IDOMModel) {
+ context.setProperty(MODEL_PROPERTY, model);
+ IDOMModel domModel = (IDOMModel) model;
+ return domModel.getDocument();
+ }
+ } catch (IOException e) {
+ AdtPlugin.log(e, "Cannot read XML file");
+ } catch (CoreException e) {
+ AdtPlugin.log(e, null);
+ }
- return mJavaParser;
- }
+ return null;
+ }
- // ----- Implements IDomParser -----
+ @Override
+ public @NonNull Location getLocation(@NonNull XmlContext context, @NonNull Node node) {
+ IStructuredModel model = (IStructuredModel) context.getProperty(MODEL_PROPERTY);
+ return new LazyLocation(context.file, model.getStructuredDocument(),
+ (IndexedRegion) node);
+ }
- @Override
- public Document parseXml(@NonNull XmlContext context) {
- // Map File to IFile
- IFile file = AdtUtils.fileToIFile(context.file);
- if (file == null || !file.exists()) {
- String path = context.file.getPath();
- AdtPlugin.log(IStatus.ERROR, "Can't find file %1$s in workspace", path);
- return null;
- }
+ @Override
+ public @NonNull Location getLocation(@NonNull XmlContext context, @NonNull Node node,
+ int start, int end) {
+ IndexedRegion region = (IndexedRegion) node;
+ int nodeStart = region.getStartOffset();
+
+ IStructuredModel model = (IStructuredModel) context.getProperty(MODEL_PROPERTY);
+ // Get line number
+ LazyLocation location = new LazyLocation(context.file,
+ model.getStructuredDocument(), region);
+ int line = location.getStart().getLine();
+
+ Position startPos = new DefaultPosition(line, -1, nodeStart + start);
+ Position endPos = new DefaultPosition(line, -1, nodeStart + end);
+ return Location.create(context.file, startPos, endPos);
+ }
- IStructuredModel model = null;
- try {
- IModelManager modelManager = StructuredModelManager.getModelManager();
- if (modelManager == null) {
- // This can happen if incremental lint is running right as Eclipse is shutting down
- return null;
+ @Override
+ public int getNodeStartOffset(@NonNull XmlContext context, @NonNull Node node) {
+ IndexedRegion region = (IndexedRegion) node;
+ return region.getStartOffset();
}
- model = modelManager.getModelForRead(file);
- if (model instanceof IDOMModel) {
- context.setProperty(MODEL_PROPERTY, model);
- IDOMModel domModel = (IDOMModel) model;
- return domModel.getDocument();
+
+ @Override
+ public int getNodeEndOffset(@NonNull XmlContext context, @NonNull Node node) {
+ IndexedRegion region = (IndexedRegion) node;
+ return region.getEndOffset();
}
- } catch (IOException e) {
- AdtPlugin.log(e, "Cannot read XML file");
- } catch (CoreException e) {
- AdtPlugin.log(e, null);
+
+ @Override
+ public @NonNull Handle createLocationHandle(final @NonNull XmlContext context,
+ final @NonNull Node node) {
+ IStructuredModel model = (IStructuredModel) context.getProperty(MODEL_PROPERTY);
+ return new LazyLocation(context.file, model.getStructuredDocument(),
+ (IndexedRegion) node);
+ }
+
+ @Override
+ public void dispose(@NonNull XmlContext context, @NonNull Document document) {
+ IStructuredModel model = (IStructuredModel) context.getProperty(MODEL_PROPERTY);
+ assert model != null : context.file;
+ if (model != null) {
+ model.releaseFromRead();
+ }
+ }
+ };
+ }
+
+ @Override
+ public JavaParser getJavaParser(@Nullable Project project) {
+ if (mJavaParser == null) {
+ mJavaParser = new EclipseJavaParser();
}
- return null;
+ return mJavaParser;
}
// Cache for {@link getProject}
@@ -735,48 +786,6 @@ public class EclipseLintClient extends LintClient implements IDomParser {
}
}
- @Override
- public @NonNull Location getLocation(@NonNull XmlContext context, @NonNull Node node) {
- IStructuredModel model = (IStructuredModel) context.getProperty(MODEL_PROPERTY);
- return new LazyLocation(context.file, model.getStructuredDocument(), (IndexedRegion) node);
- }
-
- @Override
- public @NonNull Location getLocation(@NonNull XmlContext context, @NonNull Node node,
- int start, int end) {
- IndexedRegion region = (IndexedRegion) node;
- int nodeStart = region.getStartOffset();
-
- IStructuredModel model = (IStructuredModel) context.getProperty(MODEL_PROPERTY);
- // Get line number
- LazyLocation location = new LazyLocation(context.file, model.getStructuredDocument(),
- region);
- int line = location.getStart().getLine();
-
- Position startPos = new DefaultPosition(line, -1, nodeStart + start);
- Position endPos = new DefaultPosition(line, -1, nodeStart + end);
- return Location.create(context.file, startPos, endPos);
- }
-
- @Override
- public int getNodeStartOffset(@NonNull XmlContext context, @NonNull Node node) {
- IndexedRegion region = (IndexedRegion) node;
- return region.getStartOffset();
- }
-
- @Override
- public int getNodeEndOffset(@NonNull XmlContext context, @NonNull Node node) {
- IndexedRegion region = (IndexedRegion) node;
- return region.getEndOffset();
- }
-
- @Override
- public @NonNull Handle createLocationHandle(final @NonNull XmlContext context,
- final @NonNull Node node) {
- IStructuredModel model = (IStructuredModel) context.getProperty(MODEL_PROPERTY);
- return new LazyLocation(context.file, model.getStructuredDocument(), (IndexedRegion) node);
- }
-
private Map<Project, ClassPathInfo> mProjectInfo;
@Override
@@ -902,15 +911,6 @@ public class EclipseLintClient extends LintClient implements IDomParser {
}
@Override
- public void dispose(@NonNull XmlContext context, @NonNull Document document) {
- IStructuredModel model = (IStructuredModel) context.getProperty(MODEL_PROPERTY);
- assert model != null : context.file;
- if (model != null) {
- model.releaseFromRead();
- }
- }
-
- @Override
@NonNull
public IAndroidTarget[] getTargets() {
return Sdk.getCurrent().getTargets();
@@ -1102,7 +1102,7 @@ public class EclipseLintClient extends LintClient implements IDomParser {
}
}
- private static class EclipseJavaParser implements IJavaParser {
+ private static class EclipseJavaParser extends JavaParser {
private static final boolean USE_ECLIPSE_PARSER = true;
private final Parser mParser;
@@ -1129,6 +1129,11 @@ public class EclipseLintClient extends LintClient implements IDomParser {
}
@Override
+ public void prepareJavaParse(@NonNull List<JavaContext> contexts) {
+ // TODO: Use batch compiler from lint-cli.jar
+ }
+
+ @Override
public lombok.ast.Node parseJava(@NonNull JavaContext context) {
if (USE_ECLIPSE_PARSER) {
// Use Eclipse's compiler
@@ -1230,14 +1235,15 @@ public class EclipseLintClient extends LintClient implements IDomParser {
@Override
@Nullable
- public lombok.ast.Node resolve(@NonNull JavaContext context,
+ public ResolvedNode resolve(@NonNull JavaContext context,
@NonNull lombok.ast.Node node) {
return null;
}
@Override
@Nullable
- public TypeReference getType(@NonNull JavaContext context, @NonNull lombok.ast.Node node) {
+ public TypeDescriptor getType(@NonNull JavaContext context,
+ @NonNull lombok.ast.Node node) {
return null;
}
diff --git a/eclipse/plugins/com.android.ide.eclipse.tests/src/com/android/ide/eclipse/adt/internal/lint/ProjectLintConfigurationTest.java b/eclipse/plugins/com.android.ide.eclipse.tests/src/com/android/ide/eclipse/adt/internal/lint/ProjectLintConfigurationTest.java
index 088ece7..7fd042e 100644
--- a/eclipse/plugins/com.android.ide.eclipse.tests/src/com/android/ide/eclipse/adt/internal/lint/ProjectLintConfigurationTest.java
+++ b/eclipse/plugins/com.android.ide.eclipse.tests/src/com/android/ide/eclipse/adt/internal/lint/ProjectLintConfigurationTest.java
@@ -21,9 +21,9 @@ import com.android.ide.eclipse.adt.internal.editors.layout.refactoring.AdtProjec
import com.android.tools.lint.checks.DuplicateIdDetector;
import com.android.tools.lint.checks.UnusedResourceDetector;
import com.android.tools.lint.client.api.Configuration;
-import com.android.tools.lint.client.api.IDomParser;
-import com.android.tools.lint.client.api.IJavaParser;
+import com.android.tools.lint.client.api.JavaParser;
import com.android.tools.lint.client.api.LintClient;
+import com.android.tools.lint.client.api.XmlParser;
import com.android.tools.lint.detector.api.Context;
import com.android.tools.lint.detector.api.Issue;
import com.android.tools.lint.detector.api.Location;
@@ -200,7 +200,7 @@ public class ProjectLintConfigurationTest extends AdtProjectTest {
}
@Override
- public IDomParser getDomParser() {
+ public XmlParser getXmlParser() {
return null;
}
@@ -210,7 +210,7 @@ public class ProjectLintConfigurationTest extends AdtProjectTest {
}
@Override
- public IJavaParser getJavaParser() {
+ public JavaParser getJavaParser(@Nullable Project project) {
return null;
}
}
diff --git a/eclipse/plugins/com.android.ide.eclipse.tests/src/com/android/ide/eclipse/adt/internal/wizards/templates/TemplateHandlerTest.java b/eclipse/plugins/com.android.ide.eclipse.tests/src/com/android/ide/eclipse/adt/internal/wizards/templates/TemplateHandlerTest.java
index 9a66985..1e04a29 100644
--- a/eclipse/plugins/com.android.ide.eclipse.tests/src/com/android/ide/eclipse/adt/internal/wizards/templates/TemplateHandlerTest.java
+++ b/eclipse/plugins/com.android.ide.eclipse.tests/src/com/android/ide/eclipse/adt/internal/wizards/templates/TemplateHandlerTest.java
@@ -40,10 +40,10 @@ import com.android.tools.lint.checks.ManifestDetector;
import com.android.tools.lint.checks.SecurityDetector;
import com.android.tools.lint.client.api.Configuration;
import com.android.tools.lint.client.api.DefaultConfiguration;
-import com.android.tools.lint.client.api.IDomParser;
-import com.android.tools.lint.client.api.IJavaParser;
+import com.android.tools.lint.client.api.JavaParser;
import com.android.tools.lint.client.api.LintClient;
import com.android.tools.lint.client.api.LintDriver;
+import com.android.tools.lint.client.api.XmlParser;
import com.android.tools.lint.detector.api.Category;
import com.android.tools.lint.detector.api.Context;
import com.android.tools.lint.detector.api.Issue;
@@ -831,15 +831,13 @@ public class TemplateHandlerTest extends SdkLoadingTestCase {
@Override
@Nullable
- public IJavaParser getJavaParser() {
- return new EclipseLintClient(null, null, null, false).getJavaParser();
+ public JavaParser getJavaParser(@Nullable Project project) {
+ return new EclipseLintClient(null, null, null, false).getJavaParser(project);
}
@Override
- @Nullable
- public IDomParser getDomParser() {
- //return new LintCliXmlParser();
- return new EclipseLintClient(null, null, null, false).getDomParser();
+ public XmlParser getXmlParser() {
+ return new EclipseLintClient(null, null, null, false).getXmlParser();
}
});
File projectDir = AdtUtils.getAbsolutePath(project).toFile();