Bug 501364: [otdre] base class may be detected too late due to on-demand
scanning
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 b16873e..3fc8384 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
@@ -50,6 +50,7 @@
import org.eclipse.objectteams.internal.osgi.weaving.AspectBinding.TeamBinding;
import org.eclipse.objectteams.otequinox.Constants;
import org.osgi.framework.Bundle;
+import org.osgi.framework.wiring.BundleWiring;
/**
* An instance of this class holds the information loaded from extensions
@@ -168,6 +169,17 @@
} catch (Throwable t) {
log(t, "Invalid aspectBinding extension");
}
+ if (packageAdmin != null && aspectBundle != null && !binding.hasScannedTeams) {
+ @SuppressWarnings("deprecation")
+ Bundle[] baseBundles = packageAdmin.getBundles(baseBundleId, null);
+ if (baseBundles == null || baseBundles.length == 0 || (baseBundles[0].getState() < Bundle.RESOLVED)) {
+ log(IStatus.ERROR, "base bundle "+baseBundleId+" is not resolved - weaving may be incomplete.");
+ } else {
+ BundleWiring baseBundleWiring = baseBundles[0].adapt(BundleWiring.class);
+ Collection<String> boundBases = binding.scanTeamClasses(aspectBundle, DelegatingTransformer.newTransformer(binding.weavingScheme, hook, baseBundleWiring));
+ addBoundBaseClasses(boundBases);
+ }
+ }
}
// second round to connect sub/super teams to aspect bindings:
for (AspectBinding binding : bindings) {
diff --git a/plugins/org.eclipse.objectteams.otequinox/src/org/eclipse/objectteams/internal/osgi/weaving/Util.java b/plugins/org.eclipse.objectteams.otequinox/src/org/eclipse/objectteams/internal/osgi/weaving/Util.java
index fc341c8..8778bf2 100644
--- a/plugins/org.eclipse.objectteams.otequinox/src/org/eclipse/objectteams/internal/osgi/weaving/Util.java
+++ b/plugins/org.eclipse.objectteams.otequinox/src/org/eclipse/objectteams/internal/osgi/weaving/Util.java
@@ -60,7 +60,8 @@
long now= System.nanoTime();
long delta= (now-startTime);// / getActiveCount();
long total= (profileTimes[kind.ordinal()]+= delta);
- msg = msg.substring(msg.lastIndexOf('.')+1);
+ if (kind != ProfileKind.Scan)
+ msg = msg.substring(msg.lastIndexOf('.')+1);
// doLog(INFO, "Profile "+kind.name()+": "+m(delta)+"("+m(total)+"/"+m(now-systemStartTime)+") ["+msg+"]");
System.out.println("OT/Equinox Profile "+kind.name()+": "+m(delta)+"("+m(total)+"/"+m(now-systemStartTime)+") ["+msg+"]");;
}