Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2012-12-11 10:36:52 +0000
committerEike Stepper2012-12-11 10:36:52 +0000
commita6ba3dcde79bb70505dfcd705506ef9ecdb3bdec (patch)
tree7c1afa9c2a840c4a5b1b1a3e9d43552280d52605 /plugins/org.eclipse.net4j.util
parenta7cc973c217e3313df011cad0da2ff557d83f312 (diff)
downloadcdo-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.java44
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)

Back to the top