diff options
author | Eike Stepper | 2012-12-11 10:36:52 +0000 |
---|---|---|
committer | Eike Stepper | 2012-12-11 10:36:52 +0000 |
commit | a6ba3dcde79bb70505dfcd705506ef9ecdb3bdec (patch) | |
tree | 7c1afa9c2a840c4a5b1b1a3e9d43552280d52605 /plugins/org.eclipse.net4j.util | |
parent | a7cc973c217e3313df011cad0da2ff557d83f312 (diff) | |
download | cdo-a6ba3dcde79bb70505dfcd705506ef9ecdb3bdec.tar.gz cdo-a6ba3dcde79bb70505dfcd705506ef9ecdb3bdec.tar.xz cdo-a6ba3dcde79bb70505dfcd705506ef9ecdb3bdec.zip |
[394555] CDOAdmin - NullPointerException on Server side using TCP
connector
https://bugs.eclipse.org/bugs/show_bug.cgi?id=394555
Diffstat (limited to 'plugins/org.eclipse.net4j.util')
-rw-r--r-- | plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/container/ContainerEventAdapter.java | 44 |
1 files changed, 41 insertions, 3 deletions
diff --git a/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/container/ContainerEventAdapter.java b/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/container/ContainerEventAdapter.java index 609d67f713..3916ddcf13 100644 --- a/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/container/ContainerEventAdapter.java +++ b/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/container/ContainerEventAdapter.java @@ -10,20 +10,43 @@ */ package org.eclipse.net4j.util.container; +import org.eclipse.net4j.util.event.EventUtil; import org.eclipse.net4j.util.event.IEvent; import org.eclipse.net4j.util.event.IListener; +import org.eclipse.net4j.util.lifecycle.ILifecycle; +import org.eclipse.net4j.util.lifecycle.LifecycleEventAdapter; +import org.eclipse.net4j.util.lifecycle.LifecycleUtil; /** * A {@link IListener listener} that dispatches container {@link IContainerEvent events} to methods that can be * overridden by extenders. - * + * * @author Eike Stepper * @apiviz.exclude */ public class ContainerEventAdapter<E> implements IListener { + private boolean waitForActive; + + /** + * @since 3.3 + */ + public ContainerEventAdapter(boolean waitForActive) + { + this.waitForActive = waitForActive; + } + public ContainerEventAdapter() { + this(false); + } + + /** + * @since 3.3 + */ + public boolean isWaitForActive() + { + return waitForActive; } public final void notifyEvent(IEvent event) @@ -45,9 +68,24 @@ public class ContainerEventAdapter<E> implements IListener final IContainer<E> container = event.getSource(); event.accept(new IContainerEventVisitor<E>() { - public void added(E element) + public void added(final E element) { - onAdded(container, element); + if (waitForActive && !LifecycleUtil.isActive(element)) + { + EventUtil.addListener(element, new LifecycleEventAdapter() + { + @Override + protected void onActivated(ILifecycle lifecycle) + { + onAdded(container, element); + lifecycle.removeListener(this); + } + }); + } + else + { + onAdded(container, element); + } } public void removed(E element) |