Bug 414066 - BaseImportChecker is not activated
diff --git a/plugins/org.eclipse.objectteams.otequinox.bug253244workaround/src/org/eclipse/objectteams/otequinox/bug253244workaround/Activator.java b/plugins/org.eclipse.objectteams.otequinox.bug253244workaround/src/org/eclipse/objectteams/otequinox/bug253244workaround/Activator.java
index 7413471..61205a2 100644
--- a/plugins/org.eclipse.objectteams.otequinox.bug253244workaround/src/org/eclipse/objectteams/otequinox/bug253244workaround/Activator.java
+++ b/plugins/org.eclipse.objectteams.otequinox.bug253244workaround/src/org/eclipse/objectteams/otequinox/bug253244workaround/Activator.java
@@ -42,7 +42,7 @@
Bundle[] bundles = packageAdmin.getBundles("org.eclipse.objectteams.otequinox", "2.3.0");
if (bundles != null && bundles.length > 0) {
BundleStartLevel startLevel = bundles[0].adapt(BundleStartLevel.class);
- if (startLevel.getStartLevel() < 1) {
+ if (startLevel.getStartLevel() != 1) {
startLevel.setStartLevel(1);
}
// this would cause lock problems (and is successfully handled already via p2.inf):
diff --git a/plugins/org.eclipse.objectteams.otequinox/src/org/eclipse/objectteams/internal/osgi/weaving/AspectBinding.java b/plugins/org.eclipse.objectteams.otequinox/src/org/eclipse/objectteams/internal/osgi/weaving/AspectBinding.java
index e2cc2d8..3415076 100644
--- a/plugins/org.eclipse.objectteams.otequinox/src/org/eclipse/objectteams/internal/osgi/weaving/AspectBinding.java
+++ b/plugins/org.eclipse.objectteams.otequinox/src/org/eclipse/objectteams/internal/osgi/weaving/AspectBinding.java
@@ -33,6 +33,7 @@
import org.eclipse.jdt.annotation.Nullable;
import org.eclipse.objectteams.internal.osgi.weaving.Util.ProfileKind;
import org.eclipse.objectteams.otequinox.ActivationKind;
+import org.eclipse.objectteams.otre.jplis.ObjectTeamsTransformer;
import org.objectteams.Team;
import org.osgi.framework.Bundle;
import org.osgi.framework.hooks.weaving.WovenClass;
@@ -69,6 +70,8 @@
ActivationKind activation;
boolean hasScannedBases;
+ boolean hasScannedRoles;
+
boolean isActivated;
boolean importsAdded;
@@ -290,8 +293,15 @@
if (Util.PROFILE) time= System.nanoTime();
ClassScanner scanner = new ClassScanner();
for (@SuppressWarnings("null")@NonNull TeamBinding team : getAllTeamBindings()) {
- if (team.hasScannedBases) continue; // not a surprise for members of equivalentSet
+ if (team.hasScannedBases) { // not a surprise for members of equivalentSet or classes already processed by weave()
+ if (!team.hasScannedRoles) { // weave() only scans bases, not roles!
+ team.hasScannedRoles = true;
+ scanner.readMemberTypeAttributes(bundle, team.teamName, new ObjectTeamsTransformer());
+ }
+ continue;
+ }
team.hasScannedBases = true;
+ team.hasScannedRoles = true;
try {
String teamName = scanner.readOTAttributes(bundle, team.teamName);
Collection<String> baseClassNames = scanner.getCollectedBaseClassNames();
diff --git a/plugins/org.eclipse.objectteams.otequinox/src/org/eclipse/objectteams/internal/osgi/weaving/ClassScanner.java b/plugins/org.eclipse.objectteams.otequinox/src/org/eclipse/objectteams/internal/osgi/weaving/ClassScanner.java
index 61ef558..5d22727 100644
--- a/plugins/org.eclipse.objectteams.otequinox/src/org/eclipse/objectteams/internal/osgi/weaving/ClassScanner.java
+++ b/plugins/org.eclipse.objectteams.otequinox/src/org/eclipse/objectteams/internal/osgi/weaving/ClassScanner.java
@@ -130,9 +130,9 @@
/*
* Recurse into member types scanning OT attributes.
*/
- private void readMemberTypeAttributes(Bundle bundle,
- String className,
- ObjectTeamsTransformer transformer)
+ void readMemberTypeAttributes(Bundle bundle,
+ String className,
+ ObjectTeamsTransformer transformer)
{
List<String> roles = CallinBindingManager.getRolePerTeam(className);
if (roles != null) {