175155 AdaptExpression returns NOT_LOADED when adapter factory and adapter are loaded
diff --git a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/AdaptExpression.java b/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/AdaptExpression.java
index 190521f..ca4e87c 100644
--- a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/AdaptExpression.java
+++ b/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/AdaptExpression.java
@@ -70,19 +70,24 @@
return EvaluationResult.FALSE;
Object var= context.getDefaultVariable();
Object adapted= null;
+ IAdapterManager manager= Platform.getAdapterManager();
if (Expressions.isInstanceOf(var, fTypeName)) {
adapted= var;
} else {
- IAdapterManager manager= Platform.getAdapterManager();
if (!manager.hasAdapter(var, fTypeName))
return EvaluationResult.FALSE;
adapted= manager.getAdapter(var, fTypeName);
}
- // the adapted result is null but hasAdapter returned true. This means
- // that there is an adapter but the adapter isn't loaded yet.
- if (adapted == null)
- return EvaluationResult.NOT_LOADED;
+ // the adapted result is null but hasAdapter returned true check
+ // if the adapter is loaded.
+ if (adapted == null) {
+ if (manager.queryAdapter(var, fTypeName) == IAdapterManager.NOT_LOADED) {
+ return EvaluationResult.NOT_LOADED;
+ } else {
+ return EvaluationResult.FALSE;
+ }
+ }
return evaluateAnd(new DefaultVariable(context, adapted));
}