Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMike Rennie2014-08-11 19:56:18 +0000
committerMike Rennie2014-08-11 19:56:18 +0000
commit3686ca746692c628cbe0d135de2fe1de5512fb14 (patch)
tree9bfd76084a60cb725904ad873eb555f3b605d3e8 /apitools
parentc02617456399307d291e9d928e6d83ff734247e7 (diff)
downloadeclipse.pde.ui-3686ca746692c628cbe0d135de2fe1de5512fb14.tar.gz
eclipse.pde.ui-3686ca746692c628cbe0d135de2fe1de5512fb14.tar.xz
eclipse.pde.ui-3686ca746692c628cbe0d135de2fe1de5512fb14.zip
Bug 438432 - Java 8 API errors on
ZonedDateTime#isBefore(ChronoZonedDateTime) and #toEpochSecond() Change-Id: I6c66110dfb3c5bf2d799eea6134fb0f30e67c72a
Diffstat (limited to 'apitools')
-rw-r--r--apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/builder/tests/usage/Java8ConsRefInstantiateUsageTests.java3
-rw-r--r--apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/builder/tests/usage/Java8DefaultMethodUsageTests.java187
-rw-r--r--apitools/org.eclipse.pde.api.tools.tests/test-builder/usage/java8/interface/test10.java2
-rw-r--r--apitools/org.eclipse.pde.api.tools.tests/test-builder/usage/java8/interface/test15.java22
-rw-r--r--apitools/org.eclipse.pde.api.tools.tests/test-builder/usage/java8/interface/test16.java24
-rw-r--r--apitools/org.eclipse.pde.api.tools.tests/test-builder/usage/java8/interface/test17.java24
-rw-r--r--apitools/org.eclipse.pde.api.tools.tests/test-builder/usage/java8/interface/test18.java25
-rw-r--r--apitools/org.eclipse.pde.api.tools.tests/test-builder/usage/java8/interface/test19.java24
-rw-r--r--apitools/org.eclipse.pde.api.tools.tests/test-builder/usageprojectsjava8/refprojectjava8/META-INF/MANIFEST.MF2
-rw-r--r--apitools/org.eclipse.pde.api.tools.tests/test-builder/usageprojectsjava8/refprojectjava8/src/c/IndirectNoRefJavadocDefaultInterfaceImpl.java18
-rw-r--r--apitools/org.eclipse.pde.api.tools.tests/test-builder/usageprojectsjava8/refprojectjava8/src/c/NoRefJavadocDefaultInterfaceImpl.java20
-rw-r--r--apitools/org.eclipse.pde.api.tools.tests/test-builder/usageprojectsjava8/refprojectjava8/src/c/NoRefJavadocDefaultInterfaceImpl2.java20
-rw-r--r--apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/ReferenceExtractor.java217
13 files changed, 391 insertions, 197 deletions
diff --git a/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/builder/tests/usage/Java8ConsRefInstantiateUsageTests.java b/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/builder/tests/usage/Java8ConsRefInstantiateUsageTests.java
index 0eb71eedf5..85af9a01ab 100644
--- a/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/builder/tests/usage/Java8ConsRefInstantiateUsageTests.java
+++ b/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/builder/tests/usage/Java8ConsRefInstantiateUsageTests.java
@@ -1,5 +1,3 @@
-package org.eclipse.pde.api.tools.builder.tests.usage;
-
/*******************************************************************************
* Copyright (c) 2014 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
@@ -10,6 +8,7 @@ package org.eclipse.pde.api.tools.builder.tests.usage;
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
+package org.eclipse.pde.api.tools.builder.tests.usage;
import junit.framework.Test;
diff --git a/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/builder/tests/usage/Java8DefaultMethodUsageTests.java b/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/builder/tests/usage/Java8DefaultMethodUsageTests.java
index 8f9b0b485f..6bcc22e81e 100644
--- a/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/builder/tests/usage/Java8DefaultMethodUsageTests.java
+++ b/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/builder/tests/usage/Java8DefaultMethodUsageTests.java
@@ -1,8 +1,19 @@
+/*******************************************************************************
+ * Copyright (c) 2014 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
package org.eclipse.pde.api.tools.builder.tests.usage;
import junit.framework.Test;
import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
import org.eclipse.pde.api.tools.internal.problems.ApiProblemFactory;
import org.eclipse.pde.api.tools.internal.provisional.descriptors.IElementDescriptor;
import org.eclipse.pde.api.tools.internal.provisional.problems.IApiProblem;
@@ -494,5 +505,181 @@ public class Java8DefaultMethodUsageTests extends Java8UsageTest {
deployUsageTest(typename, inc);
}
+ /**
+ * Tests that we do not find any problems referencing default methods in JDK
+ * types
+ *
+ * @throws Exception
+ * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=438432
+ */
+ public void testSystemComponentNoDefaultMethodsReportedF() throws Exception {
+ x15(false);
+ }
+
+ /**
+ * Tests that we do not find any problems referencing default methods in JDK
+ * types
+ *
+ * @throws Exception
+ * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=438432
+ */
+ public void testSystemComponentNoDefaultMethodsReportedI() throws Exception {
+ x15(true);
+ }
+
+ private void x15(boolean inc) throws Exception {
+ String typename = "test15"; //$NON-NLS-1$
+ expectingNoJDTProblems();
+ IPath typepath = new Path(getTestingProjectName()).append(UsageTest.SOURCE_PATH).append(typename).addFileExtension("java"); //$NON-NLS-1$
+ expectingNoProblemsFor(typepath);
+ deployUsageTest(typename, inc);
+ }
+
+ /**
+ * Tests that we find problems referencing default methods in other bundle
+ * types
+ *
+ * @throws Exception
+ * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=438432
+ */
+ public void testOtherBundleDefaultMethodCallF() throws Exception {
+ x16(false);
+ }
+
+ /**
+ * Tests that we find problems referencing default methods in other bundle
+ * types
+ *
+ * @throws Exception
+ * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=438432
+ */
+ public void testOtherBundleDefaultMethodCallI() throws Exception {
+ x16(true);
+ }
+
+ private void x16(boolean inc) {
+ int[] pids = new int[] { getProblemId(IApiProblem.ILLEGAL_REFERENCE, IApiProblem.METHOD) };
+ String typename = "test16"; //$NON-NLS-1$
+ setExpectedProblemIds(pids);
+ String[][] args = new String[][] { {
+ "INoRefJavadocDefaultInterface2", typename, "m1()" } //$NON-NLS-1$//$NON-NLS-2$
+
+ };
+ setExpectedMessageArgs(args);
+ setExpectedLineMappings(new LineMapping[] { new LineMapping(22, pids[0], args[0])
+
+ });
+ deployUsageTest(typename, inc);
+ }
+
+ /**
+ * Tests that we find problems referencing default methods in other bundle
+ * types
+ *
+ * @throws Exception
+ * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=438432
+ */
+ public void testOtherBundleDefaultMethodCall2F() throws Exception {
+ x17(false);
+ }
+
+ /**
+ * Tests that we find problems referencing default methods in other bundle
+ * types
+ *
+ * @throws Exception
+ * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=438432
+ */
+ public void testOtherBundleDefaultMethodCall2I() throws Exception {
+ x17(true);
+ }
+
+ private void x17(boolean inc) {
+ int[] pids = new int[] { getProblemId(IApiProblem.ILLEGAL_REFERENCE, IApiProblem.METHOD) };
+ String typename = "test17"; //$NON-NLS-1$
+ setExpectedProblemIds(pids);
+ String[][] args = new String[][] { {
+ "INoRefJavadocDefaultInterface", typename, "m1()" } //$NON-NLS-1$//$NON-NLS-2$
+
+ };
+ setExpectedMessageArgs(args);
+ setExpectedLineMappings(new LineMapping[] { new LineMapping(22, pids[0], args[0])
+
+ });
+ deployUsageTest(typename, inc);
+ }
+ /**
+ * Tests that we find problems referencing default methods in other bundle
+ * types
+ *
+ * @throws Exception
+ * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=438432
+ */
+ public void testOtherBundleDefaultMethodCall3F() throws Exception {
+ x18(false);
+ }
+
+ /**
+ * Tests that we find problems referencing default methods in other bundle
+ * types
+ *
+ * @throws Exception
+ * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=438432
+ */
+ public void testOtherBundleDefaultMethodCall3I() throws Exception {
+ x18(true);
+ }
+
+ private void x18(boolean inc) {
+ int[] pids = new int[] { getProblemId(IApiProblem.ILLEGAL_REFERENCE, IApiProblem.METHOD) };
+ String typename = "test18"; //$NON-NLS-1$
+ setExpectedProblemIds(pids);
+ String[][] args = new String[][] { {
+ "INoRefJavadocDefaultInterface", typename, "m1()" } //$NON-NLS-1$//$NON-NLS-2$
+
+ };
+ setExpectedMessageArgs(args);
+ setExpectedLineMappings(new LineMapping[] { new LineMapping(23, pids[0], args[0])
+
+ });
+ deployUsageTest(typename, inc);
+ }
+
+ /**
+ * Tests that we find problems referencing default methods in other bundle
+ * types
+ *
+ * @throws Exception
+ * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=438432
+ */
+ public void testOtherBundleDefaultMethodCall4F() throws Exception {
+ x19(false);
+ }
+
+ /**
+ * Tests that we find problems referencing default methods in other bundle
+ * types
+ *
+ * @throws Exception
+ * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=438432
+ */
+ public void testOtherBundleDefaultMethodCall4I() throws Exception {
+ x19(true);
+ }
+
+ private void x19(boolean inc) {
+ int[] pids = new int[] { getProblemId(IApiProblem.ILLEGAL_REFERENCE, IApiProblem.METHOD) };
+ String typename = "test19"; //$NON-NLS-1$
+ setExpectedProblemIds(pids);
+ String[][] args = new String[][] { {
+ "INoRefJavadocDefaultInterface", typename, "m1()" } //$NON-NLS-1$//$NON-NLS-2$
+
+ };
+ setExpectedMessageArgs(args);
+ setExpectedLineMappings(new LineMapping[] { new LineMapping(22, pids[0], args[0])
+
+ });
+ deployUsageTest(typename, inc);
+ }
}
diff --git a/apitools/org.eclipse.pde.api.tools.tests/test-builder/usage/java8/interface/test10.java b/apitools/org.eclipse.pde.api.tools.tests/test-builder/usage/java8/interface/test10.java
index 5bcf757e5a..e465faa3a2 100644
--- a/apitools/org.eclipse.pde.api.tools.tests/test-builder/usage/java8/interface/test10.java
+++ b/apitools/org.eclipse.pde.api.tools.tests/test-builder/usage/java8/interface/test10.java
@@ -18,6 +18,6 @@ import i.INoRefJavadocDefaultInterface2;
public class test10 implements INoRefJavadocDefaultInterface2 {
public void test3() {
- m1();
+ m1();
}
}
diff --git a/apitools/org.eclipse.pde.api.tools.tests/test-builder/usage/java8/interface/test15.java b/apitools/org.eclipse.pde.api.tools.tests/test-builder/usage/java8/interface/test15.java
new file mode 100644
index 0000000000..c4682e7bb3
--- /dev/null
+++ b/apitools/org.eclipse.pde.api.tools.tests/test-builder/usage/java8/interface/test15.java
@@ -0,0 +1,22 @@
+/*******************************************************************************
+ * Copyright (c) 2014 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package x.y.z;
+
+import java.time.ZonedDateTime;
+
+public class test15 {
+ public void m1() {
+ ZonedDateTime now = ZonedDateTime.now();
+ if (now != null) {
+ now.toEpochSecond();
+ }
+ }
+}
diff --git a/apitools/org.eclipse.pde.api.tools.tests/test-builder/usage/java8/interface/test16.java b/apitools/org.eclipse.pde.api.tools.tests/test-builder/usage/java8/interface/test16.java
new file mode 100644
index 0000000000..bfe053b635
--- /dev/null
+++ b/apitools/org.eclipse.pde.api.tools.tests/test-builder/usage/java8/interface/test16.java
@@ -0,0 +1,24 @@
+/*******************************************************************************
+ * Copyright (c) Aug 11, 2014 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package x.y.z;
+
+import c.NoRefJavadocDefaultInterfaceImpl2;
+
+/**
+ *
+ */
+public class test16 {
+
+ public void method() {
+ NoRefJavadocDefaultInterfaceImpl2 clazz = new NoRefJavadocDefaultInterfaceImpl2();
+ clazz.m1();
+ }
+}
diff --git a/apitools/org.eclipse.pde.api.tools.tests/test-builder/usage/java8/interface/test17.java b/apitools/org.eclipse.pde.api.tools.tests/test-builder/usage/java8/interface/test17.java
new file mode 100644
index 0000000000..a25ffcb500
--- /dev/null
+++ b/apitools/org.eclipse.pde.api.tools.tests/test-builder/usage/java8/interface/test17.java
@@ -0,0 +1,24 @@
+/*******************************************************************************
+ * Copyright (c) Aug 11, 2014 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package x.y.z;
+
+import c.NoRefJavadocDefaultInterfaceImpl;
+
+/**
+ *
+ */
+public class test17 {
+
+ public void method() {
+ NoRefJavadocDefaultInterfaceImpl clazz = new NoRefJavadocDefaultInterfaceImpl();
+ clazz.m1();
+ }
+}
diff --git a/apitools/org.eclipse.pde.api.tools.tests/test-builder/usage/java8/interface/test18.java b/apitools/org.eclipse.pde.api.tools.tests/test-builder/usage/java8/interface/test18.java
new file mode 100644
index 0000000000..c9816a5414
--- /dev/null
+++ b/apitools/org.eclipse.pde.api.tools.tests/test-builder/usage/java8/interface/test18.java
@@ -0,0 +1,25 @@
+/*******************************************************************************
+ * Copyright (c) Aug 11, 2014 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package x.y.z;
+
+import i.INoRefJavadocDefaultInterface;
+import c.NoRefJavadocDefaultInterfaceImpl;
+
+/**
+ *
+ */
+public class test18 {
+
+ public void method() {
+ INoRefJavadocDefaultInterface clazz = new NoRefJavadocDefaultInterfaceImpl();
+ clazz.m1();
+ }
+}
diff --git a/apitools/org.eclipse.pde.api.tools.tests/test-builder/usage/java8/interface/test19.java b/apitools/org.eclipse.pde.api.tools.tests/test-builder/usage/java8/interface/test19.java
new file mode 100644
index 0000000000..ef1d0df737
--- /dev/null
+++ b/apitools/org.eclipse.pde.api.tools.tests/test-builder/usage/java8/interface/test19.java
@@ -0,0 +1,24 @@
+/*******************************************************************************
+ * Copyright (c) Aug 11, 2014 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package x.y.z;
+
+import c.IndirectNoRefJavadocDefaultInterfaceImpl;
+
+/**
+ *
+ */
+public class test19 {
+
+ public void method() {
+ IndirectNoRefJavadocDefaultInterfaceImpl clazz = new IndirectNoRefJavadocDefaultInterfaceImpl();
+ clazz.m1();
+ }
+}
diff --git a/apitools/org.eclipse.pde.api.tools.tests/test-builder/usageprojectsjava8/refprojectjava8/META-INF/MANIFEST.MF b/apitools/org.eclipse.pde.api.tools.tests/test-builder/usageprojectsjava8/refprojectjava8/META-INF/MANIFEST.MF
index 6072c16bd6..f23afe7a10 100644
--- a/apitools/org.eclipse.pde.api.tools.tests/test-builder/usageprojectsjava8/refprojectjava8/META-INF/MANIFEST.MF
+++ b/apitools/org.eclipse.pde.api.tools.tests/test-builder/usageprojectsjava8/refprojectjava8/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@ Bundle-ManifestVersion: 2
Bundle-Name: refproject
Bundle-SymbolicName: refprojectjava8
Bundle-Version: 1.0.0
-Export-Package: i,m
+Export-Package: c,i,m
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Require-Bundle: org.eclipse.pde.api.tools;bundle-version="1.0.600",
org.eclipse.pde.api.tools.annotations;bundle-version="1.0.0"
diff --git a/apitools/org.eclipse.pde.api.tools.tests/test-builder/usageprojectsjava8/refprojectjava8/src/c/IndirectNoRefJavadocDefaultInterfaceImpl.java b/apitools/org.eclipse.pde.api.tools.tests/test-builder/usageprojectsjava8/refprojectjava8/src/c/IndirectNoRefJavadocDefaultInterfaceImpl.java
new file mode 100644
index 0000000000..918c787829
--- /dev/null
+++ b/apitools/org.eclipse.pde.api.tools.tests/test-builder/usageprojectsjava8/refprojectjava8/src/c/IndirectNoRefJavadocDefaultInterfaceImpl.java
@@ -0,0 +1,18 @@
+/*******************************************************************************
+ * Copyright (c) Aug 11, 2014 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package c;
+
+/**
+ *
+ */
+public class IndirectNoRefJavadocDefaultInterfaceImpl extends NoRefJavadocDefaultInterfaceImpl {
+
+}
diff --git a/apitools/org.eclipse.pde.api.tools.tests/test-builder/usageprojectsjava8/refprojectjava8/src/c/NoRefJavadocDefaultInterfaceImpl.java b/apitools/org.eclipse.pde.api.tools.tests/test-builder/usageprojectsjava8/refprojectjava8/src/c/NoRefJavadocDefaultInterfaceImpl.java
new file mode 100644
index 0000000000..d4dbc55cd3
--- /dev/null
+++ b/apitools/org.eclipse.pde.api.tools.tests/test-builder/usageprojectsjava8/refprojectjava8/src/c/NoRefJavadocDefaultInterfaceImpl.java
@@ -0,0 +1,20 @@
+/*******************************************************************************
+ * Copyright (c) Aug 11, 2014 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package c;
+
+import i.INoRefJavadocDefaultInterface;
+
+/**
+ *
+ */
+public class NoRefJavadocDefaultInterfaceImpl implements INoRefJavadocDefaultInterface {
+
+}
diff --git a/apitools/org.eclipse.pde.api.tools.tests/test-builder/usageprojectsjava8/refprojectjava8/src/c/NoRefJavadocDefaultInterfaceImpl2.java b/apitools/org.eclipse.pde.api.tools.tests/test-builder/usageprojectsjava8/refprojectjava8/src/c/NoRefJavadocDefaultInterfaceImpl2.java
new file mode 100644
index 0000000000..a20887335d
--- /dev/null
+++ b/apitools/org.eclipse.pde.api.tools.tests/test-builder/usageprojectsjava8/refprojectjava8/src/c/NoRefJavadocDefaultInterfaceImpl2.java
@@ -0,0 +1,20 @@
+/*******************************************************************************
+ * Copyright (c) Aug 11, 2014 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package c;
+
+import i.INoRefJavadocDefaultInterface2;
+
+/**
+ *
+ */
+public class NoRefJavadocDefaultInterfaceImpl2 implements INoRefJavadocDefaultInterface2 {
+
+}
diff --git a/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/ReferenceExtractor.java b/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/ReferenceExtractor.java
index 259983a1eb..1e00f263db 100644
--- a/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/ReferenceExtractor.java
+++ b/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/ReferenceExtractor.java
@@ -27,6 +27,7 @@ import org.eclipse.osgi.util.NLS;
import org.eclipse.pde.api.tools.internal.model.AbstractApiTypeRoot;
import org.eclipse.pde.api.tools.internal.provisional.ApiPlugin;
import org.eclipse.pde.api.tools.internal.provisional.builder.IReference;
+import org.eclipse.pde.api.tools.internal.provisional.model.IApiBaseline;
import org.eclipse.pde.api.tools.internal.provisional.model.IApiComponent;
import org.eclipse.pde.api.tools.internal.provisional.model.IApiField;
import org.eclipse.pde.api.tools.internal.provisional.model.IApiMember;
@@ -122,23 +123,11 @@ public class ReferenceExtractor extends ClassVisitor {
this.kind = this.originalkind;
}
- /*
- * (non-Javadoc)
- * @see
- * org.objectweb.asm.signature.SignatureVisitor#visitClassType(java.
- * lang.String)
- */
@Override
public void visitClassType(String name) {
this.processType(name);
}
- /*
- * (non-Javadoc)
- * @see
- * org.objectweb.asm.signature.SignatureVisitor#visitFormalTypeParameter
- * (java.lang.String)
- */
@Override
public void visitFormalTypeParameter(String name) {
if (this.type != TYPE) {
@@ -146,32 +135,15 @@ public class ReferenceExtractor extends ClassVisitor {
}
}
- /*
- * (non-Javadoc)
- * @see
- * org.objectweb.asm.signature.SignatureVisitor#visitTypeVariable(java
- * .lang.String)
- */
@Override
public void visitTypeVariable(String name) {
}
- /*
- * (non-Javadoc)
- * @see
- * org.objectweb.asm.signature.SignatureVisitor#visitInnerClassType(
- * java.lang.String)
- */
@Override
public void visitInnerClassType(String name) {
this.processType(name);
}
- /*
- * (non-Javadoc)
- * @see
- * org.objectweb.asm.signature.SignatureVisitor#visitParameterType()
- */
@Override
public SignatureVisitor visitParameterType() {
this.argumentcount++;
@@ -179,91 +151,52 @@ public class ReferenceExtractor extends ClassVisitor {
return this;
}
- /*
- * (non-Javadoc)
- * @see org.objectweb.asm.signature.SignatureVisitor#visitInterface()
- */
@Override
public SignatureVisitor visitInterface() {
this.kind = IReference.REF_IMPLEMENTS;
return this;
}
- /*
- * (non-Javadoc)
- * @see
- * org.objectweb.asm.signature.SignatureVisitor#visitExceptionType()
- */
@Override
public SignatureVisitor visitExceptionType() {
this.kind = IReference.REF_THROWS;
return this;
}
- /*
- * (non-Javadoc)
- * @see org.objectweb.asm.signature.SignatureVisitor#visitArrayType()
- */
@Override
public SignatureVisitor visitArrayType() {
return this;
}
- /*
- * (non-Javadoc)
- * @see org.objectweb.asm.signature.SignatureVisitor#visitReturnType()
- */
@Override
public SignatureVisitor visitReturnType() {
this.kind = IReference.REF_RETURNTYPE;
return this;
}
- /*
- * (non-Javadoc)
- * @see org.objectweb.asm.signature.SignatureVisitor#visitClassBound()
- */
@Override
public SignatureVisitor visitClassBound() {
this.kind = IReference.REF_PARAMETERIZED_TYPEDECL;
return this;
}
- /*
- * (non-Javadoc)
- * @see
- * org.objectweb.asm.signature.SignatureVisitor#visitInterfaceBound()
- */
@Override
public SignatureVisitor visitInterfaceBound() {
this.kind = IReference.REF_PARAMETERIZED_TYPEDECL;
return this;
}
- /*
- * (non-Javadoc)
- * @see org.objectweb.asm.signature.SignatureVisitor#visitSuperclass()
- */
@Override
public SignatureVisitor visitSuperclass() {
this.kind = IReference.REF_EXTENDS;
return this;
}
- /*
- * (non-Javadoc)
- * @see
- * org.objectweb.asm.signature.SignatureVisitor#visitTypeArgument(char)
- */
@Override
public SignatureVisitor visitTypeArgument(char wildcard) {
return this;
}
- /*
- * (non-Javadoc)
- * @see org.objectweb.asm.signature.SignatureVisitor#visitEnd()
- */
@Override
public void visitEnd() {
}
@@ -319,10 +252,6 @@ public class ReferenceExtractor extends ClassVisitor {
this.methodName = name;
}
- /*
- * (non-Javadoc)
- * @see org.objectweb.asm.MethodAdapter#visitEnd()
- */
@Override
public void visitEnd() {
this.implicitConstructor = false;
@@ -332,10 +261,6 @@ public class ReferenceExtractor extends ClassVisitor {
this.labelsToLocalMarkers = null;
}
- /*
- * (non-Javadoc)
- * @see org.objectweb.asm.MethodAdapter#visitVarInsn(int, int)
- */
@Override
public void visitVarInsn(int opcode, int var) {
this.stringLiteral = null;
@@ -352,11 +277,6 @@ public class ReferenceExtractor extends ClassVisitor {
}
}
- /*
- * (non-Javadoc)
- * @see org.objectweb.asm.MethodAdapter#visitFieldInsn(int,
- * java.lang.String, java.lang.String, java.lang.String)
- */
@Override
public void visitFieldInsn(int opcode, String owner, String name, String desc) {
int refType = -1;
@@ -392,13 +312,6 @@ public class ReferenceExtractor extends ClassVisitor {
}
}
- /*
- * (non-Javadoc)
- * @see
- * org.objectweb.asm.MethodAdapter#visitTryCatchBlock(org.objectweb.
- * asm.Label, org.objectweb.asm.Label, org.objectweb.asm.Label,
- * java.lang.String)
- */
@Override
public void visitTryCatchBlock(Label start, Label end, Label handler, String type) {
if (type != null) {
@@ -411,10 +324,6 @@ public class ReferenceExtractor extends ClassVisitor {
}
}
- /*
- * (non-Javadoc)
- * @see org.objectweb.asm.MethodAdapter#visitLabel(Label)
- */
@Override
public void visitLabel(Label label) {
this.linePositionTracker.addLabel(label);
@@ -481,9 +390,29 @@ public class ReferenceExtractor extends ClassVisitor {
IApiMember member = ReferenceExtractor.this.getMember();
if (member != null) {
try {
- IApiType type = member.getEnclosingType();
- if (type != null && getDefaultDefined(type, name, desc, false) != null) {
- flags = IReference.F_DEFAULT_METHOD;
+ IApiComponent comp = fType.getApiComponent();
+ if (comp != null) {
+ String owner_sig = processName(owner);
+ AbstractApiTypeRoot root = (AbstractApiTypeRoot) comp.findTypeRoot(owner_sig);
+ if (root == null) {
+ // a quick look did not find it, now ask
+ // for the components that provide the
+ // package
+ IApiBaseline baseline = comp.getBaseline();
+ IApiComponent[] comps = baseline.resolvePackage(comp, Signatures.getPackageName(owner_sig));
+ for (int i = 0; i < comps.length; i++) {
+ root = (AbstractApiTypeRoot) comps[i].findTypeRoot(owner_sig);
+ if (root != null) {
+ break;
+ }
+ }
+ }
+ if (root != null) {
+ IApiType type = root.getStructure();
+ if (type != null && getDefaultDefined(type, name, desc, false) != null) {
+ flags = IReference.F_DEFAULT_METHOD;
+ }
+ }
}
} catch (CoreException ce) {
// do nothing, give up
@@ -526,22 +455,11 @@ public class ReferenceExtractor extends ClassVisitor {
}
}
- /*
- * (non-Javadoc)
- * @see org.objectweb.asm.MethodVisitor#visitInsnAnnotation(int,
- * org.objectweb.asm.TypePath, java.lang.String, boolean)
- */
@Override
public AnnotationVisitor visitInsnAnnotation(int typeRef, TypePath typePath, String desc, boolean visible) {
return null;
}
- /*
- * (non-Javadoc)
- * @see
- * org.objectweb.asm.MethodAdapter#visitMultiANewArrayInsn(java.lang
- * .String, int)
- */
@Override
public void visitMultiANewArrayInsn(String desc, int dims) {
Type type = this.getTypeFromDescription(desc);
@@ -551,21 +469,12 @@ public class ReferenceExtractor extends ClassVisitor {
}
}
- /*
- * (non-Javadoc)
- * @see org.objectweb.asm.MethodAdapter#visitLineNumber(int,
- * org.objectweb.asm.Label)
- */
@Override
public void visitLineNumber(int line, Label start) {
this.lastLineNumber = line;
this.linePositionTracker.addLineInfo(line, start);
}
- /*
- * (non-Javadoc)
- * @see java.lang.Object#toString()
- */
@Override
public String toString() {
StringBuffer buffer = new StringBuffer();
@@ -597,11 +506,6 @@ public class ReferenceExtractor extends ClassVisitor {
return type;
}
- /*
- * (non-Javadoc)
- * @see org.objectweb.asm.MethodAdapter#visitTypeInsn(int,
- * java.lang.String)
- */
@Override
public void visitTypeInsn(int opcode, String desc) {
Type type = this.getTypeFromDescription(desc);
@@ -643,13 +547,6 @@ public class ReferenceExtractor extends ClassVisitor {
}
}
- /*
- * (non-Javadoc)
- * @see
- * org.objectweb.asm.MethodAdapter#visitLocalVariable(java.lang.String,
- * java.lang.String, java.lang.String, org.objectweb.asm.Label,
- * org.objectweb.asm.Label, int)
- */
@Override
public void visitLocalVariable(String name, String desc, String signature, Label start, Label end, int index) {
if (desc.length() == 1) {
@@ -700,10 +597,6 @@ public class ReferenceExtractor extends ClassVisitor {
}
}
- /*
- * (non-Javadoc)
- * @see org.objectweb.asm.MethodAdapter#visitLdcInsn(java.lang.Object)
- */
@Override
public void visitLdcInsn(Object cst) {
if (cst instanceof Type) {
@@ -718,12 +611,6 @@ public class ReferenceExtractor extends ClassVisitor {
}
}
- /*
- * (non-Javadoc)
- * @see
- * org.objectweb.asm.MethodAdapter#visitAnnotation(java.lang.String,
- * boolean)
- */
@Override
public AnnotationVisitor visitAnnotation(String desc, boolean visible) {
Type ctype = this.getTypeFromDescription(desc);
@@ -746,31 +633,16 @@ public class ReferenceExtractor extends ClassVisitor {
super(Opcodes.ASM5);
}
- /*
- * (non-Javadoc)
- * @see org.objectweb.asm.FieldVisitor#visitAnnotation(java.lang.String,
- * boolean)
- */
@Override
public AnnotationVisitor visitAnnotation(String desc, boolean visible) {
addTypeReference(Type.getType(desc), IReference.REF_ANNOTATION_USE);
return null;
}
- /*
- * (non-Javadoc)
- * @see
- * org.objectweb.asm.FieldVisitor#visitAttribute(org.objectweb.asm.Attribute
- * )
- */
@Override
public void visitAttribute(Attribute attr) {
}
- /*
- * (non-Javadoc)
- * @see org.objectweb.asm.FieldVisitor#visitEnd()
- */
@Override
public void visitEnd() {
exitMember();
@@ -972,10 +844,6 @@ public class ReferenceExtractor extends ClassVisitor {
this.label = label;
}
- /*
- * (non-Javadoc)
- * @see java.lang.Comparable#compareTo(java.lang.Object)
- */
@Override
public int compareTo(Object o) {
return this.line - ((LineInfo) o).line;
@@ -990,10 +858,6 @@ public class ReferenceExtractor extends ClassVisitor {
return super.equals(obj);
}
- /*
- * (non-Javadoc)
- * @see java.lang.Object#hashCode()
- */
@Override
public int hashCode() {
return this.line + (this.label != null ? this.label.hashCode() : 0);
@@ -1150,10 +1014,6 @@ public class ReferenceExtractor extends ClassVisitor {
fieldtracker = tracker;
}
- /*
- * (non-Javadoc)
- * @see java.lang.Object#toString()
- */
@Override
public String toString() {
StringBuffer buffer = new StringBuffer();
@@ -1358,11 +1218,6 @@ public class ReferenceExtractor extends ClassVisitor {
return null;
}
- /*
- * (non-Javadoc)
- * @see org.objectweb.asm.ClassVisitor#visit(int, int, java.lang.String,
- * java.lang.String, java.lang.String, java.lang.String[])
- */
@Override
public void visit(int version, int access, String name, String signature, String superName, String[] interfaces) {
this.fVersion = version;
@@ -1400,10 +1255,6 @@ public class ReferenceExtractor extends ClassVisitor {
}
}
- /*
- * (non-Javadoc)
- * @see org.objectweb.asm.ClassVisitor#visitEnd()
- */
@Override
public void visitEnd() {
this.exitMember();
@@ -1418,11 +1269,6 @@ public class ReferenceExtractor extends ClassVisitor {
}
}
- /*
- * (non-Javadoc)
- * @see org.objectweb.asm.ClassVisitor#visitField(int, java.lang.String,
- * java.lang.String, java.lang.String, java.lang.Object)
- */
@Override
public FieldVisitor visitField(int access, String name, String desc, String signature, Object value) {
if (fIsVisitMembers) {
@@ -1450,11 +1296,6 @@ public class ReferenceExtractor extends ClassVisitor {
return null;
}
- /*
- * (non-Javadoc)
- * @see org.objectweb.asm.ClassAdapter#visitInnerClass(java.lang.String,
- * java.lang.String, java.lang.String, int)
- */
@Override
public void visitInnerClass(String name, String outerName, String innerName, int access) {
try {
@@ -1510,11 +1351,6 @@ public class ReferenceExtractor extends ClassVisitor {
return refs;
}
- /*
- * (non-Javadoc)
- * @see org.objectweb.asm.ClassAdapter#visitAnnotation(java.lang.String,
- * boolean)
- */
@Override
public AnnotationVisitor visitAnnotation(String desc, boolean visible) {
try {
@@ -1526,11 +1362,6 @@ public class ReferenceExtractor extends ClassVisitor {
return null;
}
- /*
- * (non-Javadoc)
- * @see org.objectweb.asm.ClassVisitor#visitMethod(int, java.lang.String,
- * java.lang.String, java.lang.String, java.lang.String[])
- */
@Override
public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) {
if (fIsVisitMembers) {

Back to the top