[474603] Blackbox refactorings
diff --git a/plugins/org.eclipse.m2m.qvt.oml.runtime.jdt/src/org/eclipse/m2m/internal/qvt/oml/jdt/runtime/blackbox/JdtBlackboxProvider.java b/plugins/org.eclipse.m2m.qvt.oml.runtime.jdt/src/org/eclipse/m2m/internal/qvt/oml/jdt/runtime/blackbox/JdtBlackboxProvider.java
index 54826bc..a0d89a3 100644
--- a/plugins/org.eclipse.m2m.qvt.oml.runtime.jdt/src/org/eclipse/m2m/internal/qvt/oml/jdt/runtime/blackbox/JdtBlackboxProvider.java
+++ b/plugins/org.eclipse.m2m.qvt.oml.runtime.jdt/src/org/eclipse/m2m/internal/qvt/oml/jdt/runtime/blackbox/JdtBlackboxProvider.java
@@ -39,7 +39,7 @@
 
 	public static final String URI_BLACKBOX_JDT_QUERY = "jdt"; //$NON-NLS-1$
 	
-	private static Map<IProject, List<JdtDescriptor>> descriptors = new HashMap<IProject, List<JdtDescriptor>>();
+	private static Map<IProject, Map<String, JdtDescriptor>> descriptors = new HashMap<IProject, Map<String, JdtDescriptor>>();
 	
 	@Override
 	public Collection<? extends BlackboxUnitDescriptor> getUnitDescriptors(ResolutionContext resolutionContext) {
@@ -81,20 +81,23 @@
 
 	private BlackboxUnitDescriptor getJdtUnitDescriptor(IProject project, String qualifiedName) {
 		
-		List<JdtDescriptor> projectDescriptors = descriptors.get(project);
+		Map<String, JdtDescriptor> projectDescriptors = descriptors.get(project);
 		
 		if (projectDescriptors != null) {
-			for (JdtDescriptor descriptor : projectDescriptors) {
-				if (descriptor.getQualifiedName().equals(qualifiedName)) {
-					return descriptor;
-				}
-			}
+			return projectDescriptors.get(qualifiedName);
 		}
-		else {
-			projectDescriptors = new ArrayList<JdtBlackboxProvider.JdtDescriptor>(1);
-			descriptors.put(project, projectDescriptors);
-		}
+
+		projectDescriptors = new HashMap<String, JdtBlackboxProvider.JdtDescriptor>();
+		descriptors.put(project, projectDescriptors);
 				
+		try {
+			if (!project.hasNature(JavaCore.NATURE_ID)) {
+				return null;
+			}
+		} catch (CoreException e) {
+			return null;
+		}
+		
 		final IJavaProject javaProject = JavaCore.create(project);
 		try {
 			ClassLoader loader = ProjectClassLoader.getProjectClassLoader(javaProject);
@@ -109,7 +112,7 @@
 					}
 				};
 				
-				projectDescriptors.add(descriptor);
+				projectDescriptors.put(qualifiedName, descriptor);
 				
 				return descriptor;
 			}
diff --git a/plugins/org.eclipse.m2m.qvt.oml/src/org/eclipse/m2m/internal/qvt/oml/QvtPlugin.java b/plugins/org.eclipse.m2m.qvt.oml/src/org/eclipse/m2m/internal/qvt/oml/QvtPlugin.java
index b2f665f..5f1e744 100644
--- a/plugins/org.eclipse.m2m.qvt.oml/src/org/eclipse/m2m/internal/qvt/oml/QvtPlugin.java
+++ b/plugins/org.eclipse.m2m.qvt.oml/src/org/eclipse/m2m/internal/qvt/oml/QvtPlugin.java
@@ -97,7 +97,7 @@
 	}	
 
 	public static void error(Throwable throwable) {
-		error("", throwable); //$NON-NLS-1$
+		error(throwable.getMessage(), throwable);
 	}
 	
 	public static void error(String message) {