Bug 550644 - Improve performance in InjectorImpl
This reverts commit b8eaf5ef4f430a2875ee7c7a1efe6625aac291b2 which was
a revert as we were in the release freeze for 4.13.
Includes the version increase for 4.14
Change-Id: Ic8e39ce7d6f78b6bdbff108bede56f92b7000dd8
Signed-off-by: Lars Vogel <Lars.Vogel@vogella.com>
diff --git a/bundles/org.eclipse.core.runtime/META-INF/MANIFEST.MF b/bundles/org.eclipse.core.runtime/META-INF/MANIFEST.MF
index 5880328..9d87683 100644
--- a/bundles/org.eclipse.core.runtime/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.core.runtime/META-INF/MANIFEST.MF
@@ -1,7 +1,7 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
-Bundle-Version: 3.16.0.qualifier
+Bundle-Version: 3.16.100.qualifier
Bundle-SymbolicName: org.eclipse.core.runtime; singleton:=true
Bundle-Vendor: %providerName
Bundle-Activator: org.eclipse.core.internal.runtime.PlatformActivator
diff --git a/bundles/org.eclipse.core.runtime/pom.xml b/bundles/org.eclipse.core.runtime/pom.xml
index 8b539f2..299b5db 100644
--- a/bundles/org.eclipse.core.runtime/pom.xml
+++ b/bundles/org.eclipse.core.runtime/pom.xml
@@ -19,7 +19,7 @@
</parent>
<groupId>org.eclipse.core</groupId>
<artifactId>org.eclipse.core.runtime</artifactId>
- <version>3.16.0-SNAPSHOT</version>
+ <version>3.16.100-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
<build>
<plugins>
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 440c402..3d7d239 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
@@ -722,7 +722,9 @@
/**
* Make the processor visit all declared methods on the given class.
*/
- private boolean processMethods(final Object userObject, PrimaryObjectSupplier objectSupplier, PrimaryObjectSupplier tempSupplier, Class<?> objectsClass, ArrayList<Class<?>> classHierarchy, boolean track, List<Requestor<?>> requestors) {
+ private boolean processMethods(final Object userObject, PrimaryObjectSupplier objectSupplier,
+ PrimaryObjectSupplier tempSupplier, Class<?> objectsClass, ArrayList<Class<?>> classHierarchy,
+ boolean track, List<Requestor<?>> requestors) {
boolean injectedStatic = false;
Method[] methods = getDeclaredMethods(objectsClass);
for (Method method : methods) {
@@ -730,10 +732,9 @@
Boolean isOverridden = null;
Map<Method, Boolean> methodMap = null;
Class<?> originalClass = userObject.getClass();
- if (isOverriddenCache.containsKey(originalClass)) {
- methodMap = isOverriddenCache.get(originalClass);
- if (methodMap.containsKey(method))
- isOverridden = methodMap.get(method);
+ methodMap = isOverriddenCache.get(originalClass);
+ if (methodMap != null) {
+ isOverridden = methodMap.get(method);
}
if (isOverridden == null) {
isOverridden = isOverridden(method, classHierarchy);
@@ -744,15 +745,18 @@
methodMap.put(method, isOverridden);
}
- if (isOverridden)
+ if (isOverridden) {
continue; // process in the subclass
+ }
if (Modifier.isStatic(method.getModifiers())) {
- if (hasInjectedStatic(objectsClass))
+ if (hasInjectedStatic(objectsClass)) {
continue;
+ }
injectedStatic = true;
}
- if (!isAnnotationPresent(method, Inject.class))
+ if (!isAnnotationPresent(method, Inject.class)) {
continue;
+ }
requestors.add(new MethodRequestor(method, this, objectSupplier, tempSupplier, userObject, track));
}
return injectedStatic;