diff options
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) { |