initial commit in accordance with CQ 3784
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/.classpath b/testplugins/org.eclipse.objectteams.otdt.test.builder/.classpath
new file mode 100644
index 0000000..3889ea2
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/.classpath
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="con" path="OTRE"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry combineaccessrules="false" kind="src" path="/OTRE"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/.project b/testplugins/org.eclipse.objectteams.otdt.test.builder/.project
new file mode 100644
index 0000000..ac8a149
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/.project
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.objectteams.otdt.test.builder</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.objectteams.otdt.OTJavaNature</nature>
+ </natures>
+</projectDescription>
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/META-INF/MANIFEST.MF b/testplugins/org.eclipse.objectteams.otdt.test.builder/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..f8a917f
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/META-INF/MANIFEST.MF
@@ -0,0 +1,21 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Builder Plug-in
+Bundle-SymbolicName: org.eclipse.objectteams.otdt.test.builder;singleton:=true
+Bundle-Version: 1.3.0
+Bundle-ClassPath: otdt-buildertests.jar
+Bundle-Activator: org.eclipse.objectteams.otdt.test.builder.BuilderTestPlugin
+Bundle-Vendor: objectteams.org
+Export-Package: org.eclipse.objectteams.otdt.test.builder
+Require-Bundle: org.junit,
+ org.eclipse.core.runtime,
+ org.eclipse.core.resources,
+ org.eclipse.jdt.core.tests.builder,
+ org.eclipse.objectteams.otdt,
+ org.eclipse.objectteams.otdt.compiler.adaptor,
+ org.eclipse.jdt.core.tests.compiler,
+ org.eclipse.jdt.core,
+ org.eclipse.test.performance,
+ org.eclipse.objectteams.otdt.tests
+Bundle-ActivationPolicy: lazy
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/build.properties b/testplugins/org.eclipse.objectteams.otdt.test.builder/build.properties
new file mode 100644
index 0000000..244c7b9
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/build.properties
@@ -0,0 +1,8 @@
+source.otdt-buildertests.jar = src/
+output.otdt-buildertests.jar = bin/
+bin.includes = plugin.xml,\
+ otdt-buildertests.jar,\
+ test.xml,\
+ JCL/,\
+ workspace/,\
+ META-INF/
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/plugin.xml b/testplugins/org.eclipse.objectteams.otdt.test.builder/plugin.xml
new file mode 100644
index 0000000..dbc928d
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/plugin.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+<plugin>
+
+
+</plugin>
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/src/org/eclipse/objectteams/otdt/test/builder/AllTests.java b/testplugins/org.eclipse.objectteams.otdt.test.builder/src/org/eclipse/objectteams/otdt/test/builder/AllTests.java
new file mode 100644
index 0000000..d1a6577
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/src/org/eclipse/objectteams/otdt/test/builder/AllTests.java
@@ -0,0 +1,39 @@
+/**********************************************************************
+ * This file is part of "Object Teams Development Tooling"-Software
+ *
+ * Copyright 2004, 2010 Fraunhofer Gesellschaft, Munich, Germany,
+ * for its Fraunhofer Institute and Computer Architecture and Software
+ * Technology (FIRST), Berlin, Germany and Technical University Berlin,
+ * Germany.
+ *
+ * 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
+ * $Id$
+ *
+ * Please visit http://www.eclipse.org/objectteams for updates and contact.
+ *
+ * Contributors:
+ * Fraunhofer FIRST - Initial API and implementation
+ * Technical University Berlin - Initial API and implementation
+ **********************************************************************/
+package org.eclipse.objectteams.otdt.test.builder;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+public class AllTests {
+
+ public static Test suite() {
+ TestSuite suite = new TestSuite(
+ "Test for org.eclipse.objectteams.otdt.test.builder"); //$NON-NLS-1$
+ //$JUnit-BEGIN$
+ suite.addTest(IncrementalTests.suite());
+ suite.addTest(CompilationOrderTests.suite());
+ suite.addTest(OTEquinoxBuilderTests.suite());
+ //$JUnit-END$
+ return suite;
+ }
+
+}
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/src/org/eclipse/objectteams/otdt/test/builder/BuilderTestPlugin.java b/testplugins/org.eclipse.objectteams.otdt.test.builder/src/org/eclipse/objectteams/otdt/test/builder/BuilderTestPlugin.java
new file mode 100644
index 0000000..4421945
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/src/org/eclipse/objectteams/otdt/test/builder/BuilderTestPlugin.java
@@ -0,0 +1,70 @@
+/**********************************************************************
+ * This file is part of "Object Teams Development Tooling"-Software
+ *
+ * Copyright 2004, 2010 Fraunhofer Gesellschaft, Munich, Germany,
+ * for its Fraunhofer Institute and Computer Architecture and Software
+ * Technology (FIRST), Berlin, Germany and Technical University Berlin,
+ * Germany.
+ *
+ * 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
+ * $Id$
+ *
+ * Please visit http://www.eclipse.org/objectteams for updates and contact.
+ *
+ * Contributors:
+ * Fraunhofer FIRST - Initial API and implementation
+ * Technical University Berlin - Initial API and implementation
+ **********************************************************************/
+package org.eclipse.objectteams.otdt.test.builder;
+
+import org.eclipse.core.runtime.Plugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class BuilderTestPlugin extends Plugin {
+
+ // The plug-in ID
+ public static final String PLUGIN_ID = "org.eclipse.objectteams.otdt.test.builder"; //$NON-NLS-1$
+
+ // The shared instance
+ private static BuilderTestPlugin plugin;
+
+ /**
+ * The constructor
+ */
+ public BuilderTestPlugin() {
+ plugin = this;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.core.runtime.Plugins#start(org.osgi.framework.BundleContext)
+ */
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.core.runtime.Plugin#stop(org.osgi.framework.BundleContext)
+ */
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static BuilderTestPlugin getDefault() {
+ return plugin;
+ }
+
+}
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/src/org/eclipse/objectteams/otdt/test/builder/CompilationOrderTests.java b/testplugins/org.eclipse.objectteams.otdt.test.builder/src/org/eclipse/objectteams/otdt/test/builder/CompilationOrderTests.java
new file mode 100644
index 0000000..ab4d1e5
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/src/org/eclipse/objectteams/otdt/test/builder/CompilationOrderTests.java
@@ -0,0 +1,112 @@
+/**********************************************************************
+ * This file is part of "Object Teams Development Tooling"-Software
+ *
+ * Copyright 2004, 2010 Fraunhofer Gesellschaft, Munich, Germany,
+ * for its Fraunhofer Institute and Computer Architecture and Software
+ * Technology (FIRST), Berlin, Germany and Technical University Berlin,
+ * Germany.
+ *
+ * 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
+ * $Id$
+ *
+ * Please visit http://www.eclipse.org/objectteams for updates and contact.
+ *
+ * Contributors:
+ * Fraunhofer FIRST - Initial API and implementation
+ * Technical University Berlin - Initial API and implementation
+ **********************************************************************/
+package org.eclipse.objectteams.otdt.test.builder;
+
+import junit.framework.Test;
+
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jdt.core.compiler.CategorizedProblem;
+import org.eclipse.jdt.core.tests.builder.Problem;
+import org.eclipse.jdt.core.tests.util.Util;
+
+
+public class CompilationOrderTests extends OTBuilderTests {
+
+ public static Test suite() {
+ return buildTestSuite(CompilationOrderTests.class);
+ }
+
+ public CompilationOrderTests(String name) {
+ super(name);
+ }
+
+ /* In batch-mode this causes a problem,
+ * compilation order is different in workbench mode, though
+ * (depends on class names?!).
+ * Original jacks test is removed.
+ */
+ @SuppressWarnings("nls")
+ public void test177otjd5f() throws JavaModelException {
+ System.out.println("***** test177otjd5f() *****");
+ IPath projectPath = env.addProject("Project", "1.5");
+ env.addExternalJars(projectPath, Util.getJavaClassLibs());
+ env.addExternalJar(projectPath, OTRE_JAR_PATH);
+
+ // remove old package fragment root so that names don't collide
+ env.removePackageFragmentRoot(projectPath, "");
+
+ IPath root = env.addPackageFragmentRoot(projectPath, "src");
+ env.setOutputFolder(projectPath, "bin");
+
+ env.addClass(root, "p", "ATeam",
+ "package p; \n"+
+ "public team class ATeam { protected class R implements IConfined {} public IConfined getR() { return new R(); } }");
+
+ env.addClass(root, "p", "M",
+ "package p; \n"+
+ "public class M {\n"+
+ " @SuppressWarnings(\"unused\")\n"+
+ " void foo() {\n"+
+ " final ATeam t = new ATeam();\n"+
+ " IConfined<@t> ic = t.getR();\n"+
+ " }\n"+
+ "}");
+
+ fullBuild(projectPath);
+ expectingNoProblems();
+ }
+
+ /* (TODO(SH): test doesn't really fit into this class).
+ * Witness for an NPE in ExplicitConstructorCall.resolve():
+ * If o.o.Team cannot be found, receiverType could be null!
+ */
+ public void testMissingOTRE() throws JavaModelException {
+ System.out.println("***** testMissingOTRE() *****");
+ IPath projectPath = env.addProject("Project", "1.5");
+ // don't abort when detecting the build path error
+ // (otherwise other errors would be expunged).
+ env.getJavaProject(projectPath).setOption(JavaCore.CORE_JAVA_BUILD_INVALID_CLASSPATH, JavaCore.ERROR);
+ env.addExternalJars(projectPath, Util.getJavaClassLibs());
+ // don't: env.addExternalJar(projectPath, OTRE_JAR_PATH);
+
+ // remove old package fragment root so that names don't collide
+ env.removePackageFragmentRoot(projectPath, "");
+
+ IPath root = env.addPackageFragmentRoot(projectPath, "src");
+ env.setOutputFolder(projectPath, "bin");
+
+ IPath ateam = env.addClass(root, "p", "ATeam",
+ "package p; \n"+
+ "public team class ATeam { ATeam() { super(); } }");
+
+ fullBuild(projectPath);
+
+ expectingProblemsFor(ateam);
+ expectingOnlySpecificProblemsFor(ateam,
+ new Problem[] {
+ new Problem("", "The type org.objectteams.Team cannot be resolved. It is indirectly referenced from required .class files", ateam, 30, 35, CategorizedProblem.CAT_BUILDPATH, IMarker.SEVERITY_ERROR),
+ new Problem("", "The constructor Team() is undefined", ateam, 48,56, CategorizedProblem.CAT_MEMBER, IMarker.SEVERITY_ERROR)
+ });
+ }
+}
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/src/org/eclipse/objectteams/otdt/test/builder/IncrementalTests.java b/testplugins/org.eclipse.objectteams.otdt.test.builder/src/org/eclipse/objectteams/otdt/test/builder/IncrementalTests.java
new file mode 100644
index 0000000..db547ae
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/src/org/eclipse/objectteams/otdt/test/builder/IncrementalTests.java
@@ -0,0 +1,872 @@
+/**********************************************************************
+ * This file is part of "Object Teams Development Tooling"-Software
+ *
+ * Copyright 2004, 2010 Fraunhofer Gesellschaft, Munich, Germany,
+ * for its Fraunhofer Institute and Computer Architecture and Software
+ * Technology (FIRST), Berlin, Germany and Technical University Berlin,
+ * Germany.
+ *
+ * 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
+ * $Id$
+ *
+ * Please visit http://www.eclipse.org/objectteams for updates and contact.
+ *
+ * Contributors:
+ * Fraunhofer FIRST - Initial API and implementation
+ * Technical University Berlin - Initial API and implementation
+ **********************************************************************/
+package org.eclipse.objectteams.otdt.test.builder;
+
+import junit.framework.Test;
+
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jdt.core.compiler.CategorizedProblem;
+import org.eclipse.jdt.core.tests.builder.Problem;
+import org.eclipse.jdt.core.tests.util.Util;
+
+/**
+ * This test class tests incremental compilation of teams and roles.
+ */
+@SuppressWarnings("nls")
+public class IncrementalTests extends OTBuilderTests {
+
+
+ public IncrementalTests(String name) {
+ super(name);
+ }
+
+ public static Test suite() {
+ return buildTestSuite(IncrementalTests.class);
+ }
+
+ /*
+ */
+ public void testRemoveTeamType() throws JavaModelException {
+ System.out.println("***** testRemoveTeamType() *****");
+ IPath projectPath = env.addProject("Project");
+ env.addExternalJars(projectPath, Util.getJavaClassLibs());
+ env.addExternalJar(projectPath, OTRE_JAR_PATH);
+
+ // remove old package fragment root so that names don't collide
+ env.removePackageFragmentRoot(projectPath, "");
+
+ IPath root = env.addPackageFragmentRoot(projectPath, "src");
+ env.setOutputFolder(projectPath, "bin");
+
+ env.addClass(root, "p", "AA",
+ "package p; \n"+
+ "public team class AA { }");
+
+
+ IPath pathToAB = env.addClass(root, "p.AA", "R",
+ "team package p.AA; \n"+
+ " protected class R {}");
+
+
+ fullBuild(projectPath);
+ expectingNoProblems();
+
+ /* Remove team AA */
+ env.removeClass(env.getPackagePath(root, "p"), "AA");
+
+ /* build must detect, that R - although unchanged - becomes invalid. */
+ incrementalBuild(projectPath);
+ expectingProblemsFor(pathToAB);
+ expectingSpecificProblemFor(pathToAB, new Problem("", "Enclosing team p.AA not found for role file R (OTJLD 1.2.5(c)).", pathToAB, 13, 17, CategorizedProblem.CAT_TYPE, IMarker.SEVERITY_ERROR));
+
+ /* Restore team AA */
+ env.addClass(root, "p", "AA",
+ "package p; \n"+
+ "public team class AA {}");
+
+ incrementalBuild(projectPath);
+ expectingNoProblems();
+ }
+ /*
+ */
+ public void testRemoveRoleType() throws JavaModelException {
+ System.out.println("***** testRemoveRoleType() *****");
+ IPath projectPath = env.addProject("Project");
+ env.addExternalJars(projectPath, Util.getJavaClassLibs());
+ env.addExternalJar(projectPath, OTRE_JAR_PATH);
+
+ // remove old package fragment root so that names don't collide
+ env.removePackageFragmentRoot(projectPath, "");
+
+ IPath root = env.addPackageFragmentRoot(projectPath, "src");
+ env.setOutputFolder(projectPath, "bin");
+
+ env.addClass(root, "p", "AA",
+ "package p; \n"+
+ "public team class AA { \n"+
+ " protected class RA {}}");
+
+ IPath pathToAB = env.addClass(root, "p", "AB",
+ "package p; \n"+
+ "public team class AB extends AA {"+
+ " protected class RB extends RA {} }");
+
+
+ fullBuild(projectPath);
+ expectingNoProblems();
+
+ /* Remove role AA.RA */
+ env.addClass(root, "p", "AA",
+ "package p; \n"+
+ "public team class AA {}");
+
+ /* build must detect, that AB - although unchanged - becomes invalid. */
+ incrementalBuild(projectPath);
+ expectingProblemsFor(pathToAB);
+ expectingSpecificProblemFor(pathToAB, new Problem("", "RA cannot be resolved to a type", pathToAB, 75, 77, CategorizedProblem.CAT_TYPE, IMarker.SEVERITY_ERROR));
+
+ /* Restore role AA.RA */
+ env.addClass(root, "p", "AA",
+ "package p; \n"+
+ "public team class AA { \n"+
+ " public class RA {}}");
+
+ incrementalBuild(projectPath);
+ expectingNoProblems();
+ }
+ public void testRemoveRoleFile() throws JavaModelException {
+ System.out.println("***** testRemoveRoleFile() *****");
+ IPath projectPath = env.addProject("Project");
+ env.addExternalJars(projectPath, Util.getJavaClassLibs());
+ env.addExternalJar(projectPath, OTRE_JAR_PATH);
+
+ // remove old package fragment root so that names don't collide
+ env.removePackageFragmentRoot(projectPath, "");
+
+ IPath root = env.addPackageFragmentRoot(projectPath, "src");
+ env.setOutputFolder(projectPath, "bin");
+
+ env.addClass(root, "p", "Outer",
+ "package p; \n"+
+ "public team class Outer {}");
+ IPath pathToNested= env.addClass(root, "p/Outer", "Nested",
+ "team package p.Outer;\n"+
+ "protected team class Nested {}");
+
+ IPath pathToOuterSub = env.addClass(root, "p", "OuterSub",
+ "package p; \n"+
+ "public team class OuterSub extends Outer {\n"+
+ " Nested aRole;\n"+
+ "}");
+
+ fullBuild(projectPath);
+ expectingNoProblems();
+
+ /* Remove role Outer.Nested */
+ env.removeFile(pathToNested);
+
+ /* build must detect, that AB - although unchanged - becomes invalid -- but no further errors/exceptions */
+ incrementalBuild(projectPath);
+ expectingProblemsFor(pathToOuterSub);
+ expectingSpecificProblemFor(pathToOuterSub, new Problem("", "Nested cannot be resolved to a type", pathToOuterSub, 58, 64, CategorizedProblem.CAT_TYPE, IMarker.SEVERITY_ERROR));
+
+ }
+ /*
+ */
+ public void testRemoveRoleMethod() throws JavaModelException {
+ System.out.println("***** testRemoveRoleMethod() *****");
+ IPath projectPath = env.addProject("Project");
+ env.addExternalJars(projectPath, Util.getJavaClassLibs());
+ env.addExternalJar(projectPath, OTRE_JAR_PATH);
+
+ // remove old package fragment root so that names don't collide
+ env.removePackageFragmentRoot(projectPath, "");
+
+ IPath root = env.addPackageFragmentRoot(projectPath, "src");
+ env.setOutputFolder(projectPath, "bin");
+
+ env.addClass(root, "p", "AA",
+ "package p; \n"+
+ "public team class AA { \n"+
+ " public class RA { \n"+
+ " public void foo() {}\n"+
+ "}}");
+
+ env.addClass(root, "p", "AB",
+ "package p; \n"+
+ "public team class AB extends AA {"+
+ " protected class RB extends RA {} }");
+
+
+ fullBuild(projectPath);
+ expectingNoProblems();
+
+ /* Remove role method AA.RA.foo */
+ env.addClass(root, "p", "AA",
+ "package p; \n"+
+ "public team class AA { \n"+
+ " public class RA {}}");
+
+ /* add a class referencing AB.RA */
+ IPath pathToM = env.addClass(root, "p", "M",
+ "package p; \n"+
+ "public class M { \n"+
+ " void test() {\n"+
+ " new AB().new RA().foo();\n"+
+ "}}");
+
+ /* build must detect, that the use of AB - although AB is unchanged - becomes invalid. */
+ incrementalBuild(projectPath);
+ expectingProblemsFor(pathToM);
+ expectingSpecificProblemFor(pathToM, new Problem("", "The method foo() is undefined for the type RA<@tthis[AB]>", pathToM, 68, 71, CategorizedProblem.CAT_MEMBER, IMarker.SEVERITY_ERROR));
+
+ /* Restore method AA.RA.foo */
+ env.addClass(root, "p", "AA",
+ "package p; \n"+
+ "public team class AA { \n"+
+ " public class RA { \n"+
+ " public void foo() {}\n"+
+ "}}");
+
+ incrementalBuild(projectPath);
+ expectingNoProblems();
+ }
+
+ /*
+ */
+ public void testModifyTSuperRole1() throws JavaModelException {
+ System.out.println("***** testModifyTSuperRole1() *****");
+ IPath projectPath = env.addProject("Project");
+ env.addExternalJars(projectPath, Util.getJavaClassLibs());
+ env.addExternalJar(projectPath, OTRE_JAR_PATH);
+
+ // remove old package fragment root so that names don't collide
+ env.removePackageFragmentRoot(projectPath, "");
+
+ IPath root = env.addPackageFragmentRoot(projectPath, "src");
+ env.setOutputFolder(projectPath, "bin");
+
+ env.addClass(root, "p", "AA",
+ "package p; \n"+
+ "public team class AA { \n"+
+ " protected class R {\n" +
+ " void bar() { }\n"+
+ "}}");
+
+ IPath pathToAB = env.addClass(root, "p", "AB",
+ "package p; \n"+
+ "public team class AB extends AA {\n"+
+ " protected class R {\n"+
+ " void foo() { this.bar(); }\n"+
+ "} }");
+
+
+ fullBuild(projectPath);
+ expectingNoProblems();
+
+ /* Remove method AA.R.bar() */
+ env.addClass(root, "p", "AA",
+ "package p; \n"+
+ "public team class AA {\n" +
+ " protected class R {}\n" +
+ "}");
+
+ /* build must detect, that AB - although unchanged - becomes invalid through a self-call. */
+ incrementalBuild(projectPath);
+ expectingProblemsFor(pathToAB);
+ expectingSpecificProblemFor(pathToAB, new Problem("", "The method bar() is undefined for the type AB.R", pathToAB, 94, 97, CategorizedProblem.CAT_MEMBER, IMarker.SEVERITY_ERROR));
+
+ /* Restore method AA.R.bar */
+ env.addClass(root, "p", "AA",
+ "package p; \n"+
+ "public team class AA { \n"+
+ " protected class R {\n" +
+ " void bar() { }\n"+
+ "}}");
+
+ incrementalBuild(projectPath);
+ expectingNoProblems();
+ }
+
+ /*
+ * The body of a tsuper role is modified.
+ */
+ public void testModifyTSuperRole2() throws Exception {
+ System.out.println("***** testModifyTSuperRole2() *****");
+ IPath projectPath = env.addProject("Project");
+ env.addExternalJars(projectPath, Util.getJavaClassLibs());
+ env.addExternalJar(projectPath, OTRE_JAR_PATH);
+
+ // remove old package fragment root so that names don't collide
+ env.removePackageFragmentRoot(projectPath, "");
+
+ IPath root = env.addPackageFragmentRoot(projectPath, "src");
+ env.setOutputFolder(projectPath, "bin");
+
+ env.addClass(root, "p", "AA",
+ "package p; \n"+
+ "public team class AA { \n"+
+ " protected class R {\n" +
+ " String bar() { return \"NOK\"; }\n"+
+ "}}");
+
+ env.addClass(root, "p", "AB",
+ "package p; \n"+
+ "public team class AB extends AA {\n"+
+ " protected class R {\n"+
+ " protected String foo() { return this.bar(); }\n"+
+ " }\n"+
+ " public static String test() {\n"+
+ " return new AB().new R().foo();\n"+
+ " }\n"+
+ "}");
+
+
+ fullBuild(projectPath);
+ expectingNoProblems();
+
+ /* Change method R.bar() */
+ env.addClass(root, "p", "AA",
+ "package p; \n"+
+ "public team class AA {\n" +
+ " protected class R {\n" +
+ " String bar() { return \"OK\"; }\n"+
+ "}}");
+
+ /* build must achieve that AB - although unchanged - behaves differently. */
+ incrementalBuild(projectPath);
+ expectingNoProblems();
+
+ IJavaProject project = JavaCore.create(env.getProject("Project"));
+ OTLaunchEnvironment launcher = new OTLaunchEnvironment(
+ env.getWorkspaceRootPath(),
+ project.getOutputLocation());
+ Object result = launcher.launch("p.AB", "test");
+ assertEquals("OK", result);
+ // cleanup:
+ launcher = null;
+ result = null;
+ System.gc();
+ }
+
+ /*
+ * The body of a tsuper role is modified -- three levels.
+ */
+ public void testModifyTSuperRole3() throws Exception {
+ System.out.println("***** testModifyTSuperRole3() *****");
+ IPath projectPath = env.addProject("Project");
+ env.addExternalJars(projectPath, Util.getJavaClassLibs());
+ env.addExternalJar(projectPath, OTRE_JAR_PATH);
+
+ // remove old package fragment root so that names don't collide
+ env.removePackageFragmentRoot(projectPath, "");
+
+ IPath root = env.addPackageFragmentRoot(projectPath, "src");
+ env.setOutputFolder(projectPath, "bin");
+
+ env.addClass(root, "p", "AA",
+ "package p; \n"+
+ "public team class AA { \n"+
+ " protected class R {\n" +
+ " String bar() { \n" +
+ " return \"NOK\";\n"+
+ " }\n"+
+ "}}");
+
+ env.addClass(root, "p", "AB",
+ "package p; \n"+
+ "public team class AB extends AA {}");
+
+ env.addClass(root, "p", "AC",
+ "package p; \n"+
+ "public team class AC extends AB {\n"+
+ " protected class R {\n"+
+ " protected String foo() { return this.bar(); }\n"+
+ " }\n"+
+ " public static String test() {\n"+
+ " return new AC().new R().foo();\n"+
+ " }\n"+
+ "}");
+
+
+ fullBuild(projectPath);
+ expectingNoProblems();
+
+ /* Change method R.bar() */
+ env.addClass(root, "p", "AA",
+ "package p; \n"+
+ "public team class AA {\n" +
+ " protected class R {\n" +
+ " String bar() { return \"OK\"; }\n"+
+ "}}");
+
+ /* build must achieve that AB - although unchanged - behaves differently. */
+ incrementalBuild(projectPath);
+ expectingNoProblems();
+
+ IJavaProject project = JavaCore.create(env.getProject("Project"));
+ OTLaunchEnvironment launcher = new OTLaunchEnvironment(
+ env.getWorkspaceRootPath(),
+ project.getOutputLocation());
+ Object result = launcher.launch("p.AC", "test");
+ assertEquals("OK", result);
+// cleanup:
+ launcher = null;
+ result = null;
+ System.gc();
+ }
+
+ /** A playedBy declaration is added to a super role file.
+ * Witness for NPE in RoleModel.getBaseclassAttributename.
+ */
+ public void testModifySuperRole1() throws JavaModelException {
+ System.out.println("***** testModifySuperRole1() *****");
+ IPath projectPath = env.addProject("Project");
+ env.addExternalJars(projectPath, Util.getJavaClassLibs());
+ env.addExternalJar(projectPath, OTRE_JAR_PATH);
+
+ // remove old package fragment root so that names don't collide
+ env.removePackageFragmentRoot(projectPath, "");
+
+ IPath root = env.addPackageFragmentRoot(projectPath, "src");
+ env.setOutputFolder(projectPath, "bin");
+
+ env.addClass(root, "p", "AA",
+ "package p; \n"+
+ "public team class AA { \n"+
+ "}");
+
+ env.addClass(root, "p/AA", "R1",
+ "team package p.AA;\n"+
+ "protected class R1 {\n"+
+ " void foo() { }\n"+
+ "}");
+
+ env.addClass(root, "p/AA", "R2",
+ "team package p.AA;\n"+
+ "protected class R2 extends R1 {\n"+
+ " void bar() { this.foo(); }\n"+
+ "}");
+
+ env.addClass(root, "p", "B",
+ "package p;\n"+
+ "public class B {\n"+
+ " void snafu() {}\n"+
+ "}");
+
+
+ fullBuild(projectPath);
+ expectingNoProblems();
+
+ /* add a playedBy declaration */
+ env.addClass(root, "p/AA", "R1",
+ "team package p.AA;\n"+
+ "protected class R1 playedBy B {\n"+
+ " void foo() { }\n"+
+ "}");
+
+ incrementalBuild(projectPath);
+ expectingNoProblems();
+ }
+
+ /**
+ * A sibling role is modified causing a binary role to fail generating callins.
+ */
+ public void testModifySiblingRole1() throws JavaModelException {
+ System.out.println("***** testModifySiblingRole1() *****");
+ IPath projectPath = env.addProject("Project");
+ env.addExternalJars(projectPath, Util.getJavaClassLibs());
+ env.addExternalJar(projectPath, OTRE_JAR_PATH);
+
+ // remove old package fragment root so that names don't collide
+ env.removePackageFragmentRoot(projectPath, "");
+
+ IPath root = env.addPackageFragmentRoot(projectPath, "src");
+ env.setOutputFolder(projectPath, "bin");
+
+ env.addClass(root, "p", "B",
+ "package p;\n"+
+ "public class B {\n"+
+ " void snafu() {}\n"+
+ "}");
+
+ env.addClass(root, "p", "AA",
+ "package p; \n"+
+ "public team class AA { \n"+
+ "}");
+
+ env.addClass(root, "p/AA", "R1",
+ "team package p.AA;\n"+
+ "protected class R1 playedBy B {\n"+
+ " protected void foo() { }\n"+
+ " foo <- after snafu;\n"+
+ "}");
+
+ env.addClass(root, "p/AA", "R2",
+ "team package p.AA;\n"+
+ "protected class R2 {\n"+
+ " void bar() { new R1(new B()).foo(); }\n"+
+ "}");
+
+
+
+ fullBuild(projectPath);
+ expectingNoProblems();
+
+ /* change the method */
+ env.addClass(root, "p/AA", "R2",
+ "team package p.AA;\n"+
+ "protected class R2 {\n"+
+ " void bar() { }\n"+
+ "}");
+
+ incrementalBuild(projectPath);
+ expectingNoProblems();
+ }
+
+ /*
+ * The team with a role file is modified
+ */
+ public void testModifyTeam1() throws Exception {
+ System.out.println("***** testModifyTeam1() *****");
+ IPath projectPath = env.addProject("Project", "1.5");
+ env.addExternalJars(projectPath, Util.getJavaClassLibs());
+ env.addExternalJar(projectPath, OTRE_JAR_PATH);
+
+ // remove old package fragment root so that names don't collide
+ env.removePackageFragmentRoot(projectPath, "");
+
+ IPath root = env.addPackageFragmentRoot(projectPath, "src");
+ env.setOutputFolder(projectPath, "bin");
+
+ env.addClass(root, "p", "B",
+ "package p; \n"+
+ "public class B { \n"+
+ " String bar() { return \"NOK\"; }\n"+
+ "}");
+
+ env.addClass(root, "p", "AA",
+ "package p; \n"+
+ "public team class AA { \n"+
+ " public static String test() {\n"+
+ " new AA();\n"+
+ " return new B().bar();\n"+
+ " }\n"+
+ "}");
+
+ env.addClass(root, "p.AA", "R",
+ "team package p.AA; \n"+
+ "protected class R playedBy B {\n"+
+ " @SuppressWarnings(\"basecall\")\n"+
+ " callin String foo() { return \"OK\"; }\n"+
+ " foo <- replace bar;\n"+
+ "}");
+
+
+ fullBuild(projectPath);
+ expectingNoProblems();
+
+ /* add constructor */
+
+ env.addClass(root, "p", "AA",
+ "package p; \n"+
+ "public team class AA { \n"+
+ " public AA() { this.activate(); }\n"+
+ " public static String test() {\n"+
+ " new AA();\n"+
+ " return new B().bar();\n"+
+ " }\n"+
+ "}");
+
+ /* build must achieve that R - although unchanged - is compiled into AA. */
+ incrementalBuild(projectPath);
+ expectingNoProblems();
+
+ IJavaProject project = JavaCore.create(env.getProject("Project"));
+ OTLaunchEnvironment launcher = new OTLaunchEnvironment(
+ env.getWorkspaceRootPath(),
+ project.getOutputLocation(),
+ true /* useTransformer */);
+ Object result = launcher.launch("p.AA", "test");
+ assertEquals("OK", result);
+ // cleanup:
+ launcher = null;
+ result = null;
+ System.gc();
+ }
+
+ public void testAddRoFiToCompiledTeam()
+ throws JavaModelException
+ {
+ System.out.println("***** testAddRoFiToCompiledTeam() *****");
+ IPath projectPath = env.addProject("Project");
+ env.addExternalJars(projectPath, Util.getJavaClassLibs());
+ env.addExternalJar(projectPath, OTRE_JAR_PATH);
+
+ // remove old package fragment root so that names don't collide
+ env.removePackageFragmentRoot(projectPath, "");
+
+ IPath root = env.addPackageFragmentRoot(projectPath, "src");
+ env.setOutputFolder(projectPath, "bin");
+
+ env.addClass(root, "p", "AA",
+ "package p; \n"+
+ "public team class AA { \n"+
+ " protected class R {\n" +
+ " String bar() { \n" +
+ " return \"NOK\";\n"+
+ " }\n"+
+ "}}");
+
+ fullBuild(projectPath);
+ expectingNoProblems();
+
+ env.addClass(root, "p/AA", "ExtRole",
+ "team package p.AA; \n"+
+ "public class ExtRole { \n"+
+ " public String ok() { \n" +
+ " return \"NOK\";\n"+
+ " }\n"+
+ "}");
+
+ /* build must achieve that AA - although unchanged - is recompiled. */
+ incrementalBuild(projectPath);
+ expectingNoProblems();
+
+ // same as above, just modify the contents:
+ IPath packagePath = root.append("p/AA");
+ env.addClass(packagePath, "ExtRole",
+ "team package p.AA; \n"+
+ "public class ExtRole { \n"+
+ " public String ok() { \n" +
+ " return \"OK\";\n"+
+ " }\n"+
+ "}");
+
+ /* build must(?) achieve that AA - although unchanged - is recompiled. */
+ incrementalBuild(projectPath);
+ expectingNoProblems();
+ }
+
+ public void testAddRoFiToBrokenTeam()
+ throws JavaModelException
+ {
+ System.out.println("***** testAddRoFiToBrokenTeam() *****");
+ IPath projectPath = env.addProject("Project");
+ env.addExternalJars(projectPath, Util.getJavaClassLibs());
+ env.addExternalJar(projectPath, OTRE_JAR_PATH);
+
+ // remove old package fragment root so that names don't collide
+ env.removePackageFragmentRoot(projectPath, "");
+
+ IPath root = env.addPackageFragmentRoot(projectPath, "src");
+ env.setOutputFolder(projectPath, "bin");
+
+ // a broken team:
+ env.addClass(root, "p", "AA",
+ "package p; \n"+
+ "public team class AA { \n"+
+ " int abstract foo;// syntax error\n"+
+ "}");
+
+ fullBuild(projectPath);
+ expectingProblemsFor(root);
+
+ // add a role file:
+ env.addClass(root, "p/AA", "ExtRole",
+ "team package p.AA; \n"+
+ "public class ExtRole { \n"+
+ " public String ok() { \n" +
+ " return \"NOK\";\n"+
+ " }\n"+
+ "}");
+
+ /* build must achieve that errors in AA are detected again. */
+ incrementalBuild(projectPath);
+ expectingProblemsFor(root);
+
+ /* also break role file: */
+ IPath rofi = env.addClass(root, "p/AA", "ExtRole",
+ "team package p.AA; \n"+
+ "public class ExtRole { \n"+
+ " public String ok { // error \n" +
+ " return \"NOK\";\n"+
+ " }\n"+
+ "}");
+
+ /* now everything is broken. */
+ incrementalBuild(projectPath);
+ expectingProblemsFor(root);
+
+ // correct the syntax error:
+ env.addClass(root, "p", "AA",
+ "package p; \n"+
+ "public team class AA { \n"+
+ " int foo() { return 0; }\n"+
+ "}");
+
+ /* build must detect that ExtRole still has an error. */
+ incrementalBuild(projectPath);
+ expectingProblemsFor(rofi);
+ }
+
+ public void testBreakTeamWithRoFi()
+ throws JavaModelException
+ {
+ System.out.println("***** testBreakTeamWithRoFi() *****");
+ IPath projectPath = env.addProject("Project");
+ env.addExternalJars(projectPath, Util.getJavaClassLibs());
+ env.addExternalJar(projectPath, OTRE_JAR_PATH);
+
+ // remove old package fragment root so that names don't collide
+ env.removePackageFragmentRoot(projectPath, "");
+
+ IPath root = env.addPackageFragmentRoot(projectPath, "src");
+ env.setOutputFolder(projectPath, "bin");
+
+ // team and role w/o errors:
+ env.addClass(root, "p", "AA",
+ "package p; \n"+
+ "public team class AA { \n"+
+ " public void nop() { } \n" +
+ "}");
+
+ env.addClass(root, "p/AA", "ExtRole",
+ "team package p.AA; \n"+
+ "public class ExtRole { \n"+
+ " public String ok() { \n" +
+ " return \"OK\";\n"+
+ " }\n"+
+ "}");
+
+ fullBuild(projectPath);
+ expectingNoProblems();
+
+ // introduce an error to the team:
+ env.addClass(root, "p", "AA",
+ "package p; \n"+
+ "public team class AA { \n"+
+ " int abstract nop();\n"+
+ "}");
+
+ /* build must achieve that AA - although unchanged - is recompiled. */
+ incrementalBuild(projectPath);
+ expectingProblemsFor(root);
+
+ }
+
+ public void testRoFiExtendsInline()
+ throws JavaModelException
+ {
+ System.out.println("***** testRoFiExtendsInline() *****");
+ IPath projectPath = env.addProject("Project");
+ env.addExternalJars(projectPath, Util.getJavaClassLibs());
+ env.addExternalJar(projectPath, OTRE_JAR_PATH);
+
+ // remove old package fragment root so that names don't collide
+ env.removePackageFragmentRoot(projectPath, "");
+
+ IPath root = env.addPackageFragmentRoot(projectPath, "src");
+ env.setOutputFolder(projectPath, "bin");
+
+ env.addClass(root, "p", "AA",
+ "package p; \n"+
+ "public team class AA { \n"+
+ " protected team class R {\n" +
+ " String bar() { \n" +
+ " return \"NOK\";\n"+
+ " }\n"+
+ "}}");
+ // Note: declaring R as a nested team requires to process the predifined roles,
+ // which caused a StackOverflowError previously.
+
+ fullBuild(projectPath);
+ expectingNoProblems();
+
+ env.addClass(root, "p/AA", "ExtRole",
+ "team package p.AA; \n"+
+ "public team class ExtRole extends R {\n"+
+ " public String ok() { \n" +
+ " return bar();\n"+
+ " }\n"+
+ "}");
+
+ // still OK.
+ incrementalBuild(projectPath);
+ expectingNoProblems();
+
+ // same as above, just modify the contents:
+ env.addClass(root, "p", "AA",
+ "package p; \n"+
+ "public team class AA { \n"+
+ " protected team class R {\n" +
+ " String bar() { \n" +
+ " return \"OK\";\n"+
+ " }\n"+
+ "}}");
+
+ // no reason why this should find problems.
+ incrementalBuild(projectPath);
+ expectingNoProblems();
+ }
+ // see http://trac.objectteams.org/ot/ticket/89
+ public void testRemoveBoundBaseMethod()
+ throws JavaModelException
+ {
+ System.out.println("***** testRemoveBoundBaseMethod() *****");
+ IPath projectPath = env.addProject("Project", "1.5");
+ env.addExternalJars(projectPath, Util.getJavaClassLibs());
+ env.addExternalJar(projectPath, OTRE_JAR_PATH);
+
+ // remove old package fragment root so that names don't collide
+ env.removePackageFragmentRoot(projectPath, "");
+
+ IPath root = env.addPackageFragmentRoot(projectPath, "src");
+ env.setOutputFolder(projectPath, "bin");
+
+ env.addClass(root, "p0", "Base",
+ "package p0; \n"+
+ "public class Base { \n"+
+ " public void foo() {}\n"+
+ "}");
+ IPath pathToT1= env.addClass(root, "p", "T1",
+ "package p; \n"+
+ "import base p0.Base;\n"+
+ "public team class T1 { \n"+
+ " protected class R playedBy Base {\n" +
+ " void bar() { } \n" +
+ " bar <- after foo;\n"+
+ " }\n"+
+ "}");
+
+ fullBuild(projectPath);
+ expectingNoProblems();
+
+ // remove foo():
+ env.addClass(root, "p0", "Base",
+ "package p0; \n"+
+ "public class Base { \n"+
+ "}");
+
+ env.addClass(root, "p", "T2",
+ "package p; \n"+
+ "public team class T2 extends T1 {}");
+
+ // must detect, that callin binding in T1 is now invalid
+ incrementalBuild(projectPath);
+ expectingProblemsFor(pathToT1);
+ expectingSpecificProblemFor(pathToT1, new Problem("", "No method foo found in type p0.Base to resolve method designator (OTJLD 4.1(c)).", pathToT1, 137, 140, CategorizedProblem.CAT_MEMBER, IMarker.SEVERITY_ERROR));
+
+ // restore:
+ env.addClass(root, "p0", "Base",
+ "package p0; \n"+
+ "public class Base { \n"+
+ " public void foo() {}\n"+
+ "}");
+ fullBuild(projectPath);
+ expectingNoProblems();
+ }
+
+}
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/src/org/eclipse/objectteams/otdt/test/builder/OTBuilderTests.java b/testplugins/org.eclipse.objectteams.otdt.test.builder/src/org/eclipse/objectteams/otdt/test/builder/OTBuilderTests.java
new file mode 100644
index 0000000..f1bb882
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/src/org/eclipse/objectteams/otdt/test/builder/OTBuilderTests.java
@@ -0,0 +1,74 @@
+/**********************************************************************
+ * This file is part of "Object Teams Development Tooling"-Software
+ *
+ * Copyright 2004, 2010 Fraunhofer Gesellschaft, Munich, Germany,
+ * for its Fraunhofer Institute and Computer Architecture and Software
+ * Technology (FIRST), Berlin, Germany and Technical University Berlin,
+ * Germany.
+ *
+ * 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
+ * $Id$
+ *
+ * Please visit http://www.eclipse.org/objectteams for updates and contact.
+ *
+ * Contributors:
+ * Fraunhofer FIRST - Initial API and implementation
+ * Technical University Berlin - Initial API and implementation
+ **********************************************************************/
+package org.eclipse.objectteams.otdt.test.builder;
+
+import java.io.File;
+
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jdt.core.tests.builder.BuilderTests;
+import org.eclipse.jdt.core.tests.builder.Problem;
+import org.eclipse.objectteams.otdt.internal.compiler.adaptor.BuildManager;
+import org.eclipse.objectteams.otdt.core.ext.OTDTPlugin;
+
+public class OTBuilderTests extends BuilderTests {
+
+ public static final String OT_RUNTIME_PATH;
+ public static final String OTRE_JAR_PATH;
+ static {
+ OT_RUNTIME_PATH = JavaCore.getClasspathVariable(OTDTPlugin.OTDT_INSTALLDIR).toOSString();
+ OTRE_JAR_PATH = OT_RUNTIME_PATH
+ + File.separator
+ + "lib" //$NON-NLS-1$
+ + File.separator
+ + "otre.jar"; //$NON-NLS-1$
+ }
+
+ public OTBuilderTests(String name) {
+ super(name);
+ }
+
+ /** Sets up this test.
+ */
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+
+ env = new OTTestingEnvironment();
+ env.openEmptyWorkspace();
+ env.resetWorkspace();
+
+ BuildManager.DEBUG = 2;
+ }
+
+ /** Verifies that the given element has problems.
+ * Old implementation from BuilderTests
+ */
+ protected void expectingProblemsFor(IPath expected) {
+ if (DEBUG)
+ printProblemsFor(expected);
+
+ /* get the leaf problems for this type */
+ Problem[] problems = env.getProblemsFor(expected);
+ assertTrue("missing expected problem with " + expected.toString(), problems.length > 0); //$NON-NLS-1$
+ }
+
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/src/org/eclipse/objectteams/otdt/test/builder/OTEquinoxBuilderTests.java b/testplugins/org.eclipse.objectteams.otdt.test.builder/src/org/eclipse/objectteams/otdt/test/builder/OTEquinoxBuilderTests.java
new file mode 100644
index 0000000..6d8f3b9
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/src/org/eclipse/objectteams/otdt/test/builder/OTEquinoxBuilderTests.java
@@ -0,0 +1,380 @@
+/**********************************************************************
+ * This file is part of "Object Teams Development Tooling"-Software
+ *
+ * Copyright 2004, 2010 Fraunhofer Gesellschaft, Munich, Germany,
+ * for its Fraunhofer Institute and Computer Architecture and Software
+ * Technology (FIRST), Berlin, Germany and Technical University Berlin,
+ * Germany.
+ *
+ * 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
+ * $Id$
+ *
+ * Please visit http://www.eclipse.org/objectteams for updates and contact.
+ *
+ * Contributors:
+ * Fraunhofer FIRST - Initial API and implementation
+ * Technical University Berlin - Initial API and implementation
+ **********************************************************************/
+package org.eclipse.objectteams.otdt.test.builder;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+
+import junit.framework.Test;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IWorkspaceRunnable;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jdt.core.compiler.CategorizedProblem;
+import org.eclipse.jdt.core.tests.builder.Problem;
+import org.eclipse.jdt.internal.core.JavaCorePreferenceInitializer;
+import org.eclipse.jdt.internal.core.JavaModelManager;
+import org.eclipse.objectteams.otdt.tests.FileBasedTest;
+
+@SuppressWarnings({ "nls", "restriction" })
+public class OTEquinoxBuilderTests extends OTBuilderTests {
+
+ MyFileBasedTest fileManager= new MyFileBasedTest("delegate");
+ class MyFileBasedTest extends FileBasedTest {
+ public MyFileBasedTest(String name) {
+ super(name);
+ }
+ @Override
+ protected String getPluginID() {
+ return "org.eclipse.objectteams.otdt.test.builder";
+ }
+ @Override // make available locally:
+ protected IJavaProject setUpJavaProject(String projectName) throws CoreException, IOException
+ {
+ return super.setUpJavaProject(projectName);
+ }
+ protected void replaceWorkspaceFile(String src, IJavaProject project, String dest)
+ throws IOException, CoreException
+ {
+ File srcFile = new File(getPluginDirectoryPath()+File.separator+"workspace"+File.separator+src);
+ IFile destFile= project.getProject().getFile(dest);
+ destFile.setContents(new FileInputStream(srcFile), true, false, null);
+ }
+ };
+
+// static {
+// TESTS_NAMES = new String[] { "testBaseImportTrac304"};
+// }
+ public OTEquinoxBuilderTests(String name) {
+ super(name);
+ }
+
+ public static Test suite() {
+ if (true) {
+ return buildTestSuite(OTEquinoxBuilderTests.class);
+ }
+ return new OTEquinoxBuilderTests("testBaseImportTwoAspectBindings");
+ }
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ env.setAutoBuilding(false);
+
+ DEBUG = true;
+
+ }
+
+ IProject reopenProject(String projectName) throws CoreException {
+ final IProject project = fileManager.getWorkspaceRoot().getProject(projectName);
+ IWorkspaceRunnable populate = new IWorkspaceRunnable() {
+ public void run(IProgressMonitor monitor) throws CoreException {
+ //project.create(null);
+ project.open(null);
+ }
+ };
+ fileManager.getWorkspace().run(populate, null);
+ env.addProject(project);
+ return project;
+ }
+
+ public void testForcedExports() throws CoreException, IOException {
+ IJavaProject trac18b= fileManager.setUpJavaProject("Trac18b");
+ env.addProject(trac18b.getProject());
+ IJavaProject trac18a= fileManager.setUpJavaProject("Trac18a");
+ env.addProject(trac18a.getProject());
+ fullBuild();
+ expectingNoProblemsFor(trac18b.getPath());
+ expectingOnlySpecificProblemsFor(trac18a.getPath(), new Problem[] {
+ getDecapsulationProblem(trac18a, "trac18b.actions.SampleAction", "trac18a/Team18.java", 42, 70), // import
+ getDecapsulationProblem(trac18a, "trac18b.actions.SampleAction", "trac18a/Team18.java", 199, 211), // playedBy
+ });
+ // after success now break it:
+ fileManager.replaceWorkspaceFile("Trac18a2/plugin.xml", trac18a, "plugin.xml");
+ incrementalBuild();
+ expectingNoProblemsFor(trac18b.getPath());
+ expectAccessRestriction(trac18a, "src/trac18a/Team18.java", 42, 70);
+ }
+
+ public void testForcedExportsMissing() throws CoreException, IOException {
+ IJavaProject trac18b= fileManager.setUpJavaProject("Trac18b");
+ env.addProject(trac18b.getProject());
+ IJavaProject trac18a= fileManager.setUpJavaProject("Trac18a2");
+ env.addProject(trac18a.getProject());
+ fullBuild();
+ expectingNoProblemsFor(trac18b.getPath());
+ expectAccessRestriction(trac18a, "src/trac18a/Team18.java", 42, 70);
+ // fix the error
+ fileManager.replaceWorkspaceFile("Trac18a/plugin.xml", trac18a, "plugin.xml");
+ incrementalBuild();
+ expectingNoProblemsFor(trac18b.getPath());
+ expectingOnlySpecificProblemsFor(trac18a.getPath(), new Problem[] {
+ getDecapsulationProblem(trac18a, "trac18b.actions.SampleAction", "trac18a/Team18.java", 42, 70),
+ getDecapsulationProblem(trac18a, "trac18b.actions.SampleAction", "trac18a/Team18.java", 163, 175),
+ });
+ }
+
+ /* project Trac18a3 contains a base-ctor call and a callout binding,
+ * both referring to the force-exported base class.*/
+ public void testForcedExportsGeneratedMethodRefs() throws CoreException, IOException {
+ IJavaProject trac18b= fileManager.setUpJavaProject("Trac18b");
+ env.addProject(trac18b.getProject());
+ IJavaProject trac18a= fileManager.setUpJavaProject("Trac18a3");
+ env.addProject(trac18a.getProject());
+ fullBuild();
+ expectingNoProblemsFor(trac18b.getPath());
+ expectingOnlySpecificProblemsFor(trac18a.getPath(), new Problem[] {
+ getDecapsulationProblem(trac18a, "trac18b.actions.SampleAction", "trac18a/Team18.java", 42, 70),
+ getDecapsulationProblem(trac18a, "trac18b.actions.SampleAction", "trac18a/Team18.java", 163, 175),
+ getDecapsulationProblem(trac18a, "trac18b.actions.SampleAction", "trac18a/Team18.java", 201, 205) // location of the base-ctor call.
+ });
+ }
+ /* trying to produce a broken and bogus error message a la Trac #154 (no success yet). */
+ public void testForcedExportTrac154() throws CoreException, IOException {
+ IJavaProject trac154b1= fileManager.setUpJavaProject("Trac154b1");
+ env.addProject(trac154b1.getProject());
+ IJavaProject trac154b2= fileManager.setUpJavaProject("Trac154b2");
+ env.addProject(trac154b2.getProject());
+ IJavaProject trac154a= fileManager.setUpJavaProject("Trac154a");
+ env.addProject(trac154a.getProject());
+ fullBuild();
+ expectingNoProblemsFor(trac154b1.getPath());
+ expectingNoProblemsFor(trac154b2.getPath());
+ expectingOnlySpecificProblemsFor(trac154a.getPath(), new Problem[] {
+ getDecapsulationProblem(trac154a, "trac154b1.actions.SampleAction", "aspect/MyTeam.java", 29, 59),
+ getDecapsulationProblem(trac154a, "trac154b1.actions.SampleAction", "aspect/MyTeam.java", 118, 130)
+ });
+ }
+
+ public void testBaseImportNoAspectBinding () throws CoreException, IOException {
+ IJavaProject trac18b= fileManager.setUpJavaProject("Trac18b");
+ env.addProject(trac18b.getProject());
+ IJavaProject aspectPlugin= fileManager.setUpJavaProject("MissingAspectBinding");
+ aspectPlugin.setOption("org.eclipse.objectteams.otdt.compiler.problem.binding_conventions", "error");
+ env.addProject(aspectPlugin.getProject());
+ fullBuild();
+ expectingNoProblemsFor(trac18b.getPath());
+ expectingOnlySpecificProblemsFor(aspectPlugin.getPath(), new Problem[] {
+ new Problem("", "Illegal base import: no aspect binding declared for team MissingAspectBindingTeam (OT/Equinox).",
+ aspectPlugin.getPath().append(new Path("src/MissingAspectBindingTeam.java")),
+ 12, 34,
+ CategorizedProblem.CAT_CODE_STYLE, IMarker.SEVERITY_ERROR)
+ });
+ // now fix it:
+ fileManager.replaceWorkspaceFile("MissingAspectBinding/plugin-corrected.xml", aspectPlugin, "plugin.xml");
+ incrementalBuild();
+ expectingNoProblemsFor(trac18b.getPath());
+ expectingNoProblemsFor(aspectPlugin.getPath());
+ }
+
+ /* Two aspect bindings refer to the same team, which has base imports referring to two different base bundles. */
+ public void testBaseImportTwoAspectBindings () throws CoreException, IOException {
+ IJavaProject trac213b1= fileManager.setUpJavaProject("Trac213b1");
+ env.addProject(trac213b1.getProject());
+ IJavaProject trac213b2= fileManager.setUpJavaProject("Trac213b2");
+ env.addProject(trac213b2.getProject());
+ fullBuild();
+
+ // initially only an empty team
+ IJavaProject aspectPlugin= fileManager.setUpJavaProject("Trac213a");
+ aspectPlugin.setOption("org.eclipse.objectteams.otdt.compiler.problem.binding_conventions", "error");
+ env.addProject(aspectPlugin.getProject());
+ fullBuild();
+
+ // now add content to the team, binding to Trac213b1:
+ fileManager.replaceWorkspaceFile("Trac213a/aux/TheTeam_step1.java", aspectPlugin, "src/trac213a/TheTeam.java");
+
+ incrementalBuild();
+ expectingNoProblemsFor(trac213b1.getPath());
+ expectingNoProblemsFor(trac213b2.getPath());
+ expectingNoProblemsFor(aspectPlugin.getPath());
+
+ // now add content to the team, binding to Trac213b2:
+ fileManager.replaceWorkspaceFile("Trac213a/aux/plugin_step2.xml", aspectPlugin, "plugin.xml");
+ fileManager.replaceWorkspaceFile("Trac213a/aux/TheTeam_step2.java", aspectPlugin, "src/trac213a/TheTeam.java");
+
+ incrementalBuild();
+ expectingNoProblemsFor(trac213b1.getPath());
+ expectingNoProblemsFor(trac213b2.getPath());
+ expectingNoProblemsFor(aspectPlugin.getPath());
+ }
+
+ public void testWrongBaseImport1() throws CoreException, IOException {
+ IJavaProject trac18b= fileManager.setUpJavaProject("Trac18b");
+ env.addProject(trac18b.getProject());
+ IJavaProject aspectPlugin= fileManager.setUpJavaProject("WrongBaseImport1");
+ aspectPlugin.setOption("org.eclipse.objectteams.otdt.compiler.problem.binding_conventions", "error");
+ env.addProject(aspectPlugin.getProject());
+ fullBuild();
+ expectingNoProblemsFor(trac18b.getPath());
+ expectingOnlySpecificProblemsFor(aspectPlugin.getPath(), new Problem[] {
+ new Problem("", "Illegal base import: this package is not provided by the declared base plug-in(s) Trac18b (OT/Equinox).",
+ aspectPlugin.getPath().append(new Path("src/WrongBaseImportTeam1.java")),
+ 12, 55,
+ CategorizedProblem.CAT_CODE_STYLE, IMarker.SEVERITY_ERROR)
+ });
+ }
+
+ public void testWrongBaseImport2() throws CoreException, IOException {
+ IJavaProject trac18b= fileManager.setUpJavaProject("Trac18b");
+ env.addProject(trac18b.getProject());
+ IJavaProject aspectPlugin= fileManager.setUpJavaProject("WrongBaseImport2");
+ aspectPlugin.setOption("org.eclipse.objectteams.otdt.compiler.problem.binding_conventions", "error");
+ env.addProject(aspectPlugin.getProject());
+ fullBuild();
+ expectingNoProblemsFor(trac18b.getPath());
+ expectingOnlySpecificProblemsFor(aspectPlugin.getPath(), new Problem[] {
+ new Problem("", "Illegal base import: this package is not provided by the declared base plug-in org.eclipse.objectteams.otequinox but by plug-in Trac18b (OT/Equinox).",
+ aspectPlugin.getPath().append(new Path("src/WrongBaseImportTeam2.java")),
+ 12, 34,
+ CategorizedProblem.CAT_TYPE, IMarker.SEVERITY_ERROR)
+ });
+ }
+
+ public void testBaseImportTrac132 () throws CoreException, IOException {
+ IJavaProject trac132b= fileManager.setUpJavaProject("Trac132b");
+ env.addProject(trac132b.getProject());
+ IJavaProject aspectPlugin1= fileManager.setUpJavaProject("Trac132a1");
+ aspectPlugin1.setOption("org.eclipse.objectteams.otdt.compiler.problem.binding_conventions", "error");
+ env.addProject(aspectPlugin1.getProject());
+ IJavaProject aspectPlugin2= fileManager.setUpJavaProject("Trac132a2");
+ aspectPlugin2.setOption("org.eclipse.objectteams.otdt.compiler.problem.binding_conventions", "error");
+ env.addProject(aspectPlugin2.getProject());
+ fullBuild();
+ expectingNoProblemsFor(trac132b.getPath());
+ expectingNoProblemsFor(aspectPlugin1.getPath());
+ expectingNoProblemsFor(aspectPlugin2.getPath());
+ }
+
+ public void testBaseImportTrac304 () throws CoreException, IOException {
+ IJavaProject trac304b= fileManager.setUpJavaProject("Trac304b");
+ env.addProject(trac304b.getProject());
+ // the fragment:
+ IJavaProject trac304f= fileManager.setUpJavaProject("Trac304f");
+ env.addProject(trac304f.getProject());
+ IJavaProject trac304ot= fileManager.setUpJavaProject("Trac304ot");
+ trac304ot.setOption("org.eclipse.objectteams.otdt.compiler.problem.binding_conventions", "error");
+ env.addProject(trac304ot.getProject());
+ fullBuild();
+ expectingNoProblemsFor(trac304b.getPath());
+ expectingNoProblemsFor(trac304ot.getPath());
+ }
+
+ public void testIllegalUseOfForcedExport() throws CoreException, IOException {
+ IJavaProject trac18b= fileManager.setUpJavaProject("Trac18b");
+ env.addProject(trac18b.getProject());
+ IJavaProject aspectPlugin= fileManager.setUpJavaProject("IllegalUseOfForcedExport");
+ aspectPlugin.setOption("org.eclipse.objectteams.otdt.compiler.problem.binding_conventions", "error");
+ env.addProject(aspectPlugin.getProject());
+ fullBuild();
+ expectingNoProblemsFor(trac18b.getPath());
+ expectingOnlySpecificProblemsFor(aspectPlugin.getPath(),
+ new Problem[] {
+ getIllegalUseOfForcedExportProblem(aspectPlugin, "trac18b.actions.SampleAction", 88, 100),
+ getIllegalUseOfForcedExportProblem(aspectPlugin, "trac18b.actions.SampleAction", 7, 35)});
+ }
+
+ public void testAccumulatedBases1() throws CoreException, IOException {
+ IJavaProject project= fileManager.setUpJavaProject("AccumulatedBases");
+ project.setOption("org.eclipse.objectteams.otdt.compiler.problem.binding_conventions", "error");
+ env.addProject(project.getProject());
+ fullBuild();
+ expectingNoProblemsFor(project.getPath());
+ fileManager.replaceWorkspaceFile("AccumulatedBases/versions/Team1.java.1", project, "src/accumulatedbases/Team1.java");
+ incrementalBuild();
+ expectingNoProblemsFor(project.getPath());
+ }
+
+ // NOTE: run this as the last test here, because I haven't figured out how to
+ // clean up after the simulated workbench restart.
+ public void testBaseImportTrac132_2 () throws CoreException, IOException {
+ IJavaProject trac132b= fileManager.setUpJavaProject("Trac132b");
+ env.addProject(trac132b.getProject());
+ IJavaProject aspectPlugin1= fileManager.setUpJavaProject("Trac132a1");
+ aspectPlugin1.setOption("org.eclipse.objectteams.otdt.compiler.problem.binding_conventions", "error");
+ env.addProject(aspectPlugin1.getProject());
+ IJavaProject aspectPlugin2= fileManager.setUpJavaProject("Trac132a2");
+ aspectPlugin2.setOption("org.eclipse.objectteams.otdt.compiler.problem.binding_conventions", "error");
+ env.addProject(aspectPlugin2.getProject());
+ fullBuild();
+ expectingNoProblemsFor(trac132b.getPath());
+ expectingNoProblemsFor(aspectPlugin1.getPath());
+ expectingNoProblemsFor(aspectPlugin2.getPath());
+
+ // not needed.
+// JavaModelManager.getJavaModelManager().removePerProjectInfo((JavaProject) trac132b);
+// JavaModelManager.getJavaModelManager().removePerProjectInfo((JavaProject) aspectPlugin1);
+// JavaModelManager.getJavaModelManager().removePerProjectInfo((JavaProject) aspectPlugin2);
+
+ // doesn't work see :
+ //ResourcesPlugin.getPlugin().getBundle().stop();
+ //ResourcesPlugin.getPlugin().getBundle().start();
+
+ // simulate shutdown (from AbstractJavaModelTests.simulateExitRestart:
+ env.getWorkspace().save(true, null);
+ JavaModelManager.getJavaModelManager().shutdown();
+ JavaModelManager.doNotUse(); // reset the MANAGER singleton
+ JavaModelManager.getJavaModelManager().startup();
+ new JavaCorePreferenceInitializer().initializeDefaultPreferences();
+
+
+ env.openEmptyWorkspace();
+ env.setAutoBuilding(true);
+
+ trac132b= JavaCore.create(reopenProject("Trac132b"));
+ aspectPlugin1= JavaCore.create(reopenProject("Trac132a1"));
+ aspectPlugin2= JavaCore.create(reopenProject("Trac132a2"));
+ env.addClass(new Path("/Trac132a2/src"), "Dummy", "public class Dummy {}"); // trigger minimal build
+ incrementalBuild();
+ expectingNoProblemsFor(trac132b.getPath());
+ expectingNoProblemsFor(aspectPlugin1.getPath());
+ expectingNoProblemsFor(aspectPlugin2.getPath());
+ }
+
+ // ---------------- HELPERS: ---------------------------
+ private Problem getDecapsulationProblem(IJavaProject project, String baseclassName, String teamPath, int start, int end) {
+ return new Problem("", "Decapsulating base class "+baseclassName+" by means of a forced export. Note, that additionally a corresponing declaration is needed in config.ini (OTJLD 2.1.2(c) + OT/Equinox).",
+ project.getPath().append(new Path("src/"+teamPath)),
+ start, end,
+ CategorizedProblem.CAT_RESTRICTION, IMarker.SEVERITY_WARNING);
+ }
+ private Problem getIllegalUseOfForcedExportProblem(IJavaProject project, String className, int start, int end) {
+ return new Problem("", "The forced-exported type "+className+" cannot be accessed other than as a role's base class (OT/Equinox).",
+ project.getPath().append(new Path("src/IllegalUseOfForcedExportTeam.java")),
+ start, end,
+ CategorizedProblem.CAT_TYPE, IMarker.SEVERITY_ERROR);
+ }
+ private void expectAccessRestriction(IJavaProject project, String fileName, int start, int end) {
+ expectingSpecificProblemFor(project.getPath(),
+ new Problem("", "Access restriction: The type SampleAction is not accessible due to restriction on required project Trac18b",
+ project.getPath().append(new Path(fileName)),
+ start, end,
+ CategorizedProblem.CAT_RESTRICTION, IMarker.SEVERITY_ERROR)
+ );
+ }
+}
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/src/org/eclipse/objectteams/otdt/test/builder/OTLaunchEnvironment.java b/testplugins/org.eclipse.objectteams.otdt.test.builder/src/org/eclipse/objectteams/otdt/test/builder/OTLaunchEnvironment.java
new file mode 100644
index 0000000..ad2861a
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/src/org/eclipse/objectteams/otdt/test/builder/OTLaunchEnvironment.java
@@ -0,0 +1,118 @@
+/**********************************************************************
+ * This file is part of "Object Teams Development Tooling"-Software
+ *
+ * Copyright 2004, 2010 Fraunhofer Gesellschaft, Munich, Germany,
+ * for its Fraunhofer Institute and Computer Architecture and Software
+ * Technology (FIRST), Berlin, Germany and Technical University Berlin,
+ * Germany.
+ *
+ * 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
+ * $Id$
+ *
+ * Please visit http://www.eclipse.org/objectteams for updates and contact.
+ *
+ * Contributors:
+ * Fraunhofer FIRST - Initial API and implementation
+ * Technical University Berlin - Initial API and implementation
+ **********************************************************************/
+package org.eclipse.objectteams.otdt.test.builder;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.lang.reflect.Method;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLClassLoader;
+
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.jdt.core.IClasspathEntry;
+import org.eclipse.objectteams.otdt.core.ext.OTREContainer;
+import org.eclipse.objectteams.otre.jplis.ObjectTeamsTransformer;
+
+/**
+ * Utility class for launching a program in a controlled environment.
+ * Disposing the application's object and the OTLaunchEnvironment
+ * should enable the JVM to also dispose all classes loaded in the process.
+ *
+ * @author stephan
+ * @version $Id: OTLaunchEnvironment.java 14220 2006-09-04 22:13:40Z stephan $
+ */
+public class OTLaunchEnvironment extends URLClassLoader
+{
+ ObjectTeamsTransformer transformer = null;
+ /** Where to look for class files. */
+ IPath bindir;
+ /**
+ * Setup a launch environment for the given paths.
+ * @param workspaceRoot path to the workspace root
+ * @param bindir absolute workspace path to the output location holding class files.
+ * @throws MalformedURLException if the OTRE_JAR_PATH is not a valid path.
+ */
+ OTLaunchEnvironment(IPath workspaceRoot, IPath bindir) throws MalformedURLException {
+ super(new URL[]{getOTREURL()});
+ this.bindir = workspaceRoot.append(bindir);
+ }
+ /**
+ * Same as above but supports the use of OTRE transformers, if `useTransformer == true'
+ */
+ OTLaunchEnvironment(IPath workspaceRoot, IPath bindir, boolean useTransformer)
+ throws MalformedURLException
+ {
+ this(workspaceRoot, bindir);
+ if (useTransformer)
+ this.transformer = new ObjectTeamsTransformer();
+ }
+
+ static URL getOTREURL() throws MalformedURLException {
+ IClasspathEntry[] entries = new OTREContainer().getClasspathEntries();
+ return new URL("file:"+entries[0].getPath()); //$NON-NLS-1$
+ }
+ @Override
+ protected Class<?> findClass(String name) throws ClassNotFoundException {
+ String fileName = name.replace('.', File.separatorChar)+".class"; //$NON-NLS-1$
+ File file = new File(bindir.append(fileName).toOSString());
+ if (file.exists()) {
+ try {
+ return defineClassFromFile(name, file);
+ } catch (Exception e) {
+ // we have a file but it was invalid, don't continue
+ throw new ClassNotFoundException(name);
+ }
+ }
+ // this will use the URL pointing to the OTRE:
+ return super.findClass(name);
+ }
+
+ /* We found an existing file, load its bytes and define the class. */
+ private Class<?> defineClassFromFile(String name, File file)
+ throws Exception
+ {
+ FileInputStream fis = new FileInputStream(file);
+ byte[] bytes = new byte[(int) file.length()];
+ fis.read(bytes);
+ if (transformer != null)
+ bytes = transformer.transform(this, name, null, null, bytes);
+ return defineClass(name, bytes, 0, bytes.length);
+ }
+
+ /**
+ * Load class `className' and invoke its method `methodName'.
+ * The method must be static and without arguments.
+ *
+ * @param className
+ * @param methodName
+ * @return the methods return (possibly boxed).
+ *
+ * @throws Exception too many to list explicitly ;-)
+ */
+ public Object launch(String className, String methodName)
+ throws Exception
+ {
+ Class clazz = this.loadClass(className);
+ Method method = clazz.getMethod(methodName, new Class[0]);
+ return method.invoke(null, new Object[0]);
+ }
+}
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/src/org/eclipse/objectteams/otdt/test/builder/OTTestingEnvironment.java b/testplugins/org.eclipse.objectteams.otdt.test.builder/src/org/eclipse/objectteams/otdt/test/builder/OTTestingEnvironment.java
new file mode 100644
index 0000000..fdb86e4
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/src/org/eclipse/objectteams/otdt/test/builder/OTTestingEnvironment.java
@@ -0,0 +1,42 @@
+/**********************************************************************
+ * This file is part of "Object Teams Development Tooling"-Software
+ *
+ * Copyright 2004, 2010 Fraunhofer Gesellschaft, Munich, Germany,
+ * for its Fraunhofer Institute and Computer Architecture and Software
+ * Technology (FIRST), Berlin, Germany and Technical University Berlin,
+ * Germany.
+ *
+ * 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
+ * $Id$
+ *
+ * Please visit http://www.eclipse.org/objectteams for updates and contact.
+ *
+ * Contributors:
+ * Fraunhofer FIRST - Initial API and implementation
+ * Technical University Berlin - Initial API and implementation
+ **********************************************************************/
+package org.eclipse.objectteams.otdt.test.builder;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IProjectDescription;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jdt.core.tests.builder.TestingEnvironment;
+
+public class OTTestingEnvironment extends TestingEnvironment {
+
+ @Override // in order to set OT nature: // FIXME: request jdt.method to become protected or use a role for overriding
+ protected void addBuilderSpecs(String projectName) {
+ try {
+ IProject project = getProject(projectName);
+ IProjectDescription description = project.getDescription();
+ description.setNatureIds(new String[] { JavaCore.NATURE_ID, JavaCore.OTJ_NATURE_ID });
+ project.setDescription(description, null);
+ } catch (CoreException e) {
+ handleCoreException(e);
+ }
+ }
+}
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/test.xml b/testplugins/org.eclipse.objectteams.otdt.test.builder/test.xml
new file mode 100644
index 0000000..ce5ba19
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/test.xml
@@ -0,0 +1,65 @@
+<project name="testsuite" default="run" basedir=".">
+
+ <property name="otdt-tests-workspace" value="${test.eclipseDir}/otdt-tests-workspace"/>
+
+ <!-- library.xml need these properties-->
+ <property name="eclipse-home" value="${test.eclipseDir}"/>
+ <property name="test.target" value="performance"/>
+
+ <!-- sets the properties eclipseTest-home, and library-file -->
+ <property name="plugin-name" value="org.eclipse.objectteams.otdt.test.builder"/>
+
+ <property name="library-file" value="${test.eclipseDir}/plugins/${org.eclipse.test}/library.xml"/>
+
+ <!-- This target holds all initialization code that needs to be done for -->
+ <!-- all tests that are to be run. Initialization for individual tests -->
+ <!-- should be done within the body of the suite target. -->
+ <target name="init">
+ <tstamp/>
+ <delete>
+ <fileset dir="${test.eclipseDir}" includes="org.eclipse.objectteams.otdt.test.builder.AllTests.xml,${plugin-name}.${file-id}.xml"/>
+ </delete>
+
+ </target>
+
+ <!-- This target defines the tests that need to be run. -->
+ <target name="suite">
+
+ <!-- OTDT Non UI tests -->
+ <property name="otdt-builder-folder"
+ value="${otdt-tests-workspace}/otdt-builder-folder"/>
+ <delete dir="${otdt-nonUI-folder}" quiet="true"/>
+
+ <ant target="core-test" antfile="${library-file}" dir="${test.eclipseDir}">
+ <property name="data-dir" value="${otdt-builder-folder}"/>
+ <property name="plugin-name" value="${plugin-name}"/>
+ <property name="classname" value="org.eclipse.objectteams.otdt.test.builder.AllTests"/>
+ </ant>
+
+ </target>
+
+ <target name="checkOS">
+ <condition property="os.isWindows">
+ <os family="windows"/>
+ </condition>
+ </target>
+
+ <!-- This target holds code to cleanup the testing environment after -->
+ <!-- after all of the tests have been run. You can use this target to -->
+ <!-- delete temporary files that have been created. -->
+ <target name="cleanup">
+
+ </target>
+
+ <!-- This target runs the test suite. Any actions that need to happen -->
+ <!-- after all the tests have been run should go here. -->
+ <target name="run" depends="init,suite,cleanup">
+<!--
+ <ant target="collect" antfile="${library-file}" dir="${test.eclipseDir}">
+ <property name="includes" value="org.eclipse.objectteams.otdt.test.builder.AllTests.xml"/>
+ <property name="output-file" value="${plugin-name}.${file-id}.xml"/>
+ </ant>
+-->
+ </target>
+
+</project>
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/AccumulatedBases/.classpath b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/AccumulatedBases/.classpath
new file mode 100644
index 0000000..cee6929
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/AccumulatedBases/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+ <classpathentry kind="con" path="OTRE"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/AccumulatedBases/.project b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/AccumulatedBases/.project
new file mode 100644
index 0000000..1df9d7c
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/AccumulatedBases/.project
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>AccumulatedBases</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.objectteams.otdt.builder.OTJBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.objectteams.otdt.OTJavaNature</nature>
+ </natures>
+</projectDescription>
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/AccumulatedBases/.settings/org.eclipse.jdt.core.prefs b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/AccumulatedBases/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..9e5f077
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/AccumulatedBases/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+#Sun Aug 03 18:01:18 CEST 2008
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.5
+org.eclipse.objectteams.otdt.compiler.problem.binding_conventions=error
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/AccumulatedBases/META-INF/MANIFEST.MF b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/AccumulatedBases/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..a45de4d
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/AccumulatedBases/META-INF/MANIFEST.MF
@@ -0,0 +1,10 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: AccumulatedBases Plug-in
+Bundle-SymbolicName: AccumulatedBases;singleton:=true
+Bundle-Version: 1.0.0
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Require-Bundle: org.eclipse.debug.ui,
+ org.eclipse.objectteams.otequinox,
+ org.eclipse.jdt.debug.ui,
+ org.eclipse.jdt.junit
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/AccumulatedBases/build.properties b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/AccumulatedBases/build.properties
new file mode 100644
index 0000000..e9863e2
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/AccumulatedBases/build.properties
@@ -0,0 +1,5 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/AccumulatedBases/plugin.xml b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/AccumulatedBases/plugin.xml
new file mode 100644
index 0000000..8edcf89
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/AccumulatedBases/plugin.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.2"?>
+<plugin>
+ <extension
+ point="org.eclipse.objectteams.otequinox.aspectBindings">
+ <aspectBinding
+ icon="platform:/plugin/org.eclipse.objectteams.otdt.ui/icons/ot/calloutbinding_obj.gif">
+ <basePlugin
+ icon="platform:/plugin/org.eclipse.pde.ui/icons/obj16/plugin_obj.gif"
+ id="org.eclipse.debug.ui">
+ </basePlugin>
+ <team
+ class="accumulatedbases.Team1"
+ icon="platform:/plugin/org.eclipse.objectteams.otdt.ui/icons/ot/team_obj.gif">
+ </team>
+ </aspectBinding>
+ <aspectBinding
+ icon="platform:/plugin/org.eclipse.objectteams.otdt.ui/icons/ot/calloutbinding_obj.gif">
+ <basePlugin
+ icon="platform:/plugin/org.eclipse.pde.ui/icons/obj16/plugin_obj.gif"
+ id="org.eclipse.jdt.debug.ui">
+ </basePlugin>
+ <team
+ class="accumulatedbases.Team2"
+ icon="platform:/plugin/org.eclipse.objectteams.otdt.ui/icons/ot/team_obj.gif"
+ superclass="accumulatedbases.Team1">
+ </team>
+ </aspectBinding>
+ <aspectBinding
+ icon="platform:/plugin/org.eclipse.objectteams.otdt.ui/icons/ot/calloutbinding_obj.gif">
+ <basePlugin
+ icon="platform:/plugin/org.eclipse.pde.ui/icons/obj16/plugin_obj.gif"
+ id="org.eclipse.jdt.junit">
+ </basePlugin>
+ <team
+ activation="ALL_THREADS"
+ class="accumulatedbases.Team3"
+ icon="platform:/plugin/org.eclipse.objectteams.otdt.ui/icons/ot/team_obj.gif"
+ superclass="accumulatedbases.Team2">
+ </team>
+ </aspectBinding>
+ </extension>
+
+</plugin>
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/AccumulatedBases/src/accumulatedbases/Team1.java b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/AccumulatedBases/src/accumulatedbases/Team1.java
new file mode 100644
index 0000000..e657aaa
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/AccumulatedBases/src/accumulatedbases/Team1.java
@@ -0,0 +1,10 @@
+package accumulatedbases;
+
+import base org.eclipse.debug.ui.AbstractLaunchConfigurationTabGroup;
+
+public team class Team1 {
+ protected class R1 playedBy AbstractLaunchConfigurationTabGroup {
+
+ }
+
+}
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/AccumulatedBases/src/accumulatedbases/Team2.java b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/AccumulatedBases/src/accumulatedbases/Team2.java
new file mode 100644
index 0000000..f50ef08
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/AccumulatedBases/src/accumulatedbases/Team2.java
@@ -0,0 +1,8 @@
+package accumulatedbases;
+
+import base org.eclipse.jdt.internal.debug.ui.launcher.LocalJavaApplicationTabGroup;
+
+@SuppressWarnings("restriction")
+public team class Team2 extends Team1 {
+ protected class R2 extends R1 playedBy LocalJavaApplicationTabGroup {}
+}
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/AccumulatedBases/src/accumulatedbases/Team3.java b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/AccumulatedBases/src/accumulatedbases/Team3.java
new file mode 100644
index 0000000..fb98912
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/AccumulatedBases/src/accumulatedbases/Team3.java
@@ -0,0 +1,9 @@
+package accumulatedbases;
+
+import base org.eclipse.jdt.internal.junit.launcher.JUnitTabGroup;
+
+
+@SuppressWarnings("restriction")
+public team class Team3 extends Team2 {
+ protected class R3 extends R1 playedBy JUnitTabGroup {}
+}
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/AccumulatedBases/versions/Team1.java.1 b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/AccumulatedBases/versions/Team1.java.1
new file mode 100644
index 0000000..e1c4851
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/AccumulatedBases/versions/Team1.java.1
@@ -0,0 +1,11 @@
+package accumulatedbases;
+
+import base org.eclipse.debug.ui.AbstractLaunchConfigurationTabGroup;
+
+public team class Team1
+{
+ protected class R1 playedBy AbstractLaunchConfigurationTabGroup {
+
+ }
+
+}
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/IllegalUseOfForcedExport/.classpath b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/IllegalUseOfForcedExport/.classpath
new file mode 100644
index 0000000..b70b156
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/IllegalUseOfForcedExport/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="con" path="OTRE"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/IllegalUseOfForcedExport/.project b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/IllegalUseOfForcedExport/.project
new file mode 100644
index 0000000..27f1f6a
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/IllegalUseOfForcedExport/.project
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>IllegalUseOfForcedExport</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.objectteams.otdt.builder.OTJBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.objectteams.otdt.OTJavaNature</nature>
+ </natures>
+</projectDescription>
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/IllegalUseOfForcedExport/META-INF/MANIFEST.MF b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/IllegalUseOfForcedExport/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..ae01de6
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/IllegalUseOfForcedExport/META-INF/MANIFEST.MF
@@ -0,0 +1,7 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Test Illegal Use Of ForcedExport Plug-in
+Bundle-SymbolicName: IllegalUseOfForcedExport; singleton:=true
+Bundle-Version: 1.0.0
+Require-Bundle: org.eclipse.objectteams.otequinox,
+ Trac18b
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/IllegalUseOfForcedExport/build.properties b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/IllegalUseOfForcedExport/build.properties
new file mode 100644
index 0000000..2b0d95b
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/IllegalUseOfForcedExport/build.properties
@@ -0,0 +1,5 @@
+source.. = src/
+output.. = bin/
+bin.includes = plugin.xml,\
+ META-INF/,\
+ .
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/IllegalUseOfForcedExport/plugin.xml b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/IllegalUseOfForcedExport/plugin.xml
new file mode 100644
index 0000000..641f08d
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/IllegalUseOfForcedExport/plugin.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.2"?>
+<plugin>
+ <extension
+ point="org.eclipse.objectteams.otequinox.aspectBindings">
+ <aspectBinding
+ icon="platform:/plugin/org.eclipse.objectteams.otdt.ui/icons/ot/calloutbinding_obj.gif">
+ <basePlugin
+ icon="platform:/plugin/org.eclipse.pde.ui/icons/obj16/plugin_obj.gif"
+ id="Trac18b">
+ <forcedExports>
+ trac18b.actions
+ </forcedExports>
+ </basePlugin>
+ <team
+ activation="ALL_THREADS"
+ class="IllegalUseOfForcedExportTeam"
+ icon="platform:/plugin/org.eclipse.objectteams.otdt.ui/icons/ot/team_obj.gif">
+ </team>
+ </aspectBinding>
+ </extension>
+</plugin>
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/IllegalUseOfForcedExport/src/IllegalUseOfForcedExportTeam.java b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/IllegalUseOfForcedExport/src/IllegalUseOfForcedExportTeam.java
new file mode 100644
index 0000000..8955968
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/IllegalUseOfForcedExport/src/IllegalUseOfForcedExportTeam.java
@@ -0,0 +1,5 @@
+import trac18b.actions.SampleAction;
+
+public team class IllegalUseOfForcedExportTeam {
+ SampleAction action;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/MissingAspectBinding/.classpath b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/MissingAspectBinding/.classpath
new file mode 100644
index 0000000..b70b156
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/MissingAspectBinding/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="con" path="OTRE"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/MissingAspectBinding/.project b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/MissingAspectBinding/.project
new file mode 100644
index 0000000..ea12513
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/MissingAspectBinding/.project
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>MissingAspectBinding</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.objectteams.otdt.builder.OTJBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.objectteams.otdt.OTJavaNature</nature>
+ </natures>
+</projectDescription>
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/MissingAspectBinding/META-INF/MANIFEST.MF b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/MissingAspectBinding/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..7d974ed
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/MissingAspectBinding/META-INF/MANIFEST.MF
@@ -0,0 +1,7 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: TestNoAspectBinding Plug-in
+Bundle-SymbolicName: MissingAspectBinding; singleton:=true
+Bundle-Version: 1.0.0
+Require-Bundle: org.eclipse.objectteams.otequinox,
+ Trac18b
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/MissingAspectBinding/build.properties b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/MissingAspectBinding/build.properties
new file mode 100644
index 0000000..2b0d95b
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/MissingAspectBinding/build.properties
@@ -0,0 +1,5 @@
+source.. = src/
+output.. = bin/
+bin.includes = plugin.xml,\
+ META-INF/,\
+ .
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/MissingAspectBinding/plugin-corrected.xml b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/MissingAspectBinding/plugin-corrected.xml
new file mode 100644
index 0000000..04dafdf
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/MissingAspectBinding/plugin-corrected.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.2"?>
+<plugin>
+ <extension
+ point="org.eclipse.objectteams.otequinox.aspectBindings">
+ <aspectBinding
+ icon="platform:/plugin/org.eclipse.objectteams.otdt.ui/icons/ot/calloutbinding_obj.gif">
+ <basePlugin
+ icon="platform:/plugin/org.eclipse.pde.ui/icons/obj16/plugin_obj.gif"
+ id="Trac18b">
+ </basePlugin>
+ <team
+ activation="ALL_THREADS"
+ class="MissingAspectBindingTeam"
+ icon="platform:/plugin/org.eclipse.objectteams.otdt.ui/icons/ot/team_obj.gif">
+ </team>
+ </aspectBinding>
+ </extension>
+
+</plugin>
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/MissingAspectBinding/plugin.xml b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/MissingAspectBinding/plugin.xml
new file mode 100644
index 0000000..40a3556
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/MissingAspectBinding/plugin.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.2"?>
+<plugin>
+</plugin>
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/MissingAspectBinding/src/MissingAspectBindingTeam.java b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/MissingAspectBinding/src/MissingAspectBindingTeam.java
new file mode 100644
index 0000000..81224ad
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/MissingAspectBinding/src/MissingAspectBindingTeam.java
@@ -0,0 +1,5 @@
+import base trac18b.api.PublicBase;
+
+public team class MissingAspectBindingTeam {
+ protected class R playedBy PublicBase {}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac132a1/.classpath b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac132a1/.classpath
new file mode 100644
index 0000000..b70b156
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac132a1/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="con" path="OTRE"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac132a1/.project b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac132a1/.project
new file mode 100644
index 0000000..377bf83
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac132a1/.project
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>Trac132a1</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.objectteams.otdt.builder.OTJBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.objectteams.otdt.OTJavaNature</nature>
+ </natures>
+</projectDescription>
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac132a1/.settings/org.eclipse.jdt.core.prefs b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac132a1/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..509e627
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac132a1/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,3 @@
+#Sat Nov 10 00:41:15 CET 2007
+eclipse.preferences.version=1
+org.eclipse.objectteams.otdt.compiler.problem.binding_conventions=error
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac132a1/META-INF/MANIFEST.MF b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac132a1/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..9f1180c
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac132a1/META-INF/MANIFEST.MF
@@ -0,0 +1,8 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Trac132 Aspect 1 Plug-in
+Bundle-SymbolicName: Trac132a1; singleton:=true
+Bundle-Version: 1.0.0
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.objectteams.otequinox,
+ Trac132b
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac132a1/build.properties b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac132a1/build.properties
new file mode 100644
index 0000000..0d3d3a7
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac132a1/build.properties
@@ -0,0 +1,6 @@
+source.. = src/
+output.. = bin/
+bin.includes = plugin.xml,\
+ META-INF/,\
+ .,\
+ icons/
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac132a1/plugin.xml b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac132a1/plugin.xml
new file mode 100644
index 0000000..76e750f
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac132a1/plugin.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.2"?>
+<plugin>
+
+ <extension
+ point="org.eclipse.objectteams.otequinox.aspectBindings">
+ <aspectBinding
+ icon="platform:/plugin/org.eclipse.objectteams.otdt.ui/icons/ot/calloutbinding_obj.gif">
+ <basePlugin
+ icon="platform:/plugin/org.eclipse.pde.ui/icons/obj16/plugin_obj.gif"
+ id="Trac132b">
+ </basePlugin>
+ <team
+ activation="ALL_THREADS"
+ class="trac132a1.Team132_1"
+ icon="platform:/plugin/org.eclipse.objectteams.otdt.ui/icons/ot/team_obj.gif">
+ </team>
+ </aspectBinding>
+ </extension>
+
+</plugin>
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac132a1/src/trac132a1/Team132_1.java b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac132a1/src/trac132a1/Team132_1.java
new file mode 100644
index 0000000..f71ad09
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac132a1/src/trac132a1/Team132_1.java
@@ -0,0 +1,14 @@
+package trac132a1;
+
+import base trac132b.actions.SampleAction;
+import base trac132b.api.PublicBase;
+
+@SuppressWarnings("restriction")
+public team class Team132_1 {
+ protected class Action playedBy SampleAction {
+
+ }
+ protected class RoleOfPublic playedBy PublicBase {
+
+ }
+}
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac132a2/.classpath b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac132a2/.classpath
new file mode 100644
index 0000000..b70b156
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac132a2/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="con" path="OTRE"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac132a2/.project b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac132a2/.project
new file mode 100644
index 0000000..8ba3fce
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac132a2/.project
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>Trac132a2</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.objectteams.otdt.builder.OTJBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.objectteams.otdt.OTJavaNature</nature>
+ </natures>
+</projectDescription>
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac132a2/.settings/org.eclipse.jdt.core.prefs b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac132a2/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..509e627
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac132a2/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,3 @@
+#Sat Nov 10 00:41:15 CET 2007
+eclipse.preferences.version=1
+org.eclipse.objectteams.otdt.compiler.problem.binding_conventions=error
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac132a2/META-INF/MANIFEST.MF b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac132a2/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..1bc8e3a
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac132a2/META-INF/MANIFEST.MF
@@ -0,0 +1,8 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Trac132 Aspect 2 Plug-in
+Bundle-SymbolicName: Trac132a2; singleton:=true
+Bundle-Version: 1.0.0
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.objectteams.otequinox,
+ Trac132b
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac132a2/build.properties b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac132a2/build.properties
new file mode 100644
index 0000000..0d3d3a7
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac132a2/build.properties
@@ -0,0 +1,6 @@
+source.. = src/
+output.. = bin/
+bin.includes = plugin.xml,\
+ META-INF/,\
+ .,\
+ icons/
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac132a2/plugin.xml b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac132a2/plugin.xml
new file mode 100644
index 0000000..51021b1
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac132a2/plugin.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.2"?>
+<plugin>
+
+ <extension
+ point="org.eclipse.objectteams.otequinox.aspectBindings">
+ <aspectBinding
+ icon="platform:/plugin/org.eclipse.objectteams.otdt.ui/icons/ot/calloutbinding_obj.gif">
+ <basePlugin
+ icon="platform:/plugin/org.eclipse.pde.ui/icons/obj16/plugin_obj.gif"
+ id="Trac132b">
+ </basePlugin>
+ <team
+ activation="ALL_THREADS"
+ class="trac132a2.Team132_2"
+ icon="platform:/plugin/org.eclipse.objectteams.otdt.ui/icons/ot/team_obj.gif">
+ </team>
+ </aspectBinding>
+ </extension>
+
+</plugin>
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac132a2/src/trac132a2/Team132_2.java b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac132a2/src/trac132a2/Team132_2.java
new file mode 100644
index 0000000..611735d
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac132a2/src/trac132a2/Team132_2.java
@@ -0,0 +1,14 @@
+package trac132a2;
+
+import base trac132b.actions.SampleAction;
+import base trac132b.api.PublicBase;
+
+@SuppressWarnings("restriction")
+public team class Team132_2 {
+ protected class Action playedBy SampleAction {
+
+ }
+ protected class RoleOfPublic playedBy PublicBase {
+
+ }
+}
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac132b/.classpath b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac132b/.classpath
new file mode 100644
index 0000000..751c8f2
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac132b/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac132b/.project b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac132b/.project
new file mode 100644
index 0000000..ea3db2a
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac132b/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>Trac132b</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac132b/META-INF/MANIFEST.MF b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac132b/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..ac53ef5
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac132b/META-INF/MANIFEST.MF
@@ -0,0 +1,8 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Trac132 Base Plug-in
+Bundle-SymbolicName: Trac132b; singleton:=true
+Bundle-Version: 1.0.0
+Require-Bundle: org.eclipse.ui
+Export-Package: trac132b.api,
+ trac132b.actions;x-internal:=true
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac132b/build.properties b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac132b/build.properties
new file mode 100644
index 0000000..0d3d3a7
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac132b/build.properties
@@ -0,0 +1,6 @@
+source.. = src/
+output.. = bin/
+bin.includes = plugin.xml,\
+ META-INF/,\
+ .,\
+ icons/
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac132b/plugin.xml b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac132b/plugin.xml
new file mode 100644
index 0000000..5910717
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac132b/plugin.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.2"?>
+<plugin>
+
+ <extension
+ point="org.eclipse.ui.actionSets">
+ <actionSet
+ label="Sample Action Set"
+ visible="true"
+ id="Trac132b.actionSet">
+ <menu
+ label="Sample &Menu"
+ id="sampleMenu">
+ <separator
+ name="sampleGroup">
+ </separator>
+ </menu>
+ <action
+ label="&Sample Action"
+ icon="icons/sample.gif"
+ class="trac132b.actions.SampleAction"
+ tooltip="Hello, Eclipse world"
+ menubarPath="sampleMenu/sampleGroup"
+ toolbarPath="sampleGroup"
+ id="trac132b.actions.SampleAction">
+ </action>
+ </actionSet>
+ </extension>
+
+</plugin>
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac132b/src/trac132b/actions/SampleAction.java b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac132b/src/trac132b/actions/SampleAction.java
new file mode 100644
index 0000000..0c1a7ca
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac132b/src/trac132b/actions/SampleAction.java
@@ -0,0 +1,64 @@
+package trac132b.actions;
+
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.IWorkbenchWindowActionDelegate;
+import org.eclipse.jface.dialogs.MessageDialog;
+
+/**
+ * Our sample action implements workbench action delegate.
+ * The action proxy will be created by the workbench and
+ * shown in the UI. When the user tries to use the action,
+ * this delegate will be created and execution will be
+ * delegated to it.
+ * @see IWorkbenchWindowActionDelegate
+ */
+public class SampleAction implements IWorkbenchWindowActionDelegate {
+ private IWorkbenchWindow window;
+ /**
+ * The constructor.
+ */
+ public SampleAction() {
+ }
+
+ /**
+ * The action has been activated. The argument of the
+ * method represents the 'real' action sitting
+ * in the workbench UI.
+ * @see IWorkbenchWindowActionDelegate#run
+ */
+ public void run(IAction action) {
+ MessageDialog.openInformation(
+ window.getShell(),
+ "Trac132b Plug-in",
+ "Hello, Eclipse world");
+ }
+
+ /**
+ * Selection in the workbench has been changed. We
+ * can change the state of the 'real' action here
+ * if we want, but this can only happen after
+ * the delegate has been created.
+ * @see IWorkbenchWindowActionDelegate#selectionChanged
+ */
+ public void selectionChanged(IAction action, ISelection selection) {
+ }
+
+ /**
+ * We can use this method to dispose of any system
+ * resources we previously allocated.
+ * @see IWorkbenchWindowActionDelegate#dispose
+ */
+ public void dispose() {
+ }
+
+ /**
+ * We will cache window object in order to
+ * be able to provide parent shell for the message dialog.
+ * @see IWorkbenchWindowActionDelegate#init
+ */
+ public void init(IWorkbenchWindow window) {
+ this.window = window;
+ }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac132b/src/trac132b/api/PublicBase.java b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac132b/src/trac132b/api/PublicBase.java
new file mode 100644
index 0000000..b193459
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac132b/src/trac132b/api/PublicBase.java
@@ -0,0 +1,5 @@
+package trac132b.api;
+
+public class PublicBase {
+
+}
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac154a/.classpath b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac154a/.classpath
new file mode 100644
index 0000000..c24f8de
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac154a/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+ <classpathentry kind="con" path="OTRE"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac154a/.project b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac154a/.project
new file mode 100644
index 0000000..3d731b8
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac154a/.project
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>Trac154a</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.objectteams.otdt.builder.OTJBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.objectteams.otdt.OTJavaNature</nature>
+ </natures>
+</projectDescription>
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac154a/.settings/org.eclipse.jdt.core.prefs b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac154a/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..d742631
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac154a/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,8 @@
+#Mon Oct 27 18:58:23 CET 2008
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.6
+org.eclipse.objectteams.otdt.compiler.problem.binding_conventions=error
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac154a/META-INF/MANIFEST.MF b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac154a/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..bf7729a
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac154a/META-INF/MANIFEST.MF
@@ -0,0 +1,9 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Trac154 aspect Plug-in
+Bundle-SymbolicName: Trac154a;singleton:=true
+Bundle-Version: 1.0.0
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Require-Bundle: Trac154b1;bundle-version="1.0.0",
+ org.eclipse.objectteams.otequinox,
+ org.eclipse.ui
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac154a/build.properties b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac154a/build.properties
new file mode 100644
index 0000000..e9863e2
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac154a/build.properties
@@ -0,0 +1,5 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac154a/plugin.xml b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac154a/plugin.xml
new file mode 100644
index 0000000..d73e081
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac154a/plugin.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.2"?>
+<plugin>
+ <extension
+ point="org.eclipse.objectteams.otequinox.aspectBindings">
+ <aspectBinding
+ icon="platform:/plugin/org.eclipse.objectteams.otdt.ui/icons/ot/calloutbinding_obj.gif">
+ <basePlugin
+ icon="platform:/plugin/org.eclipse.pde.ui/icons/obj16/plugin_obj.gif"
+ id="Trac154b1">
+ <forcedExports>
+ trac154b1.actions
+ </forcedExports>
+ </basePlugin>
+ <team
+ class="aspect.MyTeam"
+ icon="platform:/plugin/org.eclipse.objectteams.otdt.ui/icons/ot/team_obj.gif">
+ </team>
+ </aspectBinding>
+ </extension>
+
+</plugin>
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac154a/src/aspect/MyTeam.java b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac154a/src/aspect/MyTeam.java
new file mode 100644
index 0000000..7bf9efe
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac154a/src/aspect/MyTeam.java
@@ -0,0 +1,9 @@
+package aspect;
+
+import base trac154b1.actions.SampleAction;
+
+public team class MyTeam {
+
+ protected class R playedBy SampleAction {}
+
+}
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac154b1/.classpath b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac154b1/.classpath
new file mode 100644
index 0000000..ad32c83
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac154b1/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac154b1/.project b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac154b1/.project
new file mode 100644
index 0000000..a59d0d8
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac154b1/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>Trac154b1</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac154b1/.settings/org.eclipse.jdt.core.prefs b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac154b1/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..98b75e0
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac154b1/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+#Mon Oct 27 18:55:23 CET 2008
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.6
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac154b1/META-INF/MANIFEST.MF b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac154b1/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..1296dad
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac154b1/META-INF/MANIFEST.MF
@@ -0,0 +1,8 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Trac154 base Plug-in 1
+Bundle-SymbolicName: Trac154b1; singleton:=true
+Bundle-Version: 1.0.0
+Require-Bundle: org.eclipse.ui
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Export-Package: trac154b1.actions
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac154b1/build.properties b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac154b1/build.properties
new file mode 100644
index 0000000..0d3d3a7
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac154b1/build.properties
@@ -0,0 +1,6 @@
+source.. = src/
+output.. = bin/
+bin.includes = plugin.xml,\
+ META-INF/,\
+ .,\
+ icons/
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac154b1/icons/sample.gif b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac154b1/icons/sample.gif
new file mode 100644
index 0000000..34fb3c9
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac154b1/icons/sample.gif
Binary files differ
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac154b1/plugin.xml b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac154b1/plugin.xml
new file mode 100644
index 0000000..b45bc2d
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac154b1/plugin.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.2"?>
+<plugin>
+
+ <extension
+ point="org.eclipse.ui.actionSets">
+ <actionSet
+ label="Sample Action Set"
+ visible="true"
+ id="Trac154b1.actionSet">
+ <menu
+ label="Sample &Menu"
+ id="sampleMenu">
+ <separator
+ name="sampleGroup">
+ </separator>
+ </menu>
+ <action
+ label="&Sample Action"
+ icon="icons/sample.gif"
+ class="trac154b1.actions.SampleAction"
+ tooltip="Hello, Eclipse world"
+ menubarPath="sampleMenu/sampleGroup"
+ toolbarPath="sampleGroup"
+ id="trac154b1.actions.SampleAction">
+ </action>
+ </actionSet>
+ </extension>
+
+</plugin>
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac154b1/src/trac154b1/actions/SampleAction.java b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac154b1/src/trac154b1/actions/SampleAction.java
new file mode 100644
index 0000000..fd6ec4f
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac154b1/src/trac154b1/actions/SampleAction.java
@@ -0,0 +1,64 @@
+package trac154b1.actions;
+
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.IWorkbenchWindowActionDelegate;
+import org.eclipse.jface.dialogs.MessageDialog;
+
+/**
+ * Our sample action implements workbench action delegate.
+ * The action proxy will be created by the workbench and
+ * shown in the UI. When the user tries to use the action,
+ * this delegate will be created and execution will be
+ * delegated to it.
+ * @see IWorkbenchWindowActionDelegate
+ */
+public class SampleAction implements IWorkbenchWindowActionDelegate {
+ private IWorkbenchWindow window;
+ /**
+ * The constructor.
+ */
+ public SampleAction() {
+ }
+
+ /**
+ * The action has been activated. The argument of the
+ * method represents the 'real' action sitting
+ * in the workbench UI.
+ * @see IWorkbenchWindowActionDelegate#run
+ */
+ public void run(IAction action) {
+ MessageDialog.openInformation(
+ window.getShell(),
+ "Trac154 base Plug-in 1",
+ "Hello, Eclipse world");
+ }
+
+ /**
+ * Selection in the workbench has been changed. We
+ * can change the state of the 'real' action here
+ * if we want, but this can only happen after
+ * the delegate has been created.
+ * @see IWorkbenchWindowActionDelegate#selectionChanged
+ */
+ public void selectionChanged(IAction action, ISelection selection) {
+ }
+
+ /**
+ * We can use this method to dispose of any system
+ * resources we previously allocated.
+ * @see IWorkbenchWindowActionDelegate#dispose
+ */
+ public void dispose() {
+ }
+
+ /**
+ * We will cache window object in order to
+ * be able to provide parent shell for the message dialog.
+ * @see IWorkbenchWindowActionDelegate#init
+ */
+ public void init(IWorkbenchWindow window) {
+ this.window = window;
+ }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac154b2/.classpath b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac154b2/.classpath
new file mode 100644
index 0000000..ad32c83
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac154b2/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac154b2/.project b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac154b2/.project
new file mode 100644
index 0000000..b02f3cf
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac154b2/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>Trac154b2</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac154b2/.settings/org.eclipse.jdt.core.prefs b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac154b2/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..b727278
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac154b2/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+#Mon Oct 27 18:56:07 CET 2008
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.6
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac154b2/META-INF/MANIFEST.MF b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac154b2/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..bf7740a
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac154b2/META-INF/MANIFEST.MF
@@ -0,0 +1,8 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Trac154 base Plug-in 2
+Bundle-SymbolicName: Trac154b2
+Bundle-Version: 1.0.0
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Require-Bundle: Trac154b1;bundle-version="1.0.0",
+ org.eclipse.ui
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac154b2/build.properties b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac154b2/build.properties
new file mode 100644
index 0000000..34d2e4d
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac154b2/build.properties
@@ -0,0 +1,4 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac154b2/src/internal/SubClass.java b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac154b2/src/internal/SubClass.java
new file mode 100644
index 0000000..a3c4597
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac154b2/src/internal/SubClass.java
@@ -0,0 +1,7 @@
+package internal;
+
+import trac154b1.actions.SampleAction;
+
+public class SubClass extends SampleAction {
+
+}
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18a/.classpath b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18a/.classpath
new file mode 100644
index 0000000..b70b156
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18a/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="con" path="OTRE"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18a/.project b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18a/.project
new file mode 100644
index 0000000..722dc22
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18a/.project
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>Trac18a</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.objectteams.otdt.builder.OTJBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.objectteams.otdt.OTJavaNature</nature>
+ </natures>
+</projectDescription>
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18a/.settings/org.eclipse.jdt.core.prefs b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18a/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..509e627
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18a/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,3 @@
+#Sat Nov 10 00:41:15 CET 2007
+eclipse.preferences.version=1
+org.eclipse.objectteams.otdt.compiler.problem.binding_conventions=error
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18a/META-INF/MANIFEST.MF b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18a/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..5d5f795
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18a/META-INF/MANIFEST.MF
@@ -0,0 +1,9 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Trac18a Plug-in
+Bundle-SymbolicName: Trac18a; singleton:=true
+Bundle-Version: 1.0.0
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.objectteams.otequinox,
+ Trac18b
+Bundle-ActivationPolicy: lazy
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18a/build.properties b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18a/build.properties
new file mode 100644
index 0000000..0d3d3a7
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18a/build.properties
@@ -0,0 +1,6 @@
+source.. = src/
+output.. = bin/
+bin.includes = plugin.xml,\
+ META-INF/,\
+ .,\
+ icons/
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18a/plugin.xml b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18a/plugin.xml
new file mode 100644
index 0000000..3329dbe
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18a/plugin.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.2"?>
+<plugin>
+
+ <extension
+ point="org.eclipse.ui.actionSets">
+ <actionSet
+ label="Sample Action Set"
+ visible="true"
+ id="Trac18a.actionSet">
+ <menu
+ label="Sample &Menu"
+ id="sampleMenu">
+ <separator
+ name="sampleGroup">
+ </separator>
+ </menu>
+ <action
+ label="&Sample Action"
+ icon="icons/sample.gif"
+ class="trac18a.actions.SampleAction"
+ tooltip="Hello, Eclipse world"
+ menubarPath="sampleMenu/sampleGroup"
+ toolbarPath="sampleGroup"
+ id="trac18a.actions.SampleAction">
+ </action>
+ </actionSet>
+ </extension>
+ <extension
+ point="org.eclipse.objectteams.otequinox.aspectBindings">
+ <aspectBinding
+ icon="platform:/plugin/org.eclipse.objectteams.otdt.ui/icons/ot/calloutbinding_obj.gif">
+ <basePlugin
+ icon="platform:/plugin/org.eclipse.pde.ui/icons/obj16/plugin_obj.gif"
+ id="Trac18b">
+ <forcedExports>
+ trac18b.actions,
+trac18b.otherclasses
+ </forcedExports>
+ </basePlugin>
+ <team
+ activation="ALL_THREADS"
+ class="trac18a.Team18"
+ icon="platform:/plugin/org.eclipse.objectteams.otdt.ui/icons/ot/team_obj.gif">
+ </team>
+ </aspectBinding>
+ </extension>
+
+</plugin>
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18a/src/trac18a/Team18.java b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18a/src/trac18a/Team18.java
new file mode 100644
index 0000000..d428053
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18a/src/trac18a/Team18.java
@@ -0,0 +1,20 @@
+/**
+ *
+ */
+package trac18a;
+
+import base trac18b.actions.SampleAction;
+import base trac18b.api.PublicBase;
+
+/**
+ * @author stephan
+ *
+ */
+public team class Team18 {
+ protected class Action playedBy SampleAction {
+
+ }
+ protected class RoleOfPublic playedBy PublicBase {
+
+ }
+}
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18a/src/trac18a/actions/SampleAction.java b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18a/src/trac18a/actions/SampleAction.java
new file mode 100644
index 0000000..e60be67
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18a/src/trac18a/actions/SampleAction.java
@@ -0,0 +1,64 @@
+package trac18a.actions;
+
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.IWorkbenchWindowActionDelegate;
+import org.eclipse.jface.dialogs.MessageDialog;
+
+/**
+ * Our sample action implements workbench action delegate.
+ * The action proxy will be created by the workbench and
+ * shown in the UI. When the user tries to use the action,
+ * this delegate will be created and execution will be
+ * delegated to it.
+ * @see IWorkbenchWindowActionDelegate
+ */
+public class SampleAction implements IWorkbenchWindowActionDelegate {
+ private IWorkbenchWindow window;
+ /**
+ * The constructor.
+ */
+ public SampleAction() {
+ }
+
+ /**
+ * The action has been activated. The argument of the
+ * method represents the 'real' action sitting
+ * in the workbench UI.
+ * @see IWorkbenchWindowActionDelegate#run
+ */
+ public void run(IAction action) {
+ MessageDialog.openInformation(
+ window.getShell(),
+ "Trac18a Plug-in",
+ "Hello, Aspect world");
+ }
+
+ /**
+ * Selection in the workbench has been changed. We
+ * can change the state of the 'real' action here
+ * if we want, but this can only happen after
+ * the delegate has been created.
+ * @see IWorkbenchWindowActionDelegate#selectionChanged
+ */
+ public void selectionChanged(IAction action, ISelection selection) {
+ }
+
+ /**
+ * We can use this method to dispose of any system
+ * resources we previously allocated.
+ * @see IWorkbenchWindowActionDelegate#dispose
+ */
+ public void dispose() {
+ }
+
+ /**
+ * We will cache window object in order to
+ * be able to provide parent shell for the message dialog.
+ * @see IWorkbenchWindowActionDelegate#init
+ */
+ public void init(IWorkbenchWindow window) {
+ this.window = window;
+ }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18a2/.classpath b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18a2/.classpath
new file mode 100644
index 0000000..b70b156
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18a2/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="con" path="OTRE"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18a2/.project b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18a2/.project
new file mode 100644
index 0000000..722dc22
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18a2/.project
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>Trac18a</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.objectteams.otdt.builder.OTJBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.objectteams.otdt.OTJavaNature</nature>
+ </natures>
+</projectDescription>
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18a2/.settings/org.eclipse.jdt.core.prefs b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18a2/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..509e627
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18a2/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,3 @@
+#Sat Nov 10 00:41:15 CET 2007
+eclipse.preferences.version=1
+org.eclipse.objectteams.otdt.compiler.problem.binding_conventions=error
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18a2/META-INF/MANIFEST.MF b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18a2/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..537183c
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18a2/META-INF/MANIFEST.MF
@@ -0,0 +1,8 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Trac18a Plug-in
+Bundle-SymbolicName: Trac18a; singleton:=true
+Bundle-Version: 1.0.0
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.objectteams.otequinox,
+ Trac18b
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18a2/build.properties b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18a2/build.properties
new file mode 100644
index 0000000..0d3d3a7
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18a2/build.properties
@@ -0,0 +1,6 @@
+source.. = src/
+output.. = bin/
+bin.includes = plugin.xml,\
+ META-INF/,\
+ .,\
+ icons/
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18a2/plugin.xml b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18a2/plugin.xml
new file mode 100644
index 0000000..06c2c53
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18a2/plugin.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.2"?>
+<plugin>
+
+ <extension
+ point="org.eclipse.ui.actionSets">
+ <actionSet
+ label="Sample Action Set"
+ visible="true"
+ id="Trac18a.actionSet">
+ <menu
+ label="Sample &Menu"
+ id="sampleMenu">
+ <separator
+ name="sampleGroup">
+ </separator>
+ </menu>
+ <action
+ label="&Sample Action"
+ icon="icons/sample.gif"
+ class="trac18a.actions.SampleAction"
+ tooltip="Hello, Eclipse world"
+ menubarPath="sampleMenu/sampleGroup"
+ toolbarPath="sampleGroup"
+ id="trac18a.actions.SampleAction">
+ </action>
+ </actionSet>
+ </extension>
+ <extension
+ point="org.eclipse.objectteams.otequinox.aspectBindings">
+ <aspectBinding
+ icon="platform:/plugin/org.eclipse.objectteams.otdt.ui/icons/ot/calloutbinding_obj.gif">
+ <basePlugin
+ icon="platform:/plugin/org.eclipse.pde.ui/icons/obj16/plugin_obj.gif"
+ id="Trac18b">
+ </basePlugin>
+ <team
+ activation="ALL_THREADS"
+ class="trac18a.Team18"
+ icon="platform:/plugin/org.eclipse.objectteams.otdt.ui/icons/ot/team_obj.gif">
+ </team>
+ </aspectBinding>
+ </extension>
+
+</plugin>
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18a2/src/trac18a/Team18.java b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18a2/src/trac18a/Team18.java
new file mode 100644
index 0000000..c0c4dd9
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18a2/src/trac18a/Team18.java
@@ -0,0 +1,16 @@
+/**
+ *
+ */
+package trac18a;
+
+import base trac18b.actions.SampleAction;
+
+/**
+ * @author stephan
+ *
+ */
+public team class Team18 {
+ protected class Action playedBy SampleAction {
+
+ }
+}
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18a2/src/trac18a/actions/SampleAction.java b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18a2/src/trac18a/actions/SampleAction.java
new file mode 100644
index 0000000..e60be67
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18a2/src/trac18a/actions/SampleAction.java
@@ -0,0 +1,64 @@
+package trac18a.actions;
+
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.IWorkbenchWindowActionDelegate;
+import org.eclipse.jface.dialogs.MessageDialog;
+
+/**
+ * Our sample action implements workbench action delegate.
+ * The action proxy will be created by the workbench and
+ * shown in the UI. When the user tries to use the action,
+ * this delegate will be created and execution will be
+ * delegated to it.
+ * @see IWorkbenchWindowActionDelegate
+ */
+public class SampleAction implements IWorkbenchWindowActionDelegate {
+ private IWorkbenchWindow window;
+ /**
+ * The constructor.
+ */
+ public SampleAction() {
+ }
+
+ /**
+ * The action has been activated. The argument of the
+ * method represents the 'real' action sitting
+ * in the workbench UI.
+ * @see IWorkbenchWindowActionDelegate#run
+ */
+ public void run(IAction action) {
+ MessageDialog.openInformation(
+ window.getShell(),
+ "Trac18a Plug-in",
+ "Hello, Aspect world");
+ }
+
+ /**
+ * Selection in the workbench has been changed. We
+ * can change the state of the 'real' action here
+ * if we want, but this can only happen after
+ * the delegate has been created.
+ * @see IWorkbenchWindowActionDelegate#selectionChanged
+ */
+ public void selectionChanged(IAction action, ISelection selection) {
+ }
+
+ /**
+ * We can use this method to dispose of any system
+ * resources we previously allocated.
+ * @see IWorkbenchWindowActionDelegate#dispose
+ */
+ public void dispose() {
+ }
+
+ /**
+ * We will cache window object in order to
+ * be able to provide parent shell for the message dialog.
+ * @see IWorkbenchWindowActionDelegate#init
+ */
+ public void init(IWorkbenchWindow window) {
+ this.window = window;
+ }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18a3/.classpath b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18a3/.classpath
new file mode 100644
index 0000000..b70b156
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18a3/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="con" path="OTRE"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18a3/.project b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18a3/.project
new file mode 100644
index 0000000..722dc22
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18a3/.project
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>Trac18a</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.objectteams.otdt.builder.OTJBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.objectteams.otdt.OTJavaNature</nature>
+ </natures>
+</projectDescription>
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18a3/.settings/org.eclipse.jdt.core.prefs b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18a3/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..509e627
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18a3/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,3 @@
+#Sat Nov 10 00:41:15 CET 2007
+eclipse.preferences.version=1
+org.eclipse.objectteams.otdt.compiler.problem.binding_conventions=error
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18a3/META-INF/MANIFEST.MF b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18a3/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..537183c
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18a3/META-INF/MANIFEST.MF
@@ -0,0 +1,8 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Trac18a Plug-in
+Bundle-SymbolicName: Trac18a; singleton:=true
+Bundle-Version: 1.0.0
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.objectteams.otequinox,
+ Trac18b
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18a3/build.properties b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18a3/build.properties
new file mode 100644
index 0000000..0d3d3a7
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18a3/build.properties
@@ -0,0 +1,6 @@
+source.. = src/
+output.. = bin/
+bin.includes = plugin.xml,\
+ META-INF/,\
+ .,\
+ icons/
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18a3/plugin.xml b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18a3/plugin.xml
new file mode 100644
index 0000000..d3d801c
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18a3/plugin.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.2"?>
+<plugin>
+
+ <extension
+ point="org.eclipse.ui.actionSets">
+ <actionSet
+ label="Sample Action Set"
+ visible="true"
+ id="Trac18a.actionSet">
+ <menu
+ label="Sample &Menu"
+ id="sampleMenu">
+ <separator
+ name="sampleGroup">
+ </separator>
+ </menu>
+ <action
+ label="&Sample Action"
+ icon="icons/sample.gif"
+ class="trac18a.actions.SampleAction"
+ tooltip="Hello, Eclipse world"
+ menubarPath="sampleMenu/sampleGroup"
+ toolbarPath="sampleGroup"
+ id="trac18a.actions.SampleAction">
+ </action>
+ </actionSet>
+ </extension>
+ <extension
+ point="org.eclipse.objectteams.otequinox.aspectBindings">
+ <aspectBinding
+ icon="platform:/plugin/org.eclipse.objectteams.otdt.ui/icons/ot/calloutbinding_obj.gif">
+ <basePlugin
+ icon="platform:/plugin/org.eclipse.pde.ui/icons/obj16/plugin_obj.gif"
+ id="Trac18b">
+ <forcedExports>
+ trac18b.actions
+ </forcedExports>
+ </basePlugin>
+ <team
+ activation="ALL_THREADS"
+ class="trac18a.Team18"
+ icon="platform:/plugin/org.eclipse.objectteams.otdt.ui/icons/ot/team_obj.gif">
+ </team>
+ </aspectBinding>
+ </extension>
+
+</plugin>
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18a3/src/trac18a/Team18.java b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18a3/src/trac18a/Team18.java
new file mode 100644
index 0000000..9372d10
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18a3/src/trac18a/Team18.java
@@ -0,0 +1,19 @@
+/**
+ *
+ */
+package trac18a;
+
+import base trac18b.actions.SampleAction;
+
+/**
+ * @author stephan
+ *
+ */
+public team class Team18 {
+ protected class Action playedBy SampleAction {
+ public Action() {
+ base();
+ }
+ void dispose() -> void dispose();
+ }
+}
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18a3/src/trac18a/actions/SampleAction.java b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18a3/src/trac18a/actions/SampleAction.java
new file mode 100644
index 0000000..e60be67
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18a3/src/trac18a/actions/SampleAction.java
@@ -0,0 +1,64 @@
+package trac18a.actions;
+
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.IWorkbenchWindowActionDelegate;
+import org.eclipse.jface.dialogs.MessageDialog;
+
+/**
+ * Our sample action implements workbench action delegate.
+ * The action proxy will be created by the workbench and
+ * shown in the UI. When the user tries to use the action,
+ * this delegate will be created and execution will be
+ * delegated to it.
+ * @see IWorkbenchWindowActionDelegate
+ */
+public class SampleAction implements IWorkbenchWindowActionDelegate {
+ private IWorkbenchWindow window;
+ /**
+ * The constructor.
+ */
+ public SampleAction() {
+ }
+
+ /**
+ * The action has been activated. The argument of the
+ * method represents the 'real' action sitting
+ * in the workbench UI.
+ * @see IWorkbenchWindowActionDelegate#run
+ */
+ public void run(IAction action) {
+ MessageDialog.openInformation(
+ window.getShell(),
+ "Trac18a Plug-in",
+ "Hello, Aspect world");
+ }
+
+ /**
+ * Selection in the workbench has been changed. We
+ * can change the state of the 'real' action here
+ * if we want, but this can only happen after
+ * the delegate has been created.
+ * @see IWorkbenchWindowActionDelegate#selectionChanged
+ */
+ public void selectionChanged(IAction action, ISelection selection) {
+ }
+
+ /**
+ * We can use this method to dispose of any system
+ * resources we previously allocated.
+ * @see IWorkbenchWindowActionDelegate#dispose
+ */
+ public void dispose() {
+ }
+
+ /**
+ * We will cache window object in order to
+ * be able to provide parent shell for the message dialog.
+ * @see IWorkbenchWindowActionDelegate#init
+ */
+ public void init(IWorkbenchWindow window) {
+ this.window = window;
+ }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18b/.classpath b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18b/.classpath
new file mode 100644
index 0000000..751c8f2
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18b/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18b/.project b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18b/.project
new file mode 100644
index 0000000..172a67f
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18b/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>Trac18b</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18b/META-INF/MANIFEST.MF b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18b/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..09fa9e0
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18b/META-INF/MANIFEST.MF
@@ -0,0 +1,9 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Trac18b Plug-in
+Bundle-SymbolicName: Trac18b; singleton:=true
+Bundle-Version: 1.0.0
+Require-Bundle: org.eclipse.ui
+Export-Package: trac18b.api
+Bundle-ActivationPolicy: lazy
+
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18b/build.properties b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18b/build.properties
new file mode 100644
index 0000000..0d3d3a7
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18b/build.properties
@@ -0,0 +1,6 @@
+source.. = src/
+output.. = bin/
+bin.includes = plugin.xml,\
+ META-INF/,\
+ .,\
+ icons/
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18b/plugin.xml b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18b/plugin.xml
new file mode 100644
index 0000000..e42d5e0
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18b/plugin.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.2"?>
+<plugin>
+
+ <extension
+ point="org.eclipse.ui.actionSets">
+ <actionSet
+ label="Sample Action Set"
+ visible="true"
+ id="Trac18b.actionSet">
+ <menu
+ label="Sample &Menu"
+ id="sampleMenu">
+ <separator
+ name="sampleGroup">
+ </separator>
+ </menu>
+ <action
+ label="&Sample Action"
+ icon="icons/sample.gif"
+ class="trac18b.actions.SampleAction"
+ tooltip="Hello, Eclipse world"
+ menubarPath="sampleMenu/sampleGroup"
+ toolbarPath="sampleGroup"
+ id="trac18b.actions.SampleAction">
+ </action>
+ </actionSet>
+ </extension>
+
+</plugin>
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18b/src/trac18b/actions/SampleAction.java b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18b/src/trac18b/actions/SampleAction.java
new file mode 100644
index 0000000..0ef856e
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18b/src/trac18b/actions/SampleAction.java
@@ -0,0 +1,64 @@
+package trac18b.actions;
+
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.IWorkbenchWindowActionDelegate;
+import org.eclipse.jface.dialogs.MessageDialog;
+
+/**
+ * Our sample action implements workbench action delegate.
+ * The action proxy will be created by the workbench and
+ * shown in the UI. When the user tries to use the action,
+ * this delegate will be created and execution will be
+ * delegated to it.
+ * @see IWorkbenchWindowActionDelegate
+ */
+public class SampleAction implements IWorkbenchWindowActionDelegate {
+ private IWorkbenchWindow window;
+ /**
+ * The constructor.
+ */
+ public SampleAction() {
+ }
+
+ /**
+ * The action has been activated. The argument of the
+ * method represents the 'real' action sitting
+ * in the workbench UI.
+ * @see IWorkbenchWindowActionDelegate#run
+ */
+ public void run(IAction action) {
+ MessageDialog.openInformation(
+ window.getShell(),
+ "Trac18b Plug-in",
+ "Hello, Eclipse world");
+ }
+
+ /**
+ * Selection in the workbench has been changed. We
+ * can change the state of the 'real' action here
+ * if we want, but this can only happen after
+ * the delegate has been created.
+ * @see IWorkbenchWindowActionDelegate#selectionChanged
+ */
+ public void selectionChanged(IAction action, ISelection selection) {
+ }
+
+ /**
+ * We can use this method to dispose of any system
+ * resources we previously allocated.
+ * @see IWorkbenchWindowActionDelegate#dispose
+ */
+ public void dispose() {
+ }
+
+ /**
+ * We will cache window object in order to
+ * be able to provide parent shell for the message dialog.
+ * @see IWorkbenchWindowActionDelegate#init
+ */
+ public void init(IWorkbenchWindow window) {
+ this.window = window;
+ }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18b/src/trac18b/api/PublicBase.java b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18b/src/trac18b/api/PublicBase.java
new file mode 100644
index 0000000..4a93991
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18b/src/trac18b/api/PublicBase.java
@@ -0,0 +1,5 @@
+package trac18b.api;
+
+public class PublicBase {
+
+}
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18b/src/trac18b/otherclasses/OtherClass.java b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18b/src/trac18b/otherclasses/OtherClass.java
new file mode 100644
index 0000000..d62824c
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac18b/src/trac18b/otherclasses/OtherClass.java
@@ -0,0 +1,5 @@
+package trac18b.otherclasses;
+
+public class OtherClass {
+
+}
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac213a/.classpath b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac213a/.classpath
new file mode 100644
index 0000000..c24f8de
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac213a/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+ <classpathentry kind="con" path="OTRE"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac213a/.project b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac213a/.project
new file mode 100644
index 0000000..3943bd2
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac213a/.project
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>Trac213a</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.objectteams.otdt.builder.OTJBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.objectteams.otdt.OTJavaNature</nature>
+ </natures>
+</projectDescription>
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac213a/.settings/org.eclipse.jdt.core.prefs b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac213a/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..a205a2b
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac213a/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,8 @@
+#Sat Mar 14 19:00:03 CET 2009
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.6
+org.eclipse.objectteams.otdt.compiler.problem.binding_conventions=error
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac213a/META-INF/MANIFEST.MF b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac213a/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..58fb008
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac213a/META-INF/MANIFEST.MF
@@ -0,0 +1,12 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Trac213a Plug-in
+Bundle-SymbolicName: Trac213a;singleton:=true
+Bundle-Version: 1.0.0
+Bundle-Activator: trac213a.Activator
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.objectteams.otequinox,
+ Trac213b1;bundle-version="1.0.0",
+ Trac213b2;bundle-version="1.0.0"
+Bundle-ActivationPolicy: lazy
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac213a/aux/TheTeam_step1.java b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac213a/aux/TheTeam_step1.java
new file mode 100644
index 0000000..2a6ba99
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac213a/aux/TheTeam_step1.java
@@ -0,0 +1,11 @@
+package trac213a;
+
+import base trac213b1.Activator1;
+
+public team class TheTeam {
+
+ protected class R1 playedBy Activator1 {
+
+ }
+
+}
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac213a/aux/TheTeam_step2.java b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac213a/aux/TheTeam_step2.java
new file mode 100644
index 0000000..56de0bd
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac213a/aux/TheTeam_step2.java
@@ -0,0 +1,15 @@
+package trac213a;
+
+import base trac213b1.Activator1;
+import base trac213b2.Activator2;
+
+public team class TheTeam {
+
+ protected class R1 playedBy Activator1 {
+
+ }
+ protected class R2 playedBy Activator2 {
+
+ }
+
+}
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac213a/aux/plugin_step2.xml b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac213a/aux/plugin_step2.xml
new file mode 100644
index 0000000..d25bc85
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac213a/aux/plugin_step2.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension
+ point="org.eclipse.objectteams.otequinox.aspectBindings">
+ <aspectBinding
+ icon="platform:/plugin/org.eclipse.objectteams.otdt.ui/icons/ot/calloutbinding_obj.gif">
+ <basePlugin
+ icon="platform:/plugin/org.eclipse.pde.ui/icons/obj16/plugin_obj.gif"
+ id="Trac213b1">
+ </basePlugin>
+ <team
+ activation="ALL_THREADS"
+ class="trac213a.TheTeam"
+ icon="platform:/plugin/org.eclipse.objectteams.otdt.ui/icons/ot/team_obj.gif">
+ </team>
+ </aspectBinding>
+ <aspectBinding
+ icon="platform:/plugin/org.eclipse.objectteams.otdt.ui/icons/ot/calloutbinding_obj.gif">
+ <basePlugin
+ icon="platform:/plugin/org.eclipse.pde.ui/icons/obj16/plugin_obj.gif"
+ id="Trac213b2">
+ </basePlugin>
+ <team
+ activation="ALL_THREADS"
+ class="trac213a.TheTeam"
+ icon="platform:/plugin/org.eclipse.objectteams.otdt.ui/icons/ot/team_obj.gif">
+ </team>
+ </aspectBinding>
+ </extension>
+
+</plugin>
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac213a/build.properties b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac213a/build.properties
new file mode 100644
index 0000000..e9863e2
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac213a/build.properties
@@ -0,0 +1,5 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac213a/plugin.xml b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac213a/plugin.xml
new file mode 100644
index 0000000..d54d890
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac213a/plugin.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension
+ point="org.eclipse.objectteams.otequinox.aspectBindings">
+ <aspectBinding
+ icon="platform:/plugin/org.eclipse.objectteams.otdt.ui/icons/ot/calloutbinding_obj.gif">
+ <basePlugin
+ icon="platform:/plugin/org.eclipse.pde.ui/icons/obj16/plugin_obj.gif"
+ id="Trac213b1">
+ </basePlugin>
+ <team
+ activation="ALL_THREADS"
+ class="trac213a.TheTeam"
+ icon="platform:/plugin/org.eclipse.objectteams.otdt.ui/icons/ot/team_obj.gif">
+ </team>
+ </aspectBinding>
+ </extension>
+
+</plugin>
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac213a/src/trac213a/Activator.java b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac213a/src/trac213a/Activator.java
new file mode 100644
index 0000000..fb3d3d5
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac213a/src/trac213a/Activator.java
@@ -0,0 +1,50 @@
+package trac213a;
+
+import org.eclipse.core.runtime.Plugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends Plugin {
+
+ // The plug-in ID
+ public static final String PLUGIN_ID = "Trac213a";
+
+ // The shared instance
+ private static Activator plugin;
+
+ /**
+ * The constructor
+ */
+ public Activator() {
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.core.runtime.Plugins#start(org.osgi.framework.BundleContext)
+ */
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.core.runtime.Plugin#stop(org.osgi.framework.BundleContext)
+ */
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault() {
+ return plugin;
+ }
+
+}
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac213a/src/trac213a/TheTeam.java b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac213a/src/trac213a/TheTeam.java
new file mode 100644
index 0000000..371cb03
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac213a/src/trac213a/TheTeam.java
@@ -0,0 +1,6 @@
+package trac213a;
+
+public team class TheTeam {
+
+
+}
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac213b1/.classpath b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac213b1/.classpath
new file mode 100644
index 0000000..ad32c83
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac213b1/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac213b1/.project b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac213b1/.project
new file mode 100644
index 0000000..67d9e39
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac213b1/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>Trac213b1</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac213b1/.settings/org.eclipse.jdt.core.prefs b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac213b1/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..b74a520
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac213b1/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+#Sat Mar 14 18:51:55 CET 2009
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.6
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac213b1/META-INF/MANIFEST.MF b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac213b1/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..56fb5a2
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac213b1/META-INF/MANIFEST.MF
@@ -0,0 +1,10 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Trac213b1 Plug-in
+Bundle-SymbolicName: Trac213b1
+Bundle-Version: 1.0.0
+Bundle-Activator: trac213b1.Activator1
+Require-Bundle: org.eclipse.core.runtime
+Bundle-ActivationPolicy: lazy
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Export-Package: trac213b1
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac213b1/build.properties b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac213b1/build.properties
new file mode 100644
index 0000000..34d2e4d
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac213b1/build.properties
@@ -0,0 +1,4 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac213b1/src/trac213b1/Activator1.java b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac213b1/src/trac213b1/Activator1.java
new file mode 100644
index 0000000..6f3d21e
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac213b1/src/trac213b1/Activator1.java
@@ -0,0 +1,50 @@
+package trac213b1;
+
+import org.eclipse.core.runtime.Plugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator1 extends Plugin {
+
+ // The plug-in ID
+ public static final String PLUGIN_ID = "Trac213b1";
+
+ // The shared instance
+ private static Activator1 plugin;
+
+ /**
+ * The constructor
+ */
+ public Activator1() {
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.core.runtime.Plugins#start(org.osgi.framework.BundleContext)
+ */
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.core.runtime.Plugin#stop(org.osgi.framework.BundleContext)
+ */
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator1 getDefault() {
+ return plugin;
+ }
+
+}
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac213b2/.classpath b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac213b2/.classpath
new file mode 100644
index 0000000..ad32c83
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac213b2/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac213b2/.project b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac213b2/.project
new file mode 100644
index 0000000..5e4bac1
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac213b2/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>Trac213b2</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac213b2/.settings/org.eclipse.jdt.core.prefs b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac213b2/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..dfe2608
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac213b2/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+#Sat Mar 14 18:52:23 CET 2009
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.6
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac213b2/META-INF/MANIFEST.MF b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac213b2/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..44661c9
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac213b2/META-INF/MANIFEST.MF
@@ -0,0 +1,10 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Trac213b2 Plug-in
+Bundle-SymbolicName: Trac213b2
+Bundle-Version: 1.0.0
+Bundle-Activator: trac213b2.Activator2
+Require-Bundle: org.eclipse.core.runtime
+Bundle-ActivationPolicy: lazy
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Export-Package: trac213b2
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac213b2/build.properties b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac213b2/build.properties
new file mode 100644
index 0000000..34d2e4d
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac213b2/build.properties
@@ -0,0 +1,4 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac213b2/src/trac213b2/Activator2.java b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac213b2/src/trac213b2/Activator2.java
new file mode 100644
index 0000000..bd58e81
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac213b2/src/trac213b2/Activator2.java
@@ -0,0 +1,50 @@
+package trac213b2;
+
+import org.eclipse.core.runtime.Plugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator2 extends Plugin {
+
+ // The plug-in ID
+ public static final String PLUGIN_ID = "Trac213b2";
+
+ // The shared instance
+ private static Activator2 plugin;
+
+ /**
+ * The constructor
+ */
+ public Activator2() {
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.core.runtime.Plugins#start(org.osgi.framework.BundleContext)
+ */
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.core.runtime.Plugin#stop(org.osgi.framework.BundleContext)
+ */
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator2 getDefault() {
+ return plugin;
+ }
+
+}
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac304b/.classpath b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac304b/.classpath
new file mode 100644
index 0000000..ad32c83
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac304b/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac304b/.project b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac304b/.project
new file mode 100644
index 0000000..e9fa5c0
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac304b/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>Trac304b</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac304b/.settings/org.eclipse.jdt.core.prefs b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac304b/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..d6adcef
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac304b/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,9 @@
+#Sun Sep 06 00:10:18 CEST 2009
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.6
+org.eclipse.objectteams.otdt.compiler.option.pure_java=enabled
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac304b/META-INF/MANIFEST.MF b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac304b/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..24047b3
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac304b/META-INF/MANIFEST.MF
@@ -0,0 +1,11 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Trac304b
+Bundle-SymbolicName: Trac304b
+Bundle-Version: 1.0.0
+Bundle-Activator: trac304b.Activator
+Require-Bundle: org.eclipse.core.runtime
+Bundle-ActivationPolicy: lazy
+Eclipse-ExtensibleAPI: true
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Export-Package: trac304b
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac304b/build.properties b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac304b/build.properties
new file mode 100644
index 0000000..34d2e4d
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac304b/build.properties
@@ -0,0 +1,4 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac304b/src/trac304b/Activator.java b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac304b/src/trac304b/Activator.java
new file mode 100644
index 0000000..66cc2b1
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac304b/src/trac304b/Activator.java
@@ -0,0 +1,50 @@
+package trac304b;
+
+import org.eclipse.core.runtime.Plugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends Plugin {
+
+ // The plug-in ID
+ public static final String PLUGIN_ID = "Trac304b";
+
+ // The shared instance
+ private static Activator plugin;
+
+ /**
+ * The constructor
+ */
+ public Activator() {
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.core.runtime.Plugins#start(org.osgi.framework.BundleContext)
+ */
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.core.runtime.Plugin#stop(org.osgi.framework.BundleContext)
+ */
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault() {
+ return plugin;
+ }
+
+}
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac304f/.classpath b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac304f/.classpath
new file mode 100644
index 0000000..ad32c83
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac304f/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac304f/.project b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac304f/.project
new file mode 100644
index 0000000..115fe03
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac304f/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>Trac304f</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac304f/.settings/org.eclipse.jdt.core.prefs b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac304f/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..6bc01aa
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac304f/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,9 @@
+#Sun Sep 06 00:11:24 CEST 2009
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.6
+org.eclipse.objectteams.otdt.compiler.option.pure_java=enabled
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac304f/META-INF/MANIFEST.MF b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac304f/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..e18fd32
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac304f/META-INF/MANIFEST.MF
@@ -0,0 +1,8 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Trac304f
+Bundle-SymbolicName: Trac304f
+Bundle-Version: 1.0.0
+Fragment-Host: Trac304b
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Export-Package: fragment304
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac304f/build.properties b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac304f/build.properties
new file mode 100644
index 0000000..34d2e4d
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac304f/build.properties
@@ -0,0 +1,4 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac304f/src/fragment304/FragClass.java b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac304f/src/fragment304/FragClass.java
new file mode 100644
index 0000000..8319a3f
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac304f/src/fragment304/FragClass.java
@@ -0,0 +1,5 @@
+package fragment304;
+
+public class FragClass {
+ void fragMethod() {}
+}
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac304ot/.classpath b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac304ot/.classpath
new file mode 100644
index 0000000..c24f8de
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac304ot/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+ <classpathentry kind="con" path="OTRE"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac304ot/.project b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac304ot/.project
new file mode 100644
index 0000000..e3f5dee
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac304ot/.project
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>Trac304ot</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.objectteams.otdt.builder.OTJBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.objectteams.otdt.OTJavaNature</nature>
+ </natures>
+</projectDescription>
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac304ot/.settings/org.eclipse.jdt.core.prefs b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac304ot/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..781d9a4
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac304ot/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,10 @@
+#Sun Sep 06 00:13:00 CEST 2009
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.6
+org.eclipse.objectteams.otdt.compiler.option.pure_java=enabled
+org.eclipse.objectteams.otdt.compiler.problem.binding_conventions=error
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac304ot/META-INF/MANIFEST.MF b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac304ot/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..4fd6b95
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac304ot/META-INF/MANIFEST.MF
@@ -0,0 +1,12 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Trac304ot
+Bundle-SymbolicName: Trac304ot;singleton:=true
+Bundle-Version: 1.0.0
+Bundle-Activator: trac304ot.Activator
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.objectteams.otequinox,
+ Trac304b;bundle-version="1.0.0"
+Bundle-ActivationPolicy: lazy
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Import-Package: trac304b
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac304ot/build.properties b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac304ot/build.properties
new file mode 100644
index 0000000..e9863e2
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac304ot/build.properties
@@ -0,0 +1,5 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac304ot/plugin.xml b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac304ot/plugin.xml
new file mode 100644
index 0000000..cb28f5e
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac304ot/plugin.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension
+ point="org.eclipse.objectteams.otequinox.aspectBindings">
+ <aspectBinding
+ icon="platform:/plugin/org.eclipse.objectteams.otdt.ui/icons/ot/calloutbinding_obj.gif">
+ <basePlugin
+ icon="platform:/plugin/org.eclipse.pde.ui/icons/obj16/plugin_obj.gif"
+ id="Trac304b">
+ <requiredFragment
+ id="Trac304f">
+ </requiredFragment>
+ </basePlugin>
+ <team
+ class="trac304ot.Team304ot"
+ icon="platform:/plugin/org.eclipse.objectteams.otdt.ui/icons/ot/team_obj.gif">
+ </team>
+ </aspectBinding>
+ </extension>
+
+</plugin>
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac304ot/src/trac304ot/Activator.java b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac304ot/src/trac304ot/Activator.java
new file mode 100644
index 0000000..c1856e6
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac304ot/src/trac304ot/Activator.java
@@ -0,0 +1,50 @@
+package trac304ot;
+
+import org.eclipse.core.runtime.Plugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends Plugin {
+
+ // The plug-in ID
+ public static final String PLUGIN_ID = "Trac304ot";
+
+ // The shared instance
+ private static Activator plugin;
+
+ /**
+ * The constructor
+ */
+ public Activator() {
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.core.runtime.Plugins#start(org.osgi.framework.BundleContext)
+ */
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.core.runtime.Plugin#stop(org.osgi.framework.BundleContext)
+ */
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault() {
+ return plugin;
+ }
+
+}
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac304ot/src/trac304ot/Team304ot.java b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac304ot/src/trac304ot/Team304ot.java
new file mode 100644
index 0000000..18e6c97
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Trac304ot/src/trac304ot/Team304ot.java
@@ -0,0 +1,16 @@
+/**
+ *
+ */
+package trac304ot;
+
+import base fragment304.FragClass;
+
+/**
+ * @author stephan
+ *
+ */
+public team class Team304ot {
+ protected class Role playedBy FragClass {
+
+ }
+}
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/WrongBaseImport1/.classpath b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/WrongBaseImport1/.classpath
new file mode 100644
index 0000000..b70b156
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/WrongBaseImport1/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="con" path="OTRE"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/WrongBaseImport1/.project b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/WrongBaseImport1/.project
new file mode 100644
index 0000000..266b92c
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/WrongBaseImport1/.project
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>WrongBaseImport1</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.objectteams.otdt.builder.OTJBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.objectteams.otdt.OTJavaNature</nature>
+ </natures>
+</projectDescription>
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/WrongBaseImport1/META-INF/MANIFEST.MF b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/WrongBaseImport1/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..c5d233c
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/WrongBaseImport1/META-INF/MANIFEST.MF
@@ -0,0 +1,8 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Test wrong base import Plug-in
+Bundle-SymbolicName: WrongBaseImport1; singleton:=true
+Bundle-Version: 1.0.0
+Require-Bundle: org.eclipse.objectteams.otequinox,
+ Trac18b,
+ org.eclipse.core.runtime
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/WrongBaseImport1/build.properties b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/WrongBaseImport1/build.properties
new file mode 100644
index 0000000..0d3d3a7
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/WrongBaseImport1/build.properties
@@ -0,0 +1,6 @@
+source.. = src/
+output.. = bin/
+bin.includes = plugin.xml,\
+ META-INF/,\
+ .,\
+ icons/
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/WrongBaseImport1/plugin.xml b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/WrongBaseImport1/plugin.xml
new file mode 100644
index 0000000..13fbd6b
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/WrongBaseImport1/plugin.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.2"?>
+<plugin>
+ <extension
+ point="org.eclipse.objectteams.otequinox.aspectBindings">
+ <aspectBinding
+ icon="platform:/plugin/org.eclipse.objectteams.otdt.ui/icons/ot/calloutbinding_obj.gif">
+ <basePlugin
+ icon="platform:/plugin/org.eclipse.pde.ui/icons/obj16/plugin_obj.gif"
+ id="Trac18b">
+ </basePlugin>
+ <team
+ activation="ALL_THREADS"
+ class="WrongBaseImportTeam1"
+ icon="platform:/plugin/org.eclipse.objectteams.otdt.ui/icons/ot/team_obj.gif">
+ </team>
+ </aspectBinding>
+ </extension>
+
+</plugin>
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/WrongBaseImport1/src/WrongBaseImportTeam1.java b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/WrongBaseImport1/src/WrongBaseImportTeam1.java
new file mode 100644
index 0000000..6ce2441
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/WrongBaseImport1/src/WrongBaseImportTeam1.java
@@ -0,0 +1,5 @@
+import base org.eclipse.objectteams.otequinox.TransformerPlugin;
+
+public team class WrongBaseImportTeam1 {
+ public class WrongRole playedBy TransformerPlugin {}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/WrongBaseImport2/.classpath b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/WrongBaseImport2/.classpath
new file mode 100644
index 0000000..b70b156
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/WrongBaseImport2/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="con" path="OTRE"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/WrongBaseImport2/.project b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/WrongBaseImport2/.project
new file mode 100644
index 0000000..11fe442
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/WrongBaseImport2/.project
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>WrongBaseImport2</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.objectteams.otdt.builder.OTJBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.objectteams.otdt.OTJavaNature</nature>
+ </natures>
+</projectDescription>
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/WrongBaseImport2/META-INF/MANIFEST.MF b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/WrongBaseImport2/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..6b8c992
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/WrongBaseImport2/META-INF/MANIFEST.MF
@@ -0,0 +1,7 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Test wrong base import Plug-in
+Bundle-SymbolicName: WrongBaseImport2; singleton:=true
+Bundle-Version: 1.0.0
+Require-Bundle: org.eclipse.objectteams.otequinox,
+ Trac18b
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/WrongBaseImport2/build.properties b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/WrongBaseImport2/build.properties
new file mode 100644
index 0000000..0d3d3a7
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/WrongBaseImport2/build.properties
@@ -0,0 +1,6 @@
+source.. = src/
+output.. = bin/
+bin.includes = plugin.xml,\
+ META-INF/,\
+ .,\
+ icons/
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/WrongBaseImport2/plugin.xml b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/WrongBaseImport2/plugin.xml
new file mode 100644
index 0000000..ed5ab4e
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/WrongBaseImport2/plugin.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.2"?>
+<plugin>
+ <extension
+ point="org.eclipse.objectteams.otequinox.aspectBindings">
+ <aspectBinding
+ icon="platform:/plugin/org.eclipse.objectteams.otdt.ui/icons/ot/calloutbinding_obj.gif">
+ <basePlugin
+ icon="platform:/plugin/org.eclipse.pde.ui/icons/obj16/plugin_obj.gif"
+ id="org.eclipse.objectteams.otequinox">
+ </basePlugin>
+ <team
+ activation="ALL_THREADS"
+ class="WrongBaseImportTeam2"
+ icon="platform:/plugin/org.eclipse.objectteams.otdt.ui/icons/ot/team_obj.gif">
+ </team>
+ </aspectBinding>
+ </extension>
+
+</plugin>
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/WrongBaseImport2/src/WrongBaseImportTeam2.java b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/WrongBaseImport2/src/WrongBaseImportTeam2.java
new file mode 100644
index 0000000..3953407
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/WrongBaseImport2/src/WrongBaseImportTeam2.java
@@ -0,0 +1,5 @@
+import base trac18b.api.PublicBase;
+
+public team class WrongBaseImportTeam2 {
+ protected class WrongRole playedBy PublicBase {}
+}
\ No newline at end of file