Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2009-10-20 12:40:32 +0000
committerEike Stepper2009-10-20 12:40:32 +0000
commita6c9dbf092072d10d44fa522414d7cffac9172d1 (patch)
treed9f936af45b2bb4f8f0383785ca98eb96f7eea50 /plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/lifecycle/Lifecycle.java
parentc0237b4d53ce950b0312327916143015b9d9659a (diff)
downloadcdo-a6c9dbf092072d10d44fa522414d7cffac9172d1.tar.gz
cdo-a6c9dbf092072d10d44fa522414d7cffac9172d1.tar.xz
cdo-a6c9dbf092072d10d44fa522414d7cffac9172d1.zip
[292736] Optimize IListener management and notification
https://bugs.eclipse.org/bugs/show_bug.cgi?id=292736
Diffstat (limited to 'plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/lifecycle/Lifecycle.java')
-rw-r--r--plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/lifecycle/Lifecycle.java25
1 files changed, 21 insertions, 4 deletions
diff --git a/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/lifecycle/Lifecycle.java b/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/lifecycle/Lifecycle.java
index e821417a12..a59e8a6cc4 100644
--- a/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/lifecycle/Lifecycle.java
+++ b/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/lifecycle/Lifecycle.java
@@ -14,6 +14,7 @@ import org.eclipse.net4j.internal.util.bundle.OM;
import org.eclipse.net4j.util.CheckUtil;
import org.eclipse.net4j.util.ReflectUtil;
import org.eclipse.net4j.util.ReflectUtil.ExcludeFromDump;
+import org.eclipse.net4j.util.event.IListener;
import org.eclipse.net4j.util.event.Notifier;
import org.eclipse.net4j.util.om.trace.ContextTracer;
@@ -59,7 +60,11 @@ public class Lifecycle extends Notifier implements ILifecycle
lock();
lifecycleState = LifecycleState.ACTIVATING;
- fireEvent(new LifecycleEvent(this, ILifecycleEvent.Kind.ABOUT_TO_ACTIVATE));
+ IListener[] listeners = getListeners();
+ if (listeners != null)
+ {
+ fireEvent(new LifecycleEvent(this, ILifecycleEvent.Kind.ABOUT_TO_ACTIVATE), listeners);
+ }
doBeforeActivate();
doActivate();
@@ -108,12 +113,20 @@ public class Lifecycle extends Notifier implements ILifecycle
lock();
lifecycleState = LifecycleState.DEACTIVATING;
doBeforeDeactivate();
- fireEvent(new LifecycleEvent(this, ILifecycleEvent.Kind.ABOUT_TO_DEACTIVATE));
+ IListener[] listeners = getListeners();
+ if (listeners != null)
+ {
+ fireEvent(new LifecycleEvent(this, ILifecycleEvent.Kind.ABOUT_TO_DEACTIVATE), listeners);
+ }
doDeactivate();
lifecycleState = LifecycleState.INACTIVE;
unlock();
- fireEvent(new LifecycleEvent(this, ILifecycleEvent.Kind.DEACTIVATED));
+ if (listeners != null)
+ {
+ fireEvent(new LifecycleEvent(this, ILifecycleEvent.Kind.DEACTIVATED), listeners);
+ }
+
return null;
}
@@ -211,7 +224,11 @@ public class Lifecycle extends Notifier implements ILifecycle
{
lifecycleState = LifecycleState.ACTIVE;
unlock();
- fireEvent(new LifecycleEvent(this, ILifecycleEvent.Kind.ACTIVATED));
+ IListener[] listeners = getListeners();
+ if (listeners != null)
+ {
+ fireEvent(new LifecycleEvent(this, ILifecycleEvent.Kind.ACTIVATED), listeners);
+ }
}
else
{

Back to the top