diff options
author | Eike Stepper | 2009-10-20 12:40:32 +0000 |
---|---|---|
committer | Eike Stepper | 2009-10-20 12:40:32 +0000 |
commit | a6c9dbf092072d10d44fa522414d7cffac9172d1 (patch) | |
tree | d9f936af45b2bb4f8f0383785ca98eb96f7eea50 /plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/lifecycle/Lifecycle.java | |
parent | c0237b4d53ce950b0312327916143015b9d9659a (diff) | |
download | cdo-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.java | 25 |
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 { |