Bug 493717: [otdre] inconsistent "weavability" of super class of woven
base class
- impl cleanup
- improve log-toString
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 3f35a46..81c5b2b 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
@@ -82,6 +82,8 @@
 		boolean importsAddedToSub;
 
 		final List<String> baseClassNames = new ArrayList<>();
+		
+		public final List<String> superBases = new ArrayList<>(); // logging / debugging only
 
 		public TeamBinding(String teamName, ActivationKind activationKind, @Nullable String superTeamName) {
 			this.teamName = teamName;
@@ -189,7 +191,10 @@
 
 		@Override
 		public String toString() {
-			return "team "+teamName+"("+(this.activation)+") super "+superTeamName;
+			String result = "team "+teamName+"("+(this.activation)+") super "+superTeamName;
+			for (String superBase : superBases)
+				result += "\n\t\t\tsuperBase "+superBase;
+			return result;
 		}
 
 		/** Get the highest activation kind from this team and its equivalents. */
diff --git a/plugins/org.eclipse.objectteams.otequinox/src/org/eclipse/objectteams/internal/osgi/weaving/AspectBindingRegistry.java b/plugins/org.eclipse.objectteams.otequinox/src/org/eclipse/objectteams/internal/osgi/weaving/AspectBindingRegistry.java
index 6a7c324..c10a7ba 100644
--- a/plugins/org.eclipse.objectteams.otequinox/src/org/eclipse/objectteams/internal/osgi/weaving/AspectBindingRegistry.java
+++ b/plugins/org.eclipse.objectteams.otequinox/src/org/eclipse/objectteams/internal/osgi/weaving/AspectBindingRegistry.java
@@ -93,7 +93,7 @@
 		IConfigurationElement[] aspectBindingConfigs = extensionRegistry
 				.getConfigurationElementsFor(TRANSFORMER_PLUGIN_ID, ASPECT_BINDING_EXTPOINT_ID);
 		Map<String, Set<TeamBinding>> teamLookup = new HashMap<>();
-		AspectBinding[] bindings = new AspectBinding[aspectBindingConfigs.length];
+		List<AspectBinding> bindings = new ArrayList<>(aspectBindingConfigs.length);
 		
 		for (int i = 0; i < aspectBindingConfigs.length; i++) {
 			IConfigurationElement currentBindingConfig = aspectBindingConfigs[i];
@@ -138,7 +138,7 @@
 														baseBundle,
 														basePlugins[0].getChildren(Constants.FORCED_EXPORTS_ELEMENT),
 														teamCount);
-			bindings[i] = binding;
+			bindings.add(binding);
 			// TODO(SH): maybe enforce that every bundle id is given only once?
 
 			//teams:
@@ -153,7 +153,9 @@
 					teamSet.add(team);
 					
 					for (@NonNull IConfigurationElement superBase : teams[j].getChildren(SUPER_BASE)) {
-						addSuperBases(superBase, aspectBundleId, aspectBundle, baseBundle, team, packageAdmin, hook);
+						AspectBinding superBaseBinding = addSuperBase(superBase, aspectBundleId, aspectBundle, baseBundle, team, packageAdmin, hook);
+						bindings.add(superBaseBinding);
+						teamSet.add(superBaseBinding.teams[0]);
 					}
 				}
 				
@@ -168,12 +170,12 @@
 			}
 		}
 		// second round to connect sub/super teams to aspect bindings:
-		for (int i = 0; i < bindings.length; i++) {
-			bindings[i].connect(teamLookup);
+		for (AspectBinding binding : bindings) {
+			binding.connect(teamLookup);
 		}
 	}
 
-	private void addSuperBases(IConfigurationElement superBase, String aspectBundleId, @Nullable Bundle aspectBundle,
+	private AspectBinding addSuperBase(IConfigurationElement superBase, String aspectBundleId, @Nullable Bundle aspectBundle,
 			BaseBundle baseBundle, TeamBinding teamBinding,
 			@SuppressWarnings("deprecation") @Nullable org.osgi.service.packageadmin.PackageAdmin packageAdmin,
 			OTWeavingHook hook)
@@ -191,11 +193,13 @@
 		TeamBinding team2 = superBinding.createResolvedTeam(0, teamBinding.teamName, NONE, teamBinding.superTeamName);
 		superBinding.allBaseClassNames.add(superBaseClass);
 		team2.baseClassNames.add(superBaseClass);
-		team2.equivalenceSet.add(teamBinding);
-		teamBinding.equivalenceSet.add(team2);
 		addBindingForBaseBundle(superBasePlugin, superBinding);
 		addBindingForAspectBundle(aspectBundleId, superBinding);
-		hook.setBaseTripWire(packageAdmin, superBasePlugin, baseBundle);
+		hook.setBaseTripWire(packageAdmin, superBasePlugin, superBaseBundle);
+		
+		teamBinding.superBases.add(superBasePlugin+'/'+superBaseClass);
+
+		return superBinding;
 	}
 
 	@SuppressWarnings("deprecation") // multiple uses of deprecated but still recommended class PackageAdmin