Bug 480069 - [otdre] processing log-related classes during weaving
causes NoClassDefFoundError during logging
diff --git a/plugins/org.eclipse.objectteams.otequinox/src/org/eclipse/objectteams/internal/osgi/weaving/OTWeavingHook.java b/plugins/org.eclipse.objectteams.otequinox/src/org/eclipse/objectteams/internal/osgi/weaving/OTWeavingHook.java
index 0e31f42..dc1d912 100644
--- a/plugins/org.eclipse.objectteams.otequinox/src/org/eclipse/objectteams/internal/osgi/weaving/OTWeavingHook.java
+++ b/plugins/org.eclipse.objectteams.otequinox/src/org/eclipse/objectteams/internal/osgi/weaving/OTWeavingHook.java
@@ -219,6 +219,9 @@
 					|| bundleName.equals("org.objectweb.asm"))
 				return;
 
+			if (isEclipseLoggingClass(bundleName, className))
+				return;
+
 			if (BCELPatcher.BCEL_PLUGIN_ID.equals(bundleName)) {
 				BCELPatcher.fixBCEL(wovenClass);
 				return;
@@ -265,6 +268,22 @@
 		}
 	}
 
+	private boolean isEclipseLoggingClass(String bundleName, String className) {
+		if (bundleName.equals("org.eclipse.ui.workbench")) {
+			if (className.equals("org.eclipse.ui.statushandlers.StatusAdapter"))
+				return true;
+			else if (className.equals("org.eclipse.ui.internal.misc.StatusUtil"))
+				return true;
+		} else if (bundleName.equals("org.eclipse.ui.views.log")) {
+			if (className.startsWith("org.eclipse.ui.internal.views.log.LogView$"))
+				return true;
+		} else if (bundleName.equals("org.eclipse.equinox.common")) {
+			if (className.equals("org.eclipse.core.runtime.ILogListener"))
+				return true;
+		}
+		return false;
+	}
+
 	WeavingReason requiresWeaving(BundleWiring bundleWiring, String className, byte[] bytes) {
 		
 		// 1. consult the aspect binding registry (for per-bundle info):
@@ -386,7 +405,7 @@
 			String teamName = record.team.teamName;
 			log(IStatus.INFO, "Consider for instantiation/activation: team "+teamName);
 			try {
-				TeamLoader loader = new TeamLoader(deferredTeams, beingDefined, this.useDynamicWeaver);
+				TeamLoader loader = new TeamLoader(deferredTeams, beingDefined, USE_DYNAMIC_WEAVER);
 				// Instantiate (we only get here if activationKind != NONE)
 				loader.instantiateAndActivate(record.aspectBinding, record.team, record.activationKind); // may re-insert to deferredTeams
 			} catch (Exception e) {