Bug 329282 - [DI] The current 'uninject' scenarios break the API contract
diff --git a/bundles/org.eclipse.e4.core.di/src/org/eclipse/e4/core/internal/di/InjectorImpl.java b/bundles/org.eclipse.e4.core.di/src/org/eclipse/e4/core/internal/di/InjectorImpl.java
index 624bf6a..b036360 100644
--- a/bundles/org.eclipse.e4.core.di/src/org/eclipse/e4/core/internal/di/InjectorImpl.java
+++ b/bundles/org.eclipse.e4.core.di/src/org/eclipse/e4/core/internal/di/InjectorImpl.java
@@ -175,23 +175,20 @@
int unresolved = unresolved(actualArgs);
if (unresolved == -1) {
requestor.setResolvedArgs(actualArgs);
+ requestor.execute();
} else {
if (requestor.isOptional())
requestor.setResolvedArgs(null);
- else {
- if (shouldDebug) {
- StringBuffer tmp = new StringBuffer();
- tmp.append("Uninjecting object \""); //$NON-NLS-1$
- tmp.append(object.toString());
- tmp.append("\": dependency on \""); //$NON-NLS-1$
- tmp.append(requestor.getDependentObjects()[unresolved].toString());
- tmp.append("\" is not optional."); //$NON-NLS-1$
- LogHelper.logError(tmp.toString(), null);
- }
- continue; // do not execute requestors with unresolved arguments
+ else if (shouldDebug) {
+ StringBuffer tmp = new StringBuffer();
+ tmp.append("Uninjecting object \""); //$NON-NLS-1$
+ tmp.append(object.toString());
+ tmp.append("\": dependency on \""); //$NON-NLS-1$
+ tmp.append(requestor.getDependentObjects()[unresolved].toString());
+ tmp.append("\" is not optional."); //$NON-NLS-1$
+ LogHelper.logError(tmp.toString(), null);
}
}
- requestor.execute();
}
}