Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bundles/org.eclipse.e4.core.di/src/org/eclipse/e4/core/internal/di/ConstructorRequestor.java4
-rw-r--r--bundles/org.eclipse.e4.core.di/src/org/eclipse/e4/core/internal/di/MethodRequestor.java3
-rw-r--r--bundles/org.eclipse.e4.core.di/src/org/eclipse/e4/core/internal/di/Requestor.java2
3 files changed, 8 insertions, 1 deletions
diff --git a/bundles/org.eclipse.e4.core.di/src/org/eclipse/e4/core/internal/di/ConstructorRequestor.java b/bundles/org.eclipse.e4.core.di/src/org/eclipse/e4/core/internal/di/ConstructorRequestor.java
index 8ff6be11e..5a3504063 100644
--- a/bundles/org.eclipse.e4.core.di/src/org/eclipse/e4/core/internal/di/ConstructorRequestor.java
+++ b/bundles/org.eclipse.e4.core.di/src/org/eclipse/e4/core/internal/di/ConstructorRequestor.java
@@ -71,7 +71,9 @@ public class ConstructorRequestor extends Requestor<Constructor<?>> {
System.arraycopy(logicalParams, 0, tmp, compilerParams.length - logicalParams.length, logicalParams.length);
logicalParams = tmp;
}
-
+ if (logicalParams.length == 0) {
+ return EMPTY_DESCRIPTORS;
+ }
IObjectDescriptor[] descriptors = new IObjectDescriptor[logicalParams.length];
for (int i = 0; i < logicalParams.length; i++) {
descriptors[i] = new ObjectDescriptor(logicalParams[i], annotations[i]);
diff --git a/bundles/org.eclipse.e4.core.di/src/org/eclipse/e4/core/internal/di/MethodRequestor.java b/bundles/org.eclipse.e4.core.di/src/org/eclipse/e4/core/internal/di/MethodRequestor.java
index 496fdac79..dbd10f81e 100644
--- a/bundles/org.eclipse.e4.core.di/src/org/eclipse/e4/core/internal/di/MethodRequestor.java
+++ b/bundles/org.eclipse.e4.core.di/src/org/eclipse/e4/core/internal/di/MethodRequestor.java
@@ -75,6 +75,9 @@ public class MethodRequestor extends Requestor<Method> {
protected IObjectDescriptor[] calcDependentObjects() {
Type[] parameterTypes = location.getGenericParameterTypes();
Annotation[][] annotations = getParameterAnnotations();
+ if (parameterTypes.length == 0) {
+ return EMPTY_DESCRIPTORS;
+ }
IObjectDescriptor[] descriptors = new IObjectDescriptor[parameterTypes.length];
for (int i = 0; i < parameterTypes.length; i++) {
descriptors[i] = new ObjectDescriptor(parameterTypes[i], annotations[i]);
diff --git a/bundles/org.eclipse.e4.core.di/src/org/eclipse/e4/core/internal/di/Requestor.java b/bundles/org.eclipse.e4.core.di/src/org/eclipse/e4/core/internal/di/Requestor.java
index 519e3e3e6..96fce16ef 100644
--- a/bundles/org.eclipse.e4.core.di/src/org/eclipse/e4/core/internal/di/Requestor.java
+++ b/bundles/org.eclipse.e4.core.di/src/org/eclipse/e4/core/internal/di/Requestor.java
@@ -30,6 +30,7 @@ abstract public class Requestor<L extends AnnotatedElement> implements IRequesto
private static final Map<AnnotatedElement, IObjectDescriptor[]> descriptorCache = Collections
.synchronizedMap(new WeakHashMap<>());
+ protected static final IObjectDescriptor[] EMPTY_DESCRIPTORS = new IObjectDescriptor[0];
/** The request location; may be null */
final protected L location;
@@ -48,6 +49,7 @@ abstract public class Requestor<L extends AnnotatedElement> implements IRequesto
private IObjectDescriptor[] objectDescriptors;
+ /* @NonNull */
protected abstract IObjectDescriptor[] calcDependentObjects();
public Requestor(L location, IInjector injector, PrimaryObjectSupplier primarySupplier, PrimaryObjectSupplier tempSupplier, Object requestingObject, boolean track) {

Back to the top