diff options
author | Karsten Thoms | 2017-04-05 22:36:18 +0000 |
---|---|---|
committer | Brian de Alwis | 2017-04-21 14:18:37 +0000 |
commit | d172e404c191e166fc9b6e8e15f3629b201b22a0 (patch) | |
tree | 31fb5561e1b0be8d806dbc5bdc74c309c915d73f | |
parent | 6b568410160d639695e90b12a2a36696acd6ca77 (diff) | |
download | eclipse.platform.runtime-d172e404c191e166fc9b6e8e15f3629b201b22a0.tar.gz eclipse.platform.runtime-d172e404c191e166fc9b6e8e15f3629b201b22a0.tar.xz eclipse.platform.runtime-d172e404c191e166fc9b6e8e15f3629b201b22a0.zip |
Bug 514810 - Use empty array constant for empty object descriptorsY20170511-1000Y20170504-1000Y20170427-1000I20170510-2000I20170510-0800I20170509-2000I20170509-1300I20170509-1100I20170509-0945I20170509-0800I20170508-2000I20170508-0800I20170507-2000I20170506-2000I20170505-2000I20170504-2000I20170503-2000I20170502-2000I20170501-2000I20170430-2000I20170429-2000I20170429-1330I20170429-1230I20170428-2000I20170428-0830I20170428-0700I20170428-0550I20170428-0445I20170427-2000I20170426-2000I20170425-2000I20170425-0910I20170425-0700I20170425-0240I20170425-0215I20170424-2000I20170423-2000
Change-Id: I71c7177fce75a39310f86245efe7ed333dcd1e00
Signed-off-by: Karsten Thoms <karsten.thoms@itemis.de>
Signed-off-by: Brian de Alwis <bsd@mt.ca>
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) { |