Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2012-06-07 10:14:51 +0000
committerEike Stepper2012-06-07 10:14:51 +0000
commita25531ae8a5c85586fdb590c0f806be3a807b634 (patch)
tree7849f8065be919611dabd87403f9bf5a1743cee7
parentb48ccc46da60cf75aef219ae635c627fb49d3cf2 (diff)
downloadcdo-a25531ae8a5c85586fdb590c0f806be3a807b634.tar.gz
cdo-a25531ae8a5c85586fdb590c0f806be3a807b634.tar.xz
cdo-a25531ae8a5c85586fdb590c0f806be3a807b634.zip
[381472] Design a repository administration API
https://bugs.eclipse.org/bugs/show_bug.cgi?id=381472
-rw-r--r--plugins/org.eclipse.emf.cdo.admin/src/org/eclipse/emf/cdo/internal/admin/CDOAdminClientImpl.java10
-rw-r--r--plugins/org.eclipse.emf.cdo.doc/javadoc/org/eclipse/emf/cdo/common/commit/handler/AsyncCommitInfoHandler.html10
-rw-r--r--plugins/org.eclipse.emf.cdo.doc/javadoc/org/eclipse/emf/cdo/common/model/CDOPackageRegistryPopulator.html10
-rw-r--r--plugins/org.eclipse.emf.cdo.doc/javadoc/org/eclipse/emf/cdo/server/CDOServerBrowser.ContainerBased.html10
-rw-r--r--plugins/org.eclipse.emf.cdo.doc/javadoc/org/eclipse/emf/cdo/server/CDOServerBrowser.html10
-rw-r--r--plugins/org.eclipse.emf.cdo.doc/javadoc/org/eclipse/emf/cdo/server/net4j/FailoverAgent.Protocol.html10
-rw-r--r--plugins/org.eclipse.emf.cdo.doc/javadoc/org/eclipse/emf/cdo/server/net4j/FailoverAgent.html12
-rw-r--r--plugins/org.eclipse.emf.cdo.doc/javadoc/org/eclipse/emf/cdo/server/net4j/FailoverMonitor.AgentProtocol.html10
-rw-r--r--plugins/org.eclipse.emf.cdo.doc/javadoc/org/eclipse/emf/cdo/server/net4j/FailoverMonitor.ClientProtocol.html10
-rw-r--r--plugins/org.eclipse.emf.cdo.doc/javadoc/org/eclipse/emf/cdo/server/net4j/FailoverMonitor.html10
-rw-r--r--plugins/org.eclipse.emf.cdo.server.admin/src/org/eclipse/emf/cdo/server/internal/admin/CDOAdminServer.java13
-rw-r--r--plugins/org.eclipse.emf.cdo.ui.admin/src/org/eclipse/emf/cdo/ui/internal/admin/CDOAdminView.java31
-rw-r--r--plugins/org.eclipse.emf.cdo.ui/CDOClient1.launch8
-rw-r--r--plugins/org.eclipse.emf.cdo.ui/CDOClient2.launch8
-rw-r--r--plugins/org.eclipse.net4j.doc/javadoc/allclasses-frame.html4
-rw-r--r--plugins/org.eclipse.net4j.doc/javadoc/allclasses-noframe.html4
-rw-r--r--plugins/org.eclipse.net4j.doc/javadoc/constant-values.html30
-rw-r--r--plugins/org.eclipse.net4j.doc/javadoc/deprecated-list.html15
-rw-r--r--plugins/org.eclipse.net4j.doc/javadoc/index-all.html85
-rw-r--r--plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/signal/SignalProtocol.html10
-rw-r--r--plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/signal/heartbeat/HeartBeatProtocol.Server.html10
-rw-r--r--plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/signal/heartbeat/HeartBeatProtocol.html10
-rw-r--r--plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/tcp/TCPUtil.AcceptorData.html400
-rw-r--r--plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/tcp/TCPUtil.AcceptorData.pngbin0 -> 586 bytes
-rw-r--r--plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/tcp/TCPUtil.ConnectorData.html421
-rw-r--r--plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/tcp/TCPUtil.ConnectorData.pngbin0 -> 573 bytes
-rw-r--r--plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/tcp/TCPUtil.html115
-rw-r--r--plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/tcp/class-use/ITCPAcceptor.html14
-rw-r--r--plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/tcp/class-use/ITCPConnector.html14
-rw-r--r--plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/tcp/class-use/TCPUtil.AcceptorData.html143
-rw-r--r--plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/tcp/class-use/TCPUtil.ConnectorData.html143
-rw-r--r--plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/tcp/package-frame.html6
-rw-r--r--plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/tcp/package-summary.html30
-rw-r--r--plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/tcp/package-summary.pngbin9452 -> 10626 bytes
-rw-r--r--plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/ui/FactoryTypeContentProvider.html124
-rw-r--r--plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/ui/FactoryTypeContentProvider.pngbin2021 -> 2238 bytes
-rw-r--r--plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/ui/package-summary.html20
-rw-r--r--plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/ui/package-summary.pngbin8514 -> 9264 bytes
-rw-r--r--plugins/org.eclipse.net4j.jvm/META-INF/MANIFEST.MF2
-rw-r--r--plugins/org.eclipse.net4j.tcp/META-INF/MANIFEST.MF14
-rw-r--r--plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/TCPAcceptor.java579
-rw-r--r--plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/TCPAcceptorFactory.java70
-rw-r--r--plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/TCPConnectorFactory.java54
-rw-r--r--plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/tcp/TCPUtil.java395
-rw-r--r--plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/tcp/package-info.java31
-rw-r--r--plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/tcp/ssl/package-info.java31
-rw-r--r--plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/BufferPoolTest.java194
-rw-r--r--plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/TCPConnectorTest.java1275
-rw-r--r--plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/util/tests/ExpectedIOTest.java780
-rw-r--r--plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/util/tests/QueueWorkerWorkSerializerTest.java427
-rw-r--r--plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/util/tests/SortedFileMapTest.java216
-rw-r--r--plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/util/tests/StringCompressorTest.java581
-rw-r--r--plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/util/tests/UUIDGeneratorTest.java118
-rw-r--r--plugins/org.eclipse.net4j.ui.shared/META-INF/MANIFEST.MF6
-rw-r--r--plugins/org.eclipse.net4j.ui.shared/icons/full/chat_32X32.pngbin1680 -> 0 bytes
-rw-r--r--plugins/org.eclipse.net4j.ui.shared/icons/full/chat_wizard.pngbin4638 -> 0 bytes
-rw-r--r--plugins/org.eclipse.net4j.ui.shared/icons/full/collaboration_32x32.pngbin1892 -> 0 bytes
-rw-r--r--plugins/org.eclipse.net4j.ui.shared/icons/full/collaboration_wizard.pngbin5828 -> 0 bytes
-rw-r--r--plugins/org.eclipse.net4j.ui.shared/icons/full/etool16/part_mode.gifbin0 -> 308 bytes
-rw-r--r--plugins/org.eclipse.net4j.ui.shared/src/org/eclipse/net4j/ui/shared/SharedIcons.java299
-rw-r--r--plugins/org.eclipse.net4j.ui/src/org/eclipse/net4j/internal/ui/container/TCPAcceptorWizard.java5
-rw-r--r--plugins/org.eclipse.net4j.ui/src/org/eclipse/net4j/internal/ui/container/TCPConnectorWizard.java21
-rw-r--r--plugins/org.eclipse.net4j.ui/src/org/eclipse/net4j/ui/FactoryTypeContentProvider.java87
-rw-r--r--plugins/org.eclipse.net4j.util.doc/javadoc/allclasses-frame.html4
-rw-r--r--plugins/org.eclipse.net4j.util.doc/javadoc/allclasses-noframe.html4
-rw-r--r--plugins/org.eclipse.net4j.util.doc/javadoc/index-all.html30
-rw-r--r--plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/cache/Cache.html10
-rw-r--r--plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/cache/CacheMonitor.html10
-rw-r--r--plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/concurrent/QueueRunner.html10
-rw-r--r--plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/concurrent/QueueWorker.html10
-rw-r--r--plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/concurrent/QueueWorkerWorkSerializer.html10
-rw-r--r--plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/concurrent/RWLockManager.html10
-rw-r--r--plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/concurrent/RWOLockManager.html10
-rw-r--r--plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/concurrent/TimerLifecycle.html12
-rw-r--r--plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/concurrent/Worker.html12
-rw-r--r--plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/container/Container.html10
-rw-r--r--plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/container/IManagedContainer.html10
-rw-r--r--plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/container/IPluginContainer.html10
-rw-r--r--plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/container/ManagedContainer.html10
-rw-r--r--plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/container/SetContainer.html10
-rw-r--r--plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/container/class-use/IManagedContainer.html37
-rw-r--r--plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/container/package-use.html20
-rw-r--r--plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/event/EventUtil.html46
-rw-r--r--plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/event/IListener.html2
-rw-r--r--plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/event/class-use/IListener.html27
-rw-r--r--plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/fsm/FiniteStateMachine.html12
-rw-r--r--plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/lifecycle/ILifecycle.DeferrableActivation.html224
-rw-r--r--plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/lifecycle/ILifecycle.DeferrableActivation.pngbin0 -> 854 bytes
-rw-r--r--plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/lifecycle/ILifecycle.html25
-rw-r--r--plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/lifecycle/ILifecycleEvent.html4
-rw-r--r--plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/lifecycle/Lifecycle.html25
-rw-r--r--plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/lifecycle/LifecycleUtil.html21
-rw-r--r--plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/lifecycle/class-use/ILifecycle.DeferrableActivation.html143
-rw-r--r--plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/lifecycle/package-frame.html2
-rw-r--r--plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/lifecycle/package-summary.html19
-rw-r--r--plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/lifecycle/package-summary.pngbin8629 -> 9604 bytes
-rw-r--r--plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ref/ReferenceQueueWorker.html10
-rw-r--r--plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/registry/DelegatingRegistry.html10
-rw-r--r--plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/registry/HashMapDelegatingRegistry.html10
-rw-r--r--plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/registry/HashMapRegistry.html10
-rw-r--r--plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/registry/Registry.html10
-rw-r--r--plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/security/ChallengeNegotiator.html10
-rw-r--r--plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/security/ChallengeResponseNegotiator.html10
-rw-r--r--plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/security/FileUserManager.html19
-rw-r--r--plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/security/Negotiator.html10
-rw-r--r--plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/security/Randomizer.html19
-rw-r--r--plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/security/ResponseNegotiator.html10
-rw-r--r--plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/security/UserManager.html19
-rw-r--r--plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/DelegatingContentProvider.html4
-rw-r--r--plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/FactoryTypeContentProvider.html346
-rw-r--r--plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/FactoryTypeContentProvider.pngbin0 -> 1667 bytes
-rw-r--r--plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/StaticContentProvider.html4
-rw-r--r--plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/StructuredContentProvider.html9
-rw-r--r--plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/StructuredContentProvider.pngbin7432 -> 8870 bytes
-rw-r--r--plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/UIQueueRunner.html10
-rw-r--r--plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/class-use/FactoryTypeContentProvider.html143
-rw-r--r--plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/class-use/StructuredContentProvider.html9
-rw-r--r--plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/package-frame.html2
-rw-r--r--plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/package-summary.html42
-rw-r--r--plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/package-summary.pngbin23925 -> 26035 bytes
-rw-r--r--plugins/org.eclipse.net4j.util.ui/Snippet1.java121
-rw-r--r--plugins/org.eclipse.net4j.util.ui/src/org/eclipse/net4j/util/internal/ui/messages/messages.properties117
-rw-r--r--plugins/org.eclipse.net4j.util.ui/src/org/eclipse/net4j/util/internal/ui/views/Net4jIntrospectorView.java1572
-rw-r--r--plugins/org.eclipse.net4j.util.ui/src/org/eclipse/net4j/util/ui/FactoryTypeContentProvider.java55
-rw-r--r--plugins/org.eclipse.net4j.util.ui/src/org/eclipse/net4j/util/ui/container/ElementWizardAction.java3
-rw-r--r--plugins/org.eclipse.net4j.util.ui/src/org/eclipse/net4j/util/ui/views/ContainerItemProvider.java1428
-rw-r--r--plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/container/ManagedContainer.java37
-rw-r--r--plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/event/EventUtil.java159
-rw-r--r--plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/lifecycle/ILifecycle.java101
-rw-r--r--plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/lifecycle/Lifecycle.java610
-rw-r--r--plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/lifecycle/LifecycleUtil.java905
-rw-r--r--plugins/org.eclipse.net4j/src/org/eclipse/spi/net4j/Channel.java978
-rw-r--r--plugins/org.eclipse.net4j/src/org/eclipse/spi/net4j/ChannelMultiplexer.java745
-rw-r--r--plugins/org.eclipse.net4j/src/org/eclipse/spi/net4j/Connector.java863
134 files changed, 9626 insertions, 6518 deletions
diff --git a/plugins/org.eclipse.emf.cdo.admin/src/org/eclipse/emf/cdo/internal/admin/CDOAdminClientImpl.java b/plugins/org.eclipse.emf.cdo.admin/src/org/eclipse/emf/cdo/internal/admin/CDOAdminClientImpl.java
index 25ac1de9f7..ef91162447 100644
--- a/plugins/org.eclipse.emf.cdo.admin/src/org/eclipse/emf/cdo/internal/admin/CDOAdminClientImpl.java
+++ b/plugins/org.eclipse.emf.cdo.admin/src/org/eclipse/emf/cdo/internal/admin/CDOAdminClientImpl.java
@@ -17,6 +17,8 @@ import org.eclipse.emf.cdo.internal.admin.protocol.CDOAdminClientProtocol;
import org.eclipse.emf.cdo.spi.common.admin.AbstractCDOAdmin;
import org.eclipse.net4j.connector.IConnector;
+import org.eclipse.net4j.util.lifecycle.ILifecycle;
+import org.eclipse.net4j.util.lifecycle.LifecycleEventAdapter;
import java.util.Map;
@@ -87,6 +89,14 @@ public class CDOAdminClientImpl extends AbstractCDOAdmin implements CDOAdminClie
protocol = new CDOAdminClientProtocol(this);
protocol.queryRepositories(getSet());
+ protocol.addListener(new LifecycleEventAdapter()
+ {
+ @Override
+ protected void onDeactivated(ILifecycle lifecycle)
+ {
+ deactivate();
+ }
+ });
}
@Override
diff --git a/plugins/org.eclipse.emf.cdo.doc/javadoc/org/eclipse/emf/cdo/common/commit/handler/AsyncCommitInfoHandler.html b/plugins/org.eclipse.emf.cdo.doc/javadoc/org/eclipse/emf/cdo/common/commit/handler/AsyncCommitInfoHandler.html
index 93da9d2f0c..ca909956b8 100644
--- a/plugins/org.eclipse.emf.cdo.doc/javadoc/org/eclipse/emf/cdo/common/commit/handler/AsyncCommitInfoHandler.html
+++ b/plugins/org.eclipse.emf.cdo.doc/javadoc/org/eclipse/emf/cdo/common/commit/handler/AsyncCommitInfoHandler.html
@@ -151,6 +151,16 @@ A <A HREF="../../../../../../../org/eclipse/emf/cdo/common/commit/CDOCommitInfoH
</TR>
</TABLE>
&nbsp;
+<A NAME="nested_classes_inherited_from_class_org.eclipse.net4j.util.lifecycle.ILifecycle"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Nested classes/interfaces inherited from interface org.eclipse.net4j.util.lifecycle.<A HREF="../../../../../../../../../org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/lifecycle/ILifecycle.html?is-external=true" title="class or interface in org.eclipse.net4j.util.lifecycle">ILifecycle</A></B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../../../../../org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/lifecycle/ILifecycle.DeferrableActivation.html?is-external=true" title="class or interface in org.eclipse.net4j.util.lifecycle">ILifecycle.DeferrableActivation</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
<!-- =========== FIELD SUMMARY =========== -->
<A NAME="field_summary"><!-- --></A>
diff --git a/plugins/org.eclipse.emf.cdo.doc/javadoc/org/eclipse/emf/cdo/common/model/CDOPackageRegistryPopulator.html b/plugins/org.eclipse.emf.cdo.doc/javadoc/org/eclipse/emf/cdo/common/model/CDOPackageRegistryPopulator.html
index f07e26cb49..e624cf59a9 100644
--- a/plugins/org.eclipse.emf.cdo.doc/javadoc/org/eclipse/emf/cdo/common/model/CDOPackageRegistryPopulator.html
+++ b/plugins/org.eclipse.emf.cdo.doc/javadoc/org/eclipse/emf/cdo/common/model/CDOPackageRegistryPopulator.html
@@ -160,6 +160,16 @@ Populates a <A HREF="../../../../../../org/eclipse/emf/cdo/common/model/CDOPacka
</TR>
</TABLE>
&nbsp;
+<A NAME="nested_classes_inherited_from_class_org.eclipse.net4j.util.lifecycle.ILifecycle"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Nested classes/interfaces inherited from interface org.eclipse.net4j.util.lifecycle.<A HREF="../../../../../../../../org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/lifecycle/ILifecycle.html?is-external=true" title="class or interface in org.eclipse.net4j.util.lifecycle">ILifecycle</A></B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../../../../org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/lifecycle/ILifecycle.DeferrableActivation.html?is-external=true" title="class or interface in org.eclipse.net4j.util.lifecycle">ILifecycle.DeferrableActivation</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
<!-- =========== FIELD SUMMARY =========== -->
<A NAME="field_summary"><!-- --></A>
diff --git a/plugins/org.eclipse.emf.cdo.doc/javadoc/org/eclipse/emf/cdo/server/CDOServerBrowser.ContainerBased.html b/plugins/org.eclipse.emf.cdo.doc/javadoc/org/eclipse/emf/cdo/server/CDOServerBrowser.ContainerBased.html
index d9bb56d09b..f4d8aca746 100644
--- a/plugins/org.eclipse.emf.cdo.doc/javadoc/org/eclipse/emf/cdo/server/CDOServerBrowser.ContainerBased.html
+++ b/plugins/org.eclipse.emf.cdo.doc/javadoc/org/eclipse/emf/cdo/server/CDOServerBrowser.ContainerBased.html
@@ -166,6 +166,16 @@ A <A HREF="../../../../../org/eclipse/emf/cdo/server/CDOServerBrowser.html" titl
</TR>
</TABLE>
&nbsp;
+<A NAME="nested_classes_inherited_from_class_org.eclipse.net4j.util.lifecycle.ILifecycle"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Nested classes/interfaces inherited from interface org.eclipse.net4j.util.lifecycle.<A HREF="../../../../../../../org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/lifecycle/ILifecycle.html?is-external=true" title="class or interface in org.eclipse.net4j.util.lifecycle">ILifecycle</A></B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../../../org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/lifecycle/ILifecycle.DeferrableActivation.html?is-external=true" title="class or interface in org.eclipse.net4j.util.lifecycle">ILifecycle.DeferrableActivation</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
<!-- =========== FIELD SUMMARY =========== -->
<A NAME="field_summary"><!-- --></A>
diff --git a/plugins/org.eclipse.emf.cdo.doc/javadoc/org/eclipse/emf/cdo/server/CDOServerBrowser.html b/plugins/org.eclipse.emf.cdo.doc/javadoc/org/eclipse/emf/cdo/server/CDOServerBrowser.html
index c391fc941b..d5fa5377b2 100644
--- a/plugins/org.eclipse.emf.cdo.doc/javadoc/org/eclipse/emf/cdo/server/CDOServerBrowser.html
+++ b/plugins/org.eclipse.emf.cdo.doc/javadoc/org/eclipse/emf/cdo/server/CDOServerBrowser.html
@@ -211,6 +211,16 @@ A simple HTTP server that web browsers can connect to in order to render interna
</TR>
</TABLE>
&nbsp;
+<A NAME="nested_classes_inherited_from_class_org.eclipse.net4j.util.lifecycle.ILifecycle"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Nested classes/interfaces inherited from interface org.eclipse.net4j.util.lifecycle.<A HREF="../../../../../../../org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/lifecycle/ILifecycle.html?is-external=true" title="class or interface in org.eclipse.net4j.util.lifecycle">ILifecycle</A></B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../../../org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/lifecycle/ILifecycle.DeferrableActivation.html?is-external=true" title="class or interface in org.eclipse.net4j.util.lifecycle">ILifecycle.DeferrableActivation</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
<!-- =========== FIELD SUMMARY =========== -->
<A NAME="field_summary"><!-- --></A>
diff --git a/plugins/org.eclipse.emf.cdo.doc/javadoc/org/eclipse/emf/cdo/server/net4j/FailoverAgent.Protocol.html b/plugins/org.eclipse.emf.cdo.doc/javadoc/org/eclipse/emf/cdo/server/net4j/FailoverAgent.Protocol.html
index 2622090e1c..ad793922df 100644
--- a/plugins/org.eclipse.emf.cdo.doc/javadoc/org/eclipse/emf/cdo/server/net4j/FailoverAgent.Protocol.html
+++ b/plugins/org.eclipse.emf.cdo.doc/javadoc/org/eclipse/emf/cdo/server/net4j/FailoverAgent.Protocol.html
@@ -168,6 +168,16 @@ The agent-side implementation of the <A HREF="../../../../../../org/eclipse/emf/
</TR>
</TABLE>
&nbsp;
+<A NAME="nested_classes_inherited_from_class_org.eclipse.net4j.util.lifecycle.ILifecycle"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Nested classes/interfaces inherited from interface org.eclipse.net4j.util.lifecycle.<A HREF="../../../../../../../../org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/lifecycle/ILifecycle.html?is-external=true" title="class or interface in org.eclipse.net4j.util.lifecycle">ILifecycle</A></B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../../../../org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/lifecycle/ILifecycle.DeferrableActivation.html?is-external=true" title="class or interface in org.eclipse.net4j.util.lifecycle">ILifecycle.DeferrableActivation</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
<!-- =========== FIELD SUMMARY =========== -->
<A NAME="field_summary"><!-- --></A>
diff --git a/plugins/org.eclipse.emf.cdo.doc/javadoc/org/eclipse/emf/cdo/server/net4j/FailoverAgent.html b/plugins/org.eclipse.emf.cdo.doc/javadoc/org/eclipse/emf/cdo/server/net4j/FailoverAgent.html
index 4ffde2dee1..f5a0c1a76a 100644
--- a/plugins/org.eclipse.emf.cdo.doc/javadoc/org/eclipse/emf/cdo/server/net4j/FailoverAgent.html
+++ b/plugins/org.eclipse.emf.cdo.doc/javadoc/org/eclipse/emf/cdo/server/net4j/FailoverAgent.html
@@ -146,7 +146,17 @@ A repository-side agent for a <A HREF="../../../../../../org/eclipse/emf/cdo/ser
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The agent-side implementation of the <A HREF="../../../../../../org/eclipse/emf/cdo/server/net4j/FailoverMonitor.html" title="class in org.eclipse.emf.cdo.server.net4j"><CODE>fail-over monitor</CODE></A> protocol.</TD>
</TR>
</TABLE>
-&nbsp;<!-- =========== FIELD SUMMARY =========== -->
+&nbsp;<A NAME="nested_classes_inherited_from_class_org.eclipse.net4j.util.lifecycle.ILifecycle"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Nested classes/interfaces inherited from interface org.eclipse.net4j.util.lifecycle.<A HREF="../../../../../../../../org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/lifecycle/ILifecycle.html?is-external=true" title="class or interface in org.eclipse.net4j.util.lifecycle">ILifecycle</A></B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../../../../org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/lifecycle/ILifecycle.DeferrableActivation.html?is-external=true" title="class or interface in org.eclipse.net4j.util.lifecycle">ILifecycle.DeferrableActivation</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- =========== FIELD SUMMARY =========== -->
<A NAME="field_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
diff --git a/plugins/org.eclipse.emf.cdo.doc/javadoc/org/eclipse/emf/cdo/server/net4j/FailoverMonitor.AgentProtocol.html b/plugins/org.eclipse.emf.cdo.doc/javadoc/org/eclipse/emf/cdo/server/net4j/FailoverMonitor.AgentProtocol.html
index df4bb13a98..f6672e6bff 100644
--- a/plugins/org.eclipse.emf.cdo.doc/javadoc/org/eclipse/emf/cdo/server/net4j/FailoverMonitor.AgentProtocol.html
+++ b/plugins/org.eclipse.emf.cdo.doc/javadoc/org/eclipse/emf/cdo/server/net4j/FailoverMonitor.AgentProtocol.html
@@ -176,6 +176,16 @@ The monitor-side implementation of the <A HREF="../../../../../../org/eclipse/em
</TR>
</TABLE>
&nbsp;
+<A NAME="nested_classes_inherited_from_class_org.eclipse.net4j.util.lifecycle.ILifecycle"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Nested classes/interfaces inherited from interface org.eclipse.net4j.util.lifecycle.<A HREF="../../../../../../../../org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/lifecycle/ILifecycle.html?is-external=true" title="class or interface in org.eclipse.net4j.util.lifecycle">ILifecycle</A></B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../../../../org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/lifecycle/ILifecycle.DeferrableActivation.html?is-external=true" title="class or interface in org.eclipse.net4j.util.lifecycle">ILifecycle.DeferrableActivation</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
<!-- =========== FIELD SUMMARY =========== -->
<A NAME="field_summary"><!-- --></A>
diff --git a/plugins/org.eclipse.emf.cdo.doc/javadoc/org/eclipse/emf/cdo/server/net4j/FailoverMonitor.ClientProtocol.html b/plugins/org.eclipse.emf.cdo.doc/javadoc/org/eclipse/emf/cdo/server/net4j/FailoverMonitor.ClientProtocol.html
index 4096496445..54c61e1948 100644
--- a/plugins/org.eclipse.emf.cdo.doc/javadoc/org/eclipse/emf/cdo/server/net4j/FailoverMonitor.ClientProtocol.html
+++ b/plugins/org.eclipse.emf.cdo.doc/javadoc/org/eclipse/emf/cdo/server/net4j/FailoverMonitor.ClientProtocol.html
@@ -165,6 +165,16 @@ The monitor-side implementation of the <A HREF="../../../../../../org/eclipse/em
</TR>
</TABLE>
&nbsp;
+<A NAME="nested_classes_inherited_from_class_org.eclipse.net4j.util.lifecycle.ILifecycle"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Nested classes/interfaces inherited from interface org.eclipse.net4j.util.lifecycle.<A HREF="../../../../../../../../org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/lifecycle/ILifecycle.html?is-external=true" title="class or interface in org.eclipse.net4j.util.lifecycle">ILifecycle</A></B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../../../../org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/lifecycle/ILifecycle.DeferrableActivation.html?is-external=true" title="class or interface in org.eclipse.net4j.util.lifecycle">ILifecycle.DeferrableActivation</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
<!-- =========== FIELD SUMMARY =========== -->
<A NAME="field_summary"><!-- --></A>
diff --git a/plugins/org.eclipse.emf.cdo.doc/javadoc/org/eclipse/emf/cdo/server/net4j/FailoverMonitor.html b/plugins/org.eclipse.emf.cdo.doc/javadoc/org/eclipse/emf/cdo/server/net4j/FailoverMonitor.html
index e1fb223837..2328f648a9 100644
--- a/plugins/org.eclipse.emf.cdo.doc/javadoc/org/eclipse/emf/cdo/server/net4j/FailoverMonitor.html
+++ b/plugins/org.eclipse.emf.cdo.doc/javadoc/org/eclipse/emf/cdo/server/net4j/FailoverMonitor.html
@@ -189,6 +189,16 @@ A facility for monitoring a variable set of <CODE>fail-over participant</CODE> r
</TR>
</TABLE>
&nbsp;
+<A NAME="nested_classes_inherited_from_class_org.eclipse.net4j.util.lifecycle.ILifecycle"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Nested classes/interfaces inherited from interface org.eclipse.net4j.util.lifecycle.<A HREF="../../../../../../../../org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/lifecycle/ILifecycle.html?is-external=true" title="class or interface in org.eclipse.net4j.util.lifecycle">ILifecycle</A></B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../../../../org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/lifecycle/ILifecycle.DeferrableActivation.html?is-external=true" title="class or interface in org.eclipse.net4j.util.lifecycle">ILifecycle.DeferrableActivation</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
<!-- =========== FIELD SUMMARY =========== -->
<A NAME="field_summary"><!-- --></A>
diff --git a/plugins/org.eclipse.emf.cdo.server.admin/src/org/eclipse/emf/cdo/server/internal/admin/CDOAdminServer.java b/plugins/org.eclipse.emf.cdo.server.admin/src/org/eclipse/emf/cdo/server/internal/admin/CDOAdminServer.java
index c9b3393459..b91335dcde 100644
--- a/plugins/org.eclipse.emf.cdo.server.admin/src/org/eclipse/emf/cdo/server/internal/admin/CDOAdminServer.java
+++ b/plugins/org.eclipse.emf.cdo.server.admin/src/org/eclipse/emf/cdo/server/internal/admin/CDOAdminServer.java
@@ -26,6 +26,8 @@ import org.eclipse.net4j.util.container.IContainer;
import org.eclipse.net4j.util.container.IManagedContainer;
import org.eclipse.net4j.util.container.IPluginContainer;
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;
import java.util.HashSet;
@@ -75,8 +77,17 @@ public class CDOAdminServer extends AbstractCDOAdmin
return container;
}
- public void registerProtocol(CDOAdminServerProtocol protocol)
+ public void registerProtocol(final CDOAdminServerProtocol protocol)
{
+ protocol.addListener(new LifecycleEventAdapter()
+ {
+ @Override
+ protected void onDeactivated(ILifecycle lifecycle)
+ {
+ protocol.deactivate();
+ }
+ });
+
synchronized (protocols)
{
protocols.add(protocol);
diff --git a/plugins/org.eclipse.emf.cdo.ui.admin/src/org/eclipse/emf/cdo/ui/internal/admin/CDOAdminView.java b/plugins/org.eclipse.emf.cdo.ui.admin/src/org/eclipse/emf/cdo/ui/internal/admin/CDOAdminView.java
index 2b86180eea..5e09d9c805 100644
--- a/plugins/org.eclipse.emf.cdo.ui.admin/src/org/eclipse/emf/cdo/ui/internal/admin/CDOAdminView.java
+++ b/plugins/org.eclipse.emf.cdo.ui.admin/src/org/eclipse/emf/cdo/ui/internal/admin/CDOAdminView.java
@@ -17,13 +17,11 @@ import org.eclipse.emf.cdo.ui.shared.SharedIcons;
import org.eclipse.net4j.connector.IConnector;
import org.eclipse.net4j.ui.Net4jItemProvider;
-import org.eclipse.net4j.util.container.ContainerEventAdapter;
import org.eclipse.net4j.util.container.IContainer;
import org.eclipse.net4j.util.container.IContainerEvent;
import org.eclipse.net4j.util.container.IManagedContainer;
import org.eclipse.net4j.util.container.IPluginContainer;
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.ui.container.ElementWizardAction;
@@ -68,29 +66,8 @@ public class CDOAdminView extends ContainerView
}
};
- private IListener containerListener = new ContainerEventAdapter<Object>()
- {
- @Override
- protected void onAdded(org.eclipse.net4j.util.container.IContainer<Object> container, Object element)
- {
- }
-
- @Override
- protected void onRemoved(org.eclipse.net4j.util.container.IContainer<Object> container, Object element)
- {
- }
- };
-
public CDOAdminView()
{
- // getContainer().addListener(containerListener);
- }
-
- @Override
- public void dispose()
- {
- // getContainer().removeListener(containerListener);
- super.dispose();
}
@Override
@@ -146,6 +123,12 @@ public class CDOAdminView extends ContainerView
admin.addListener(new LifecycleEventAdapter()
{
@Override
+ protected void onActivated(ILifecycle lifecycle)
+ {
+ refreshViewer(true);
+ }
+
+ @Override
protected void onDeactivated(ILifecycle lifecycle)
{
IConnector key = ((CDOAdminClient)lifecycle).getConnector();
@@ -153,6 +136,8 @@ public class CDOAdminView extends ContainerView
{
admins.remove(key);
}
+
+ refreshViewer(true);
}
@Override
diff --git a/plugins/org.eclipse.emf.cdo.ui/CDOClient1.launch b/plugins/org.eclipse.emf.cdo.ui/CDOClient1.launch
index 0efc05f9df..22be874cdc 100644
--- a/plugins/org.eclipse.emf.cdo.ui/CDOClient1.launch
+++ b/plugins/org.eclipse.emf.cdo.ui/CDOClient1.launch
@@ -2,7 +2,7 @@
<launchConfiguration type="org.eclipse.pde.ui.RuntimeWorkbench">
<booleanAttribute key="askclear" value="true"/>
<booleanAttribute key="automaticAdd" value="false"/>
-<booleanAttribute key="automaticValidate" value="false"/>
+<booleanAttribute key="automaticValidate" value="true"/>
<stringAttribute key="bootstrap" value=""/>
<stringAttribute key="checked" value="org.eclipse.emf.cdo,org.eclipse.emf.cdo.examples,org.eclipse.emf.cdo.ui,org.eclipse.net4j,org.eclipse.net4j.http,org.eclipse.net4j.http.common,org.eclipse.net4j.tcp,org.eclipse.net4j.ui,org.eclipse.net4j.util,org.eclipse.net4j.util.ui"/>
<booleanAttribute key="clearConfig" value="false"/>
@@ -10,7 +10,7 @@
<booleanAttribute key="clearwslog" value="false"/>
<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/CDOClient1"/>
<booleanAttribute key="default" value="false"/>
-<booleanAttribute key="includeOptional" value="true"/>
+<booleanAttribute key="includeOptional" value="false"/>
<stringAttribute key="location" value="${workspace_loc}/../cdo.client1"/>
<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>
<mapAttribute key="org.eclipse.debug.core.preferred_launchers">
@@ -27,8 +27,8 @@
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xms40m&#13;&#10;-Xmx1024m&#13;&#10;-Dosgi.console.enable.builtin=true"/>
<stringAttribute key="pde.version" value="3.3"/>
<stringAttribute key="product" value="org.eclipse.platform.ide"/>
-<stringAttribute key="selected_target_plugins" value="com.ibm.icu@default:default,javax.servlet@default:default,org.apache.log4j*1.2.15.v201012070815@default:default,org.apache.lucene.analysis@default:default,org.apache.lucene.core@default:default,org.apache.lucene.highlighter@default:default,org.apache.lucene.memory@default:default,org.apache.lucene.misc@default:default,org.apache.lucene.queries@default:default,org.apache.lucene.snowball@default:default,org.apache.lucene.spellchecker@default:default,org.apache.lucene@default:default,org.eclipse.ant.core@default:default,org.eclipse.compare.core@default:default,org.eclipse.compare@default:default,org.eclipse.core.commands@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.databinding.observable@default:default,org.eclipse.core.databinding.property@default:default,org.eclipse.core.databinding@default:default,org.eclipse.core.expressions@default:default,org.eclipse.core.filebuffers@default:default,org.eclipse.core.filesystem.win32.x86_64@default:false,org.eclipse.core.filesystem@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.net.win32.x86_64@default:false,org.eclipse.core.net@default:default,org.eclipse.core.resources@default:default,org.eclipse.core.runtime.compatibility.auth@default:default,org.eclipse.core.runtime.compatibility.registry@default:false,org.eclipse.core.runtime@default:true,org.eclipse.core.variables@default:default,org.eclipse.draw2d*3.8.0.201205200846@default:default,org.eclipse.emf.common*2.8.0.v20120516-0416@default:default,org.eclipse.emf.common.ui@default:default,org.eclipse.emf.ecore*2.8.0.v20120516-0416@default:default,org.eclipse.emf.ecore.change*2.8.0.v20120516-0416@default:default,org.eclipse.emf.ecore.edit@default:default,org.eclipse.emf.ecore.editor@default:default,org.eclipse.emf.ecore.xmi*2.8.0.v20120516-0416@default:default,org.eclipse.emf.edit.ui@default:default,org.eclipse.emf.edit@default:default,org.eclipse.emf.transaction@default:default,org.eclipse.emf.validation@default:default,org.eclipse.emf@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.http.jetty@default:default,org.eclipse.equinox.http.servlet@default:default,org.eclipse.equinox.p2.core@default:default,org.eclipse.equinox.p2.engine@default:default,org.eclipse.equinox.p2.metadata.repository@default:default,org.eclipse.equinox.p2.metadata@default:default,org.eclipse.equinox.p2.repository@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.security.win32.x86_64@default:false,org.eclipse.equinox.security@default:default,org.eclipse.help.base@default:default,org.eclipse.help.ui@default:default,org.eclipse.help@default:default,org.eclipse.jetty.continuation@default:default,org.eclipse.jetty.http@default:default,org.eclipse.jetty.io@default:default,org.eclipse.jetty.security@default:default,org.eclipse.jetty.server@default:default,org.eclipse.jetty.servlet@default:default,org.eclipse.jetty.util@default:default,org.eclipse.jface.databinding@default:default,org.eclipse.jface.text@default:default,org.eclipse.jface@default:default,org.eclipse.ltk.core.refactoring@default:default,org.eclipse.ltk.ui.refactoring@default:default,org.eclipse.osgi.services@default:default,org.eclipse.osgi@-1:true,org.eclipse.platform@default:default,org.eclipse.swt.win32.win32.x86_64@default:false,org.eclipse.swt@default:default,org.eclipse.team.core@default:default,org.eclipse.team.ui@default:default,org.eclipse.text@default:default,org.eclipse.ui.cheatsheets@default:default,org.eclipse.ui.editors@default:default,org.eclipse.ui.forms@default:default,org.eclipse.ui.ide.application@default:default,org.eclipse.ui.ide@default:default,org.eclipse.ui.intro@default:default,org.eclipse.ui.navigator.resources@default:default,org.eclipse.ui.navigator@default:default,org.eclipse.ui.views.properties.tabbed@default:default,org.eclipse.ui.views@default:default,org.eclipse.ui.win32@default:false,org.eclipse.ui.workbench.texteditor@default:default,org.eclipse.ui.workbench@default:default,org.eclipse.ui@default:default,org.h2@default:default"/>
-<stringAttribute key="selected_workspace_plugins" value="org.eclipse.emf.cdo.admin@default:default,org.eclipse.emf.cdo.common@default:default,org.eclipse.emf.cdo.dawn.ecore.editor.dawn@default:false,org.eclipse.emf.cdo.dawn.emf@default:default,org.eclipse.emf.cdo.dawn.ui@default:default,org.eclipse.emf.cdo.dawn.util@default:default,org.eclipse.emf.cdo.dawn@default:default,org.eclipse.emf.cdo.edit@default:default,org.eclipse.emf.cdo.examples.company.edit@default:default,org.eclipse.emf.cdo.examples.company@default:default,org.eclipse.emf.cdo.examples.hibernate.log4j@default:false,org.eclipse.emf.cdo.location@default:default,org.eclipse.emf.cdo.net4j@default:default,org.eclipse.emf.cdo.server.db@default:default,org.eclipse.emf.cdo.server.net4j@default:default,org.eclipse.emf.cdo.server@default:default,org.eclipse.emf.cdo.team@default:default,org.eclipse.emf.cdo.ui.admin@default:default,org.eclipse.emf.cdo.ui.efs@default:default,org.eclipse.emf.cdo.ui.ide@default:default,org.eclipse.emf.cdo.ui.location@default:default,org.eclipse.emf.cdo.ui.shared@default:default,org.eclipse.emf.cdo.ui.workspace@default:default,org.eclipse.emf.cdo.ui@default:default,org.eclipse.emf.cdo.workspace.efs@default:default,org.eclipse.emf.cdo.workspace@default:default,org.eclipse.emf.cdo@default:default,org.eclipse.net4j.db.h2@default:default,org.eclipse.net4j.db@default:default,org.eclipse.net4j.jvm@default:default,org.eclipse.net4j.tcp@default:default,org.eclipse.net4j.ui.shared@default:default,org.eclipse.net4j.ui@default:default,org.eclipse.net4j.util.ui@default:default,org.eclipse.net4j.util@default:default,org.eclipse.net4j@default:default"/>
+<stringAttribute key="selected_target_plugins" value="com.ibm.icu@default:default,org.apache.lucene.analysis@default:default,org.apache.lucene.core@default:default,org.apache.lucene@default:default,org.eclipse.ant.core@default:default,org.eclipse.compare.core@default:default,org.eclipse.compare@default:default,org.eclipse.core.commands@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.databinding.observable@default:default,org.eclipse.core.databinding.property@default:default,org.eclipse.core.databinding@default:default,org.eclipse.core.expressions@default:default,org.eclipse.core.filebuffers@default:default,org.eclipse.core.filesystem.win32.x86_64@default:false,org.eclipse.core.filesystem@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.net.win32.x86_64@default:false,org.eclipse.core.net@default:default,org.eclipse.core.resources@default:default,org.eclipse.core.runtime.compatibility.registry@default:false,org.eclipse.core.runtime@default:true,org.eclipse.core.variables@default:default,org.eclipse.emf.common*2.8.0.v20120516-0416@default:default,org.eclipse.emf.common.ui@default:default,org.eclipse.emf.ecore*2.8.0.v20120516-0416@default:default,org.eclipse.emf.ecore.change*2.8.0.v20120516-0416@default:default,org.eclipse.emf.ecore.edit@default:default,org.eclipse.emf.ecore.xmi*2.8.0.v20120516-0416@default:default,org.eclipse.emf.edit.ui@default:default,org.eclipse.emf.edit@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.p2.core@default:default,org.eclipse.equinox.p2.engine@default:default,org.eclipse.equinox.p2.metadata.repository@default:default,org.eclipse.equinox.p2.metadata@default:default,org.eclipse.equinox.p2.repository@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.security.win32.x86_64@default:false,org.eclipse.equinox.security@default:default,org.eclipse.help.base@default:default,org.eclipse.help@default:default,org.eclipse.jface.databinding@default:default,org.eclipse.jface.text@default:default,org.eclipse.jface@default:default,org.eclipse.ltk.core.refactoring@default:default,org.eclipse.ltk.ui.refactoring@default:default,org.eclipse.osgi@-1:true,org.eclipse.platform@default:default,org.eclipse.swt.win32.win32.x86_64@default:false,org.eclipse.swt@default:default,org.eclipse.team.core@default:default,org.eclipse.team.ui@default:default,org.eclipse.text@default:default,org.eclipse.ui.cheatsheets@default:default,org.eclipse.ui.editors@default:default,org.eclipse.ui.forms@default:default,org.eclipse.ui.ide.application@default:default,org.eclipse.ui.ide@default:default,org.eclipse.ui.intro@default:default,org.eclipse.ui.navigator.resources@default:default,org.eclipse.ui.navigator@default:default,org.eclipse.ui.views.log@default:default,org.eclipse.ui.views.properties.tabbed@default:default,org.eclipse.ui.views@default:default,org.eclipse.ui.win32@default:false,org.eclipse.ui.workbench.texteditor@default:default,org.eclipse.ui.workbench@default:default,org.eclipse.ui@default:default,org.h2@default:default"/>
+<stringAttribute key="selected_workspace_plugins" value="org.eclipse.emf.cdo.admin@default:default,org.eclipse.emf.cdo.common@default:default,org.eclipse.emf.cdo.edit@default:default,org.eclipse.emf.cdo.examples.company.edit@default:default,org.eclipse.emf.cdo.examples.company@default:default,org.eclipse.emf.cdo.location@default:default,org.eclipse.emf.cdo.net4j@default:default,org.eclipse.emf.cdo.server.db@default:default,org.eclipse.emf.cdo.server.net4j@default:default,org.eclipse.emf.cdo.server@default:default,org.eclipse.emf.cdo.team@default:default,org.eclipse.emf.cdo.ui.admin@default:default,org.eclipse.emf.cdo.ui.efs@default:default,org.eclipse.emf.cdo.ui.ide@default:default,org.eclipse.emf.cdo.ui.location@default:default,org.eclipse.emf.cdo.ui.shared@default:default,org.eclipse.emf.cdo.ui.workspace@default:default,org.eclipse.emf.cdo.ui@default:default,org.eclipse.emf.cdo.workspace.efs@default:default,org.eclipse.emf.cdo.workspace@default:default,org.eclipse.emf.cdo@default:default,org.eclipse.net4j.db.h2@default:default,org.eclipse.net4j.db@default:default,org.eclipse.net4j.jvm@default:default,org.eclipse.net4j.tcp@default:default,org.eclipse.net4j.ui.shared@default:default,org.eclipse.net4j.ui@default:default,org.eclipse.net4j.util.ui@default:default,org.eclipse.net4j.util@default:default,org.eclipse.net4j@default:default"/>
<booleanAttribute key="show_selected_only" value="false"/>
<stringAttribute key="templateConfig" value="${target_home}\configuration\config.ini"/>
<booleanAttribute key="tracing" value="true"/>
diff --git a/plugins/org.eclipse.emf.cdo.ui/CDOClient2.launch b/plugins/org.eclipse.emf.cdo.ui/CDOClient2.launch
index 29bfd2dfaf..da1223d9e2 100644
--- a/plugins/org.eclipse.emf.cdo.ui/CDOClient2.launch
+++ b/plugins/org.eclipse.emf.cdo.ui/CDOClient2.launch
@@ -2,7 +2,7 @@
<launchConfiguration type="org.eclipse.pde.ui.RuntimeWorkbench">
<booleanAttribute key="askclear" value="true"/>
<booleanAttribute key="automaticAdd" value="false"/>
-<booleanAttribute key="automaticValidate" value="false"/>
+<booleanAttribute key="automaticValidate" value="true"/>
<stringAttribute key="bootstrap" value=""/>
<stringAttribute key="checked" value="org.eclipse.emf.cdo,org.eclipse.emf.cdo.examples,org.eclipse.emf.cdo.ui,org.eclipse.net4j,org.eclipse.net4j.tcp,org.eclipse.net4j.ui,org.eclipse.net4j.util,org.eclipse.net4j.util.ui"/>
<booleanAttribute key="clearConfig" value="false"/>
@@ -10,7 +10,7 @@
<booleanAttribute key="clearwslog" value="false"/>
<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/CDOClient2"/>
<booleanAttribute key="default" value="false"/>
-<booleanAttribute key="includeOptional" value="true"/>
+<booleanAttribute key="includeOptional" value="false"/>
<stringAttribute key="location" value="${workspace_loc}/../cdo.client2"/>
<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>
<mapAttribute key="org.eclipse.debug.core.preferred_launchers">
@@ -27,8 +27,8 @@
<stringAttribute key="pde.version" value="3.3"/>
<stringAttribute key="product" value="org.eclipse.platform.ide"/>
<stringAttribute key="selectedPlugin" value="org.eclipse.emf.cdo"/>
-<stringAttribute key="selected_target_plugins" value="com.ibm.icu@default:default,javax.servlet@default:default,org.apache.lucene.analysis@default:default,org.apache.lucene.core@default:default,org.apache.lucene.highlighter@default:default,org.apache.lucene.memory@default:default,org.apache.lucene.misc@default:default,org.apache.lucene.queries@default:default,org.apache.lucene.snowball@default:default,org.apache.lucene.spellchecker@default:default,org.apache.lucene@default:default,org.eclipse.ant.core@default:default,org.eclipse.compare.core@default:default,org.eclipse.compare@default:default,org.eclipse.core.commands@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.databinding.observable@default:default,org.eclipse.core.databinding.property@default:default,org.eclipse.core.databinding@default:default,org.eclipse.core.expressions@default:default,org.eclipse.core.filebuffers@default:default,org.eclipse.core.filesystem.win32.x86_64@default:false,org.eclipse.core.filesystem@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.net.win32.x86_64@default:false,org.eclipse.core.net@default:default,org.eclipse.core.resources@default:default,org.eclipse.core.runtime.compatibility.auth@default:default,org.eclipse.core.runtime.compatibility.registry@default:false,org.eclipse.core.runtime@default:true,org.eclipse.core.variables@default:default,org.eclipse.draw2d*3.8.0.201205200846@default:default,org.eclipse.emf.common*2.8.0.v20120516-0416@default:default,org.eclipse.emf.common.ui@default:default,org.eclipse.emf.ecore*2.8.0.v20120516-0416@default:default,org.eclipse.emf.ecore.change*2.8.0.v20120516-0416@default:default,org.eclipse.emf.ecore.edit@default:default,org.eclipse.emf.ecore.editor@default:default,org.eclipse.emf.ecore.xmi*2.8.0.v20120516-0416@default:default,org.eclipse.emf.edit.ui@default:default,org.eclipse.emf.edit@default:default,org.eclipse.emf.transaction@default:default,org.eclipse.emf.validation@default:default,org.eclipse.emf@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.http.jetty@default:default,org.eclipse.equinox.http.servlet@default:default,org.eclipse.equinox.p2.core@default:default,org.eclipse.equinox.p2.engine@default:default,org.eclipse.equinox.p2.metadata.repository@default:default,org.eclipse.equinox.p2.metadata@default:default,org.eclipse.equinox.p2.repository@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.security.win32.x86_64@default:false,org.eclipse.equinox.security@default:default,org.eclipse.help.base@default:default,org.eclipse.help.ui@default:default,org.eclipse.help@default:default,org.eclipse.jetty.continuation@default:default,org.eclipse.jetty.http@default:default,org.eclipse.jetty.io@default:default,org.eclipse.jetty.security@default:default,org.eclipse.jetty.server@default:default,org.eclipse.jetty.servlet@default:default,org.eclipse.jetty.util@default:default,org.eclipse.jface.databinding@default:default,org.eclipse.jface.text@default:default,org.eclipse.jface@default:default,org.eclipse.ltk.core.refactoring@default:default,org.eclipse.ltk.ui.refactoring@default:default,org.eclipse.osgi.services@default:default,org.eclipse.osgi@-1:true,org.eclipse.platform@default:default,org.eclipse.swt.win32.win32.x86_64@default:false,org.eclipse.swt@default:default,org.eclipse.team.core@default:default,org.eclipse.team.ui@default:default,org.eclipse.text@default:default,org.eclipse.ui.cheatsheets@default:default,org.eclipse.ui.editors@default:default,org.eclipse.ui.forms@default:default,org.eclipse.ui.ide.application@default:default,org.eclipse.ui.ide@default:default,org.eclipse.ui.intro@default:default,org.eclipse.ui.navigator.resources@default:default,org.eclipse.ui.navigator@default:default,org.eclipse.ui.views.properties.tabbed@default:default,org.eclipse.ui.views@default:default,org.eclipse.ui.win32@default:false,org.eclipse.ui.workbench.texteditor@default:default,org.eclipse.ui.workbench@default:default,org.eclipse.ui@default:default,org.h2@default:default"/>
-<stringAttribute key="selected_workspace_plugins" value="org.eclipse.emf.cdo.admin@default:default,org.eclipse.emf.cdo.common@default:default,org.eclipse.emf.cdo.dawn.ecore.editor.dawn@default:false,org.eclipse.emf.cdo.dawn.emf@default:default,org.eclipse.emf.cdo.dawn.ui@default:default,org.eclipse.emf.cdo.dawn.util@default:default,org.eclipse.emf.cdo.dawn@default:default,org.eclipse.emf.cdo.edit@default:default,org.eclipse.emf.cdo.examples.company.edit@default:default,org.eclipse.emf.cdo.examples.company@default:default,org.eclipse.emf.cdo.location@default:default,org.eclipse.emf.cdo.net4j@default:default,org.eclipse.emf.cdo.server.db@default:default,org.eclipse.emf.cdo.server.net4j@default:default,org.eclipse.emf.cdo.server@default:default,org.eclipse.emf.cdo.team@default:default,org.eclipse.emf.cdo.ui.admin@default:default,org.eclipse.emf.cdo.ui.ide@default:default,org.eclipse.emf.cdo.ui.location@default:default,org.eclipse.emf.cdo.ui.shared@default:default,org.eclipse.emf.cdo.ui.workspace@default:default,org.eclipse.emf.cdo.ui@default:default,org.eclipse.emf.cdo.workspace.efs@default:default,org.eclipse.emf.cdo.workspace@default:default,org.eclipse.emf.cdo@default:default,org.eclipse.net4j.db.h2@default:default,org.eclipse.net4j.db@default:default,org.eclipse.net4j.jvm@default:default,org.eclipse.net4j.tcp@default:default,org.eclipse.net4j.ui.shared@default:default,org.eclipse.net4j.ui@default:default,org.eclipse.net4j.util.ui@default:default,org.eclipse.net4j.util@default:default,org.eclipse.net4j@default:default"/>
+<stringAttribute key="selected_target_plugins" value="com.ibm.icu@default:default,org.apache.lucene.analysis@default:default,org.apache.lucene.core@default:default,org.apache.lucene@default:default,org.eclipse.ant.core@default:default,org.eclipse.compare.core@default:default,org.eclipse.compare@default:default,org.eclipse.core.commands@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.databinding.observable@default:default,org.eclipse.core.databinding.property@default:default,org.eclipse.core.databinding@default:default,org.eclipse.core.expressions@default:default,org.eclipse.core.filebuffers@default:default,org.eclipse.core.filesystem.win32.x86_64@default:false,org.eclipse.core.filesystem@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.net.win32.x86_64@default:false,org.eclipse.core.net@default:default,org.eclipse.core.resources@default:default,org.eclipse.core.runtime.compatibility.registry@default:false,org.eclipse.core.runtime@default:true,org.eclipse.core.variables@default:default,org.eclipse.emf.common*2.8.0.v20120516-0416@default:default,org.eclipse.emf.common.ui@default:default,org.eclipse.emf.ecore*2.8.0.v20120516-0416@default:default,org.eclipse.emf.ecore.change*2.8.0.v20120516-0416@default:default,org.eclipse.emf.ecore.edit@default:default,org.eclipse.emf.ecore.xmi*2.8.0.v20120516-0416@default:default,org.eclipse.emf.edit.ui@default:default,org.eclipse.emf.edit@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.p2.core@default:default,org.eclipse.equinox.p2.engine@default:default,org.eclipse.equinox.p2.metadata.repository@default:default,org.eclipse.equinox.p2.metadata@default:default,org.eclipse.equinox.p2.repository@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.security.win32.x86_64@default:false,org.eclipse.equinox.security@default:default,org.eclipse.help.base@default:default,org.eclipse.help@default:default,org.eclipse.jface.databinding@default:default,org.eclipse.jface.text@default:default,org.eclipse.jface@default:default,org.eclipse.ltk.core.refactoring@default:default,org.eclipse.ltk.ui.refactoring@default:default,org.eclipse.osgi@-1:true,org.eclipse.platform@default:default,org.eclipse.swt.win32.win32.x86_64@default:false,org.eclipse.swt@default:default,org.eclipse.team.core@default:default,org.eclipse.team.ui@default:default,org.eclipse.text@default:default,org.eclipse.ui.cheatsheets@default:default,org.eclipse.ui.editors@default:default,org.eclipse.ui.forms@default:default,org.eclipse.ui.ide.application@default:default,org.eclipse.ui.ide@default:default,org.eclipse.ui.intro@default:default,org.eclipse.ui.navigator.resources@default:default,org.eclipse.ui.navigator@default:default,org.eclipse.ui.views.log@default:default,org.eclipse.ui.views.properties.tabbed@default:default,org.eclipse.ui.views@default:default,org.eclipse.ui.win32@default:false,org.eclipse.ui.workbench.texteditor@default:default,org.eclipse.ui.workbench@default:default,org.eclipse.ui@default:default,org.h2@default:default"/>
+<stringAttribute key="selected_workspace_plugins" value="org.eclipse.emf.cdo.admin@default:default,org.eclipse.emf.cdo.common@default:default,org.eclipse.emf.cdo.edit@default:default,org.eclipse.emf.cdo.examples.company.edit@default:default,org.eclipse.emf.cdo.examples.company@default:default,org.eclipse.emf.cdo.location@default:default,org.eclipse.emf.cdo.net4j@default:default,org.eclipse.emf.cdo.server.db@default:default,org.eclipse.emf.cdo.server.net4j@default:default,org.eclipse.emf.cdo.server@default:default,org.eclipse.emf.cdo.team@default:default,org.eclipse.emf.cdo.ui.admin@default:default,org.eclipse.emf.cdo.ui.efs@default:default,org.eclipse.emf.cdo.ui.ide@default:default,org.eclipse.emf.cdo.ui.location@default:default,org.eclipse.emf.cdo.ui.shared@default:default,org.eclipse.emf.cdo.ui.workspace@default:default,org.eclipse.emf.cdo.ui@default:default,org.eclipse.emf.cdo.workspace.efs@default:default,org.eclipse.emf.cdo.workspace@default:default,org.eclipse.emf.cdo@default:default,org.eclipse.net4j.db.h2@default:default,org.eclipse.net4j.db@default:default,org.eclipse.net4j.jvm@default:default,org.eclipse.net4j.tcp@default:default,org.eclipse.net4j.ui.shared@default:default,org.eclipse.net4j.ui@default:default,org.eclipse.net4j.util.ui@default:default,org.eclipse.net4j.util@default:default,org.eclipse.net4j@default:default"/>
<booleanAttribute key="show_selected_only" value="false"/>
<stringAttribute key="templateConfig" value="${target_home}\configuration\config.ini"/>
<booleanAttribute key="tracing" value="true"/>
diff --git a/plugins/org.eclipse.net4j.doc/javadoc/allclasses-frame.html b/plugins/org.eclipse.net4j.doc/javadoc/allclasses-frame.html
index 1c120f1eb9..9f60d75790 100644
--- a/plugins/org.eclipse.net4j.doc/javadoc/allclasses-frame.html
+++ b/plugins/org.eclipse.net4j.doc/javadoc/allclasses-frame.html
@@ -178,6 +178,10 @@ All Classes (Net4j Signalling Platform Documentation)
<BR>
<A HREF="org/eclipse/net4j/tcp/TCPUtil.html" title="class in org.eclipse.net4j.tcp" target="classFrame">TCPUtil</A>
<BR>
+<A HREF="org/eclipse/net4j/tcp/TCPUtil.AcceptorData.html" title="class in org.eclipse.net4j.tcp" target="classFrame">TCPUtil.AcceptorData</A>
+<BR>
+<A HREF="org/eclipse/net4j/tcp/TCPUtil.ConnectorData.html" title="class in org.eclipse.net4j.tcp" target="classFrame">TCPUtil.ConnectorData</A>
+<BR>
<A HREF="org/eclipse/net4j/TransportConfigurator.html" title="class in org.eclipse.net4j" target="classFrame">TransportConfigurator</A>
<BR>
<A HREF="org/eclipse/net4j/TransportInjector.html" title="class in org.eclipse.net4j" target="classFrame">TransportInjector</A>
diff --git a/plugins/org.eclipse.net4j.doc/javadoc/allclasses-noframe.html b/plugins/org.eclipse.net4j.doc/javadoc/allclasses-noframe.html
index c1175a94d5..80df320a50 100644
--- a/plugins/org.eclipse.net4j.doc/javadoc/allclasses-noframe.html
+++ b/plugins/org.eclipse.net4j.doc/javadoc/allclasses-noframe.html
@@ -178,6 +178,10 @@ All Classes (Net4j Signalling Platform Documentation)
<BR>
<A HREF="org/eclipse/net4j/tcp/TCPUtil.html" title="class in org.eclipse.net4j.tcp">TCPUtil</A>
<BR>
+<A HREF="org/eclipse/net4j/tcp/TCPUtil.AcceptorData.html" title="class in org.eclipse.net4j.tcp">TCPUtil.AcceptorData</A>
+<BR>
+<A HREF="org/eclipse/net4j/tcp/TCPUtil.ConnectorData.html" title="class in org.eclipse.net4j.tcp">TCPUtil.ConnectorData</A>
+<BR>
<A HREF="org/eclipse/net4j/TransportConfigurator.html" title="class in org.eclipse.net4j">TransportConfigurator</A>
<BR>
<A HREF="org/eclipse/net4j/TransportInjector.html" title="class in org.eclipse.net4j">TransportInjector</A>
diff --git a/plugins/org.eclipse.net4j.doc/javadoc/constant-values.html b/plugins/org.eclipse.net4j.doc/javadoc/constant-values.html
index 89a35b20a3..8c0c879d37 100644
--- a/plugins/org.eclipse.net4j.doc/javadoc/constant-values.html
+++ b/plugins/org.eclipse.net4j.doc/javadoc/constant-values.html
@@ -418,6 +418,36 @@ org.eclipse.*</FONT></TH>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left" COLSPAN="3">org.eclipse.net4j.tcp.<A HREF="org/eclipse/net4j/tcp/TCPUtil.html" title="class in org.eclipse.net4j.tcp">TCPUtil</A></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="org.eclipse.net4j.tcp.TCPUtil.CREDENTIALS_SEPARATOR"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;<A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A></CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="org/eclipse/net4j/tcp/TCPUtil.html#CREDENTIALS_SEPARATOR">CREDENTIALS_SEPARATOR</A></CODE></TD>
+<TD ALIGN="right"><CODE>"@"</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="org.eclipse.net4j.tcp.TCPUtil.FACTORY_TYPE"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;<A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A></CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="org/eclipse/net4j/tcp/TCPUtil.html#FACTORY_TYPE">FACTORY_TYPE</A></CODE></TD>
+<TD ALIGN="right"><CODE>"tcp"</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="org.eclipse.net4j.tcp.TCPUtil.PORT_SEPARATOR"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;<A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A></CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="org/eclipse/net4j/tcp/TCPUtil.html#PORT_SEPARATOR">PORT_SEPARATOR</A></CODE></TD>
+<TD ALIGN="right"><CODE>":"</CODE></TD>
+</TR>
+</FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+
+<P>
+
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left" COLSPAN="3">org.eclipse.net4j.ui.<A HREF="org/eclipse/net4j/ui/AcceptorContentProvider.html" title="class in org.eclipse.net4j.ui">AcceptorContentProvider</A></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
diff --git a/plugins/org.eclipse.net4j.doc/javadoc/deprecated-list.html b/plugins/org.eclipse.net4j.doc/javadoc/deprecated-list.html
index d78792b07a..da0deb37c7 100644
--- a/plugins/org.eclipse.net4j.doc/javadoc/deprecated-list.html
+++ b/plugins/org.eclipse.net4j.doc/javadoc/deprecated-list.html
@@ -85,8 +85,23 @@ function windowTitle()
</CENTER>
<HR SIZE="4" NOSHADE>
<B>Contents</B><UL>
+<LI><A HREF="#class">Deprecated Classes</A>
</UL>
+<A NAME="class"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
+<B>Deprecated Classes</B></FONT></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><A HREF="org/eclipse/net4j/ui/FactoryTypeContentProvider.html" title="class in org.eclipse.net4j.ui">org.eclipse.net4j.ui.FactoryTypeContentProvider</A>
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I>As of 4.1 use <A HREF="../../org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/FactoryTypeContentProvider.html?is-external=true" title="class or interface in org.eclipse.net4j.util.ui"><CODE>FactoryTypeContentProvider</CODE></A></I>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
<HR>
diff --git a/plugins/org.eclipse.net4j.doc/javadoc/index-all.html b/plugins/org.eclipse.net4j.doc/javadoc/index-all.html
index 6563b284e0..54d3482318 100644
--- a/plugins/org.eclipse.net4j.doc/javadoc/index-all.html
+++ b/plugins/org.eclipse.net4j.doc/javadoc/index-all.html
@@ -191,9 +191,6 @@ Method in class org.eclipse.net4j.ui.<A HREF="./org/eclipse/net4j/ui/AcceptorCon
<DT><A HREF="./org/eclipse/net4j/ui/ConnectorContentProvider.html#connectInput(org.eclipse.net4j.util.container.IManagedContainer)"><B>connectInput(IManagedContainer)</B></A> -
Method in class org.eclipse.net4j.ui.<A HREF="./org/eclipse/net4j/ui/ConnectorContentProvider.html" title="class in org.eclipse.net4j.ui">ConnectorContentProvider</A>
<DD>&nbsp;
-<DT><A HREF="./org/eclipse/net4j/ui/FactoryTypeContentProvider.html#connectInput(org.eclipse.net4j.util.container.IManagedContainer)"><B>connectInput(IManagedContainer)</B></A> -
-Method in class org.eclipse.net4j.ui.<A HREF="./org/eclipse/net4j/ui/FactoryTypeContentProvider.html" title="class in org.eclipse.net4j.ui">FactoryTypeContentProvider</A>
-<DD>&nbsp;
<DT><A HREF="./org/eclipse/net4j/ui/ConnectorContentProvider.html" title="class in org.eclipse.net4j.ui"><B>ConnectorContentProvider</B></A> - Class in <A HREF="./org/eclipse/net4j/ui/package-summary.html">org.eclipse.net4j.ui</A><DD>A <A HREF="../../org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/StructuredContentProvider.html?is-external=true" title="class or interface in org.eclipse.net4j.util.ui"><CODE>structured content provider</CODE></A> that shows <A HREF="./org/eclipse/net4j/connector/IConnector.html" title="interface in org.eclipse.net4j.connector"><CODE>connectors</CODE></A>.<DT><A HREF="./org/eclipse/net4j/ui/ConnectorContentProvider.html#ConnectorContentProvider()"><B>ConnectorContentProvider()</B></A> -
Constructor for class org.eclipse.net4j.ui.<A HREF="./org/eclipse/net4j/ui/ConnectorContentProvider.html" title="class in org.eclipse.net4j.ui">ConnectorContentProvider</A>
<DD>&nbsp;
@@ -260,6 +257,9 @@ Method in class org.eclipse.net4j.signal.<A HREF="./org/eclipse/net4j/signal/Sig
<DT><A HREF="./org/eclipse/net4j/tcp/ssl/SSLUtil.html#createSSLEngine(boolean, java.lang.String, int)"><B>createSSLEngine(boolean, String, int)</B></A> -
Static method in class org.eclipse.net4j.tcp.ssl.<A HREF="./org/eclipse/net4j/tcp/ssl/SSLUtil.html" title="class in org.eclipse.net4j.tcp.ssl">SSLUtil</A>
<DD>&nbsp;
+<DT><A HREF="./org/eclipse/net4j/tcp/TCPUtil.html#CREDENTIALS_SEPARATOR"><B>CREDENTIALS_SEPARATOR</B></A> -
+Static variable in class org.eclipse.net4j.tcp.<A HREF="./org/eclipse/net4j/tcp/TCPUtil.html" title="class in org.eclipse.net4j.tcp">TCPUtil</A>
+<DD>&nbsp;
</DL>
<HR>
<A NAME="_D_"><!-- --></A><H2>
@@ -312,9 +312,6 @@ Method in class org.eclipse.net4j.ui.<A HREF="./org/eclipse/net4j/ui/AcceptorCon
<DT><A HREF="./org/eclipse/net4j/ui/ConnectorContentProvider.html#disconnectInput(org.eclipse.net4j.util.container.IManagedContainer)"><B>disconnectInput(IManagedContainer)</B></A> -
Method in class org.eclipse.net4j.ui.<A HREF="./org/eclipse/net4j/ui/ConnectorContentProvider.html" title="class in org.eclipse.net4j.ui">ConnectorContentProvider</A>
<DD>&nbsp;
-<DT><A HREF="./org/eclipse/net4j/ui/FactoryTypeContentProvider.html#disconnectInput(org.eclipse.net4j.util.container.IManagedContainer)"><B>disconnectInput(IManagedContainer)</B></A> -
-Method in class org.eclipse.net4j.ui.<A HREF="./org/eclipse/net4j/ui/FactoryTypeContentProvider.html" title="class in org.eclipse.net4j.ui">FactoryTypeContentProvider</A>
-<DD>&nbsp;
<DT><A HREF="./org/eclipse/net4j/signal/SignalProtocol.html#doAfterActivate()"><B>doAfterActivate()</B></A> -
Method in class org.eclipse.net4j.signal.<A HREF="./org/eclipse/net4j/signal/SignalProtocol.html" title="class in org.eclipse.net4j.signal">SignalProtocol</A>
<DD>&nbsp;
@@ -347,6 +344,12 @@ Method in class org.eclipse.net4j.buffer.<A HREF="./org/eclipse/net4j/buffer/Buf
<DT><A HREF="./org/eclipse/net4j/buffer/BufferOutputStream.html#ensureBuffer()"><B>ensureBuffer()</B></A> -
Method in class org.eclipse.net4j.buffer.<A HREF="./org/eclipse/net4j/buffer/BufferOutputStream.html" title="class in org.eclipse.net4j.buffer">BufferOutputStream</A>
<DD>Ensures that this BufferOutputStream has a buffer.
+<DT><A HREF="./org/eclipse/net4j/tcp/TCPUtil.AcceptorData.html#equals(java.lang.Object)"><B>equals(Object)</B></A> -
+Method in class org.eclipse.net4j.tcp.<A HREF="./org/eclipse/net4j/tcp/TCPUtil.AcceptorData.html" title="class in org.eclipse.net4j.tcp">TCPUtil.AcceptorData</A>
+<DD>&nbsp;
+<DT><A HREF="./org/eclipse/net4j/tcp/TCPUtil.ConnectorData.html#equals(java.lang.Object)"><B>equals(Object)</B></A> -
+Method in class org.eclipse.net4j.tcp.<A HREF="./org/eclipse/net4j/tcp/TCPUtil.ConnectorData.html" title="class in org.eclipse.net4j.tcp">TCPUtil.ConnectorData</A>
+<DD>&nbsp;
<DT><A HREF="./org/eclipse/net4j/buffer/IBufferPool.html#evict(int)"><B>evict(int)</B></A> -
Method in interface org.eclipse.net4j.buffer.<A HREF="./org/eclipse/net4j/buffer/IBufferPool.html" title="interface in org.eclipse.net4j.buffer">IBufferPool</A>
<DD>Tries to remove as many buffers from this <code>BufferPool</code> and <A HREF="./org/eclipse/net4j/buffer/IBuffer.html#release()"><CODE>release</CODE></A> them as are
@@ -383,10 +386,12 @@ Constructor for class org.eclipse.net4j.<A HREF="./org/eclipse/net4j/FactoriesPr
<DT><A HREF="./org/eclipse/net4j/FactoriesProtocolProvider.html#FactoriesProtocolProvider(org.eclipse.net4j.util.factory.IFactory)"><B>FactoriesProtocolProvider(IFactory)</B></A> -
Constructor for class org.eclipse.net4j.<A HREF="./org/eclipse/net4j/FactoriesProtocolProvider.html" title="class in org.eclipse.net4j">FactoriesProtocolProvider</A>
<DD>&nbsp;
-<DT><A HREF="./org/eclipse/net4j/ui/FactoryTypeContentProvider.html" title="class in org.eclipse.net4j.ui"><B>FactoryTypeContentProvider</B></A> - Class in <A HREF="./org/eclipse/net4j/ui/package-summary.html">org.eclipse.net4j.ui</A><DD>A <A HREF="../../org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/StructuredContentProvider.html?is-external=true" title="class or interface in org.eclipse.net4j.util.ui"><CODE>structured content provider</CODE></A> that shows the <A HREF="../../org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/factory/IFactoryKey.html?is-external=true#getType()" title="class or interface in org.eclipse.net4j.util.factory"><CODE>factory
- types</CODE></A> of the <A HREF="../../org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/StructuredContentProvider.html?is-external=true#getInput()" title="class or interface in org.eclipse.net4j.util.ui"><CODE>input</CODE></A>.<DT><A HREF="./org/eclipse/net4j/ui/FactoryTypeContentProvider.html#FactoryTypeContentProvider(java.lang.String)"><B>FactoryTypeContentProvider(String)</B></A> -
-Constructor for class org.eclipse.net4j.ui.<A HREF="./org/eclipse/net4j/ui/FactoryTypeContentProvider.html" title="class in org.eclipse.net4j.ui">FactoryTypeContentProvider</A>
+<DT><A HREF="./org/eclipse/net4j/tcp/TCPUtil.html#FACTORY_TYPE"><B>FACTORY_TYPE</B></A> -
+Static variable in class org.eclipse.net4j.tcp.<A HREF="./org/eclipse/net4j/tcp/TCPUtil.html" title="class in org.eclipse.net4j.tcp">TCPUtil</A>
<DD>&nbsp;
+<DT><A HREF="./org/eclipse/net4j/ui/FactoryTypeContentProvider.html" title="class in org.eclipse.net4j.ui"><B>FactoryTypeContentProvider</B></A> - Class in <A HREF="./org/eclipse/net4j/ui/package-summary.html">org.eclipse.net4j.ui</A><DD><B>Deprecated.</B>&nbsp;<I>As of 4.1 use <A HREF="../../org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/FactoryTypeContentProvider.html?is-external=true" title="class or interface in org.eclipse.net4j.util.ui"><CODE>FactoryTypeContentProvider</CODE></A></I><DT><A HREF="./org/eclipse/net4j/ui/FactoryTypeContentProvider.html#FactoryTypeContentProvider(java.lang.String)"><B>FactoryTypeContentProvider(String)</B></A> -
+Constructor for class org.eclipse.net4j.ui.<A HREF="./org/eclipse/net4j/ui/FactoryTypeContentProvider.html" title="class in org.eclipse.net4j.ui">FactoryTypeContentProvider</A>
+<DD><B>Deprecated.</B>&nbsp;&nbsp;
<DT><A HREF="./org/eclipse/net4j/ui/Net4jItemProvider.html#fillContextMenu(org.eclipse.jface.action.IMenuManager, org.eclipse.jface.viewers.ITreeSelection)"><B>fillContextMenu(IMenuManager, ITreeSelection)</B></A> -
Method in class org.eclipse.net4j.ui.<A HREF="./org/eclipse/net4j/ui/Net4jItemProvider.html" title="class in org.eclipse.net4j.ui">Net4jItemProvider</A>
<DD>&nbsp;
@@ -455,6 +460,9 @@ Method in interface org.eclipse.net4j.jvm.<A HREF="./org/eclipse/net4j/jvm/IJVMA
<DT><A HREF="./org/eclipse/net4j/tcp/ITCPAcceptor.html#getAddress()"><B>getAddress()</B></A> -
Method in interface org.eclipse.net4j.tcp.<A HREF="./org/eclipse/net4j/tcp/ITCPAcceptor.html" title="interface in org.eclipse.net4j.tcp">ITCPAcceptor</A>
<DD>&nbsp;
+<DT><A HREF="./org/eclipse/net4j/tcp/TCPUtil.AcceptorData.html#getAddress()"><B>getAddress()</B></A> -
+Method in class org.eclipse.net4j.tcp.<A HREF="./org/eclipse/net4j/tcp/TCPUtil.AcceptorData.html" title="class in org.eclipse.net4j.tcp">TCPUtil.AcceptorData</A>
+<DD>&nbsp;
<DT><A HREF="./org/eclipse/net4j/signal/RequestWithConfirmation.html#getAsyncExecutorService()"><B>getAsyncExecutorService()</B></A> -
Method in class org.eclipse.net4j.signal.<A HREF="./org/eclipse/net4j/signal/RequestWithConfirmation.html" title="class in org.eclipse.net4j.signal">RequestWithConfirmation</A>
<DD>&nbsp;
@@ -570,9 +578,6 @@ Method in class org.eclipse.net4j.ui.<A HREF="./org/eclipse/net4j/ui/AcceptorCon
<DT><A HREF="./org/eclipse/net4j/ui/ConnectorContentProvider.html#getElements(java.lang.Object)"><B>getElements(Object)</B></A> -
Method in class org.eclipse.net4j.ui.<A HREF="./org/eclipse/net4j/ui/ConnectorContentProvider.html" title="class in org.eclipse.net4j.ui">ConnectorContentProvider</A>
<DD>&nbsp;
-<DT><A HREF="./org/eclipse/net4j/ui/FactoryTypeContentProvider.html#getElements(java.lang.Object)"><B>getElements(Object)</B></A> -
-Method in class org.eclipse.net4j.ui.<A HREF="./org/eclipse/net4j/ui/FactoryTypeContentProvider.html" title="class in org.eclipse.net4j.ui">FactoryTypeContentProvider</A>
-<DD>&nbsp;
<DT><A HREF="./org/eclipse/net4j/buffer/BufferOutputStream.html#getError()"><B>getError()</B></A> -
Method in class org.eclipse.net4j.buffer.<A HREF="./org/eclipse/net4j/buffer/BufferOutputStream.html" title="class in org.eclipse.net4j.buffer">BufferOutputStream</A>
<DD>&nbsp;
@@ -609,6 +614,9 @@ Method in class org.eclipse.net4j.signal.heartbeat.<A HREF="./org/eclipse/net4j/
<DT><A HREF="./org/eclipse/net4j/tcp/ITCPConnector.html#getHost()"><B>getHost()</B></A> -
Method in interface org.eclipse.net4j.tcp.<A HREF="./org/eclipse/net4j/tcp/ITCPConnector.html" title="interface in org.eclipse.net4j.tcp">ITCPConnector</A>
<DD>&nbsp;
+<DT><A HREF="./org/eclipse/net4j/tcp/TCPUtil.ConnectorData.html#getHost()"><B>getHost()</B></A> -
+Method in class org.eclipse.net4j.tcp.<A HREF="./org/eclipse/net4j/tcp/TCPUtil.ConnectorData.html" title="class in org.eclipse.net4j.tcp">TCPUtil.ConnectorData</A>
+<DD>&nbsp;
<DT><A HREF="./org/eclipse/net4j/channel/IChannel.html#getID()"><B>getID()</B></A> -
Method in interface org.eclipse.net4j.channel.<A HREF="./org/eclipse/net4j/channel/IChannel.html" title="interface in org.eclipse.net4j.channel">IChannel</A>
<DD>Returns the ID of this channel.
@@ -704,12 +712,15 @@ Method in interface org.eclipse.net4j.tcp.<A HREF="./org/eclipse/net4j/tcp/ITCPA
<DT><A HREF="./org/eclipse/net4j/tcp/ITCPConnector.html#getPort()"><B>getPort()</B></A> -
Method in interface org.eclipse.net4j.tcp.<A HREF="./org/eclipse/net4j/tcp/ITCPConnector.html" title="interface in org.eclipse.net4j.tcp">ITCPConnector</A>
<DD>&nbsp;
+<DT><A HREF="./org/eclipse/net4j/tcp/TCPUtil.AcceptorData.html#getPort()"><B>getPort()</B></A> -
+Method in class org.eclipse.net4j.tcp.<A HREF="./org/eclipse/net4j/tcp/TCPUtil.AcceptorData.html" title="class in org.eclipse.net4j.tcp">TCPUtil.AcceptorData</A>
+<DD>&nbsp;
+<DT><A HREF="./org/eclipse/net4j/tcp/TCPUtil.ConnectorData.html#getPort()"><B>getPort()</B></A> -
+Method in class org.eclipse.net4j.tcp.<A HREF="./org/eclipse/net4j/tcp/TCPUtil.ConnectorData.html" title="class in org.eclipse.net4j.tcp">TCPUtil.ConnectorData</A>
+<DD>&nbsp;
<DT><A HREF="./org/eclipse/net4j/ContainerProtocolProvider.html#getProductGroup()"><B>getProductGroup()</B></A> -
Method in class org.eclipse.net4j.<A HREF="./org/eclipse/net4j/ContainerProtocolProvider.html" title="class in org.eclipse.net4j">ContainerProtocolProvider</A>
<DD>&nbsp;
-<DT><A HREF="./org/eclipse/net4j/ui/FactoryTypeContentProvider.html#getProductGroup()"><B>getProductGroup()</B></A> -
-Method in class org.eclipse.net4j.ui.<A HREF="./org/eclipse/net4j/ui/FactoryTypeContentProvider.html" title="class in org.eclipse.net4j.ui">FactoryTypeContentProvider</A>
-<DD>&nbsp;
<DT><A HREF="./org/eclipse/net4j/TransportConfigurator.html#getProperties(org.w3c.dom.Element, int)"><B>getProperties(Element, int)</B></A> -
Static method in class org.eclipse.net4j.<A HREF="./org/eclipse/net4j/TransportConfigurator.html" title="class in org.eclipse.net4j">TransportConfigurator</A>
<DD>&nbsp;
@@ -824,6 +835,9 @@ Method in interface org.eclipse.net4j.protocol.<A HREF="./org/eclipse/net4j/prot
<DT><A HREF="./org/eclipse/net4j/connector/IConnector.html#getURL()"><B>getURL()</B></A> -
Method in interface org.eclipse.net4j.connector.<A HREF="./org/eclipse/net4j/connector/IConnector.html" title="interface in org.eclipse.net4j.connector">IConnector</A>
<DD>&nbsp;
+<DT><A HREF="./org/eclipse/net4j/tcp/TCPUtil.ConnectorData.html#getUserID()"><B>getUserID()</B></A> -
+Method in class org.eclipse.net4j.tcp.<A HREF="./org/eclipse/net4j/tcp/TCPUtil.ConnectorData.html" title="class in org.eclipse.net4j.tcp">TCPUtil.ConnectorData</A>
+<DD>&nbsp;
<DT><A HREF="./org/eclipse/net4j/signal/wrapping/GZIPStreamWrapperInjector.html" title="class in org.eclipse.net4j.signal.wrapping"><B>GZIPStreamWrapperInjector</B></A> - Class in <A HREF="./org/eclipse/net4j/signal/wrapping/package-summary.html">org.eclipse.net4j.signal.wrapping</A><DD>An <A HREF="./org/eclipse/net4j/signal/wrapping/StreamWrapperInjector.html" title="class in org.eclipse.net4j.signal.wrapping"><CODE>injector</CODE></A> that injects <A HREF="../../org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/io/GZIPStreamWrapper.html?is-external=true" title="class or interface in org.eclipse.net4j.util.io"><CODE>GZIPStreamWrapper</CODE></A> instances.<DT><A HREF="./org/eclipse/net4j/signal/wrapping/GZIPStreamWrapperInjector.html#GZIPStreamWrapperInjector(java.lang.String)"><B>GZIPStreamWrapperInjector(String)</B></A> -
Constructor for class org.eclipse.net4j.signal.wrapping.<A HREF="./org/eclipse/net4j/signal/wrapping/GZIPStreamWrapperInjector.html" title="class in org.eclipse.net4j.signal.wrapping">GZIPStreamWrapperInjector</A>
<DD>&nbsp;
@@ -877,6 +891,12 @@ Method in class org.eclipse.net4j.signal.heartbeat.<A HREF="./org/eclipse/net4j/
<DT><A HREF="./org/eclipse/net4j/tcp/ITCPActiveSelectorListener.html#handleWrite(org.eclipse.net4j.tcp.ITCPSelector, java.nio.channels.SocketChannel)"><B>handleWrite(ITCPSelector, SocketChannel)</B></A> -
Method in interface org.eclipse.net4j.tcp.<A HREF="./org/eclipse/net4j/tcp/ITCPActiveSelectorListener.html" title="interface in org.eclipse.net4j.tcp">ITCPActiveSelectorListener</A>
<DD>&nbsp;
+<DT><A HREF="./org/eclipse/net4j/tcp/TCPUtil.AcceptorData.html#hashCode()"><B>hashCode()</B></A> -
+Method in class org.eclipse.net4j.tcp.<A HREF="./org/eclipse/net4j/tcp/TCPUtil.AcceptorData.html" title="class in org.eclipse.net4j.tcp">TCPUtil.AcceptorData</A>
+<DD>&nbsp;
+<DT><A HREF="./org/eclipse/net4j/tcp/TCPUtil.ConnectorData.html#hashCode()"><B>hashCode()</B></A> -
+Method in class org.eclipse.net4j.tcp.<A HREF="./org/eclipse/net4j/tcp/TCPUtil.ConnectorData.html" title="class in org.eclipse.net4j.tcp">TCPUtil.ConnectorData</A>
+<DD>&nbsp;
<DT><A HREF="./org/eclipse/net4j/buffer/IBuffer.html#HEADER_SIZE"><B>HEADER_SIZE</B></A> -
Static variable in interface org.eclipse.net4j.buffer.<A HREF="./org/eclipse/net4j/buffer/IBuffer.html" title="interface in org.eclipse.net4j.buffer">IBuffer</A>
<DD>&nbsp;
@@ -1078,6 +1098,9 @@ Method in interface org.eclipse.net4j.tcp.<A HREF="./org/eclipse/net4j/tcp/ITCPS
<A NAME="_P_"><!-- --></A><H2>
<B>P</B></H2>
<DL>
+<DT><A HREF="./org/eclipse/net4j/tcp/TCPUtil.html#PORT_SEPARATOR"><B>PORT_SEPARATOR</B></A> -
+Static variable in class org.eclipse.net4j.tcp.<A HREF="./org/eclipse/net4j/tcp/TCPUtil.html" title="class in org.eclipse.net4j.tcp">TCPUtil</A>
+<DD>&nbsp;
<DT><A HREF="./org/eclipse/net4j/http/HTTPUtil.html#prepareContainer(org.eclipse.net4j.util.container.IManagedContainer)"><B>prepareContainer(IManagedContainer)</B></A> -
Static method in class org.eclipse.net4j.http.<A HREF="./org/eclipse/net4j/http/HTTPUtil.html" title="class in org.eclipse.net4j.http">HTTPUtil</A>
<DD>&nbsp;
@@ -1409,7 +1432,31 @@ Constructor for class org.eclipse.net4j.signal.wrapping.<A HREF="./org/eclipse/n
<A NAME="_T_"><!-- --></A><H2>
<B>T</B></H2>
<DL>
-<DT><A HREF="./org/eclipse/net4j/tcp/TCPUtil.html" title="class in org.eclipse.net4j.tcp"><B>TCPUtil</B></A> - Class in <A HREF="./org/eclipse/net4j/tcp/package-summary.html">org.eclipse.net4j.tcp</A><DD>A utility class with static convenience methods.<DT><A HREF="./org/eclipse/net4j/buffer/BufferInputStream.html#toString()"><B>toString()</B></A> -
+<DT><A HREF="./org/eclipse/net4j/tcp/TCPUtil.html" title="class in org.eclipse.net4j.tcp"><B>TCPUtil</B></A> - Class in <A HREF="./org/eclipse/net4j/tcp/package-summary.html">org.eclipse.net4j.tcp</A><DD>A utility class with static convenience methods.<DT><A HREF="./org/eclipse/net4j/tcp/TCPUtil.AcceptorData.html" title="class in org.eclipse.net4j.tcp"><B>TCPUtil.AcceptorData</B></A> - Class in <A HREF="./org/eclipse/net4j/tcp/package-summary.html">org.eclipse.net4j.tcp</A><DD>Encapsulates the data needed to configure a <A HREF="./org/eclipse/net4j/tcp/ITCPAcceptor.html" title="interface in org.eclipse.net4j.tcp"><CODE>TCP acceptor</CODE></A>.<DT><A HREF="./org/eclipse/net4j/tcp/TCPUtil.AcceptorData.html#TCPUtil.AcceptorData()"><B>TCPUtil.AcceptorData()</B></A> -
+Constructor for class org.eclipse.net4j.tcp.<A HREF="./org/eclipse/net4j/tcp/TCPUtil.AcceptorData.html" title="class in org.eclipse.net4j.tcp">TCPUtil.AcceptorData</A>
+<DD>&nbsp;
+<DT><A HREF="./org/eclipse/net4j/tcp/TCPUtil.AcceptorData.html#TCPUtil.AcceptorData(java.lang.String, int)"><B>TCPUtil.AcceptorData(String, int)</B></A> -
+Constructor for class org.eclipse.net4j.tcp.<A HREF="./org/eclipse/net4j/tcp/TCPUtil.AcceptorData.html" title="class in org.eclipse.net4j.tcp">TCPUtil.AcceptorData</A>
+<DD>&nbsp;
+<DT><A HREF="./org/eclipse/net4j/tcp/TCPUtil.AcceptorData.html#TCPUtil.AcceptorData(java.lang.String)"><B>TCPUtil.AcceptorData(String)</B></A> -
+Constructor for class org.eclipse.net4j.tcp.<A HREF="./org/eclipse/net4j/tcp/TCPUtil.AcceptorData.html" title="class in org.eclipse.net4j.tcp">TCPUtil.AcceptorData</A>
+<DD>&nbsp;
+<DT><A HREF="./org/eclipse/net4j/tcp/TCPUtil.AcceptorData.html#TCPUtil.AcceptorData(org.eclipse.net4j.tcp.ITCPAcceptor)"><B>TCPUtil.AcceptorData(ITCPAcceptor)</B></A> -
+Constructor for class org.eclipse.net4j.tcp.<A HREF="./org/eclipse/net4j/tcp/TCPUtil.AcceptorData.html" title="class in org.eclipse.net4j.tcp">TCPUtil.AcceptorData</A>
+<DD>&nbsp;
+<DT><A HREF="./org/eclipse/net4j/tcp/TCPUtil.ConnectorData.html" title="class in org.eclipse.net4j.tcp"><B>TCPUtil.ConnectorData</B></A> - Class in <A HREF="./org/eclipse/net4j/tcp/package-summary.html">org.eclipse.net4j.tcp</A><DD>Encapsulates the data needed to configure a <A HREF="./org/eclipse/net4j/tcp/ITCPConnector.html" title="interface in org.eclipse.net4j.tcp"><CODE>TCP connector</CODE></A>.<DT><A HREF="./org/eclipse/net4j/tcp/TCPUtil.ConnectorData.html#TCPUtil.ConnectorData()"><B>TCPUtil.ConnectorData()</B></A> -
+Constructor for class org.eclipse.net4j.tcp.<A HREF="./org/eclipse/net4j/tcp/TCPUtil.ConnectorData.html" title="class in org.eclipse.net4j.tcp">TCPUtil.ConnectorData</A>
+<DD>&nbsp;
+<DT><A HREF="./org/eclipse/net4j/tcp/TCPUtil.ConnectorData.html#TCPUtil.ConnectorData(java.lang.String, int, java.lang.String)"><B>TCPUtil.ConnectorData(String, int, String)</B></A> -
+Constructor for class org.eclipse.net4j.tcp.<A HREF="./org/eclipse/net4j/tcp/TCPUtil.ConnectorData.html" title="class in org.eclipse.net4j.tcp">TCPUtil.ConnectorData</A>
+<DD>&nbsp;
+<DT><A HREF="./org/eclipse/net4j/tcp/TCPUtil.ConnectorData.html#TCPUtil.ConnectorData(java.lang.String)"><B>TCPUtil.ConnectorData(String)</B></A> -
+Constructor for class org.eclipse.net4j.tcp.<A HREF="./org/eclipse/net4j/tcp/TCPUtil.ConnectorData.html" title="class in org.eclipse.net4j.tcp">TCPUtil.ConnectorData</A>
+<DD>&nbsp;
+<DT><A HREF="./org/eclipse/net4j/tcp/TCPUtil.ConnectorData.html#TCPUtil.ConnectorData(org.eclipse.net4j.tcp.ITCPConnector)"><B>TCPUtil.ConnectorData(ITCPConnector)</B></A> -
+Constructor for class org.eclipse.net4j.tcp.<A HREF="./org/eclipse/net4j/tcp/TCPUtil.ConnectorData.html" title="class in org.eclipse.net4j.tcp">TCPUtil.ConnectorData</A>
+<DD>&nbsp;
+<DT><A HREF="./org/eclipse/net4j/buffer/BufferInputStream.html#toString()"><B>toString()</B></A> -
Method in class org.eclipse.net4j.buffer.<A HREF="./org/eclipse/net4j/buffer/BufferInputStream.html" title="class in org.eclipse.net4j.buffer">BufferInputStream</A>
<DD>&nbsp;
<DT><A HREF="./org/eclipse/net4j/buffer/BufferOutputStream.html#toString()"><B>toString()</B></A> -
@@ -1427,6 +1474,12 @@ Method in class org.eclipse.net4j.signal.<A HREF="./org/eclipse/net4j/signal/Sig
<DT><A HREF="./org/eclipse/net4j/signal/SignalProtocol.html#toString()"><B>toString()</B></A> -
Method in class org.eclipse.net4j.signal.<A HREF="./org/eclipse/net4j/signal/SignalProtocol.html" title="class in org.eclipse.net4j.signal">SignalProtocol</A>
<DD>&nbsp;
+<DT><A HREF="./org/eclipse/net4j/tcp/TCPUtil.AcceptorData.html#toString()"><B>toString()</B></A> -
+Method in class org.eclipse.net4j.tcp.<A HREF="./org/eclipse/net4j/tcp/TCPUtil.AcceptorData.html" title="class in org.eclipse.net4j.tcp">TCPUtil.AcceptorData</A>
+<DD>&nbsp;
+<DT><A HREF="./org/eclipse/net4j/tcp/TCPUtil.ConnectorData.html#toString()"><B>toString()</B></A> -
+Method in class org.eclipse.net4j.tcp.<A HREF="./org/eclipse/net4j/tcp/TCPUtil.ConnectorData.html" title="class in org.eclipse.net4j.tcp">TCPUtil.ConnectorData</A>
+<DD>&nbsp;
<DT><A HREF="./org/eclipse/net4j/TransportConfigurator.html" title="class in org.eclipse.net4j"><B>TransportConfigurator</B></A> - Class in <A HREF="./org/eclipse/net4j/package-summary.html">org.eclipse.net4j</A><DD>Reads an XML config file and creates, wires and starts the configured <A HREF="./org/eclipse/net4j/acceptor/IAcceptor.html" title="interface in org.eclipse.net4j.acceptor"><CODE>acceptors</CODE></A>.<DT><A HREF="./org/eclipse/net4j/TransportConfigurator.html#TransportConfigurator(org.eclipse.net4j.util.container.IManagedContainer)"><B>TransportConfigurator(IManagedContainer)</B></A> -
Constructor for class org.eclipse.net4j.<A HREF="./org/eclipse/net4j/TransportConfigurator.html" title="class in org.eclipse.net4j">TransportConfigurator</A>
<DD>&nbsp;
diff --git a/plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/signal/SignalProtocol.html b/plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/signal/SignalProtocol.html
index 6cd02b296b..079fa35ad8 100644
--- a/plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/signal/SignalProtocol.html
+++ b/plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/signal/SignalProtocol.html
@@ -163,6 +163,16 @@ The default implementation of a <A HREF="../../../../org/eclipse/net4j/signal/IS
</TR>
</TABLE>
&nbsp;
+<A NAME="nested_classes_inherited_from_class_org.eclipse.net4j.util.lifecycle.ILifecycle"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Nested classes/interfaces inherited from interface org.eclipse.net4j.util.lifecycle.<A HREF="../../../../../../org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/lifecycle/ILifecycle.html?is-external=true" title="class or interface in org.eclipse.net4j.util.lifecycle">ILifecycle</A></B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../../org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/lifecycle/ILifecycle.DeferrableActivation.html?is-external=true" title="class or interface in org.eclipse.net4j.util.lifecycle">ILifecycle.DeferrableActivation</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
<!-- =========== FIELD SUMMARY =========== -->
<A NAME="field_summary"><!-- --></A>
diff --git a/plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/signal/heartbeat/HeartBeatProtocol.Server.html b/plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/signal/heartbeat/HeartBeatProtocol.Server.html
index a1c8c33e25..f6620d3a05 100644
--- a/plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/signal/heartbeat/HeartBeatProtocol.Server.html
+++ b/plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/signal/heartbeat/HeartBeatProtocol.Server.html
@@ -174,6 +174,16 @@ The server-side implementation of a <A HREF="../../../../../org/eclipse/net4j/si
</TR>
</TABLE>
&nbsp;
+<A NAME="nested_classes_inherited_from_class_org.eclipse.net4j.util.lifecycle.ILifecycle"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Nested classes/interfaces inherited from interface org.eclipse.net4j.util.lifecycle.<A HREF="../../../../../../../org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/lifecycle/ILifecycle.html?is-external=true" title="class or interface in org.eclipse.net4j.util.lifecycle">ILifecycle</A></B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../../../org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/lifecycle/ILifecycle.DeferrableActivation.html?is-external=true" title="class or interface in org.eclipse.net4j.util.lifecycle">ILifecycle.DeferrableActivation</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
<!-- =========== FIELD SUMMARY =========== -->
<A NAME="field_summary"><!-- --></A>
diff --git a/plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/signal/heartbeat/HeartBeatProtocol.html b/plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/signal/heartbeat/HeartBeatProtocol.html
index 4432a9e2ab..f787e2410b 100644
--- a/plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/signal/heartbeat/HeartBeatProtocol.html
+++ b/plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/signal/heartbeat/HeartBeatProtocol.html
@@ -167,6 +167,16 @@ A <A HREF="../../../../../org/eclipse/net4j/signal/SignalProtocol.html" title="c
</TR>
</TABLE>
&nbsp;
+<A NAME="nested_classes_inherited_from_class_org.eclipse.net4j.util.lifecycle.ILifecycle"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Nested classes/interfaces inherited from interface org.eclipse.net4j.util.lifecycle.<A HREF="../../../../../../../org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/lifecycle/ILifecycle.html?is-external=true" title="class or interface in org.eclipse.net4j.util.lifecycle">ILifecycle</A></B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../../../org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/lifecycle/ILifecycle.DeferrableActivation.html?is-external=true" title="class or interface in org.eclipse.net4j.util.lifecycle">ILifecycle.DeferrableActivation</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
<!-- =========== FIELD SUMMARY =========== -->
<A NAME="field_summary"><!-- --></A>
diff --git a/plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/tcp/TCPUtil.AcceptorData.html b/plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/tcp/TCPUtil.AcceptorData.html
new file mode 100644
index 0000000000..23cbc92193
--- /dev/null
+++ b/plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/tcp/TCPUtil.AcceptorData.html
@@ -0,0 +1,400 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+
+<TITLE>
+TCPUtil.AcceptorData (Net4j Signalling Platform Documentation)
+</TITLE>
+
+<META NAME="date" CONTENT="">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../html/book.css" TITLE="Style">
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+ if (location.href.indexOf('is-external=true') == -1) {
+ parent.document.title="TCPUtil.AcceptorData (Net4j Signalling Platform Documentation)";
+ }
+}
+</SCRIPT>
+<NOSCRIPT>
+</NOSCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+<HR>
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+ <TR ALIGN="center" VALIGN="top">
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/TCPUtil.AcceptorData.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+ </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../org/eclipse/net4j/tcp/TCPUtil.html" title="class in org.eclipse.net4j.tcp"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../org/eclipse/net4j/tcp/TCPUtil.ConnectorData.html" title="class in org.eclipse.net4j.tcp"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ <A HREF="../../../../index.html?org/eclipse/net4j/tcp/TCPUtil.AcceptorData.html" target="_top"><B>FRAMES</B></A> &nbsp;
+&nbsp;<A HREF="TCPUtil.AcceptorData.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+ <!--
+ if(window==top) {
+ document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+ }
+ //-->
+</SCRIPT>
+<NOSCRIPT>
+ <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+ SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+org.eclipse.net4j.tcp</FONT>
+<BR>
+Class TCPUtil.AcceptorData</H2>
+<PRE>
+<A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</A>
+ <IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><B>org.eclipse.net4j.tcp.TCPUtil.AcceptorData</B>
+</PRE>
+<DL>
+<DT><B>Enclosing class:</B><DD><A HREF="../../../../org/eclipse/net4j/tcp/TCPUtil.html" title="class in org.eclipse.net4j.tcp">TCPUtil</A></DD>
+</DL>
+<HR>
+<DL>
+ <DT>public static final class <B>TCPUtil.AcceptorData</B>
+ <DD>extends <A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A>
+</DL>
+
+<map id="APIVIZ" name="APIVIZ">
+<area shape="rect" id="node1" href="TCPUtil.AcceptorData.html" title="TCPUtil.AcceptorData" alt="" coords="5,6,155,31"/>
+</map>
+
+<CENTER><IMG SRC="TCPUtil.AcceptorData.png" USEMAP="#APIVIZ" BORDER="0"></CENTER>
+
+
+
+<P>
+Encapsulates the data needed to configure a <A HREF="../../../../org/eclipse/net4j/tcp/ITCPAcceptor.html" title="interface in org.eclipse.net4j.tcp"><CODE>TCP acceptor</CODE></A>.
+<P>
+
+<P>
+<DL>
+<DT><B>Since:</B></DT>
+ <DD>4.1</DD>
+</DL>
+<HR>
+
+<P>
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../org/eclipse/net4j/tcp/TCPUtil.AcceptorData.html#TCPUtil.AcceptorData()">TCPUtil.AcceptorData</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../org/eclipse/net4j/tcp/TCPUtil.AcceptorData.html#TCPUtil.AcceptorData(org.eclipse.net4j.tcp.ITCPAcceptor)">TCPUtil.AcceptorData</A></B>(<A HREF="../../../../org/eclipse/net4j/tcp/ITCPAcceptor.html" title="interface in org.eclipse.net4j.tcp">ITCPAcceptor</A>&nbsp;acceptor)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../org/eclipse/net4j/tcp/TCPUtil.AcceptorData.html#TCPUtil.AcceptorData(java.lang.String)">TCPUtil.AcceptorData</A></B>(<A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>&nbsp;description)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../org/eclipse/net4j/tcp/TCPUtil.AcceptorData.html#TCPUtil.AcceptorData(java.lang.String, int)">TCPUtil.AcceptorData</A></B>(<A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>&nbsp;address,
+ int&nbsp;port)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../org/eclipse/net4j/tcp/TCPUtil.AcceptorData.html#equals(java.lang.Object)">equals</A></B>(<A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A>&nbsp;obj)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../org/eclipse/net4j/tcp/TCPUtil.AcceptorData.html#getAddress()">getAddress</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../org/eclipse/net4j/tcp/TCPUtil.AcceptorData.html#getPort()">getPort</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../org/eclipse/net4j/tcp/TCPUtil.AcceptorData.html#hashCode()">hashCode</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../org/eclipse/net4j/tcp/TCPUtil.AcceptorData.html#toString()">toString</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A></B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TH>
+</TR>
+</TABLE>
+
+<A NAME="TCPUtil.AcceptorData()"><!-- --></A><H3>
+TCPUtil.AcceptorData</H3>
+<PRE>
+public <B>TCPUtil.AcceptorData</B>()</PRE>
+<DL>
+</DL>
+<HR>
+
+<A NAME="TCPUtil.AcceptorData(java.lang.String, int)"><!-- --></A><H3>
+TCPUtil.AcceptorData</H3>
+<PRE>
+public <B>TCPUtil.AcceptorData</B>(<A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>&nbsp;address,
+ int&nbsp;port)</PRE>
+<DL>
+</DL>
+<HR>
+
+<A NAME="TCPUtil.AcceptorData(java.lang.String)"><!-- --></A><H3>
+TCPUtil.AcceptorData</H3>
+<PRE>
+public <B>TCPUtil.AcceptorData</B>(<A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>&nbsp;description)</PRE>
+<DL>
+</DL>
+<HR>
+
+<A NAME="TCPUtil.AcceptorData(org.eclipse.net4j.tcp.ITCPAcceptor)"><!-- --></A><H3>
+TCPUtil.AcceptorData</H3>
+<PRE>
+public <B>TCPUtil.AcceptorData</B>(<A HREF="../../../../org/eclipse/net4j/tcp/ITCPAcceptor.html" title="interface in org.eclipse.net4j.tcp">ITCPAcceptor</A>&nbsp;acceptor)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TH>
+</TR>
+</TABLE>
+
+<A NAME="getAddress()"><!-- --></A><H3>
+getAddress</H3>
+<PRE>
+public <A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A> <B>getAddress</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getPort()"><!-- --></A><H3>
+getPort</H3>
+<PRE>
+public int <B>getPort</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="hashCode()"><!-- --></A><H3>
+hashCode</H3>
+<PRE>
+public int <B>hashCode</B>()</PRE>
+<DL>
+<DD><DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#hashCode()" title="class or interface in java.lang">hashCode</A></CODE> in class <CODE><A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="equals(java.lang.Object)"><!-- --></A><H3>
+equals</H3>
+<PRE>
+public boolean <B>equals</B>(<A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A>&nbsp;obj)</PRE>
+<DL>
+<DD><DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#equals(java.lang.Object)" title="class or interface in java.lang">equals</A></CODE> in class <CODE><A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="toString()"><!-- --></A><H3>
+toString</H3>
+<PRE>
+public <A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A> <B>toString</B>()</PRE>
+<DL>
+<DD><DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang">toString</A></CODE> in class <CODE><A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+ <TR ALIGN="center" VALIGN="top">
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/TCPUtil.AcceptorData.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+ </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../org/eclipse/net4j/tcp/TCPUtil.html" title="class in org.eclipse.net4j.tcp"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../org/eclipse/net4j/tcp/TCPUtil.ConnectorData.html" title="class in org.eclipse.net4j.tcp"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ <A HREF="../../../../index.html?org/eclipse/net4j/tcp/TCPUtil.AcceptorData.html" target="_top"><B>FRAMES</B></A> &nbsp;
+&nbsp;<A HREF="TCPUtil.AcceptorData.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+ <!--
+ if(window==top) {
+ document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+ }
+ //-->
+</SCRIPT>
+<NOSCRIPT>
+ <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+ SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+<i>Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.</i>
+</BODY>
+</HTML>
diff --git a/plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/tcp/TCPUtil.AcceptorData.png b/plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/tcp/TCPUtil.AcceptorData.png
new file mode 100644
index 0000000000..eaccffb0e1
--- /dev/null
+++ b/plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/tcp/TCPUtil.AcceptorData.png
Binary files differ
diff --git a/plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/tcp/TCPUtil.ConnectorData.html b/plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/tcp/TCPUtil.ConnectorData.html
new file mode 100644
index 0000000000..1930b2218e
--- /dev/null
+++ b/plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/tcp/TCPUtil.ConnectorData.html
@@ -0,0 +1,421 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+
+<TITLE>
+TCPUtil.ConnectorData (Net4j Signalling Platform Documentation)
+</TITLE>
+
+<META NAME="date" CONTENT="">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../html/book.css" TITLE="Style">
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+ if (location.href.indexOf('is-external=true') == -1) {
+ parent.document.title="TCPUtil.ConnectorData (Net4j Signalling Platform Documentation)";
+ }
+}
+</SCRIPT>
+<NOSCRIPT>
+</NOSCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+<HR>
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+ <TR ALIGN="center" VALIGN="top">
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/TCPUtil.ConnectorData.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+ </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../org/eclipse/net4j/tcp/TCPUtil.AcceptorData.html" title="class in org.eclipse.net4j.tcp"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ <A HREF="../../../../index.html?org/eclipse/net4j/tcp/TCPUtil.ConnectorData.html" target="_top"><B>FRAMES</B></A> &nbsp;
+&nbsp;<A HREF="TCPUtil.ConnectorData.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+ <!--
+ if(window==top) {
+ document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+ }
+ //-->
+</SCRIPT>
+<NOSCRIPT>
+ <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+ SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+org.eclipse.net4j.tcp</FONT>
+<BR>
+Class TCPUtil.ConnectorData</H2>
+<PRE>
+<A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</A>
+ <IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><B>org.eclipse.net4j.tcp.TCPUtil.ConnectorData</B>
+</PRE>
+<DL>
+<DT><B>Enclosing class:</B><DD><A HREF="../../../../org/eclipse/net4j/tcp/TCPUtil.html" title="class in org.eclipse.net4j.tcp">TCPUtil</A></DD>
+</DL>
+<HR>
+<DL>
+ <DT>public static final class <B>TCPUtil.ConnectorData</B>
+ <DD>extends <A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A>
+</DL>
+
+<map id="APIVIZ" name="APIVIZ">
+<area shape="rect" id="node1" href="TCPUtil.ConnectorData.html" title="TCPUtil.ConnectorData" alt="" coords="5,6,160,31"/>
+</map>
+
+<CENTER><IMG SRC="TCPUtil.ConnectorData.png" USEMAP="#APIVIZ" BORDER="0"></CENTER>
+
+
+
+<P>
+Encapsulates the data needed to configure a <A HREF="../../../../org/eclipse/net4j/tcp/ITCPConnector.html" title="interface in org.eclipse.net4j.tcp"><CODE>TCP connector</CODE></A>.
+<P>
+
+<P>
+<DL>
+<DT><B>Since:</B></DT>
+ <DD>4.1</DD>
+</DL>
+<HR>
+
+<P>
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../org/eclipse/net4j/tcp/TCPUtil.ConnectorData.html#TCPUtil.ConnectorData()">TCPUtil.ConnectorData</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../org/eclipse/net4j/tcp/TCPUtil.ConnectorData.html#TCPUtil.ConnectorData(org.eclipse.net4j.tcp.ITCPConnector)">TCPUtil.ConnectorData</A></B>(<A HREF="../../../../org/eclipse/net4j/tcp/ITCPConnector.html" title="interface in org.eclipse.net4j.tcp">ITCPConnector</A>&nbsp;connector)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../org/eclipse/net4j/tcp/TCPUtil.ConnectorData.html#TCPUtil.ConnectorData(java.lang.String)">TCPUtil.ConnectorData</A></B>(<A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>&nbsp;description)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../org/eclipse/net4j/tcp/TCPUtil.ConnectorData.html#TCPUtil.ConnectorData(java.lang.String, int, java.lang.String)">TCPUtil.ConnectorData</A></B>(<A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>&nbsp;host,
+ int&nbsp;port,
+ <A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>&nbsp;userID)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../org/eclipse/net4j/tcp/TCPUtil.ConnectorData.html#equals(java.lang.Object)">equals</A></B>(<A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A>&nbsp;obj)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../org/eclipse/net4j/tcp/TCPUtil.ConnectorData.html#getHost()">getHost</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../org/eclipse/net4j/tcp/TCPUtil.ConnectorData.html#getPort()">getPort</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../org/eclipse/net4j/tcp/TCPUtil.ConnectorData.html#getUserID()">getUserID</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../org/eclipse/net4j/tcp/TCPUtil.ConnectorData.html#hashCode()">hashCode</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../org/eclipse/net4j/tcp/TCPUtil.ConnectorData.html#toString()">toString</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A></B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TH>
+</TR>
+</TABLE>
+
+<A NAME="TCPUtil.ConnectorData()"><!-- --></A><H3>
+TCPUtil.ConnectorData</H3>
+<PRE>
+public <B>TCPUtil.ConnectorData</B>()</PRE>
+<DL>
+</DL>
+<HR>
+
+<A NAME="TCPUtil.ConnectorData(java.lang.String, int, java.lang.String)"><!-- --></A><H3>
+TCPUtil.ConnectorData</H3>
+<PRE>
+public <B>TCPUtil.ConnectorData</B>(<A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>&nbsp;host,
+ int&nbsp;port,
+ <A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>&nbsp;userID)</PRE>
+<DL>
+</DL>
+<HR>
+
+<A NAME="TCPUtil.ConnectorData(java.lang.String)"><!-- --></A><H3>
+TCPUtil.ConnectorData</H3>
+<PRE>
+public <B>TCPUtil.ConnectorData</B>(<A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>&nbsp;description)</PRE>
+<DL>
+</DL>
+<HR>
+
+<A NAME="TCPUtil.ConnectorData(org.eclipse.net4j.tcp.ITCPConnector)"><!-- --></A><H3>
+TCPUtil.ConnectorData</H3>
+<PRE>
+public <B>TCPUtil.ConnectorData</B>(<A HREF="../../../../org/eclipse/net4j/tcp/ITCPConnector.html" title="interface in org.eclipse.net4j.tcp">ITCPConnector</A>&nbsp;connector)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TH>
+</TR>
+</TABLE>
+
+<A NAME="getHost()"><!-- --></A><H3>
+getHost</H3>
+<PRE>
+public <A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A> <B>getHost</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getPort()"><!-- --></A><H3>
+getPort</H3>
+<PRE>
+public int <B>getPort</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getUserID()"><!-- --></A><H3>
+getUserID</H3>
+<PRE>
+public <A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A> <B>getUserID</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="hashCode()"><!-- --></A><H3>
+hashCode</H3>
+<PRE>
+public int <B>hashCode</B>()</PRE>
+<DL>
+<DD><DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#hashCode()" title="class or interface in java.lang">hashCode</A></CODE> in class <CODE><A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="equals(java.lang.Object)"><!-- --></A><H3>
+equals</H3>
+<PRE>
+public boolean <B>equals</B>(<A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A>&nbsp;obj)</PRE>
+<DL>
+<DD><DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#equals(java.lang.Object)" title="class or interface in java.lang">equals</A></CODE> in class <CODE><A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="toString()"><!-- --></A><H3>
+toString</H3>
+<PRE>
+public <A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A> <B>toString</B>()</PRE>
+<DL>
+<DD><DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang">toString</A></CODE> in class <CODE><A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+ <TR ALIGN="center" VALIGN="top">
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/TCPUtil.ConnectorData.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+ </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../org/eclipse/net4j/tcp/TCPUtil.AcceptorData.html" title="class in org.eclipse.net4j.tcp"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ <A HREF="../../../../index.html?org/eclipse/net4j/tcp/TCPUtil.ConnectorData.html" target="_top"><B>FRAMES</B></A> &nbsp;
+&nbsp;<A HREF="TCPUtil.ConnectorData.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+ <!--
+ if(window==top) {
+ document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+ }
+ //-->
+</SCRIPT>
+<NOSCRIPT>
+ <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+ SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+<i>Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.</i>
+</BODY>
+</HTML>
diff --git a/plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/tcp/TCPUtil.ConnectorData.png b/plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/tcp/TCPUtil.ConnectorData.png
new file mode 100644
index 0000000000..94bee7d8a9
--- /dev/null
+++ b/plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/tcp/TCPUtil.ConnectorData.png
Binary files differ
diff --git a/plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/tcp/TCPUtil.html b/plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/tcp/TCPUtil.html
index 9234a13185..345648cb21 100644
--- a/plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/tcp/TCPUtil.html
+++ b/plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/tcp/TCPUtil.html
@@ -56,7 +56,7 @@ function windowTitle()
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../../../org/eclipse/net4j/tcp/ITCPSelector.html" title="interface in org.eclipse.net4j.tcp"><B>PREV CLASS</B></A>&nbsp;
-&nbsp;NEXT CLASS</FONT></TD>
+&nbsp;<A HREF="../../../../org/eclipse/net4j/tcp/TCPUtil.AcceptorData.html" title="class in org.eclipse.net4j.tcp"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../../../index.html?org/eclipse/net4j/tcp/TCPUtil.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="TCPUtil.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
@@ -76,9 +76,9 @@ function windowTitle()
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
- SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+ SUMMARY:&nbsp;<A HREF="#nested_class_summary">NESTED</A>&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
-DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_top"></A>
@@ -117,7 +117,65 @@ A utility class with static convenience methods.
<HR>
<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+<A NAME="nested_class_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
+<B>Nested Class Summary</B></FONT></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;class</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../org/eclipse/net4j/tcp/TCPUtil.AcceptorData.html" title="class in org.eclipse.net4j.tcp">TCPUtil.AcceptorData</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Encapsulates the data needed to configure a <A HREF="../../../../org/eclipse/net4j/tcp/ITCPAcceptor.html" title="interface in org.eclipse.net4j.tcp"><CODE>TCP acceptor</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;class</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../org/eclipse/net4j/tcp/TCPUtil.ConnectorData.html" title="class in org.eclipse.net4j.tcp">TCPUtil.ConnectorData</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Encapsulates the data needed to configure a <A HREF="../../../../org/eclipse/net4j/tcp/ITCPConnector.html" title="interface in org.eclipse.net4j.tcp"><CODE>TCP connector</CODE></A>.</TD>
+</TR>
+</TABLE>
+&nbsp;<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../org/eclipse/net4j/tcp/TCPUtil.html#CREDENTIALS_SEPARATOR">CREDENTIALS_SEPARATOR</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../org/eclipse/net4j/tcp/TCPUtil.html#FACTORY_TYPE">FACTORY_TYPE</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../org/eclipse/net4j/tcp/TCPUtil.html#PORT_SEPARATOR">PORT_SEPARATOR</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
<!-- ========== METHOD SUMMARY =========== -->
<A NAME="method_summary"><!-- --></A>
@@ -165,6 +223,51 @@ A utility class with static convenience methods.
&nbsp;
<P>
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TH>
+</TR>
+</TABLE>
+
+<A NAME="FACTORY_TYPE"><!-- --></A><H3>
+FACTORY_TYPE</H3>
+<PRE>
+public static final <A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A> <B>FACTORY_TYPE</B></PRE>
+<DL>
+<DL>
+<DT><B>Since:</B></DT>
+ <DD>4.1</DD>
+<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#org.eclipse.net4j.tcp.TCPUtil.FACTORY_TYPE">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="PORT_SEPARATOR"><!-- --></A><H3>
+PORT_SEPARATOR</H3>
+<PRE>
+public static final <A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A> <B>PORT_SEPARATOR</B></PRE>
+<DL>
+<DL>
+<DT><B>Since:</B></DT>
+ <DD>4.1</DD>
+<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#org.eclipse.net4j.tcp.TCPUtil.PORT_SEPARATOR">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="CREDENTIALS_SEPARATOR"><!-- --></A><H3>
+CREDENTIALS_SEPARATOR</H3>
+<PRE>
+public static final <A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A> <B>CREDENTIALS_SEPARATOR</B></PRE>
+<DL>
+<DL>
+<DT><B>Since:</B></DT>
+ <DD>4.1</DD>
+<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#org.eclipse.net4j.tcp.TCPUtil.CREDENTIALS_SEPARATOR">Constant Field Values</A></DL>
+</DL>
+
<!-- ============ METHOD DETAIL ========== -->
<A NAME="method_detail"><!-- --></A>
@@ -239,7 +342,7 @@ public static <A HREF="../../../../org/eclipse/net4j/tcp/ITCPConnector.html" tit
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../../../org/eclipse/net4j/tcp/ITCPSelector.html" title="interface in org.eclipse.net4j.tcp"><B>PREV CLASS</B></A>&nbsp;
-&nbsp;NEXT CLASS</FONT></TD>
+&nbsp;<A HREF="../../../../org/eclipse/net4j/tcp/TCPUtil.AcceptorData.html" title="class in org.eclipse.net4j.tcp"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../../../index.html?org/eclipse/net4j/tcp/TCPUtil.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="TCPUtil.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
@@ -259,9 +362,9 @@ public static <A HREF="../../../../org/eclipse/net4j/tcp/ITCPConnector.html" tit
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
- SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+ SUMMARY:&nbsp;<A HREF="#nested_class_summary">NESTED</A>&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
-DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_bottom"></A>
diff --git a/plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/tcp/class-use/ITCPAcceptor.html b/plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/tcp/class-use/ITCPAcceptor.html
index 3c3ea5842d..226bc681cf 100644
--- a/plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/tcp/class-use/ITCPAcceptor.html
+++ b/plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/tcp/class-use/ITCPAcceptor.html
@@ -126,6 +126,20 @@ Uses of <A HREF="../../../../../org/eclipse/net4j/tcp/ITCPAcceptor.html" title="
</TABLE>
&nbsp;
<P>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left" COLSPAN="2">Constructors in <A HREF="../../../../../org/eclipse/net4j/tcp/package-summary.html">org.eclipse.net4j.tcp</A> with parameters of type <A HREF="../../../../../org/eclipse/net4j/tcp/ITCPAcceptor.html" title="interface in org.eclipse.net4j.tcp">ITCPAcceptor</A></FONT></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../org/eclipse/net4j/tcp/TCPUtil.AcceptorData.html#TCPUtil.AcceptorData(org.eclipse.net4j.tcp.ITCPAcceptor)">TCPUtil.AcceptorData</A></B>(<A HREF="../../../../../org/eclipse/net4j/tcp/ITCPAcceptor.html" title="interface in org.eclipse.net4j.tcp">ITCPAcceptor</A>&nbsp;acceptor)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
<A NAME="org.eclipse.net4j.tcp.ssl"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
diff --git a/plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/tcp/class-use/ITCPConnector.html b/plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/tcp/class-use/ITCPConnector.html
index f59955830a..57db9c959a 100644
--- a/plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/tcp/class-use/ITCPConnector.html
+++ b/plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/tcp/class-use/ITCPConnector.html
@@ -134,6 +134,20 @@ Uses of <A HREF="../../../../../org/eclipse/net4j/tcp/ITCPConnector.html" title=
</TABLE>
&nbsp;
<P>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left" COLSPAN="2">Constructors in <A HREF="../../../../../org/eclipse/net4j/tcp/package-summary.html">org.eclipse.net4j.tcp</A> with parameters of type <A HREF="../../../../../org/eclipse/net4j/tcp/ITCPConnector.html" title="interface in org.eclipse.net4j.tcp">ITCPConnector</A></FONT></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../org/eclipse/net4j/tcp/TCPUtil.ConnectorData.html#TCPUtil.ConnectorData(org.eclipse.net4j.tcp.ITCPConnector)">TCPUtil.ConnectorData</A></B>(<A HREF="../../../../../org/eclipse/net4j/tcp/ITCPConnector.html" title="interface in org.eclipse.net4j.tcp">ITCPConnector</A>&nbsp;connector)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
<A NAME="org.eclipse.net4j.tcp.ssl"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
diff --git a/plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/tcp/class-use/TCPUtil.AcceptorData.html b/plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/tcp/class-use/TCPUtil.AcceptorData.html
new file mode 100644
index 0000000000..85311b1f55
--- /dev/null
+++ b/plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/tcp/class-use/TCPUtil.AcceptorData.html
@@ -0,0 +1,143 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+
+<TITLE>
+Uses of Class org.eclipse.net4j.tcp.TCPUtil.AcceptorData (Net4j Signalling Platform Documentation)
+</TITLE>
+
+<META NAME="date" CONTENT="">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../../html/book.css" TITLE="Style">
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+ if (location.href.indexOf('is-external=true') == -1) {
+ parent.document.title="Uses of Class org.eclipse.net4j.tcp.TCPUtil.AcceptorData (Net4j Signalling Platform Documentation)";
+ }
+}
+</SCRIPT>
+<NOSCRIPT>
+</NOSCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+<HR>
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+ <TR ALIGN="center" VALIGN="top">
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../org/eclipse/net4j/tcp/TCPUtil.AcceptorData.html" title="class in org.eclipse.net4j.tcp"><FONT CLASS="NavBarFont1"><B>Class</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Use</B></FONT>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+ </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ <A HREF="../../../../../index.html?org/eclipse/net4j/tcp/\class-useTCPUtil.AcceptorData.html" target="_top"><B>FRAMES</B></A> &nbsp;
+&nbsp;<A HREF="TCPUtil.AcceptorData.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+ <!--
+ if(window==top) {
+ document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+ }
+ //-->
+</SCRIPT>
+<NOSCRIPT>
+ <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H2>
+<B>Uses of Class<br>org.eclipse.net4j.tcp.TCPUtil.AcceptorData</B></H2>
+</CENTER>
+No usage of org.eclipse.net4j.tcp.TCPUtil.AcceptorData
+<P>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+ <TR ALIGN="center" VALIGN="top">
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../org/eclipse/net4j/tcp/TCPUtil.AcceptorData.html" title="class in org.eclipse.net4j.tcp"><FONT CLASS="NavBarFont1"><B>Class</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Use</B></FONT>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+ </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ <A HREF="../../../../../index.html?org/eclipse/net4j/tcp/\class-useTCPUtil.AcceptorData.html" target="_top"><B>FRAMES</B></A> &nbsp;
+&nbsp;<A HREF="TCPUtil.AcceptorData.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+ <!--
+ if(window==top) {
+ document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+ }
+ //-->
+</SCRIPT>
+<NOSCRIPT>
+ <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+<i>Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.</i>
+</BODY>
+</HTML>
diff --git a/plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/tcp/class-use/TCPUtil.ConnectorData.html b/plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/tcp/class-use/TCPUtil.ConnectorData.html
new file mode 100644
index 0000000000..bdcbd96ac3
--- /dev/null
+++ b/plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/tcp/class-use/TCPUtil.ConnectorData.html
@@ -0,0 +1,143 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+
+<TITLE>
+Uses of Class org.eclipse.net4j.tcp.TCPUtil.ConnectorData (Net4j Signalling Platform Documentation)
+</TITLE>
+
+<META NAME="date" CONTENT="">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../../html/book.css" TITLE="Style">
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+ if (location.href.indexOf('is-external=true') == -1) {
+ parent.document.title="Uses of Class org.eclipse.net4j.tcp.TCPUtil.ConnectorData (Net4j Signalling Platform Documentation)";
+ }
+}
+</SCRIPT>
+<NOSCRIPT>
+</NOSCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+<HR>
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+ <TR ALIGN="center" VALIGN="top">
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../org/eclipse/net4j/tcp/TCPUtil.ConnectorData.html" title="class in org.eclipse.net4j.tcp"><FONT CLASS="NavBarFont1"><B>Class</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Use</B></FONT>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+ </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ <A HREF="../../../../../index.html?org/eclipse/net4j/tcp/\class-useTCPUtil.ConnectorData.html" target="_top"><B>FRAMES</B></A> &nbsp;
+&nbsp;<A HREF="TCPUtil.ConnectorData.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+ <!--
+ if(window==top) {
+ document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+ }
+ //-->
+</SCRIPT>
+<NOSCRIPT>
+ <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H2>
+<B>Uses of Class<br>org.eclipse.net4j.tcp.TCPUtil.ConnectorData</B></H2>
+</CENTER>
+No usage of org.eclipse.net4j.tcp.TCPUtil.ConnectorData
+<P>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+ <TR ALIGN="center" VALIGN="top">
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../org/eclipse/net4j/tcp/TCPUtil.ConnectorData.html" title="class in org.eclipse.net4j.tcp"><FONT CLASS="NavBarFont1"><B>Class</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Use</B></FONT>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+ </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ <A HREF="../../../../../index.html?org/eclipse/net4j/tcp/\class-useTCPUtil.ConnectorData.html" target="_top"><B>FRAMES</B></A> &nbsp;
+&nbsp;<A HREF="TCPUtil.ConnectorData.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+ <!--
+ if(window==top) {
+ document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+ }
+ //-->
+</SCRIPT>
+<NOSCRIPT>
+ <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+<i>Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.</i>
+</BODY>
+</HTML>
diff --git a/plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/tcp/package-frame.html b/plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/tcp/package-frame.html
index c006d2ad65..df60107f95 100644
--- a/plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/tcp/package-frame.html
+++ b/plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/tcp/package-frame.html
@@ -45,7 +45,11 @@ Interfaces</FONT>&nbsp;
Classes</FONT>&nbsp;
<FONT CLASS="FrameItemFont">
<BR>
-<A HREF="TCPUtil.html" title="class in org.eclipse.net4j.tcp" target="classFrame">TCPUtil</A></FONT></TD>
+<A HREF="TCPUtil.html" title="class in org.eclipse.net4j.tcp" target="classFrame">TCPUtil</A>
+<BR>
+<A HREF="TCPUtil.AcceptorData.html" title="class in org.eclipse.net4j.tcp" target="classFrame">TCPUtil.AcceptorData</A>
+<BR>
+<A HREF="TCPUtil.ConnectorData.html" title="class in org.eclipse.net4j.tcp" target="classFrame">TCPUtil.ConnectorData</A></FONT></TD>
</TR>
</TABLE>
diff --git a/plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/tcp/package-summary.html b/plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/tcp/package-summary.html
index a6655b34fb..02937c10c6 100644
--- a/plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/tcp/package-summary.html
+++ b/plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/tcp/package-summary.html
@@ -88,16 +88,18 @@ Transport layer extension with support for TCP socket connections.
<P>
<map id="APIVIZ" name="APIVIZ">
-<area shape="rect" id="node1" href="../acceptor/IAcceptor.html" title="&#171;interface&#187; IAcceptor (org.eclipse.net4j.acceptor)" alt="" coords="15,419,193,474"/>
-<area shape="rect" id="node2" href="../connector/IConnector.html" title="&#171;interface&#187; IConnector (org.eclipse.net4j.connector)" alt="" coords="11,341,197,395"/>
-<area shape="rect" id="node3" title="&#171;interface&#187; INegotiationContext (org.eclipse.net4j.util.security)" alt="" coords="6,262,202,317"/>
-<area shape="rect" id="node4" href="ITCPAcceptor.html" title="&#171;interface&#187; ITCPAcceptor" alt="" coords="261,427,363,467"/>
-<area shape="rect" id="node5" href="ITCPActiveSelectorListener.html" title="&#171;interface&#187; ITCPActiveSelectorListener" alt="" coords="15,197,193,237"/>
-<area shape="rect" id="node6" href="ITCPConnector.html" title="&#171;interface&#187; ITCPConnector" alt="" coords="257,348,367,388"/>
-<area shape="rect" id="node7" href="ITCPNegotiationContext.html" title="&#171;interface&#187; ITCPNegotiationContext" alt="" coords="232,269,392,309"/>
-<area shape="rect" id="node8" href="ITCPPassiveSelectorListener.html" title="&#171;interface&#187; ITCPPassiveSelectorListener" alt="" coords="9,133,199,173"/>
-<area shape="rect" id="node9" href="ITCPSelector.html" title="&#171;interface&#187; ITCPSelector" alt="" coords="55,69,153,109"/>
-<area shape="rect" id="node10" href="TCPUtil.html" title="&#171;static&#187; TCPUtil" alt="" coords="70,5,138,45"/>
+<area shape="rect" id="node1" href="TCPUtil.AcceptorData.html" title="TCPUtil.AcceptorData" alt="" coords="29,547,179,573"/>
+<area shape="rect" id="node2" href="TCPUtil.ConnectorData.html" title="TCPUtil.ConnectorData" alt="" coords="26,498,182,523"/>
+<area shape="rect" id="node3" href="../acceptor/IAcceptor.html" title="&#171;interface&#187; IAcceptor (org.eclipse.net4j.acceptor)" alt="" coords="15,419,193,474"/>
+<area shape="rect" id="node4" href="../connector/IConnector.html" title="&#171;interface&#187; IConnector (org.eclipse.net4j.connector)" alt="" coords="11,341,197,395"/>
+<area shape="rect" id="node5" title="&#171;interface&#187; INegotiationContext (org.eclipse.net4j.util.security)" alt="" coords="6,262,202,317"/>
+<area shape="rect" id="node6" href="ITCPAcceptor.html" title="&#171;interface&#187; ITCPAcceptor" alt="" coords="261,427,363,467"/>
+<area shape="rect" id="node7" href="ITCPActiveSelectorListener.html" title="&#171;interface&#187; ITCPActiveSelectorListener" alt="" coords="15,197,193,237"/>
+<area shape="rect" id="node8" href="ITCPConnector.html" title="&#171;interface&#187; ITCPConnector" alt="" coords="257,348,367,388"/>
+<area shape="rect" id="node9" href="ITCPNegotiationContext.html" title="&#171;interface&#187; ITCPNegotiationContext" alt="" coords="232,269,392,309"/>
+<area shape="rect" id="node10" href="ITCPPassiveSelectorListener.html" title="&#171;interface&#187; ITCPPassiveSelectorListener" alt="" coords="9,133,199,173"/>
+<area shape="rect" id="node11" href="ITCPSelector.html" title="&#171;interface&#187; ITCPSelector" alt="" coords="55,69,153,109"/>
+<area shape="rect" id="node12" href="TCPUtil.html" title="&#171;static&#187; TCPUtil" alt="" coords="70,5,138,45"/>
</map>
<CENTER><IMG SRC="package-summary.png" USEMAP="#APIVIZ" BORDER="0"></CENTER>
@@ -149,6 +151,14 @@ Transport layer extension with support for TCP socket connections.
<TD WIDTH="15%"><B><A HREF="../../../../org/eclipse/net4j/tcp/TCPUtil.html" title="class in org.eclipse.net4j.tcp">TCPUtil</A></B></TD>
<TD>A utility class with static convenience methods.</TD>
</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../org/eclipse/net4j/tcp/TCPUtil.AcceptorData.html" title="class in org.eclipse.net4j.tcp">TCPUtil.AcceptorData</A></B></TD>
+<TD>Encapsulates the data needed to configure a <A HREF="../../../../org/eclipse/net4j/tcp/ITCPAcceptor.html" title="interface in org.eclipse.net4j.tcp"><CODE>TCP acceptor</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../org/eclipse/net4j/tcp/TCPUtil.ConnectorData.html" title="class in org.eclipse.net4j.tcp">TCPUtil.ConnectorData</A></B></TD>
+<TD>Encapsulates the data needed to configure a <A HREF="../../../../org/eclipse/net4j/tcp/ITCPConnector.html" title="interface in org.eclipse.net4j.tcp"><CODE>TCP connector</CODE></A>.</TD>
+</TR>
</TABLE>
&nbsp;
diff --git a/plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/tcp/package-summary.png b/plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/tcp/package-summary.png
index 335da40fed..12fce4e905 100644
--- a/plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/tcp/package-summary.png
+++ b/plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/tcp/package-summary.png
Binary files differ
diff --git a/plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/ui/FactoryTypeContentProvider.html b/plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/ui/FactoryTypeContentProvider.html
index 2f3099546d..a9528c97ac 100644
--- a/plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/ui/FactoryTypeContentProvider.html
+++ b/plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/ui/FactoryTypeContentProvider.html
@@ -76,9 +76,9 @@ function windowTitle()
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
- SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+ SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#methods_inherited_from_class_org.eclipse.net4j.util.ui.FactoryTypeContentProvider">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
-DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;METHOD</FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_top"></A>
@@ -94,20 +94,22 @@ Class FactoryTypeContentProvider</H2>
<PRE>
<A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../../../../org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/StructuredContentProvider.html?is-external=true" title="class or interface in org.eclipse.net4j.util.ui">org.eclipse.net4j.util.ui.StructuredContentProvider</A>&lt;<A HREF="../../../../../../org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/container/IManagedContainer.html?is-external=true" title="class or interface in org.eclipse.net4j.util.container">IManagedContainer</A>&gt;
- <IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><B>org.eclipse.net4j.ui.FactoryTypeContentProvider</B>
+ <IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../../../../org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/FactoryTypeContentProvider.html?is-external=true" title="class or interface in org.eclipse.net4j.util.ui">org.eclipse.net4j.util.ui.FactoryTypeContentProvider</A>
+ <IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><B>org.eclipse.net4j.ui.FactoryTypeContentProvider</B>
</PRE>
<DL>
<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/util/EventListener.html?is-external=true" title="class or interface in java.util">EventListener</A>, org.eclipse.jface.viewers.IContentProvider, org.eclipse.jface.viewers.IStructuredContentProvider, <A HREF="../../../../../../org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/event/IListener.html?is-external=true" title="class or interface in org.eclipse.net4j.util.event">IListener</A></DD>
</DL>
<HR>
+<B>Deprecated.</B>&nbsp;<I>As of 4.1 use <A HREF="../../../../../../org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/FactoryTypeContentProvider.html?is-external=true" title="class or interface in org.eclipse.net4j.util.ui"><CODE>FactoryTypeContentProvider</CODE></A></I>
+<P>
<DL>
- <DT>public class <B>FactoryTypeContentProvider</B>
- <DD>extends <A HREF="../../../../../../org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/StructuredContentProvider.html?is-external=true" title="class or interface in org.eclipse.net4j.util.ui">StructuredContentProvider</A>&lt;<A HREF="../../../../../../org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/container/IManagedContainer.html?is-external=true" title="class or interface in org.eclipse.net4j.util.container">IManagedContainer</A>&gt;
-</DL>
-
-<map id="APIVIZ" name="APIVIZ">
-<area shape="rect" id="node1" title="StructuredContentProvider (org.eclipse.net4j.util.ui)" alt="" coords="10,5,184,45"/>
-<area shape="rect" id="node2" href="FactoryTypeContentProvider.html" title="FactoryTypeContentProvider" alt="" coords="5,85,189,110"/>
+<DT><PRE><FONT SIZE="-1"><A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</A>
+</FONT>public class <B>FactoryTypeContentProvider</B>
+ <DD>extends <A HREF="../../../../../../org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/FactoryTypeContentProvider.html?is-external=true" title="class or interface in org.eclipse.net4j.util.ui">FactoryTypeContentProvider</A></DL>
+</PRE><map id="APIVIZ" name="APIVIZ">
+<area shape="rect" id="node1" href="FactoryTypeContentProvider.html" title="FactoryTypeContentProvider" alt="" coords="5,85,189,110"/>
+<area shape="rect" id="node2" title="FactoryTypeContentProvider (org.eclipse.net4j.util.ui)" alt="" coords="5,5,189,45"/>
</map>
<CENTER><IMG SRC="FactoryTypeContentProvider.png" USEMAP="#APIVIZ" BORDER="0"></CENTER>
@@ -140,7 +142,7 @@ A <A HREF="../../../../../../org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4
<TD><CODE><B><A HREF="../../../../org/eclipse/net4j/ui/FactoryTypeContentProvider.html#FactoryTypeContentProvider(java.lang.String)">FactoryTypeContentProvider</A></B>(<A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>&nbsp;productGroup)</CODE>
<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>Deprecated.</B>&nbsp;&nbsp;</TD>
</TR>
</TABLE>
&nbsp;
@@ -152,37 +154,14 @@ A <A HREF="../../../../../../org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Method Summary</B></FONT></TH>
</TR>
-<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>protected &nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../org/eclipse/net4j/ui/FactoryTypeContentProvider.html#connectInput(org.eclipse.net4j.util.container.IManagedContainer)">connectInput</A></B>(<A HREF="../../../../../../org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/container/IManagedContainer.html?is-external=true" title="class or interface in org.eclipse.net4j.util.container">IManagedContainer</A>&nbsp;input)</CODE>
-
-<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
-</TR>
-<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>protected &nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../org/eclipse/net4j/ui/FactoryTypeContentProvider.html#disconnectInput(org.eclipse.net4j.util.container.IManagedContainer)">disconnectInput</A></B>(<A HREF="../../../../../../org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/container/IManagedContainer.html?is-external=true" title="class or interface in org.eclipse.net4j.util.container">IManagedContainer</A>&nbsp;input)</CODE>
-
-<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
-</TR>
-<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A>[]</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../org/eclipse/net4j/ui/FactoryTypeContentProvider.html#getElements(java.lang.Object)">getElements</A></B>(<A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A>&nbsp;inputElement)</CODE>
-
-<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_org.eclipse.net4j.util.ui.FactoryTypeContentProvider"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Methods inherited from class org.eclipse.net4j.util.ui.<A HREF="../../../../../../org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/FactoryTypeContentProvider.html?is-external=true" title="class or interface in org.eclipse.net4j.util.ui">FactoryTypeContentProvider</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../org/eclipse/net4j/ui/FactoryTypeContentProvider.html#getProductGroup()">getProductGroup</A></B>()</CODE>
-
-<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+<TD><CODE><A HREF="../../../../../../org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/FactoryTypeContentProvider.html?is-external=true#connectInput(org.eclipse.net4j.util.container.IManagedContainer)" title="class or interface in org.eclipse.net4j.util.ui">connectInput</A>, <A HREF="../../../../../../org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/FactoryTypeContentProvider.html?is-external=true#disconnectInput(org.eclipse.net4j.util.container.IManagedContainer)" title="class or interface in org.eclipse.net4j.util.ui">disconnectInput</A>, <A HREF="../../../../../../org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/FactoryTypeContentProvider.html?is-external=true#getElements(java.lang.Object)" title="class or interface in org.eclipse.net4j.util.ui">getElements</A>, <A HREF="../../../../../../org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/FactoryTypeContentProvider.html?is-external=true#getProductGroup()" title="class or interface in org.eclipse.net4j.util.ui">getProductGroup</A></CODE></TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_org.eclipse.net4j.util.ui.StructuredContentProvider"><!-- --></A>
@@ -221,66 +200,7 @@ FactoryTypeContentProvider</H3>
<PRE>
public <B>FactoryTypeContentProvider</B>(<A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>&nbsp;productGroup)</PRE>
<DL>
-</DL>
-
-<!-- ============ METHOD DETAIL ========== -->
-
-<A NAME="method_detail"><!-- --></A>
-<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
-<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
-<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
-<B>Method Detail</B></FONT></TH>
-</TR>
-</TABLE>
-
-<A NAME="getProductGroup()"><!-- --></A><H3>
-getProductGroup</H3>
-<PRE>
-public <A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A> <B>getProductGroup</B>()</PRE>
-<DL>
-<DD><DL>
-</DL>
-</DD>
-</DL>
-<HR>
-
-<A NAME="getElements(java.lang.Object)"><!-- --></A><H3>
-getElements</H3>
-<PRE>
-public <A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A>[] <B>getElements</B>(<A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A>&nbsp;inputElement)</PRE>
-<DL>
-<DD><DL>
-</DL>
-</DD>
-</DL>
-<HR>
-
-<A NAME="connectInput(org.eclipse.net4j.util.container.IManagedContainer)"><!-- --></A><H3>
-connectInput</H3>
-<PRE>
-protected void <B>connectInput</B>(<A HREF="../../../../../../org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/container/IManagedContainer.html?is-external=true" title="class or interface in org.eclipse.net4j.util.container">IManagedContainer</A>&nbsp;input)</PRE>
-<DL>
-<DD><DL>
-<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../../../org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/StructuredContentProvider.html?is-external=true#connectInput(INPUT)" title="class or interface in org.eclipse.net4j.util.ui">connectInput</A></CODE> in class <CODE><A HREF="../../../../../../org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/StructuredContentProvider.html?is-external=true" title="class or interface in org.eclipse.net4j.util.ui">StructuredContentProvider</A>&lt;<A HREF="../../../../../../org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/container/IManagedContainer.html?is-external=true" title="class or interface in org.eclipse.net4j.util.container">IManagedContainer</A>&gt;</CODE></DL>
-</DD>
-<DD><DL>
-</DL>
-</DD>
-</DL>
-<HR>
-
-<A NAME="disconnectInput(org.eclipse.net4j.util.container.IManagedContainer)"><!-- --></A><H3>
-disconnectInput</H3>
-<PRE>
-protected void <B>disconnectInput</B>(<A HREF="../../../../../../org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/container/IManagedContainer.html?is-external=true" title="class or interface in org.eclipse.net4j.util.container">IManagedContainer</A>&nbsp;input)</PRE>
-<DL>
-<DD><DL>
-<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../../../org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/StructuredContentProvider.html?is-external=true#disconnectInput(INPUT)" title="class or interface in org.eclipse.net4j.util.ui">disconnectInput</A></CODE> in class <CODE><A HREF="../../../../../../org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/StructuredContentProvider.html?is-external=true" title="class or interface in org.eclipse.net4j.util.ui">StructuredContentProvider</A>&lt;<A HREF="../../../../../../org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/container/IManagedContainer.html?is-external=true" title="class or interface in org.eclipse.net4j.util.container">IManagedContainer</A>&gt;</CODE></DL>
-</DD>
-<DD><DL>
-</DL>
-</DD>
-</DL>
+<DD><B>Deprecated.</B>&nbsp;</DL>
<!-- ========= END OF CLASS DATA ========= -->
<HR>
@@ -332,9 +252,9 @@ protected void <B>disconnectInput</B>(<A HREF="../../../../../../org.eclipse.net
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
- SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+ SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#methods_inherited_from_class_org.eclipse.net4j.util.ui.FactoryTypeContentProvider">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
-DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;METHOD</FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_bottom"></A>
diff --git a/plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/ui/FactoryTypeContentProvider.png b/plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/ui/FactoryTypeContentProvider.png
index 8c02d9f1fc..92110eea17 100644
--- a/plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/ui/FactoryTypeContentProvider.png
+++ b/plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/ui/FactoryTypeContentProvider.png
Binary files differ
diff --git a/plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/ui/package-summary.html b/plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/ui/package-summary.html
index b2050e442c..cb89084b03 100644
--- a/plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/ui/package-summary.html
+++ b/plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/ui/package-summary.html
@@ -88,14 +88,15 @@ Reusable UI components specific to the Net4j Signalling Platform.
<P>
<map id="APIVIZ" name="APIVIZ">
-<area shape="rect" id="node1" href="AcceptorContentProvider.html" title="AcceptorContentProvider" alt="" coords="265,126,431,151"/>
-<area shape="rect" id="node2" href="ConnectorContentProvider.html" title="ConnectorContentProvider" alt="" coords="262,175,434,201"/>
-<area shape="rect" id="node3" title="ContainerItemProvider (org.eclipse.net4j.util.ui.views)" alt="" coords="12,69,207,109"/>
-<area shape="rect" id="node4" href="FactoryTypeContentProvider.html" title="FactoryTypeContentProvider" alt="" coords="255,225,441,250"/>
-<area shape="rect" id="node5" href="Net4jItemProvider.html" title="Net4jItemProvider" alt="" coords="287,77,409,102"/>
-<area shape="rect" id="node6" href="Net4jItemProvider.RemoveAction.html" title="Net4jItemProvider.RemoveAction" alt="" coords="243,13,453,38"/>
-<area shape="rect" id="node7" title="LongRunningAction (org.eclipse.net4j.util.ui.actions)" alt="" coords="6,5,213,45"/>
-<area shape="rect" id="node8" title="StructuredContentProvider (org.eclipse.net4j.util.ui)" alt="" coords="22,168,197,208"/>
+<area shape="rect" id="node1" href="AcceptorContentProvider.html" title="AcceptorContentProvider" alt="" coords="265,190,431,215"/>
+<area shape="rect" id="node2" href="ConnectorContentProvider.html" title="ConnectorContentProvider" alt="" coords="262,239,434,265"/>
+<area shape="rect" id="node3" title="ContainerItemProvider (org.eclipse.net4j.util.ui.views)" alt="" coords="12,133,207,173"/>
+<area shape="rect" id="node4" href="FactoryTypeContentProvider.html" title="FactoryTypeContentProvider" alt="" coords="255,77,441,102"/>
+<area shape="rect" id="node5" title="FactoryTypeContentProvider (org.eclipse.net4j.util.ui)" alt="" coords="17,69,202,109"/>
+<area shape="rect" id="node6" href="Net4jItemProvider.html" title="Net4jItemProvider" alt="" coords="287,141,409,166"/>
+<area shape="rect" id="node7" href="Net4jItemProvider.RemoveAction.html" title="Net4jItemProvider.RemoveAction" alt="" coords="243,13,453,38"/>
+<area shape="rect" id="node8" title="LongRunningAction (org.eclipse.net4j.util.ui.actions)" alt="" coords="6,5,213,45"/>
+<area shape="rect" id="node9" title="StructuredContentProvider (org.eclipse.net4j.util.ui)" alt="" coords="22,215,197,255"/>
</map>
<CENTER><IMG SRC="package-summary.png" USEMAP="#APIVIZ" BORDER="0"></CENTER>
@@ -115,8 +116,7 @@ Reusable UI components specific to the Net4j Signalling Platform.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD WIDTH="15%"><B><A HREF="../../../../org/eclipse/net4j/ui/FactoryTypeContentProvider.html" title="class in org.eclipse.net4j.ui">FactoryTypeContentProvider</A></B></TD>
-<TD>A <A HREF="../../../../../../org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/StructuredContentProvider.html?is-external=true" title="class or interface in org.eclipse.net4j.util.ui"><CODE>structured content provider</CODE></A> that shows the <A HREF="../../../../../../org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/factory/IFactoryKey.html?is-external=true#getType()" title="class or interface in org.eclipse.net4j.util.factory"><CODE>factory
- types</CODE></A> of the <A HREF="../../../../../../org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/StructuredContentProvider.html?is-external=true#getInput()" title="class or interface in org.eclipse.net4j.util.ui"><CODE>input</CODE></A>.</TD>
+<TD><B>Deprecated.</B>&nbsp;<I>As of 4.1 use <A HREF="../../../../../../org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/FactoryTypeContentProvider.html?is-external=true" title="class or interface in org.eclipse.net4j.util.ui"><CODE>FactoryTypeContentProvider</CODE></A></I></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD WIDTH="15%"><B><A HREF="../../../../org/eclipse/net4j/ui/Net4jItemProvider.html" title="class in org.eclipse.net4j.ui">Net4jItemProvider</A></B></TD>
diff --git a/plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/ui/package-summary.png b/plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/ui/package-summary.png
index afbb6ea10e..f89bd0a97f 100644
--- a/plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/ui/package-summary.png
+++ b/plugins/org.eclipse.net4j.doc/javadoc/org/eclipse/net4j/ui/package-summary.png
Binary files differ
diff --git a/plugins/org.eclipse.net4j.jvm/META-INF/MANIFEST.MF b/plugins/org.eclipse.net4j.jvm/META-INF/MANIFEST.MF
index 964da03c44..de25a752a7 100644
--- a/plugins/org.eclipse.net4j.jvm/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.net4j.jvm/META-INF/MANIFEST.MF
@@ -12,7 +12,7 @@ Bundle-ClassPath: .
Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)";resolution:=optional,
org.eclipse.net4j;bundle-version="[4.0.0,5.0.0)";visibility:=reexport
Import-Package: org.osgi.framework;version="[1.3.0,2.0.0)";resolution:=optional
-Export-Package: org.eclipse.net4j.internal.jvm;version="4.1.0";x-friends:="org.eclipse.net4j.defs,org.eclipse.net4j.tests",
+Export-Package: org.eclipse.net4j.internal.jvm;version="4.1.0";x-friends:="org.eclipse.net4j.defs,org.eclipse.net4j.tests,org.eclipse.net4j.ui",
org.eclipse.net4j.internal.jvm.bundle;version="4.1.0";x-internal:=true,
org.eclipse.net4j.internal.jvm.messages;version="4.1.0";x-internal:=true,
org.eclipse.net4j.jvm;version="4.1.0"
diff --git a/plugins/org.eclipse.net4j.tcp/META-INF/MANIFEST.MF b/plugins/org.eclipse.net4j.tcp/META-INF/MANIFEST.MF
index 9ebb194f4f..bf671b597f 100644
--- a/plugins/org.eclipse.net4j.tcp/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.net4j.tcp/META-INF/MANIFEST.MF
@@ -1,7 +1,7 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-SymbolicName: org.eclipse.net4j.tcp;singleton:=true
-Bundle-Version: 4.0.100.qualifier
+Bundle-Version: 4.1.0.qualifier
Bundle-Name: %pluginName
Bundle-Vendor: %providerName
Bundle-Localization: plugin
@@ -12,13 +12,13 @@ Bundle-ClassPath: .
Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)";resolution:=optional,
org.eclipse.net4j;bundle-version="[4.0.0,5.0.0)";visibility:=reexport
Import-Package: org.osgi.framework;version="[1.3.0,2.0.0)";resolution:=optional
-Export-Package: org.eclipse.net4j.internal.tcp;version="4.0.100";
+Export-Package: org.eclipse.net4j.internal.tcp;version="4.1.0";
x-friends:="org.eclipse.net4j.tests,
org.eclipse.net4j.defs,
org.eclipse.emf.cdo.examples,
org.eclipse.net4j.ui",
- org.eclipse.net4j.internal.tcp.bundle;version="4.0.100";x-internal:=true,
- org.eclipse.net4j.internal.tcp.messages;version="4.0.100";x-internal:=true,
- org.eclipse.net4j.internal.tcp.ssl;version="4.0.100";x-friends:="org.eclipse.net4j.tests,org.eclipse.net4j.defs,org.eclipse.emf.cdo.examples",
- org.eclipse.net4j.tcp;version="4.0.100",
- org.eclipse.net4j.tcp.ssl;version="4.0.100"
+ org.eclipse.net4j.internal.tcp.bundle;version="4.1.0";x-internal:=true,
+ org.eclipse.net4j.internal.tcp.messages;version="4.1.0";x-internal:=true,
+ org.eclipse.net4j.internal.tcp.ssl;version="4.1.0";x-friends:="org.eclipse.net4j.tests,org.eclipse.net4j.defs,org.eclipse.emf.cdo.examples",
+ org.eclipse.net4j.tcp;version="4.1.0",
+ org.eclipse.net4j.tcp.ssl;version="4.1.0"
diff --git a/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/TCPAcceptor.java b/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/TCPAcceptor.java
index 1236e0ba04..73cbb50cd4 100644
--- a/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/TCPAcceptor.java
+++ b/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/TCPAcceptor.java
@@ -1,287 +1,292 @@
-/*
- * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Eike Stepper - initial API and implementation
- * Caspar De Groot - maintenance
- */
-package org.eclipse.net4j.internal.tcp;
-
-import org.eclipse.net4j.internal.tcp.bundle.OM;
-import org.eclipse.net4j.tcp.ITCPAcceptor;
-import org.eclipse.net4j.tcp.ITCPPassiveSelectorListener;
-import org.eclipse.net4j.tcp.ITCPSelector;
-import org.eclipse.net4j.util.ReflectUtil.ExcludeFromDump;
-import org.eclipse.net4j.util.concurrent.Worker;
-import org.eclipse.net4j.util.io.IOUtil;
-import org.eclipse.net4j.util.om.trace.ContextTracer;
-
-import org.eclipse.spi.net4j.Acceptor;
-
-import java.io.IOException;
-import java.net.InetAddress;
-import java.net.InetSocketAddress;
-import java.net.ServerSocket;
-import java.nio.channels.ClosedChannelException;
-import java.nio.channels.SelectionKey;
-import java.nio.channels.ServerSocketChannel;
-import java.nio.channels.SocketChannel;
-import java.text.MessageFormat;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.TimeUnit;
-
-/**
- * @author Eike Stepper
- */
-public class TCPAcceptor extends Acceptor implements ITCPAcceptor, ITCPPassiveSelectorListener
-{
- public static final boolean DEFAULT_START_SYNCHRONOUSLY = true;
-
- public static final long DEFAULT_SYNCHRONOUS_START_TIMEOUT = 2 * Worker.DEFAULT_TIMEOUT;
-
- private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG, TCPAcceptor.class);
-
- private TCPSelector selector;
-
- @ExcludeFromDump
- private SelectionKey selectionKey;
-
- private boolean startSynchronously = DEFAULT_START_SYNCHRONOUSLY;
-
- private long synchronousStartTimeout = DEFAULT_SYNCHRONOUS_START_TIMEOUT;
-
- @ExcludeFromDump
- private CountDownLatch startLatch;
-
- private ServerSocketChannel serverSocketChannel;
-
- private String address = DEFAULT_ADDRESS;
-
- private int port = DEFAULT_PORT;
-
- public TCPAcceptor()
- {
- }
-
- public String getAddress()
- {
- return address;
- }
-
- public void setAddress(String address)
- {
- this.address = address;
- }
-
- public int getPort()
- {
- return port;
- }
-
- public void setPort(int port)
- {
- this.port = port;
- }
-
- public TCPSelector getSelector()
- {
- return selector;
- }
-
- public void setSelector(TCPSelector selector)
- {
- this.selector = selector;
- }
-
- public boolean isStartSynchronously()
- {
- return startSynchronously;
- }
-
- public void setStartSynchronously(boolean startSynchronously)
- {
- this.startSynchronously = startSynchronously;
- }
-
- public SelectionKey getSelectionKey()
- {
- return selectionKey;
- }
-
- public long getSynchronousStartTimeout()
- {
- return synchronousStartTimeout;
- }
-
- public void setSynchronousStartTimeout(long synchronousStartTimeout)
- {
- this.synchronousStartTimeout = synchronousStartTimeout;
- }
-
- public void handleRegistration(ITCPSelector selector, ServerSocketChannel serverSocketChannel)
- {
- try
- {
- InetSocketAddress addr = null;
- if (address != null)
- {
- addr = new InetSocketAddress(InetAddress.getByName(address), port);
- }
-
- ServerSocket socket = serverSocketChannel.socket();
- socket.bind(addr);
-
- if (addr == null)
- {
- address = socket.getInetAddress().toString();
- if (address.startsWith("/")) //$NON-NLS-1$
- {
- address = address.substring(1);
- }
-
- int colon = address.indexOf(':');
- if (colon != -1)
- {
- port = Integer.parseInt(address.substring(colon + 1));
- address = address.substring(0, colon);
- }
- }
-
- // [MACOSX] Must occur AFTER binding!
- selectionKey = serverSocketChannel.register(selector.getSocketSelector(), SelectionKey.OP_ACCEPT, this);
- }
- catch (Exception ex)
- {
- OM.LOG.error(ex);
- deactivateAsync();
- }
- finally
- {
- if (startLatch != null)
- {
- startLatch.countDown();
- }
- }
- }
-
- public void handleAccept(ITCPSelector selector, ServerSocketChannel serverSocketChannel)
- {
- try
- {
- SocketChannel socketChannel = serverSocketChannel.accept();
- if (socketChannel != null)
- {
- if (TRACER.isEnabled())
- {
- TRACER.trace("Accepted socketChannel " + socketChannel); //$NON-NLS-1$
- }
-
- // socketChannel.socket().setReuseAddress(true);
- // socketChannel.socket().setKeepAlive(true);
- socketChannel.configureBlocking(false);
-
- TCPConnector connector = createConnector();
- prepareConnector(connector);
- connector.setSocketChannel(socketChannel);
- connector.setSelector(selector);
- connector.activate();
- }
- }
- catch (ClosedChannelException ex)
- {
- deactivateAsync();
- }
- catch (Exception ex)
- {
- if (isActive())
- {
- OM.LOG.error(ex);
- }
-
- deactivateAsync();
- }
- }
-
- @Override
- public String toString()
- {
- return MessageFormat.format("TCPAcceptor[{0}:{1}]", address, port); //$NON-NLS-1$
- }
-
- protected TCPConnector createConnector()
- {
- return new TCPServerConnector(this);
- }
-
- @Override
- protected void doBeforeActivate() throws Exception
- {
- super.doBeforeActivate();
- if (selector == null)
- {
- throw new IllegalStateException("selector == null"); //$NON-NLS-1$
- }
-
- if (startSynchronously)
- {
- startLatch = new CountDownLatch(1);
- }
- }
-
- @Override
- protected void doActivate() throws Exception
- {
- super.doActivate();
- serverSocketChannel = ServerSocketChannel.open();
- serverSocketChannel.configureBlocking(false);
- selector.orderRegistration(serverSocketChannel, this);
-
- if (startLatch != null)
- {
- if (!startLatch.await(synchronousStartTimeout, TimeUnit.MILLISECONDS))
- {
- startLatch = null;
- IOUtil.closeSilent(serverSocketChannel);
- throw new IOException("Registration with selector timed out after " + synchronousStartTimeout + " millis"); //$NON-NLS-1$ //$NON-NLS-2$
- }
- }
- }
-
- @Override
- protected void doDeactivate() throws Exception
- {
- cancelSelectionKey();
-
- IOUtil.closeSilent(serverSocketChannel);
- serverSocketChannel = null;
- super.doDeactivate();
- }
-
- protected void deactivateAsync()
- {
- // Cancel the selection immediately
- cancelSelectionKey();
-
- // Do the rest of the deactivation asynchronously
- getConfig().getReceiveExecutor().execute(new Runnable()
- {
- public void run()
- {
- deactivate();
- }
- });
- }
-
- private void cancelSelectionKey()
- {
- if (selectionKey != null)
- {
- selectionKey.cancel();
- selectionKey = null;
- }
- }
-}
+/*
+ * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ * Caspar De Groot - maintenance
+ */
+package org.eclipse.net4j.internal.tcp;
+
+import org.eclipse.net4j.internal.tcp.bundle.OM;
+import org.eclipse.net4j.tcp.ITCPAcceptor;
+import org.eclipse.net4j.tcp.ITCPPassiveSelectorListener;
+import org.eclipse.net4j.tcp.ITCPSelector;
+import org.eclipse.net4j.util.ReflectUtil.ExcludeFromDump;
+import org.eclipse.net4j.util.concurrent.Worker;
+import org.eclipse.net4j.util.io.IOUtil;
+import org.eclipse.net4j.util.om.trace.ContextTracer;
+
+import org.eclipse.spi.net4j.Acceptor;
+
+import java.io.IOException;
+import java.net.InetAddress;
+import java.net.InetSocketAddress;
+import java.net.ServerSocket;
+import java.nio.channels.ClosedChannelException;
+import java.nio.channels.SelectionKey;
+import java.nio.channels.ServerSocketChannel;
+import java.nio.channels.SocketChannel;
+import java.text.MessageFormat;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * @author Eike Stepper
+ */
+public class TCPAcceptor extends Acceptor implements ITCPAcceptor, ITCPPassiveSelectorListener
+{
+ public static final boolean DEFAULT_START_SYNCHRONOUSLY = true;
+
+ public static final long DEFAULT_SYNCHRONOUS_START_TIMEOUT = Worker.DEFAULT_TIMEOUT;
+
+ private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG, TCPAcceptor.class);
+
+ private TCPSelector selector;
+
+ @ExcludeFromDump
+ private SelectionKey selectionKey;
+
+ private boolean startSynchronously = DEFAULT_START_SYNCHRONOUSLY;
+
+ private long synchronousStartTimeout = DEFAULT_SYNCHRONOUS_START_TIMEOUT;
+
+ @ExcludeFromDump
+ private CountDownLatch startLatch;
+
+ private ServerSocketChannel serverSocketChannel;
+
+ private String address = DEFAULT_ADDRESS;
+
+ private int port = DEFAULT_PORT;
+
+ public TCPAcceptor()
+ {
+ }
+
+ public String getAddress()
+ {
+ return address;
+ }
+
+ public void setAddress(String address)
+ {
+ this.address = address;
+ }
+
+ public int getPort()
+ {
+ return port;
+ }
+
+ public void setPort(int port)
+ {
+ this.port = port;
+ }
+
+ public TCPSelector getSelector()
+ {
+ return selector;
+ }
+
+ public void setSelector(TCPSelector selector)
+ {
+ this.selector = selector;
+ }
+
+ public boolean isStartSynchronously()
+ {
+ return startSynchronously;
+ }
+
+ public void setStartSynchronously(boolean startSynchronously)
+ {
+ this.startSynchronously = startSynchronously;
+ }
+
+ public SelectionKey getSelectionKey()
+ {
+ return selectionKey;
+ }
+
+ public long getSynchronousStartTimeout()
+ {
+ return synchronousStartTimeout;
+ }
+
+ public void setSynchronousStartTimeout(long synchronousStartTimeout)
+ {
+ this.synchronousStartTimeout = synchronousStartTimeout;
+ }
+
+ public void handleRegistration(ITCPSelector selector, ServerSocketChannel serverSocketChannel)
+ {
+ try
+ {
+ InetSocketAddress addr = null;
+ if (address != null)
+ {
+ addr = new InetSocketAddress(InetAddress.getByName(address), port);
+ }
+
+ ServerSocket socket = serverSocketChannel.socket();
+ socket.bind(addr);
+
+ if (addr == null)
+ {
+ address = socket.getInetAddress().toString();
+ if (address.startsWith("/")) //$NON-NLS-1$
+ {
+ address = address.substring(1);
+ }
+
+ int colon = address.indexOf(':');
+ if (colon != -1)
+ {
+ port = Integer.parseInt(address.substring(colon + 1));
+ address = address.substring(0, colon);
+ }
+ }
+
+ // [MACOSX] Must occur AFTER binding!
+ selectionKey = serverSocketChannel.register(selector.getSocketSelector(), SelectionKey.OP_ACCEPT, this);
+ }
+ catch (Exception ex)
+ {
+ OM.LOG.error(ex);
+ deactivateAsync();
+ }
+ finally
+ {
+ if (startLatch != null)
+ {
+ startLatch.countDown();
+ }
+ }
+ }
+
+ public void handleAccept(ITCPSelector selector, ServerSocketChannel serverSocketChannel)
+ {
+ try
+ {
+ SocketChannel socketChannel = serverSocketChannel.accept();
+ if (socketChannel != null)
+ {
+ if (TRACER.isEnabled())
+ {
+ TRACER.trace("Accepted socketChannel " + socketChannel); //$NON-NLS-1$
+ }
+
+ // socketChannel.socket().setReuseAddress(true);
+ // socketChannel.socket().setKeepAlive(true);
+ socketChannel.configureBlocking(false);
+
+ TCPConnector connector = createConnector();
+ prepareConnector(connector);
+ connector.setSocketChannel(socketChannel);
+ connector.setSelector(selector);
+ connector.activate();
+ }
+ }
+ catch (ClosedChannelException ex)
+ {
+ deactivateAsync();
+ }
+ catch (Exception ex)
+ {
+ if (isActive())
+ {
+ OM.LOG.error(ex);
+ }
+
+ deactivateAsync();
+ }
+ }
+
+ @Override
+ public String toString()
+ {
+ return MessageFormat.format("TCPAcceptor[{0}:{1}]", address, port); //$NON-NLS-1$
+ }
+
+ protected TCPConnector createConnector()
+ {
+ return new TCPServerConnector(this);
+ }
+
+ @Override
+ protected void doBeforeActivate() throws Exception
+ {
+ super.doBeforeActivate();
+ if (selector == null)
+ {
+ throw new IllegalStateException("selector == null"); //$NON-NLS-1$
+ }
+
+ if (startSynchronously)
+ {
+ startLatch = new CountDownLatch(1);
+ }
+ }
+
+ @Override
+ protected void doActivate() throws Exception
+ {
+ super.doActivate();
+ serverSocketChannel = ServerSocketChannel.open();
+ serverSocketChannel.configureBlocking(false);
+ selector.orderRegistration(serverSocketChannel, this);
+
+ if (startLatch != null)
+ {
+ if (!startLatch.await(synchronousStartTimeout, TimeUnit.MILLISECONDS))
+ {
+ startLatch = null;
+ IOUtil.closeSilent(serverSocketChannel);
+ throw new IOException("Registration with selector timed out after " + synchronousStartTimeout + " millis"); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+ }
+ }
+
+ @Override
+ protected void doDeactivate() throws Exception
+ {
+ if (startLatch != null)
+ {
+ startLatch.countDown();
+ }
+
+ cancelSelectionKey();
+
+ IOUtil.closeSilent(serverSocketChannel);
+ serverSocketChannel = null;
+ super.doDeactivate();
+ }
+
+ protected void deactivateAsync()
+ {
+ // Cancel the selection immediately
+ cancelSelectionKey();
+
+ // Do the rest of the deactivation asynchronously
+ getConfig().getReceiveExecutor().execute(new Runnable()
+ {
+ public void run()
+ {
+ deactivate();
+ }
+ });
+ }
+
+ private void cancelSelectionKey()
+ {
+ if (selectionKey != null)
+ {
+ selectionKey.cancel();
+ selectionKey = null;
+ }
+ }
+}
diff --git a/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/TCPAcceptorFactory.java b/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/TCPAcceptorFactory.java
index 4d67e9f778..76fb6c8b32 100644
--- a/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/TCPAcceptorFactory.java
+++ b/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/TCPAcceptorFactory.java
@@ -12,7 +12,8 @@
package org.eclipse.net4j.internal.tcp;
import org.eclipse.net4j.tcp.ITCPAcceptor;
-import org.eclipse.net4j.util.StringUtil;
+import org.eclipse.net4j.tcp.TCPUtil;
+import org.eclipse.net4j.tcp.TCPUtil.AcceptorData;
import org.eclipse.spi.net4j.AcceptorFactory;
@@ -21,13 +22,9 @@ import org.eclipse.spi.net4j.AcceptorFactory;
*/
public class TCPAcceptorFactory extends AcceptorFactory
{
- public static final String TYPE = "tcp"; //$NON-NLS-1$
-
- private static final String SEPARATOR = ":"; //$NON-NLS-1$
-
public TCPAcceptorFactory()
{
- super(TYPE);
+ super(TCPUtil.FACTORY_TYPE);
}
/**
@@ -40,7 +37,7 @@ public class TCPAcceptorFactory extends AcceptorFactory
public TCPAcceptor create(String description)
{
- Data data = new Data(description);
+ AcceptorData data = new AcceptorData(description);
TCPAcceptor acceptor = createAcceptor();
acceptor.setAddress(data.getAddress());
@@ -56,65 +53,12 @@ public class TCPAcceptorFactory extends AcceptorFactory
@Override
public String getDescriptionFor(Object object)
{
- if (object instanceof TCPAcceptor)
+ if (object instanceof ITCPAcceptor)
{
- TCPAcceptor acceptor = (TCPAcceptor)object;
- return acceptor.getAddress() + SEPARATOR + acceptor.getPort();
+ ITCPAcceptor acceptor = (ITCPAcceptor)object;
+ return new AcceptorData(acceptor).toString();
}
return null;
}
-
- /**
- * @author Eike Stepper
- */
- public static class Data
- {
- private String address = ITCPAcceptor.DEFAULT_ADDRESS;
-
- private int port = ITCPAcceptor.DEFAULT_PORT;
-
- public Data()
- {
- }
-
- public Data(String address, int port)
- {
- this.address = address;
- this.port = port;
- }
-
- public Data(String description)
- {
- if (!StringUtil.isEmpty(description))
- {
- String[] tokens = description.split(SEPARATOR);
- if (!StringUtil.isEmpty(tokens[0]))
- {
- address = tokens[0];
- }
-
- if (tokens.length > 1 && !StringUtil.isEmpty(tokens[1]))
- {
- port = Integer.parseInt(tokens[1]);
- }
- }
- }
-
- public String getAddress()
- {
- return address == null ? "" : address;
- }
-
- public int getPort()
- {
- return port;
- }
-
- @Override
- public String toString()
- {
- return address + SEPARATOR + port;
- }
- }
}
diff --git a/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/TCPConnectorFactory.java b/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/TCPConnectorFactory.java
index 3982bedbdd..8f1983b847 100644
--- a/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/TCPConnectorFactory.java
+++ b/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/TCPConnectorFactory.java
@@ -12,14 +12,10 @@
package org.eclipse.net4j.internal.tcp;
import org.eclipse.net4j.tcp.ITCPConnector;
-import org.eclipse.net4j.util.StringUtil;
-import org.eclipse.net4j.util.factory.ProductCreationException;
+import org.eclipse.net4j.tcp.TCPUtil.ConnectorData;
import org.eclipse.spi.net4j.ConnectorFactory;
-import java.net.MalformedURLException;
-import java.net.URL;
-
/**
* @author Eike Stepper
*/
@@ -42,29 +38,14 @@ public class TCPConnectorFactory extends ConnectorFactory
public TCPConnector create(String description)
{
- try
- {
- // TODO Don't use URL
- // Scheme "tcp://" would be rejected!
- URL url = new URL("http://" + description);
- String userID = url.getUserInfo();
- String host = url.getHost();
- int port = url.getPort();
- if (port == -1)
- {
- port = ITCPConnector.DEFAULT_PORT;
- }
+ ConnectorData data = new ConnectorData(description);
+
+ TCPConnector connector = createConnector();
+ connector.setHost(data.getHost());
+ connector.setPort(data.getPort());
+ connector.setUserID(data.getUserID());
+ return connector;
- TCPConnector connector = createConnector();
- connector.setUserID(userID);
- connector.setHost(host);
- connector.setPort(port);
- return connector;
- }
- catch (MalformedURLException ex)
- {
- throw new ProductCreationException(ex);
- }
}
protected TCPConnector createConnector()
@@ -75,23 +56,10 @@ public class TCPConnectorFactory extends ConnectorFactory
@Override
public String getDescriptionFor(Object object)
{
- if (object instanceof TCPConnector)
+ if (object instanceof ITCPConnector)
{
- TCPConnector connector = (TCPConnector)object;
- String description = connector.getHost();
- String userID = connector.getUserID();
- if (!StringUtil.isEmpty(userID))
- {
- description = userID + "@" + description; //$NON-NLS-1$
- }
-
- int port = connector.getPort();
- if (port != ITCPConnector.DEFAULT_PORT)
- {
- description = description + ":" + port; //$NON-NLS-1$
- }
-
- return description;
+ ITCPConnector connector = (ITCPConnector)object;
+ return new ConnectorData(connector).toString();
}
return null;
diff --git a/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/tcp/TCPUtil.java b/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/tcp/TCPUtil.java
index ea99a9e791..57350f617d 100644
--- a/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/tcp/TCPUtil.java
+++ b/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/tcp/TCPUtil.java
@@ -1,48 +1,347 @@
-/*
- * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Eike Stepper - initial API and implementation
- */
-package org.eclipse.net4j.tcp;
-
-import org.eclipse.net4j.internal.tcp.TCPAcceptorFactory;
-import org.eclipse.net4j.internal.tcp.TCPConnectorFactory;
-import org.eclipse.net4j.internal.tcp.TCPSelectorFactory;
-import org.eclipse.net4j.internal.tcp.TCPSelectorInjector;
-import org.eclipse.net4j.util.container.IManagedContainer;
-
-/**
- * A utility class with static convenience methods.
- *
- * @author Eike Stepper
- */
-public final class TCPUtil
-{
- private TCPUtil()
- {
- }
-
- public static void prepareContainer(IManagedContainer container)
- {
- container.registerFactory(new TCPSelectorFactory());
- container.registerFactory(new TCPAcceptorFactory());
- container.registerFactory(new TCPConnectorFactory());
- container.addPostProcessor(new TCPSelectorInjector());
- }
-
- public static ITCPAcceptor getAcceptor(IManagedContainer container, String description)
- {
- return (ITCPAcceptor)container.getElement(TCPAcceptorFactory.PRODUCT_GROUP, TCPAcceptorFactory.TYPE, description);
- }
-
- public static ITCPConnector getConnector(IManagedContainer container, String description)
- {
- return (ITCPConnector)container
- .getElement(TCPConnectorFactory.PRODUCT_GROUP, TCPConnectorFactory.TYPE, description);
- }
-}
+/*
+ * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.net4j.tcp;
+
+import org.eclipse.net4j.internal.tcp.TCPAcceptorFactory;
+import org.eclipse.net4j.internal.tcp.TCPConnectorFactory;
+import org.eclipse.net4j.internal.tcp.TCPSelectorFactory;
+import org.eclipse.net4j.internal.tcp.TCPSelectorInjector;
+import org.eclipse.net4j.util.StringUtil;
+import org.eclipse.net4j.util.container.IManagedContainer;
+import org.eclipse.net4j.util.factory.ProductCreationException;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+
+/**
+ * A utility class with static convenience methods.
+ *
+ * @author Eike Stepper
+ */
+public final class TCPUtil
+{
+ /**
+ * @since 4.1
+ */
+ public static final String FACTORY_TYPE = "tcp"; //$NON-NLS-1$
+
+ /**
+ * @since 4.1
+ */
+ public static final String PORT_SEPARATOR = ":"; //$NON-NLS-1$
+
+ /**
+ * @since 4.1
+ */
+ public static final String CREDENTIALS_SEPARATOR = "@";
+
+ private TCPUtil()
+ {
+ }
+
+ public static void prepareContainer(IManagedContainer container)
+ {
+ container.registerFactory(new TCPSelectorFactory());
+ container.registerFactory(new TCPAcceptorFactory());
+ container.registerFactory(new TCPConnectorFactory());
+ container.addPostProcessor(new TCPSelectorInjector());
+ }
+
+ public static ITCPAcceptor getAcceptor(IManagedContainer container, String description)
+ {
+ return (ITCPAcceptor)container.getElement(TCPAcceptorFactory.PRODUCT_GROUP, FACTORY_TYPE, description);
+ }
+
+ public static ITCPConnector getConnector(IManagedContainer container, String description)
+ {
+ return (ITCPConnector)container.getElement(TCPConnectorFactory.PRODUCT_GROUP, FACTORY_TYPE, description);
+ }
+
+ /**
+ * Encapsulates the data needed to configure a {@link ITCPAcceptor TCP acceptor}.
+ *
+ * @author Eike Stepper
+ * @since 4.1
+ */
+ public static final class AcceptorData
+ {
+ private static final int NO_PORT = -1;
+
+ private String address = ITCPAcceptor.DEFAULT_ADDRESS;
+
+ private int port = NO_PORT;
+
+ public AcceptorData()
+ {
+ }
+
+ public AcceptorData(String address, int port)
+ {
+ this.address = address;
+ this.port = port;
+ }
+
+ public AcceptorData(String description)
+ {
+ if (!StringUtil.isEmpty(description))
+ {
+ String[] tokens = description.split(PORT_SEPARATOR);
+ if (!StringUtil.isEmpty(tokens[0]))
+ {
+ address = tokens[0];
+ }
+
+ if (tokens.length > 1 && !StringUtil.isEmpty(tokens[1]))
+ {
+ port = Integer.parseInt(tokens[1]);
+ }
+ }
+ }
+
+ public AcceptorData(ITCPAcceptor acceptor)
+ {
+ this(acceptor.getAddress(), acceptor.getPort());
+ }
+
+ public String getAddress()
+ {
+ return address;
+ }
+
+ public int getPort()
+ {
+ if (port == NO_PORT)
+ {
+ return ITCPAcceptor.DEFAULT_PORT;
+ }
+
+ return port;
+ }
+
+ @Override
+ public int hashCode()
+ {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + (address == null ? 0 : address.hashCode());
+ result = prime * result + port;
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj)
+ {
+ if (this == obj)
+ {
+ return true;
+ }
+
+ if (obj == null)
+ {
+ return false;
+ }
+
+ if (getClass() != obj.getClass())
+ {
+ return false;
+ }
+
+ AcceptorData other = (AcceptorData)obj;
+ if (address == null)
+ {
+ if (other.address != null)
+ {
+ return false;
+ }
+ }
+ else if (!address.equals(other.address))
+ {
+ return false;
+ }
+
+ if (port != other.port)
+ {
+ return false;
+ }
+
+ return true;
+ }
+
+ @Override
+ public String toString()
+ {
+ String result = StringUtil.isEmpty(address) ? ITCPAcceptor.DEFAULT_ADDRESS : address;
+
+ if (port != NO_PORT)
+ {
+ result = result + PORT_SEPARATOR + port;
+ }
+
+ return result;
+ }
+ }
+
+ /**
+ * Encapsulates the data needed to configure a {@link ITCPConnector TCP connector}.
+ *
+ * @author Eike Stepper
+ * @since 4.1
+ */
+ public static final class ConnectorData
+ {
+ private static final int NO_PORT = -1;
+
+ private String host;
+
+ private int port = NO_PORT;
+
+ private String userID;
+
+ public ConnectorData()
+ {
+ }
+
+ public ConnectorData(String host, int port, String userID)
+ {
+ this.host = host;
+ this.port = port;
+ this.userID = userID;
+ }
+
+ public ConnectorData(String description)
+ {
+ if (!StringUtil.isEmpty(description))
+ {
+ try
+ {
+ URL url = parse(description);
+ userID = url.getUserInfo();
+ host = url.getHost();
+ port = url.getPort();
+ }
+ catch (MalformedURLException ex)
+ {
+ throw new ProductCreationException(ex);
+ }
+ }
+ }
+
+ public ConnectorData(ITCPConnector connector)
+ {
+ this(connector.getHost(), connector.getPort(), connector.getUserID());
+ }
+
+ public String getHost()
+ {
+ return host;
+ }
+
+ public int getPort()
+ {
+ if (port == NO_PORT)
+ {
+ return ITCPConnector.DEFAULT_PORT;
+ }
+
+ return port;
+ }
+
+ public String getUserID()
+ {
+ return userID;
+ }
+
+ @Override
+ public int hashCode()
+ {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + (host == null ? 0 : host.hashCode());
+ result = prime * result + port;
+ result = prime * result + (userID == null ? 0 : userID.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj)
+ {
+ if (this == obj)
+ {
+ return true;
+ }
+
+ if (obj == null)
+ {
+ return false;
+ }
+
+ if (getClass() != obj.getClass())
+ {
+ return false;
+ }
+
+ ConnectorData other = (ConnectorData)obj;
+ if (host == null)
+ {
+ if (other.host != null)
+ {
+ return false;
+ }
+ }
+ else if (!host.equals(other.host))
+ {
+ return false;
+ }
+
+ if (port != other.port)
+ {
+ return false;
+ }
+
+ if (userID == null)
+ {
+ if (other.userID != null)
+ {
+ return false;
+ }
+ }
+ else if (!userID.equals(other.userID))
+ {
+ return false;
+ }
+
+ return true;
+ }
+
+ @Override
+ public String toString()
+ {
+ String result = StringUtil.safe(host);
+ if (userID != null)
+ {
+ result = userID + CREDENTIALS_SEPARATOR + result;
+ }
+
+ if (port != NO_PORT)
+ {
+ result = result + PORT_SEPARATOR + port;
+ }
+
+ return result;
+ }
+
+ private static URL parse(String description) throws MalformedURLException
+ {
+ // Scheme "tcp://" would be rejected!
+ return new URL("http://" + description); // TODO Don't use URL
+ }
+ }
+}
diff --git a/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/tcp/package-info.java b/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/tcp/package-info.java
index f7fff8edd3..1b3ce1d453 100644
--- a/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/tcp/package-info.java
+++ b/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/tcp/package-info.java
@@ -1,15 +1,16 @@
-/*
- * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Eike Stepper - initial API and implementation
- */
-
-/**
- * Transport layer extension with support for TCP socket connections.
- */
-package org.eclipse.net4j.tcp;
+/*
+ * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+
+/**
+ * Transport layer extension with support for TCP socket connections.
+ */
+package org.eclipse.net4j.tcp;
+
diff --git a/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/tcp/ssl/package-info.java b/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/tcp/ssl/package-info.java
index 8ad10bab16..7fd80a08f8 100644
--- a/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/tcp/ssl/package-info.java
+++ b/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/tcp/ssl/package-info.java
@@ -1,15 +1,16 @@
-/*
- * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Eike Stepper - initial API and implementation
- */
-
-/**
- * Transport layer extension with support for TCP/SSL socket connections.
- */
-package org.eclipse.net4j.tcp.ssl;
+/*
+ * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+
+/**
+ * Transport layer extension with support for TCP/SSL socket connections.
+ */
+package org.eclipse.net4j.tcp.ssl;
+
diff --git a/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/BufferPoolTest.java b/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/BufferPoolTest.java
index 6090e3b784..3b1445d6e4 100644
--- a/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/BufferPoolTest.java
+++ b/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/BufferPoolTest.java
@@ -1,97 +1,97 @@
-/*
- * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Eike Stepper - initial API and implementation
- */
-package org.eclipse.net4j.tests;
-
-import org.eclipse.net4j.Net4jUtil;
-import org.eclipse.net4j.buffer.IBuffer;
-import org.eclipse.net4j.buffer.IBufferPool;
-import org.eclipse.net4j.util.ReflectUtil;
-import org.eclipse.net4j.util.io.IOUtil;
-import org.eclipse.net4j.util.lifecycle.LifecycleUtil;
-import org.eclipse.net4j.util.tests.AbstractOMTest;
-
-import java.util.ArrayList;
-import java.util.Collection;
-
-/**
- * @author Eike Stepper
- */
-public class BufferPoolTest extends AbstractOMTest
-{
- private static IBufferPool bufferPool = Net4jUtil.createBufferPool();
-
- private static Collection<byte[]> memory = new ArrayList<byte[]>();
-
- @Override
- protected void doTearDown() throws Exception
- {
- memory.clear();
- super.doTearDown();
- }
-
- public void testBufferPool() throws Exception
- {
- LifecycleUtil.activate(bufferPool);
-
- IBuffer[] buffers = new IBuffer[10];
- for (int i = 0; i < buffers.length; i++)
- {
- buffers[i] = bufferPool.provideBuffer();
- }
-
- for (int i = 0; i < buffers.length; i++)
- {
- bufferPool.retainBuffer(buffers[i]);
- buffers[i] = null;
- }
-
- while (Net4jUtil.getPooledBuffers(bufferPool) > 0 && allocate())
- {
- sleep(100);
- ReflectUtil.dump(bufferPool);
- }
-
- LifecycleUtil.deactivate(bufferPool);
- }
-
- private static void msg()
- {
- msg("pooledBuffers = " + Net4jUtil.getPooledBuffers(bufferPool)); //$NON-NLS-1$
- }
-
- private static boolean allocate()
- {
- try
- {
- IOUtil.OUT().println("allocating from " + Runtime.getRuntime().freeMemory()); //$NON-NLS-1$
- for (int i = 0; i < 10; i++)
- {
- memory.add(new byte[1000000]);
- }
-
- msg();
- return true;
- }
- catch (Throwable t)
- {
- return false;
- }
- }
-
- @SuppressWarnings("unused")
- private static void gc()
- {
- msg();
- IOUtil.OUT().println("collecting garbage"); //$NON-NLS-1$
- System.gc();
- msg();
- }
-}
+/*
+ * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.net4j.tests;
+
+import org.eclipse.net4j.Net4jUtil;
+import org.eclipse.net4j.buffer.IBuffer;
+import org.eclipse.net4j.buffer.IBufferPool;
+import org.eclipse.net4j.util.ReflectUtil;
+import org.eclipse.net4j.util.io.IOUtil;
+import org.eclipse.net4j.util.lifecycle.LifecycleUtil;
+import org.eclipse.net4j.util.tests.AbstractOMTest;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+/**
+ * @author Eike Stepper
+ */
+public class BufferPoolTest extends AbstractOMTest
+{
+ private static IBufferPool bufferPool = Net4jUtil.createBufferPool();
+
+ private static Collection<byte[]> memory = new ArrayList<byte[]>();
+
+ @Override
+ protected void doTearDown() throws Exception
+ {
+ memory.clear();
+ super.doTearDown();
+ }
+
+ public void testBufferPool() throws Exception
+ {
+ LifecycleUtil.activate(bufferPool);
+
+ IBuffer[] buffers = new IBuffer[10];
+ for (int i = 0; i < buffers.length; i++)
+ {
+ buffers[i] = bufferPool.provideBuffer();
+ }
+
+ for (int i = 0; i < buffers.length; i++)
+ {
+ bufferPool.retainBuffer(buffers[i]);
+ buffers[i] = null;
+ }
+
+ while (Net4jUtil.getPooledBuffers(bufferPool) > 0 && allocate())
+ {
+ sleep(10);
+ ReflectUtil.dump(bufferPool);
+ }
+
+ LifecycleUtil.deactivate(bufferPool);
+ }
+
+ private static void msg()
+ {
+ msg("pooledBuffers = " + Net4jUtil.getPooledBuffers(bufferPool)); //$NON-NLS-1$
+ }
+
+ private static boolean allocate()
+ {
+ try
+ {
+ IOUtil.OUT().println("allocating from " + Runtime.getRuntime().freeMemory()); //$NON-NLS-1$
+ for (int i = 0; i < 10; i++)
+ {
+ memory.add(new byte[1000000]);
+ }
+
+ msg();
+ return true;
+ }
+ catch (Throwable t)
+ {
+ return false;
+ }
+ }
+
+ @SuppressWarnings("unused")
+ private static void gc()
+ {
+ msg();
+ IOUtil.OUT().println("collecting garbage"); //$NON-NLS-1$
+ System.gc();
+ msg();
+ }
+}
diff --git a/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/TCPConnectorTest.java b/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/TCPConnectorTest.java
index 2fc4cc43b4..fb54418190 100644
--- a/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/TCPConnectorTest.java
+++ b/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/TCPConnectorTest.java
@@ -1,637 +1,638 @@
-/*
- * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Eike Stepper - initial API and implementation
- * Teerawat Chaiyakijpichet (No Magic Asia Ltd.) - SSL
- */
-package org.eclipse.net4j.tests;
-
-import org.eclipse.net4j.Net4jUtil;
-import org.eclipse.net4j.buffer.IBufferPool;
-import org.eclipse.net4j.channel.IChannel;
-import org.eclipse.net4j.connector.ConnectorException;
-import org.eclipse.net4j.connector.IConnector;
-import org.eclipse.net4j.internal.tcp.TCPAcceptor;
-import org.eclipse.net4j.internal.tcp.TCPAcceptorFactory;
-import org.eclipse.net4j.internal.tcp.TCPClientConnector;
-import org.eclipse.net4j.internal.tcp.TCPConnector;
-import org.eclipse.net4j.internal.tcp.TCPConnectorFactory;
-import org.eclipse.net4j.internal.tcp.TCPSelector;
-import org.eclipse.net4j.internal.tcp.ssl.SSLAcceptor;
-import org.eclipse.net4j.internal.tcp.ssl.SSLAcceptorFactory;
-import org.eclipse.net4j.internal.tcp.ssl.SSLClientConnector;
-import org.eclipse.net4j.internal.tcp.ssl.SSLConnectorFactory;
-import org.eclipse.net4j.tcp.ITCPSelector;
-import org.eclipse.net4j.tests.bundle.OM;
-import org.eclipse.net4j.util.collection.RoundRobinBlockingQueue;
-import org.eclipse.net4j.util.concurrent.ConcurrencyUtil;
-import org.eclipse.net4j.util.io.IOUtil;
-import org.eclipse.net4j.util.lifecycle.LifecycleUtil;
-import org.eclipse.net4j.util.security.ChallengeNegotiator;
-import org.eclipse.net4j.util.security.NegotiationException;
-import org.eclipse.net4j.util.security.PasswordCredentials;
-import org.eclipse.net4j.util.security.PasswordCredentialsProvider;
-import org.eclipse.net4j.util.security.Randomizer;
-import org.eclipse.net4j.util.security.ResponseNegotiator;
-import org.eclipse.net4j.util.security.UserManager;
-
-import org.eclipse.spi.net4j.Channel;
-import org.eclipse.spi.net4j.InternalChannel;
-
-import java.nio.channels.ServerSocketChannel;
-import java.util.concurrent.BlockingQueue;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-
-/**
- * @author Eike Stepper
- * @author Teerawat Chaiyakijpichet (No Magic Asia Ltd.)
- */
-public class TCPConnectorTest extends AbstractTransportTest
-{
- private static final int TIMEOUT = 10000;
-
- private static final int PORT = 2040;
-
- private static final String USER_ID = "stepper"; //$NON-NLS-1$
-
- private static final String INVALID_USER_ID = "invalid"; //$NON-NLS-1$
-
- private static final char[] PASSWORD = "eike2008".toCharArray(); //$NON-NLS-1$
-
- private static final char[] INVALID_PASSWORD = "invalid".toCharArray(); //$NON-NLS-1$
-
- private static final PasswordCredentials CREDENTIALS = new PasswordCredentials(USER_ID, PASSWORD);
-
- private ExecutorService threadPool;
-
- private IBufferPool bufferPool;
-
- private TCPSelector selector;
-
- private TCPAcceptor acceptor;
-
- private TCPConnector connector;
-
- private Randomizer randomizer;
-
- private UserManager userManager;
-
- private ChallengeNegotiator challengeNegotiator;
-
- private PasswordCredentialsProvider credentialsProvider;
-
- private ResponseNegotiator responseNegotiator;
-
- @Override
- protected void doTearDown() throws Exception
- {
- cleanup();
- super.doTearDown();
- }
-
- private void cleanup() throws Exception
- {
- sleep(100);
-
- if (connector != null)
- {
- connector.close();
- connector = null;
- }
-
- if (responseNegotiator != null)
- {
- LifecycleUtil.deactivate(responseNegotiator);
- responseNegotiator = null;
- }
-
- if (credentialsProvider != null)
- {
- LifecycleUtil.deactivate(credentialsProvider);
- credentialsProvider = null;
- }
-
- if (acceptor != null)
- {
- acceptor.close();
- acceptor = null;
- }
-
- if (challengeNegotiator != null)
- {
- LifecycleUtil.deactivate(challengeNegotiator);
- challengeNegotiator = null;
- }
-
- if (userManager != null)
- {
- LifecycleUtil.deactivate(userManager);
- userManager = null;
- }
-
- if (randomizer != null)
- {
- LifecycleUtil.deactivate(randomizer);
- randomizer = null;
- }
-
- if (selector != null)
- {
- LifecycleUtil.deactivate(selector);
- selector = null;
- }
-
- if (bufferPool != null)
- {
- LifecycleUtil.deactivate(bufferPool);
- bufferPool = null;
- }
-
- if (threadPool != null)
- {
- LifecycleUtil.deactivate(threadPool);
- threadPool = null;
- }
- }
-
- private void provideTransport()
- {
- selector = new TCPSelector();
-
- if (useSSLTransport())
- {
- acceptor = new SSLAcceptor();
- container.putElement(SSLAcceptorFactory.PRODUCT_GROUP, SSLAcceptorFactory.TYPE, null, acceptor);
-
- // cannot use same container with the acceptor.
- connector = new SSLClientConnector();
- separateContainer.putElement(SSLConnectorFactory.PRODUCT_GROUP, SSLConnectorFactory.TYPE, null, acceptor);
- }
- else
- {
- acceptor = new TCPAcceptor();
- container.putElement(TCPAcceptorFactory.PRODUCT_GROUP, TCPAcceptorFactory.TYPE, null, acceptor);
-
- connector = new TCPClientConnector();
- container.putElement(TCPConnectorFactory.PRODUCT_GROUP, TCPConnectorFactory.TYPE, null, acceptor);
- }
- }
-
- private void provideTransport(final long increaseDelayAcceptor)
- {
- selector = new TCPSelector();
-
- if (useSSLTransport())
- {
- acceptor = new SSLAcceptor()
- {
- @Override
- public void handleAccept(ITCPSelector selector, ServerSocketChannel serverSocketChannel)
- {
- ConcurrencyUtil.sleep(increaseDelayAcceptor);
- super.handleAccept(selector, serverSocketChannel);
- }
- };
-
- connector = new SSLClientConnector();
- }
- else
- {
- acceptor = new TCPAcceptor()
- {
- @Override
- public void handleAccept(ITCPSelector selector, ServerSocketChannel serverSocketChannel)
- {
- ConcurrencyUtil.sleep(increaseDelayAcceptor);
- super.handleAccept(selector, serverSocketChannel);
- }
- };
-
- connector = new TCPClientConnector();
- }
- }
-
- public void testDeferredActivation() throws Exception
- {
- final long DELAY = 500L;
- threadPool = Executors.newCachedThreadPool();
- LifecycleUtil.activate(threadPool);
-
- bufferPool = Net4jUtil.createBufferPool();
- LifecycleUtil.activate(bufferPool);
-
- provideTransport(DELAY);
-
- selector.activate();
-
- acceptor.setStartSynchronously(true);
- acceptor.setSynchronousStartTimeout(TIMEOUT);
- acceptor.getConfig().setBufferProvider(bufferPool);
- acceptor.getConfig().setReceiveExecutor(threadPool);
- acceptor.setSelector(selector);
- acceptor.setAddress("0.0.0.0"); //$NON-NLS-1$
- acceptor.setPort(PORT);
- acceptor.activate();
-
- connector.getConfig().setBufferProvider(bufferPool);
- connector.getConfig().setReceiveExecutor(threadPool);
- connector.setSelector(selector);
- connector.setHost("localhost"); //$NON-NLS-1$
- connector.setPort(PORT);
- connector.activate();
- // Can fail due to timing variations: assertEquals(false, connector.isActive());
-
- connector.waitForConnection(DEFAULT_TIMEOUT);
- assertEquals(true, connector.isActive());
- }
-
- public void testDeferredActivation10() throws Exception
- {
- for (int i = 0; i < 10; i++)
- {
- IOUtil.OUT().println();
- IOUtil.OUT().println();
- IOUtil.OUT().println();
- IOUtil.OUT().println("#####################################################"); //$NON-NLS-1$
- IOUtil.OUT().println(" RUN = " + i); //$NON-NLS-1$
- IOUtil.OUT().println("#####################################################"); //$NON-NLS-1$
- IOUtil.OUT().println();
- IOUtil.OUT().println();
- IOUtil.OUT().println();
- testDeferredActivation();
- cleanup();
- }
- }
-
- public void testNegotiationSuccess() throws Exception
- {
- threadPool = Executors.newCachedThreadPool();
- LifecycleUtil.activate(threadPool);
-
- bufferPool = Net4jUtil.createBufferPool();
- LifecycleUtil.activate(bufferPool);
-
- randomizer = new Randomizer();
- randomizer.activate();
-
- userManager = new UserManager();
- userManager.activate();
- userManager.addUser(USER_ID, PASSWORD);
-
- challengeNegotiator = new ChallengeNegotiator();
- challengeNegotiator.setRandomizer(randomizer);
- challengeNegotiator.setUserManager(userManager);
- challengeNegotiator.activate();
-
- provideTransport();
-
- selector.activate();
-
- acceptor.setStartSynchronously(true);
- acceptor.setSynchronousStartTimeout(TIMEOUT);
- acceptor.getConfig().setBufferProvider(bufferPool);
- acceptor.getConfig().setReceiveExecutor(threadPool);
- acceptor.getConfig().setNegotiator(challengeNegotiator);
- acceptor.setSelector(selector);
- acceptor.setAddress("0.0.0.0"); //$NON-NLS-1$
- acceptor.setPort(PORT);
- acceptor.activate();
-
- credentialsProvider = new PasswordCredentialsProvider(CREDENTIALS);
- LifecycleUtil.activate(credentialsProvider);
-
- responseNegotiator = new ResponseNegotiator();
- responseNegotiator.setCredentialsProvider(credentialsProvider);
- responseNegotiator.activate();
-
- connector.getConfig().setBufferProvider(bufferPool);
- connector.getConfig().setReceiveExecutor(threadPool);
- connector.getConfig().setNegotiator(responseNegotiator);
- connector.setSelector(selector);
- connector.setHost("localhost"); //$NON-NLS-1$
- connector.setPort(PORT);
- connector.activate();
-
- connector.waitForConnection(DEFAULT_TIMEOUT);
-
- InternalChannel clientChannel = connector.openChannel();
- assertEquals(USER_ID, clientChannel.getUserID());
-
- IConnector serverConnector = acceptor.getElements()[0];
- IChannel serverChannel = serverConnector.getElements()[0];
- assertEquals(USER_ID, serverChannel.getUserID());
-
- System.out.println(serverChannel);
- }
-
- public void testNegotiationSuccess10() throws Exception
- {
- for (int i = 0; i < 10; i++)
- {
- IOUtil.OUT().println();
- IOUtil.OUT().println();
- IOUtil.OUT().println();
- IOUtil.OUT().println("#####################################################"); //$NON-NLS-1$
- IOUtil.OUT().println(" RUN = " + i); //$NON-NLS-1$
- IOUtil.OUT().println("#####################################################"); //$NON-NLS-1$
- IOUtil.OUT().println();
- IOUtil.OUT().println();
- IOUtil.OUT().println();
- testNegotiationSuccess();
- cleanup();
- }
- }
-
- public void testInvalidUser() throws Exception
- {
- threadPool = Executors.newCachedThreadPool();
- LifecycleUtil.activate(threadPool);
-
- bufferPool = Net4jUtil.createBufferPool();
- LifecycleUtil.activate(bufferPool);
-
- randomizer = new Randomizer();
- randomizer.activate();
-
- userManager = new UserManager();
- userManager.activate();
- userManager.addUser(INVALID_USER_ID, PASSWORD);
-
- challengeNegotiator = new ChallengeNegotiator();
- challengeNegotiator.setRandomizer(randomizer);
- challengeNegotiator.setUserManager(userManager);
- challengeNegotiator.activate();
-
- provideTransport();
-
- selector.activate();
-
- acceptor.setStartSynchronously(true);
- acceptor.setSynchronousStartTimeout(TIMEOUT);
- acceptor.getConfig().setBufferProvider(bufferPool);
- acceptor.getConfig().setReceiveExecutor(threadPool);
- acceptor.getConfig().setNegotiator(challengeNegotiator);
- acceptor.setSelector(selector);
- acceptor.setAddress("0.0.0.0"); //$NON-NLS-1$
- acceptor.setPort(PORT);
- acceptor.activate();
-
- credentialsProvider = new PasswordCredentialsProvider(CREDENTIALS);
- LifecycleUtil.activate(credentialsProvider);
-
- responseNegotiator = new ResponseNegotiator();
- responseNegotiator.setCredentialsProvider(credentialsProvider);
- responseNegotiator.activate();
-
- connector.getConfig().setBufferProvider(bufferPool);
- connector.getConfig().setReceiveExecutor(threadPool);
- connector.getConfig().setNegotiator(responseNegotiator);
- connector.setSelector(selector);
- connector.setHost("localhost"); //$NON-NLS-1$
- connector.setPort(PORT);
-
- try
- {
- connector.connectAsync();
- connector.waitForConnection(DEFAULT_TIMEOUT_EXPECTED);
- fail("ConnectorException expected"); //$NON-NLS-1$
- }
- catch (ConnectorException ex)
- {
- OM.LOG.info("Expected ConnectorException:", ex); //$NON-NLS-1$
- assertEquals(true, ex.getCause() instanceof NegotiationException);
- }
- }
-
- public void testInvalidPassword() throws Exception
- {
- threadPool = Executors.newCachedThreadPool();
- LifecycleUtil.activate(threadPool);
-
- bufferPool = Net4jUtil.createBufferPool();
- LifecycleUtil.activate(bufferPool);
-
- randomizer = new Randomizer();
- randomizer.activate();
-
- userManager = new UserManager();
- userManager.activate();
- userManager.addUser(USER_ID, INVALID_PASSWORD);
-
- challengeNegotiator = new ChallengeNegotiator();
- challengeNegotiator.setRandomizer(randomizer);
- challengeNegotiator.setUserManager(userManager);
- challengeNegotiator.activate();
-
- provideTransport();
-
- selector.activate();
-
- acceptor.setStartSynchronously(true);
- acceptor.setSynchronousStartTimeout(TIMEOUT);
- acceptor.getConfig().setBufferProvider(bufferPool);
- acceptor.getConfig().setReceiveExecutor(threadPool);
- acceptor.getConfig().setNegotiator(challengeNegotiator);
- acceptor.setSelector(selector);
- acceptor.setAddress("0.0.0.0"); //$NON-NLS-1$
- acceptor.setPort(PORT);
- acceptor.activate();
-
- credentialsProvider = new PasswordCredentialsProvider(CREDENTIALS);
- LifecycleUtil.activate(credentialsProvider);
-
- responseNegotiator = new ResponseNegotiator();
- responseNegotiator.setCredentialsProvider(credentialsProvider);
- responseNegotiator.activate();
-
- connector.getConfig().setBufferProvider(bufferPool);
- connector.getConfig().setReceiveExecutor(threadPool);
- connector.getConfig().setNegotiator(responseNegotiator);
- connector.setSelector(selector);
- connector.setHost("localhost"); //$NON-NLS-1$
- connector.setPort(PORT);
-
- try
- {
- connector.connectAsync();
- connector.waitForConnection(DEFAULT_TIMEOUT_EXPECTED);
- fail("ConnectorException expected"); //$NON-NLS-1$
- }
- catch (ConnectorException ex)
- {
- OM.LOG.info("Expected ConnectorException:", ex); //$NON-NLS-1$
- assertEquals(true, ex.getCause() instanceof NegotiationException);
- }
- }
-
- public void testNoNegotiator() throws Exception
- {
- threadPool = Executors.newCachedThreadPool();
- LifecycleUtil.activate(threadPool);
-
- bufferPool = Net4jUtil.createBufferPool();
- LifecycleUtil.activate(bufferPool);
-
- provideTransport();
-
- selector.activate();
-
- acceptor.setStartSynchronously(true);
- acceptor.setSynchronousStartTimeout(TIMEOUT);
- acceptor.getConfig().setBufferProvider(bufferPool);
- acceptor.getConfig().setReceiveExecutor(threadPool);
- acceptor.setSelector(selector);
- acceptor.setAddress("0.0.0.0"); //$NON-NLS-1$
- acceptor.setPort(PORT);
- acceptor.activate();
-
- connector.getConfig().setBufferProvider(bufferPool);
- connector.getConfig().setReceiveExecutor(threadPool);
- connector.setSelector(selector);
- connector.setHost("localhost"); //$NON-NLS-1$
- connector.setPort(PORT);
- connector.setUserID("SHOULD_FAIL_LATER"); //$NON-NLS-1$
-
- try
- {
- connector.connect();
- fail("ConnectorException expected"); //$NON-NLS-1$
- }
- catch (ConnectorException ex)
- {
- OM.LOG.info("Expected ConnectorException:", ex); //$NON-NLS-1$
- assertEquals(true, ex.getCause() instanceof IllegalStateException);
- }
- }
-
- public void testNegotiatorTooLate() throws Exception
- {
- threadPool = Executors.newCachedThreadPool();
- LifecycleUtil.activate(threadPool);
-
- bufferPool = Net4jUtil.createBufferPool();
- LifecycleUtil.activate(bufferPool);
-
- provideTransport();
-
- selector.activate();
-
- acceptor.setStartSynchronously(true);
- acceptor.setSynchronousStartTimeout(TIMEOUT);
- acceptor.getConfig().setBufferProvider(bufferPool);
- acceptor.getConfig().setReceiveExecutor(threadPool);
- acceptor.setSelector(selector);
- acceptor.setAddress("0.0.0.0"); //$NON-NLS-1$
- acceptor.setPort(PORT);
- acceptor.activate();
-
- connector.getConfig().setBufferProvider(bufferPool);
- connector.getConfig().setReceiveExecutor(threadPool);
- connector.setSelector(selector);
- connector.setHost("localhost"); //$NON-NLS-1$
- connector.setPort(PORT);
- connector.connect();
-
- credentialsProvider = new PasswordCredentialsProvider(CREDENTIALS);
- LifecycleUtil.activate(credentialsProvider);
-
- responseNegotiator = new ResponseNegotiator();
- responseNegotiator.setCredentialsProvider(credentialsProvider);
- responseNegotiator.activate();
-
- try
- {
- connector.getConfig().setNegotiator(responseNegotiator);
- fail("IllegalStateException expected"); //$NON-NLS-1$
- }
- catch (IllegalStateException ex)
- {
- OM.LOG.info("Expected IllegalStateException:", ex); //$NON-NLS-1$
- }
- }
-
- public void testRoundRobinBlockingQueue() throws Exception
- {
- BlockingQueue<IChannel> queue = new RoundRobinBlockingQueue<IChannel>();
-
- Channel[] channels = new Channel[3];
-
- for (int i = 0; i < channels.length; i++)
- {
- Channel c = new Channel();
- c.setID((short)i);
- channels[i] = c;
- }
-
- assertEquals(true, queue.isEmpty());
- assertNull(queue.peek());
- assertNull(queue.poll());
-
- // Order will be 0000...1111...2222...
- for (int i = 0; i < channels.length; i++)
- {
- for (int j = 0; j < 10; j++)
- {
- queue.put(channels[i]);
- }
- }
-
- for (int i = 0; i < 30; i++)
- {
- IChannel peek1 = queue.peek();
- IChannel peek2 = queue.peek();
- assertSame(peek1, peek2);
-
- IChannel poll = queue.poll();
- // The order should be 012012012012...
- assertEquals(i % 3, poll.getID());
- assertSame(peek1, poll);
- }
-
- assertEquals(true, queue.isEmpty());
- assertNull(queue.peek());
- assertNull(queue.poll());
- }
-
- /**
- * @author Teerawat Chaiyakijpichet (No Magic Asia Ltd.)
- */
- public static final class TCP extends TCPConnectorTest
- {
- @Override
- protected boolean useJVMTransport()
- {
- return false;
- }
-
- @Override
- protected boolean useSSLTransport()
- {
- return false;
- }
- }
-
- /**
- * @author Teerawat Chaiyakijpichet (No Magic Asia Ltd.)
- */
- public static final class SSL extends TCPConnectorTest
- {
- @Override
- protected boolean useJVMTransport()
- {
- return false;
- }
-
- @Override
- protected boolean useSSLTransport()
- {
- return true;
- }
- }
-}
+/*
+ * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ * Teerawat Chaiyakijpichet (No Magic Asia Ltd.) - SSL
+ */
+package org.eclipse.net4j.tests;
+
+import org.eclipse.net4j.Net4jUtil;
+import org.eclipse.net4j.buffer.IBufferPool;
+import org.eclipse.net4j.channel.IChannel;
+import org.eclipse.net4j.connector.ConnectorException;
+import org.eclipse.net4j.connector.IConnector;
+import org.eclipse.net4j.internal.tcp.TCPAcceptor;
+import org.eclipse.net4j.internal.tcp.TCPAcceptorFactory;
+import org.eclipse.net4j.internal.tcp.TCPClientConnector;
+import org.eclipse.net4j.internal.tcp.TCPConnector;
+import org.eclipse.net4j.internal.tcp.TCPConnectorFactory;
+import org.eclipse.net4j.internal.tcp.TCPSelector;
+import org.eclipse.net4j.internal.tcp.ssl.SSLAcceptor;
+import org.eclipse.net4j.internal.tcp.ssl.SSLAcceptorFactory;
+import org.eclipse.net4j.internal.tcp.ssl.SSLClientConnector;
+import org.eclipse.net4j.internal.tcp.ssl.SSLConnectorFactory;
+import org.eclipse.net4j.tcp.ITCPSelector;
+import org.eclipse.net4j.tcp.TCPUtil;
+import org.eclipse.net4j.tests.bundle.OM;
+import org.eclipse.net4j.util.collection.RoundRobinBlockingQueue;
+import org.eclipse.net4j.util.concurrent.ConcurrencyUtil;
+import org.eclipse.net4j.util.io.IOUtil;
+import org.eclipse.net4j.util.lifecycle.LifecycleUtil;
+import org.eclipse.net4j.util.security.ChallengeNegotiator;
+import org.eclipse.net4j.util.security.NegotiationException;
+import org.eclipse.net4j.util.security.PasswordCredentials;
+import org.eclipse.net4j.util.security.PasswordCredentialsProvider;
+import org.eclipse.net4j.util.security.Randomizer;
+import org.eclipse.net4j.util.security.ResponseNegotiator;
+import org.eclipse.net4j.util.security.UserManager;
+
+import org.eclipse.spi.net4j.Channel;
+import org.eclipse.spi.net4j.InternalChannel;
+
+import java.nio.channels.ServerSocketChannel;
+import java.util.concurrent.BlockingQueue;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+
+/**
+ * @author Eike Stepper
+ * @author Teerawat Chaiyakijpichet (No Magic Asia Ltd.)
+ */
+public class TCPConnectorTest extends AbstractTransportTest
+{
+ private static final int TIMEOUT = 10000;
+
+ private static final int PORT = 2040;
+
+ private static final String USER_ID = "stepper"; //$NON-NLS-1$
+
+ private static final String INVALID_USER_ID = "invalid"; //$NON-NLS-1$
+
+ private static final char[] PASSWORD = "eike2008".toCharArray(); //$NON-NLS-1$
+
+ private static final char[] INVALID_PASSWORD = "invalid".toCharArray(); //$NON-NLS-1$
+
+ private static final PasswordCredentials CREDENTIALS = new PasswordCredentials(USER_ID, PASSWORD);
+
+ private ExecutorService threadPool;
+
+ private IBufferPool bufferPool;
+
+ private TCPSelector selector;
+
+ private TCPAcceptor acceptor;
+
+ private TCPConnector connector;
+
+ private Randomizer randomizer;
+
+ private UserManager userManager;
+
+ private ChallengeNegotiator challengeNegotiator;
+
+ private PasswordCredentialsProvider credentialsProvider;
+
+ private ResponseNegotiator responseNegotiator;
+
+ @Override
+ protected void doTearDown() throws Exception
+ {
+ cleanup();
+ super.doTearDown();
+ }
+
+ private void cleanup() throws Exception
+ {
+ sleep(100);
+
+ if (connector != null)
+ {
+ connector.close();
+ connector = null;
+ }
+
+ if (responseNegotiator != null)
+ {
+ LifecycleUtil.deactivate(responseNegotiator);
+ responseNegotiator = null;
+ }
+
+ if (credentialsProvider != null)
+ {
+ LifecycleUtil.deactivate(credentialsProvider);
+ credentialsProvider = null;
+ }
+
+ if (acceptor != null)
+ {
+ acceptor.close();
+ acceptor = null;
+ }
+
+ if (challengeNegotiator != null)
+ {
+ LifecycleUtil.deactivate(challengeNegotiator);
+ challengeNegotiator = null;
+ }
+
+ if (userManager != null)
+ {
+ LifecycleUtil.deactivate(userManager);
+ userManager = null;
+ }
+
+ if (randomizer != null)
+ {
+ LifecycleUtil.deactivate(randomizer);
+ randomizer = null;
+ }
+
+ if (selector != null)
+ {
+ LifecycleUtil.deactivate(selector);
+ selector = null;
+ }
+
+ if (bufferPool != null)
+ {
+ LifecycleUtil.deactivate(bufferPool);
+ bufferPool = null;
+ }
+
+ if (threadPool != null)
+ {
+ LifecycleUtil.deactivate(threadPool);
+ threadPool = null;
+ }
+ }
+
+ private void provideTransport()
+ {
+ selector = new TCPSelector();
+
+ if (useSSLTransport())
+ {
+ acceptor = new SSLAcceptor();
+ container.putElement(SSLAcceptorFactory.PRODUCT_GROUP, SSLAcceptorFactory.TYPE, null, acceptor);
+
+ // cannot use same container with the acceptor.
+ connector = new SSLClientConnector();
+ separateContainer.putElement(SSLConnectorFactory.PRODUCT_GROUP, SSLConnectorFactory.TYPE, null, acceptor);
+ }
+ else
+ {
+ acceptor = new TCPAcceptor();
+ container.putElement(TCPAcceptorFactory.PRODUCT_GROUP, TCPUtil.FACTORY_TYPE, null, acceptor);
+
+ connector = new TCPClientConnector();
+ container.putElement(TCPConnectorFactory.PRODUCT_GROUP, TCPConnectorFactory.TYPE, null, acceptor);
+ }
+ }
+
+ private void provideTransport(final long increaseDelayAcceptor)
+ {
+ selector = new TCPSelector();
+
+ if (useSSLTransport())
+ {
+ acceptor = new SSLAcceptor()
+ {
+ @Override
+ public void handleAccept(ITCPSelector selector, ServerSocketChannel serverSocketChannel)
+ {
+ ConcurrencyUtil.sleep(increaseDelayAcceptor);
+ super.handleAccept(selector, serverSocketChannel);
+ }
+ };
+
+ connector = new SSLClientConnector();
+ }
+ else
+ {
+ acceptor = new TCPAcceptor()
+ {
+ @Override
+ public void handleAccept(ITCPSelector selector, ServerSocketChannel serverSocketChannel)
+ {
+ ConcurrencyUtil.sleep(increaseDelayAcceptor);
+ super.handleAccept(selector, serverSocketChannel);
+ }
+ };
+
+ connector = new TCPClientConnector();
+ }
+ }
+
+ public void testDeferredActivation() throws Exception
+ {
+ final long DELAY = 500L;
+ threadPool = Executors.newCachedThreadPool();
+ LifecycleUtil.activate(threadPool);
+
+ bufferPool = Net4jUtil.createBufferPool();
+ LifecycleUtil.activate(bufferPool);
+
+ provideTransport(DELAY);
+
+ selector.activate();
+
+ acceptor.setStartSynchronously(true);
+ acceptor.setSynchronousStartTimeout(TIMEOUT);
+ acceptor.getConfig().setBufferProvider(bufferPool);
+ acceptor.getConfig().setReceiveExecutor(threadPool);
+ acceptor.setSelector(selector);
+ acceptor.setAddress("0.0.0.0"); //$NON-NLS-1$
+ acceptor.setPort(PORT);
+ acceptor.activate();
+
+ connector.getConfig().setBufferProvider(bufferPool);
+ connector.getConfig().setReceiveExecutor(threadPool);
+ connector.setSelector(selector);
+ connector.setHost("localhost"); //$NON-NLS-1$
+ connector.setPort(PORT);
+ connector.activate();
+ // Can fail due to timing variations: assertEquals(false, connector.isActive());
+
+ connector.waitForConnection(DEFAULT_TIMEOUT);
+ assertEquals(true, connector.isActive());
+ }
+
+ public void testDeferredActivation10() throws Exception
+ {
+ for (int i = 0; i < 10; i++)
+ {
+ IOUtil.OUT().println();
+ IOUtil.OUT().println();
+ IOUtil.OUT().println();
+ IOUtil.OUT().println("#####################################################"); //$NON-NLS-1$
+ IOUtil.OUT().println(" RUN = " + i); //$NON-NLS-1$
+ IOUtil.OUT().println("#####################################################"); //$NON-NLS-1$
+ IOUtil.OUT().println();
+ IOUtil.OUT().println();
+ IOUtil.OUT().println();
+ testDeferredActivation();
+ cleanup();
+ }
+ }
+
+ public void testNegotiationSuccess() throws Exception
+ {
+ threadPool = Executors.newCachedThreadPool();
+ LifecycleUtil.activate(threadPool);
+
+ bufferPool = Net4jUtil.createBufferPool();
+ LifecycleUtil.activate(bufferPool);
+
+ randomizer = new Randomizer();
+ randomizer.activate();
+
+ userManager = new UserManager();
+ userManager.activate();
+ userManager.addUser(USER_ID, PASSWORD);
+
+ challengeNegotiator = new ChallengeNegotiator();
+ challengeNegotiator.setRandomizer(randomizer);
+ challengeNegotiator.setUserManager(userManager);
+ challengeNegotiator.activate();
+
+ provideTransport();
+
+ selector.activate();
+
+ acceptor.setStartSynchronously(true);
+ acceptor.setSynchronousStartTimeout(TIMEOUT);
+ acceptor.getConfig().setBufferProvider(bufferPool);
+ acceptor.getConfig().setReceiveExecutor(threadPool);
+ acceptor.getConfig().setNegotiator(challengeNegotiator);
+ acceptor.setSelector(selector);
+ acceptor.setAddress("0.0.0.0"); //$NON-NLS-1$
+ acceptor.setPort(PORT);
+ acceptor.activate();
+
+ credentialsProvider = new PasswordCredentialsProvider(CREDENTIALS);
+ LifecycleUtil.activate(credentialsProvider);
+
+ responseNegotiator = new ResponseNegotiator();
+ responseNegotiator.setCredentialsProvider(credentialsProvider);
+ responseNegotiator.activate();
+
+ connector.getConfig().setBufferProvider(bufferPool);
+ connector.getConfig().setReceiveExecutor(threadPool);
+ connector.getConfig().setNegotiator(responseNegotiator);
+ connector.setSelector(selector);
+ connector.setHost("localhost"); //$NON-NLS-1$
+ connector.setPort(PORT);
+ connector.activate();
+
+ connector.waitForConnection(DEFAULT_TIMEOUT);
+
+ InternalChannel clientChannel = connector.openChannel();
+ assertEquals(USER_ID, clientChannel.getUserID());
+
+ IConnector serverConnector = acceptor.getElements()[0];
+ IChannel serverChannel = serverConnector.getElements()[0];
+ assertEquals(USER_ID, serverChannel.getUserID());
+
+ System.out.println(serverChannel);
+ }
+
+ public void testNegotiationSuccess10() throws Exception
+ {
+ for (int i = 0; i < 10; i++)
+ {
+ IOUtil.OUT().println();
+ IOUtil.OUT().println();
+ IOUtil.OUT().println();
+ IOUtil.OUT().println("#####################################################"); //$NON-NLS-1$
+ IOUtil.OUT().println(" RUN = " + i); //$NON-NLS-1$
+ IOUtil.OUT().println("#####################################################"); //$NON-NLS-1$
+ IOUtil.OUT().println();
+ IOUtil.OUT().println();
+ IOUtil.OUT().println();
+ testNegotiationSuccess();
+ cleanup();
+ }
+ }
+
+ public void testInvalidUser() throws Exception
+ {
+ threadPool = Executors.newCachedThreadPool();
+ LifecycleUtil.activate(threadPool);
+
+ bufferPool = Net4jUtil.createBufferPool();
+ LifecycleUtil.activate(bufferPool);
+
+ randomizer = new Randomizer();
+ randomizer.activate();
+
+ userManager = new UserManager();
+ userManager.activate();
+ userManager.addUser(INVALID_USER_ID, PASSWORD);
+
+ challengeNegotiator = new ChallengeNegotiator();
+ challengeNegotiator.setRandomizer(randomizer);
+ challengeNegotiator.setUserManager(userManager);
+ challengeNegotiator.activate();
+
+ provideTransport();
+
+ selector.activate();
+
+ acceptor.setStartSynchronously(true);
+ acceptor.setSynchronousStartTimeout(TIMEOUT);
+ acceptor.getConfig().setBufferProvider(bufferPool);
+ acceptor.getConfig().setReceiveExecutor(threadPool);
+ acceptor.getConfig().setNegotiator(challengeNegotiator);
+ acceptor.setSelector(selector);
+ acceptor.setAddress("0.0.0.0"); //$NON-NLS-1$
+ acceptor.setPort(PORT);
+ acceptor.activate();
+
+ credentialsProvider = new PasswordCredentialsProvider(CREDENTIALS);
+ LifecycleUtil.activate(credentialsProvider);
+
+ responseNegotiator = new ResponseNegotiator();
+ responseNegotiator.setCredentialsProvider(credentialsProvider);
+ responseNegotiator.activate();
+
+ connector.getConfig().setBufferProvider(bufferPool);
+ connector.getConfig().setReceiveExecutor(threadPool);
+ connector.getConfig().setNegotiator(responseNegotiator);
+ connector.setSelector(selector);
+ connector.setHost("localhost"); //$NON-NLS-1$
+ connector.setPort(PORT);
+
+ try
+ {
+ connector.connectAsync();
+ connector.waitForConnection(DEFAULT_TIMEOUT_EXPECTED);
+ fail("ConnectorException expected"); //$NON-NLS-1$
+ }
+ catch (ConnectorException ex)
+ {
+ OM.LOG.info("Expected ConnectorException:", ex); //$NON-NLS-1$
+ assertEquals(true, ex.getCause() instanceof NegotiationException);
+ }
+ }
+
+ public void testInvalidPassword() throws Exception
+ {
+ threadPool = Executors.newCachedThreadPool();
+ LifecycleUtil.activate(threadPool);
+
+ bufferPool = Net4jUtil.createBufferPool();
+ LifecycleUtil.activate(bufferPool);
+
+ randomizer = new Randomizer();
+ randomizer.activate();
+
+ userManager = new UserManager();
+ userManager.activate();
+ userManager.addUser(USER_ID, INVALID_PASSWORD);
+
+ challengeNegotiator = new ChallengeNegotiator();
+ challengeNegotiator.setRandomizer(randomizer);
+ challengeNegotiator.setUserManager(userManager);
+ challengeNegotiator.activate();
+
+ provideTransport();
+
+ selector.activate();
+
+ acceptor.setStartSynchronously(true);
+ acceptor.setSynchronousStartTimeout(TIMEOUT);
+ acceptor.getConfig().setBufferProvider(bufferPool);
+ acceptor.getConfig().setReceiveExecutor(threadPool);
+ acceptor.getConfig().setNegotiator(challengeNegotiator);
+ acceptor.setSelector(selector);
+ acceptor.setAddress("0.0.0.0"); //$NON-NLS-1$
+ acceptor.setPort(PORT);
+ acceptor.activate();
+
+ credentialsProvider = new PasswordCredentialsProvider(CREDENTIALS);
+ LifecycleUtil.activate(credentialsProvider);
+
+ responseNegotiator = new ResponseNegotiator();
+ responseNegotiator.setCredentialsProvider(credentialsProvider);
+ responseNegotiator.activate();
+
+ connector.getConfig().setBufferProvider(bufferPool);
+ connector.getConfig().setReceiveExecutor(threadPool);
+ connector.getConfig().setNegotiator(responseNegotiator);
+ connector.setSelector(selector);
+ connector.setHost("localhost"); //$NON-NLS-1$
+ connector.setPort(PORT);
+
+ try
+ {
+ connector.connectAsync();
+ connector.waitForConnection(DEFAULT_TIMEOUT_EXPECTED);
+ fail("ConnectorException expected"); //$NON-NLS-1$
+ }
+ catch (ConnectorException ex)
+ {
+ OM.LOG.info("Expected ConnectorException:", ex); //$NON-NLS-1$
+ assertEquals(true, ex.getCause() instanceof NegotiationException);
+ }
+ }
+
+ public void testNoNegotiator() throws Exception
+ {
+ threadPool = Executors.newCachedThreadPool();
+ LifecycleUtil.activate(threadPool);
+
+ bufferPool = Net4jUtil.createBufferPool();
+ LifecycleUtil.activate(bufferPool);
+
+ provideTransport();
+
+ selector.activate();
+
+ acceptor.setStartSynchronously(true);
+ acceptor.setSynchronousStartTimeout(TIMEOUT);
+ acceptor.getConfig().setBufferProvider(bufferPool);
+ acceptor.getConfig().setReceiveExecutor(threadPool);
+ acceptor.setSelector(selector);
+ acceptor.setAddress("0.0.0.0"); //$NON-NLS-1$
+ acceptor.setPort(PORT);
+ acceptor.activate();
+
+ connector.getConfig().setBufferProvider(bufferPool);
+ connector.getConfig().setReceiveExecutor(threadPool);
+ connector.setSelector(selector);
+ connector.setHost("localhost"); //$NON-NLS-1$
+ connector.setPort(PORT);
+ connector.setUserID("SHOULD_FAIL_LATER"); //$NON-NLS-1$
+
+ try
+ {
+ connector.connect();
+ fail("ConnectorException expected"); //$NON-NLS-1$
+ }
+ catch (ConnectorException ex)
+ {
+ OM.LOG.info("Expected ConnectorException:", ex); //$NON-NLS-1$
+ assertEquals(true, ex.getCause() instanceof IllegalStateException);
+ }
+ }
+
+ public void testNegotiatorTooLate() throws Exception
+ {
+ threadPool = Executors.newCachedThreadPool();
+ LifecycleUtil.activate(threadPool);
+
+ bufferPool = Net4jUtil.createBufferPool();
+ LifecycleUtil.activate(bufferPool);
+
+ provideTransport();
+
+ selector.activate();
+
+ acceptor.setStartSynchronously(true);
+ acceptor.setSynchronousStartTimeout(TIMEOUT);
+ acceptor.getConfig().setBufferProvider(bufferPool);
+ acceptor.getConfig().setReceiveExecutor(threadPool);
+ acceptor.setSelector(selector);
+ acceptor.setAddress("0.0.0.0"); //$NON-NLS-1$
+ acceptor.setPort(PORT);
+ acceptor.activate();
+
+ connector.getConfig().setBufferProvider(bufferPool);
+ connector.getConfig().setReceiveExecutor(threadPool);
+ connector.setSelector(selector);
+ connector.setHost("localhost"); //$NON-NLS-1$
+ connector.setPort(PORT);
+ connector.connect();
+
+ credentialsProvider = new PasswordCredentialsProvider(CREDENTIALS);
+ LifecycleUtil.activate(credentialsProvider);
+
+ responseNegotiator = new ResponseNegotiator();
+ responseNegotiator.setCredentialsProvider(credentialsProvider);
+ responseNegotiator.activate();
+
+ try
+ {
+ connector.getConfig().setNegotiator(responseNegotiator);
+ fail("IllegalStateException expected"); //$NON-NLS-1$
+ }
+ catch (IllegalStateException ex)
+ {
+ OM.LOG.info("Expected IllegalStateException:", ex); //$NON-NLS-1$
+ }
+ }
+
+ public void testRoundRobinBlockingQueue() throws Exception
+ {
+ BlockingQueue<IChannel> queue = new RoundRobinBlockingQueue<IChannel>();
+
+ Channel[] channels = new Channel[3];
+
+ for (int i = 0; i < channels.length; i++)
+ {
+ Channel c = new Channel();
+ c.setID((short)i);
+ channels[i] = c;
+ }
+
+ assertEquals(true, queue.isEmpty());
+ assertNull(queue.peek());
+ assertNull(queue.poll());
+
+ // Order will be 0000...1111...2222...
+ for (int i = 0; i < channels.length; i++)
+ {
+ for (int j = 0; j < 10; j++)
+ {
+ queue.put(channels[i]);
+ }
+ }
+
+ for (int i = 0; i < 30; i++)
+ {
+ IChannel peek1 = queue.peek();
+ IChannel peek2 = queue.peek();
+ assertSame(peek1, peek2);
+
+ IChannel poll = queue.poll();
+ // The order should be 012012012012...
+ assertEquals(i % 3, poll.getID());
+ assertSame(peek1, poll);
+ }
+
+ assertEquals(true, queue.isEmpty());
+ assertNull(queue.peek());
+ assertNull(queue.poll());
+ }
+
+ /**
+ * @author Teerawat Chaiyakijpichet (No Magic Asia Ltd.)
+ */
+ public static final class TCP extends TCPConnectorTest
+ {
+ @Override
+ protected boolean useJVMTransport()
+ {
+ return false;
+ }
+
+ @Override
+ protected boolean useSSLTransport()
+ {
+ return false;
+ }
+ }
+
+ /**
+ * @author Teerawat Chaiyakijpichet (No Magic Asia Ltd.)
+ */
+ public static final class SSL extends TCPConnectorTest
+ {
+ @Override
+ protected boolean useJVMTransport()
+ {
+ return false;
+ }
+
+ @Override
+ protected boolean useSSLTransport()
+ {
+ return true;
+ }
+ }
+}
diff --git a/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/util/tests/ExpectedIOTest.java b/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/util/tests/ExpectedIOTest.java
index 6ec72c2142..ab8acbba28 100644
--- a/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/util/tests/ExpectedIOTest.java
+++ b/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/util/tests/ExpectedIOTest.java
@@ -1,390 +1,390 @@
-/*
- * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Eike Stepper - initial API and implementation
- */
-package org.eclipse.net4j.util.tests;
-
-import org.eclipse.net4j.util.concurrent.ConcurrencyUtil;
-import org.eclipse.net4j.util.io.ExpectedFileInputStream;
-import org.eclipse.net4j.util.io.ExpectedFileReader;
-import org.eclipse.net4j.util.io.IOUtil;
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.EOFException;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.FileWriter;
-import java.io.Reader;
-import java.io.Writer;
-
-/**
- * @author Eike Stepper
- */
-public class ExpectedIOTest extends AbstractOMTest
-{
- private Exception exception;
-
- @Override
- protected void doSetUp() throws Exception
- {
- super.doSetUp();
- exception = null;
- }
-
- public void testInputStream() throws Exception
- {
- final File file = createTempFile("ExpectedIOTest", ".tmp");
- final int LOOPS = 30;
-
- Thread producer = new Thread("PRODUCER")
- {
- @Override
- public void run()
- {
- DataOutputStream out = null;
-
- try
- {
- out = new DataOutputStream(new FileOutputStream(file));
- for (int i = 0; i < LOOPS; i++)
- {
- out.writeInt(i);
- IOUtil.ERR().println(i);
- ConcurrencyUtil.sleep(100);
- }
- }
- catch (Exception ex)
- {
- if (exception == null)
- {
- exception = ex;
- }
- }
- finally
- {
- IOUtil.close(out);
- }
- }
- };
-
- Thread consumer = new Thread("CONSUMER")
- {
- @Override
- public void run()
- {
- DataInputStream in = null;
-
- try
- {
- in = new DataInputStream(new ExpectedFileInputStream(file, LOOPS * 4));
-
- for (int i = 0; i < LOOPS; i++)
- {
- System.out.println(in.readInt());
- }
- }
- catch (Exception ex)
- {
- if (exception == null)
- {
- exception = ex;
- }
- }
- finally
- {
- IOUtil.close(in);
- }
- }
- };
-
- producer.start();
- ConcurrencyUtil.sleep(500);
- consumer.start();
-
- producer.join();
- consumer.join();
-
- if (exception != null)
- {
- throw exception;
- }
- }
-
- public void testInputStreamEOF() throws Exception
- {
- final File file = File.createTempFile("ExpectedIOTest", ".tmp");
- final int LOOPS = 30;
-
- Thread producer = new Thread("PRODUCER")
- {
- @Override
- public void run()
- {
- DataOutputStream out = null;
-
- try
- {
- out = new DataOutputStream(new FileOutputStream(file));
- for (int i = 0; i < LOOPS; i++)
- {
- out.writeInt(i);
- IOUtil.ERR().println(i);
- ConcurrencyUtil.sleep(100);
- }
- }
- catch (Exception ex)
- {
- if (exception == null)
- {
- exception = ex;
- }
- }
- finally
- {
- IOUtil.close(out);
- }
- }
- };
-
- Thread consumer = new Thread("CONSUMER")
- {
- @Override
- public void run()
- {
- DataInputStream in = null;
-
- try
- {
- in = new DataInputStream(new ExpectedFileInputStream(file, LOOPS * 4));
-
- for (int i = 0; i < LOOPS + 10; i++)
- {
- System.out.println(in.readInt());
- }
- }
- catch (Exception ex)
- {
- if (exception == null)
- {
- exception = ex;
- }
- }
- finally
- {
- IOUtil.close(in);
- }
- }
- };
-
- producer.start();
- ConcurrencyUtil.sleep(500);
- consumer.start();
-
- producer.join();
- consumer.join();
-
- if (!(exception instanceof EOFException))
- {
- throw exception;
- }
- }
-
- public void testReader() throws Exception
- {
- final File file = File.createTempFile("ExpectedIOTest", ".tmp");
- final int LOOPS = 30;
-
- Thread producer = new Thread("PRODUCER")
- {
- @Override
- public void run()
- {
- Writer out = null;
-
- try
- {
- out = new FileWriter(file);
- for (int i = 0; i < LOOPS; i++)
- {
- int c = 'a' + i;
- out.write(c);
- IOUtil.ERR().println(c);
-
- out.write(c + 1);
- IOUtil.ERR().println(c + 1);
- ConcurrencyUtil.sleep(100);
- }
- }
- catch (Exception ex)
- {
- if (exception == null)
- {
- exception = ex;
- }
- }
- finally
- {
- IOUtil.close(out);
- }
- }
- };
-
- Thread consumer = new Thread("CONSUMER")
- {
- @Override
- public void run()
- {
- Reader in = null;
-
- try
- {
- in = new ExpectedFileReader(file, LOOPS * 2);
-
- for (int i = 0; i < LOOPS; i++)
- {
- int c = in.read();
- if (c == -1)
- {
- throw new EOFException();
- }
-
- System.out.println(c);
- c = in.read();
- if (c == -1)
- {
- throw new EOFException();
- }
-
- System.out.println(c);
- }
- }
- catch (Exception ex)
- {
- if (exception == null)
- {
- exception = ex;
- }
- }
- finally
- {
- IOUtil.close(in);
- }
- }
- };
-
- producer.start();
- ConcurrencyUtil.sleep(500);
- consumer.start();
-
- producer.join();
- consumer.join();
-
- if (exception != null)
- {
- throw exception;
- }
- }
-
- public void testReaderEOF() throws Exception
- {
- final File file = File.createTempFile("ExpectedIOTest", ".tmp");
- final int LOOPS = 30;
-
- Thread producer = new Thread("PRODUCER")
- {
- @Override
- public void run()
- {
- Writer out = null;
-
- try
- {
- out = new FileWriter(file);
- for (int i = 0; i < LOOPS; i++)
- {
- int c = 'a' + i;
- out.write(c);
- IOUtil.ERR().println(c);
-
- out.write(c + 1);
- IOUtil.ERR().println(c + 1);
- ConcurrencyUtil.sleep(100);
- }
- }
- catch (Exception ex)
- {
- if (exception == null)
- {
- exception = ex;
- }
- }
- finally
- {
- IOUtil.close(out);
- }
- }
- };
-
- Thread consumer = new Thread("CONSUMER")
- {
- @Override
- public void run()
- {
- Reader in = null;
-
- try
- {
- in = new ExpectedFileReader(file, LOOPS * 2);
-
- for (int i = 0; i < LOOPS + 10; i++)
- {
- int c = in.read();
- if (c == -1)
- {
- throw new EOFException();
- }
-
- System.out.println(c);
- c = in.read();
- if (c == -1)
- {
- throw new EOFException();
- }
-
- System.out.println(c);
- }
- }
- catch (Exception ex)
- {
- if (exception == null)
- {
- exception = ex;
- }
- }
- finally
- {
- IOUtil.close(in);
- }
- }
- };
-
- producer.start();
- ConcurrencyUtil.sleep(500);
- consumer.start();
-
- producer.join();
- consumer.join();
-
- if (!(exception instanceof EOFException))
- {
- throw exception;
- }
- }
-}
+/*
+ * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.net4j.util.tests;
+
+import org.eclipse.net4j.util.concurrent.ConcurrencyUtil;
+import org.eclipse.net4j.util.io.ExpectedFileInputStream;
+import org.eclipse.net4j.util.io.ExpectedFileReader;
+import org.eclipse.net4j.util.io.IOUtil;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.EOFException;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.FileWriter;
+import java.io.Reader;
+import java.io.Writer;
+
+/**
+ * @author Eike Stepper
+ */
+public class ExpectedIOTest extends AbstractOMTest
+{
+ private Exception exception;
+
+ @Override
+ protected void doSetUp() throws Exception
+ {
+ super.doSetUp();
+ exception = null;
+ }
+
+ public void testInputStream() throws Exception
+ {
+ final File file = createTempFile("ExpectedIOTest", ".tmp");
+ final int LOOPS = 30;
+
+ Thread producer = new Thread("PRODUCER")
+ {
+ @Override
+ public void run()
+ {
+ DataOutputStream out = null;
+
+ try
+ {
+ out = new DataOutputStream(new FileOutputStream(file));
+ for (int i = 0; i < LOOPS; i++)
+ {
+ out.writeInt(i);
+ IOUtil.ERR().println(i);
+ ConcurrencyUtil.sleep(10);
+ }
+ }
+ catch (Exception ex)
+ {
+ if (exception == null)
+ {
+ exception = ex;
+ }
+ }
+ finally
+ {
+ IOUtil.close(out);
+ }
+ }
+ };
+
+ Thread consumer = new Thread("CONSUMER")
+ {
+ @Override
+ public void run()
+ {
+ DataInputStream in = null;
+
+ try
+ {
+ in = new DataInputStream(new ExpectedFileInputStream(file, LOOPS * 4));
+
+ for (int i = 0; i < LOOPS; i++)
+ {
+ System.out.println(in.readInt());
+ }
+ }
+ catch (Exception ex)
+ {
+ if (exception == null)
+ {
+ exception = ex;
+ }
+ }
+ finally
+ {
+ IOUtil.close(in);
+ }
+ }
+ };
+
+ producer.start();
+ ConcurrencyUtil.sleep(500);
+ consumer.start();
+
+ producer.join();
+ consumer.join();
+
+ if (exception != null)
+ {
+ throw exception;
+ }
+ }
+
+ public void testInputStreamEOF() throws Exception
+ {
+ final File file = createTempFile("ExpectedIOTest", ".tmp");
+ final int LOOPS = 30;
+
+ Thread producer = new Thread("PRODUCER")
+ {
+ @Override
+ public void run()
+ {
+ DataOutputStream out = null;
+
+ try
+ {
+ out = new DataOutputStream(new FileOutputStream(file));
+ for (int i = 0; i < LOOPS; i++)
+ {
+ out.writeInt(i);
+ IOUtil.ERR().println(i);
+ ConcurrencyUtil.sleep(10);
+ }
+ }
+ catch (Exception ex)
+ {
+ if (exception == null)
+ {
+ exception = ex;
+ }
+ }
+ finally
+ {
+ IOUtil.close(out);
+ }
+ }
+ };
+
+ Thread consumer = new Thread("CONSUMER")
+ {
+ @Override
+ public void run()
+ {
+ DataInputStream in = null;
+
+ try
+ {
+ in = new DataInputStream(new ExpectedFileInputStream(file, LOOPS * 4));
+
+ for (int i = 0; i < LOOPS + 10; i++)
+ {
+ System.out.println(in.readInt());
+ }
+ }
+ catch (Exception ex)
+ {
+ if (exception == null)
+ {
+ exception = ex;
+ }
+ }
+ finally
+ {
+ IOUtil.close(in);
+ }
+ }
+ };
+
+ producer.start();
+ ConcurrencyUtil.sleep(500);
+ consumer.start();
+
+ producer.join();
+ consumer.join();
+
+ if (!(exception instanceof EOFException))
+ {
+ throw exception;
+ }
+ }
+
+ public void testReader() throws Exception
+ {
+ final File file = createTempFile("ExpectedIOTest", ".tmp");
+ final int LOOPS = 30;
+
+ Thread producer = new Thread("PRODUCER")
+ {
+ @Override
+ public void run()
+ {
+ Writer out = null;
+
+ try
+ {
+ out = new FileWriter(file);
+ for (int i = 0; i < LOOPS; i++)
+ {
+ int c = 'a' + i;
+ out.write(c);
+ IOUtil.ERR().println(c);
+
+ out.write(c + 1);
+ IOUtil.ERR().println(c + 1);
+ ConcurrencyUtil.sleep(10);
+ }
+ }
+ catch (Exception ex)
+ {
+ if (exception == null)
+ {
+ exception = ex;
+ }
+ }
+ finally
+ {
+ IOUtil.close(out);
+ }
+ }
+ };
+
+ Thread consumer = new Thread("CONSUMER")
+ {
+ @Override
+ public void run()
+ {
+ Reader in = null;
+
+ try
+ {
+ in = new ExpectedFileReader(file, LOOPS * 2);
+
+ for (int i = 0; i < LOOPS; i++)
+ {
+ int c = in.read();
+ if (c == -1)
+ {
+ throw new EOFException();
+ }
+
+ System.out.println(c);
+ c = in.read();
+ if (c == -1)
+ {
+ throw new EOFException();
+ }
+
+ System.out.println(c);
+ }
+ }
+ catch (Exception ex)
+ {
+ if (exception == null)
+ {
+ exception = ex;
+ }
+ }
+ finally
+ {
+ IOUtil.close(in);
+ }
+ }
+ };
+
+ producer.start();
+ ConcurrencyUtil.sleep(500);
+ consumer.start();
+
+ producer.join();
+ consumer.join();
+
+ if (exception != null)
+ {
+ throw exception;
+ }
+ }
+
+ public void testReaderEOF() throws Exception
+ {
+ final File file = createTempFile("ExpectedIOTest", ".tmp");
+ final int LOOPS = 30;
+
+ Thread producer = new Thread("PRODUCER")
+ {
+ @Override
+ public void run()
+ {
+ Writer out = null;
+
+ try
+ {
+ out = new FileWriter(file);
+ for (int i = 0; i < LOOPS; i++)
+ {
+ int c = 'a' + i;
+ out.write(c);
+ IOUtil.ERR().println(c);
+
+ out.write(c + 1);
+ IOUtil.ERR().println(c + 1);
+ ConcurrencyUtil.sleep(10);
+ }
+ }
+ catch (Exception ex)
+ {
+ if (exception == null)
+ {
+ exception = ex;
+ }
+ }
+ finally
+ {
+ IOUtil.close(out);
+ }
+ }
+ };
+
+ Thread consumer = new Thread("CONSUMER")
+ {
+ @Override
+ public void run()
+ {
+ Reader in = null;
+
+ try
+ {
+ in = new ExpectedFileReader(file, LOOPS * 2);
+
+ for (int i = 0; i < LOOPS + 10; i++)
+ {
+ int c = in.read();
+ if (c == -1)
+ {
+ throw new EOFException();
+ }
+
+ System.out.println(c);
+ c = in.read();
+ if (c == -1)
+ {
+ throw new EOFException();
+ }
+
+ System.out.println(c);
+ }
+ }
+ catch (Exception ex)
+ {
+ if (exception == null)
+ {
+ exception = ex;
+ }
+ }
+ finally
+ {
+ IOUtil.close(in);
+ }
+ }
+ };
+
+ producer.start();
+ ConcurrencyUtil.sleep(500);
+ consumer.start();
+
+ producer.join();
+ consumer.join();
+
+ if (!(exception instanceof EOFException))
+ {
+ throw exception;
+ }
+ }
+}
diff --git a/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/util/tests/QueueWorkerWorkSerializerTest.java b/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/util/tests/QueueWorkerWorkSerializerTest.java
index eaead2bd36..23768789ea 100644
--- a/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/util/tests/QueueWorkerWorkSerializerTest.java
+++ b/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/util/tests/QueueWorkerWorkSerializerTest.java
@@ -1,216 +1,211 @@
-/*
- * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Andre Dietisheim - initial API and implementation
- * Eike Stepper - maintenance
- */
-package org.eclipse.net4j.util.tests;
-
-import org.eclipse.net4j.util.concurrent.QueueWorkerWorkSerializer;
-import org.eclipse.net4j.util.io.IOUtil;
-
-import java.util.Random;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicInteger;
-
-/**
- * A test for {@link QueueWorkerWorkSerializer}.
- *
- * @author Andre Dietisheim
- */
-public class QueueWorkerWorkSerializerTest extends AbstractOMTest
-{
- /** timeout to wait for execution of all work units. */
- private static final int WORK_COMPLETION_TIMEOUT = 10000;
-
- /** number of work producer threads. */
- private static final int NUM_WORKPRODUCER_THREADS = 10;
-
- /** number of working units to execute. */
- private static final int NUM_WORK = 40;
-
- /** the latch to wait on for the execution of all working units. */
- private CountDownLatch workConsumedLatch;
-
- /** The number of working units created. */
- private AtomicInteger workProduced;
-
- /** The thread pool to execute the work unit producers in. */
- private ExecutorService threadPool;
-
- /** The queue worker to submit the work units to. */
- private QueueWorkerWorkSerializer queueWorker;
-
- public QueueWorkerWorkSerializerTest()
- {
- }
-
- /**
- * Test that asserts that all submitted workers are executed
- */
- public void testAllWorkSubmittedIsConsumed() throws Throwable
- {
- createWorkProducerThreads(new WorkProducerFactory()
- {
- public WorkProducer createWorkProducer()
- {
- return new WorkProducer()
- {
- @Override
- protected Runnable createWork(int id)
- {
- return new Work(id);
- }
- };
- }
- });
-
- waitForAllWorkExecuted();
- assertEquals(workProduced.get(), NUM_WORK - workConsumedLatch.getCount());
- }
-
- /**
- * If the workers throw Exceptions, the QueueWorker stops executing work (deactivates its working thread). Therefore
- * the first work unit gets consumed, the rest is not executed any more.
- */
- public void testGivenWorkExceptionInWorkAllWorkSubmittedOnlyTheFirstWorkerIsConsumed() throws Throwable
- {
- createWorkProducerThreads(new WorkProducerFactory()
- {
- public WorkProducer createWorkProducer()
- {
- return new WorkProducer()
- {
- @Override
- protected Runnable createWork(int id)
- {
- return new Work(id)
- {
- @Override
- public void run()
- {
- super.run();
- throw new RuntimeException("dummy exception to simulate an error in executed workers");
- }
- };
- }
- };
- }
- });
-
- waitForAllWorkExecuted();
- assertEquals(NUM_WORK, workProduced.get());
- assertEquals(1, NUM_WORK - workConsumedLatch.getCount());
- }
-
- private void waitForAllWorkExecuted() throws InterruptedException
- {
- if (!workConsumedLatch.await(WORK_COMPLETION_TIMEOUT, TimeUnit.MILLISECONDS))
- {
- IOUtil.OUT().println("timeout occured before all workers were executed");
- }
- }
-
- private void createWorkProducerThreads(WorkProducerFactory factory)
- {
- for (int i = 0; i < NUM_WORKPRODUCER_THREADS; i++)
- {
- threadPool.submit(factory.createWorkProducer());
- }
- }
-
- /**
- * A factory that creates work units.
- */
- private static interface WorkProducerFactory
- {
- public WorkProducer createWorkProducer();
- }
-
- /**
- * A Runnable that creates work units
- */
- private abstract class WorkProducer implements Runnable
- {
- private Random random = new Random();
-
- /**
- * Produce work: add work units to the queue worker
- */
- public void run()
- {
- try
- {
- int currentWorkProduced;
- while ((currentWorkProduced = workProduced.getAndIncrement()) < NUM_WORK)
- {
- queueWorker.addWork(createWork(currentWorkProduced));
- Thread.sleep(random.nextInt(1000));
- }
-
- // correct last increment
- workProduced.decrementAndGet();
- IOUtil.OUT().println("work producer " + this + " stopped its production");
- }
- catch (InterruptedException ex)
- {
- return;
- }
- }
-
- /**
- * Creates a working unit (runnable).
- *
- * @param id
- * the id
- * @return the runnable
- */
- protected abstract Runnable createWork(int id);
- }
-
- /**
- * A simple work unit to be executed in the queueWorker.
- *
- * @author Andre Dietisheim
- */
- class Work implements Runnable
- {
- private final int id;
-
- private Work(int id)
- {
- this.id = id;
- IOUtil.OUT().println("work unit " + id + " created");
- }
-
- public void run()
- {
- workConsumedLatch.countDown();
- IOUtil.OUT().println("work unit " + id + " consumed");
- }
- }
-
- @Override
- public void setUp()
- {
- threadPool = Executors.newFixedThreadPool(NUM_WORKPRODUCER_THREADS);
- workConsumedLatch = new CountDownLatch(NUM_WORK);
- queueWorker = new QueueWorkerWorkSerializer();
- workProduced = new AtomicInteger(0);
- }
-
- @Override
- public void tearDown()
- {
- threadPool.shutdown();
- queueWorker.dispose();
- }
-}
+/*
+ * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Andre Dietisheim - initial API and implementation
+ * Eike Stepper - maintenance
+ */
+package org.eclipse.net4j.util.tests;
+
+import org.eclipse.net4j.util.concurrent.QueueWorkerWorkSerializer;
+import org.eclipse.net4j.util.io.IOUtil;
+
+import java.util.Random;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicInteger;
+
+/**
+ * A test for {@link QueueWorkerWorkSerializer}.
+ *
+ * @author Andre Dietisheim
+ */
+public class QueueWorkerWorkSerializerTest extends AbstractOMTest
+{
+ /** timeout to wait for execution of all work units. */
+ private static final int WORK_COMPLETION_TIMEOUT = 10000;
+
+ /** number of work producer threads. */
+ private static final int NUM_WORKPRODUCER_THREADS = 10;
+
+ /** number of working units to execute. */
+ private static final int NUM_WORK = 40;
+
+ /** the latch to wait on for the execution of all working units. */
+ private CountDownLatch workConsumedLatch;
+
+ /** The number of working units created. */
+ private AtomicInteger workProduced;
+
+ /** The thread pool to execute the work unit producers in. */
+ private ExecutorService threadPool;
+
+ /** The queue worker to submit the work units to. */
+ private QueueWorkerWorkSerializer queueWorker;
+
+ @Override
+ public void setUp()
+ {
+ threadPool = Executors.newFixedThreadPool(NUM_WORKPRODUCER_THREADS);
+ workConsumedLatch = new CountDownLatch(NUM_WORK);
+ queueWorker = new QueueWorkerWorkSerializer();
+ workProduced = new AtomicInteger(0);
+ }
+
+ @Override
+ public void tearDown()
+ {
+ threadPool.shutdown();
+ queueWorker.dispose();
+ }
+
+ /**
+ * Test that asserts that all submitted workers are executed
+ */
+ public void testAllWorkSubmittedIsConsumed() throws Throwable
+ {
+ createWorkProducerThreads(new WorkProducerFactory()
+ {
+ public WorkProducer createWorkProducer()
+ {
+ return new WorkProducer()
+ {
+ @Override
+ protected Runnable createWork(int id)
+ {
+ return new Work(id);
+ }
+ };
+ }
+ });
+
+ waitForAllWorkExecuted();
+ assertEquals(workProduced.get(), NUM_WORK - workConsumedLatch.getCount());
+ }
+
+ /**
+ * If the workers throw Exceptions, the QueueWorker stops executing work (deactivates its working thread). Therefore
+ * the first work unit gets consumed, the rest is not executed any more.
+ */
+ public void testGivenWorkExceptionInWorkAllWorkSubmittedOnlyTheFirstWorkerIsConsumed() throws Throwable
+ {
+ createWorkProducerThreads(new WorkProducerFactory()
+ {
+ public WorkProducer createWorkProducer()
+ {
+ return new WorkProducer()
+ {
+ @Override
+ protected Runnable createWork(int id)
+ {
+ return new Work(id)
+ {
+ @Override
+ public void run()
+ {
+ super.run();
+ throw new RuntimeException("dummy exception to simulate an error in executed workers");
+ }
+ };
+ }
+ };
+ }
+ });
+
+ waitForAllWorkExecuted();
+ assertEquals(NUM_WORK, workProduced.get());
+ }
+
+ private void waitForAllWorkExecuted() throws InterruptedException
+ {
+ if (!workConsumedLatch.await(WORK_COMPLETION_TIMEOUT, TimeUnit.MILLISECONDS))
+ {
+ IOUtil.OUT().println("timeout occured before all workers were executed");
+ }
+ }
+
+ private void createWorkProducerThreads(WorkProducerFactory factory)
+ {
+ for (int i = 0; i < NUM_WORKPRODUCER_THREADS; i++)
+ {
+ threadPool.submit(factory.createWorkProducer());
+ }
+ }
+
+ /**
+ * A factory that creates work units.
+ */
+ private static interface WorkProducerFactory
+ {
+ public WorkProducer createWorkProducer();
+ }
+
+ /**
+ * A Runnable that creates work units
+ */
+ private abstract class WorkProducer implements Runnable
+ {
+ private Random random = new Random();
+
+ /**
+ * Produce work: add work units to the queue worker
+ */
+ public void run()
+ {
+ try
+ {
+ int currentWorkProduced;
+ while ((currentWorkProduced = workProduced.getAndIncrement()) < NUM_WORK)
+ {
+ queueWorker.addWork(createWork(currentWorkProduced));
+ Thread.sleep(random.nextInt(1000));
+ }
+
+ // correct last increment
+ workProduced.decrementAndGet();
+ IOUtil.OUT().println("work producer " + this + " stopped its production");
+ }
+ catch (InterruptedException ex)
+ {
+ return;
+ }
+ }
+
+ /**
+ * Creates a working unit (runnable).
+ *
+ * @param id
+ * the id
+ * @return the runnable
+ */
+ protected abstract Runnable createWork(int id);
+ }
+
+ /**
+ * A simple work unit to be executed in the queueWorker.
+ *
+ * @author Andre Dietisheim
+ */
+ class Work implements Runnable
+ {
+ private final int id;
+
+ private Work(int id)
+ {
+ this.id = id;
+ IOUtil.OUT().println("work unit " + id + " created");
+ }
+
+ public void run()
+ {
+ workConsumedLatch.countDown();
+ IOUtil.OUT().println("work unit " + id + " consumed");
+ }
+ }
+}
diff --git a/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/util/tests/SortedFileMapTest.java b/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/util/tests/SortedFileMapTest.java
index 72404d7afe..342c75326a 100644
--- a/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/util/tests/SortedFileMapTest.java
+++ b/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/util/tests/SortedFileMapTest.java
@@ -1,108 +1,108 @@
-/*
- * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Eike Stepper - initial API and implementation
- */
-package org.eclipse.net4j.util.tests;
-
-import org.eclipse.net4j.util.io.ExtendedDataInput;
-import org.eclipse.net4j.util.io.ExtendedDataOutput;
-import org.eclipse.net4j.util.io.IOUtil;
-import org.eclipse.net4j.util.io.SortedFileMap;
-
-import java.io.File;
-import java.io.IOException;
-
-/**
- * @author Eike Stepper
- */
-public class SortedFileMapTest extends AbstractOMTest
-{
- public void testMap() throws Exception
- {
- File file = new File("testMap.dat"); //$NON-NLS-1$
- if (file.exists())
- {
- file.delete();
- }
-
- SortedFileMap<Integer, String> map = null;
-
- try
- {
- map = new TestMap(file);
- for (int i = 0; i < 500; i++)
- {
- map.put(i, "Value " + i); //$NON-NLS-1$
- }
-
- for (int i = 0; i < 500; i++)
- {
- String value = map.get(i);
- IOUtil.OUT().println(value);
- }
- }
- finally
- {
- IOUtil.close(map);
- }
- }
-
- /**
- * @author Eike Stepper
- */
- public static final class TestMap extends SortedFileMap<Integer, String>
- {
- public TestMap(File file)
- {
- super(file, "rw"); //$NON-NLS-1$
- }
-
- @Override
- public int getKeySize()
- {
- return 4;
- }
-
- @Override
- protected Integer readKey(ExtendedDataInput in) throws IOException
- {
- return in.readInt();
- }
-
- @Override
- protected void writeKey(ExtendedDataOutput out, Integer key) throws IOException
- {
- out.writeInt(key);
- }
-
- @Override
- public int getValueSize()
- {
- return 20;
- }
-
- @Override
- protected String readValue(ExtendedDataInput in) throws IOException
- {
- return in.readString();
- }
-
- @Override
- protected void writeValue(ExtendedDataOutput out, String value) throws IOException
- {
- byte[] bytes = value.getBytes();
- if (bytes.length + 4 > getValueSize())
- {
- throw new IllegalArgumentException("Value size of " + getValueSize() + " exceeded: " + value); //$NON-NLS-1$ //$NON-NLS-2$
- }
-
- out.writeByteArray(bytes);
- }
- }
-}
+/*
+ * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.net4j.util.tests;
+
+import org.eclipse.net4j.util.io.ExtendedDataInput;
+import org.eclipse.net4j.util.io.ExtendedDataOutput;
+import org.eclipse.net4j.util.io.IOUtil;
+import org.eclipse.net4j.util.io.SortedFileMap;
+
+import java.io.File;
+import java.io.IOException;
+
+/**
+ * @author Eike Stepper
+ */
+public class SortedFileMapTest extends AbstractOMTest
+{
+ public void testMap() throws Exception
+ {
+ File file = createTempFile("testMap-", ".dat"); //$NON-NLS-1$
+ if (file.exists())
+ {
+ file.delete();
+ }
+
+ SortedFileMap<Integer, String> map = null;
+
+ try
+ {
+ map = new TestMap(file);
+ for (int i = 0; i < 500; i++)
+ {
+ map.put(i, "Value " + i); //$NON-NLS-1$
+ }
+
+ for (int i = 0; i < 500; i++)
+ {
+ String value = map.get(i);
+ IOUtil.OUT().println(value);
+ }
+ }
+ finally
+ {
+ IOUtil.close(map);
+ }
+ }
+
+ /**
+ * @author Eike Stepper
+ */
+ public static final class TestMap extends SortedFileMap<Integer, String>
+ {
+ public TestMap(File file)
+ {
+ super(file, "rw"); //$NON-NLS-1$
+ }
+
+ @Override
+ public int getKeySize()
+ {
+ return 4;
+ }
+
+ @Override
+ protected Integer readKey(ExtendedDataInput in) throws IOException
+ {
+ return in.readInt();
+ }
+
+ @Override
+ protected void writeKey(ExtendedDataOutput out, Integer key) throws IOException
+ {
+ out.writeInt(key);
+ }
+
+ @Override
+ public int getValueSize()
+ {
+ return 20;
+ }
+
+ @Override
+ protected String readValue(ExtendedDataInput in) throws IOException
+ {
+ return in.readString();
+ }
+
+ @Override
+ protected void writeValue(ExtendedDataOutput out, String value) throws IOException
+ {
+ byte[] bytes = value.getBytes();
+ if (bytes.length + 4 > getValueSize())
+ {
+ throw new IllegalArgumentException("Value size of " + getValueSize() + " exceeded: " + value); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ out.writeByteArray(bytes);
+ }
+ }
+}
diff --git a/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/util/tests/StringCompressorTest.java b/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/util/tests/StringCompressorTest.java
index 539c517b2c..4296097445 100644
--- a/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/util/tests/StringCompressorTest.java
+++ b/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/util/tests/StringCompressorTest.java
@@ -1,291 +1,290 @@
-/*
- * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Eike Stepper - initial API and implementation
- */
-package org.eclipse.net4j.util.tests;
-
-import org.eclipse.net4j.util.io.ExtendedDataInput;
-import org.eclipse.net4j.util.io.ExtendedDataInputStream;
-import org.eclipse.net4j.util.io.ExtendedDataOutputStream;
-import org.eclipse.net4j.util.io.StringCompressor;
-
-import java.io.IOException;
-import java.io.PipedInputStream;
-import java.io.PipedOutputStream;
-import java.util.Random;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.TimeUnit;
-
-/**
- * @author Eike Stepper
- */
-public class StringCompressorTest extends AbstractOMTest
-{
- private static long SLEEP_WRITER = 1;
-
- private static long SLEEP_READER = 0;
-
- private static final String[] strings = createStrings(50, 837456);
-
- private static final int[] indices = createIndices(100, 50, 9087346);
-
- private StringCompressor.Counting client;
-
- private StringCompressor.Counting server;
-
- public void testSingleStreamToServer() throws Exception
- {
- run(1, 0);
- }
-
- public void testSingleStreamToClient() throws Exception
- {
- run(0, 1);
- }
-
- public void testBidi1() throws Exception
- {
- run(1, 1);
- }
-
- public void testBidi10() throws Exception
- {
- run(10, 10);
- }
-
- public void testBidi1Plus10() throws Exception
- {
- run(1, 1);
- run(10, 10);
- }
-
- @Override
- protected void doSetUp() throws Exception
- {
- super.doSetUp();
- client = new StringCompressor.Counting(true);
- server = new StringCompressor.Counting(false);
- }
-
- @Override
- protected void doTearDown() throws Exception
- {
- System.out.println("Strings read by client compressor: " + client.getStringsRead());
- System.out.println("Strings read by server compressor: " + server.getStringsRead());
- System.out.println("Strings written by client compressor: " + client.getStringsWritten());
- System.out.println("Strings written by server compressor: " + server.getStringsWritten());
- super.doTearDown();
- }
-
- private void run(int toServer, int toClient) throws IOException, InterruptedException
- {
- CountDownLatch latch = new CountDownLatch(toServer + toClient);
- while (toServer > 0 || toClient > 0)
- {
- if (toServer > 0)
- {
- --toServer;
- new Stream(latch, client, server).start();
- }
-
- if (toClient > 0)
- {
- --toClient;
- new Stream(latch, server, client).start();
- }
- }
-
- latch.await(300, TimeUnit.SECONDS);
- }
-
- private static String[] createStrings(int count, long seed)
- {
- Random random = new Random(seed);
- String[] result = new String[count];
- for (int i = 0; i < result.length; i++)
- {
- String str = "";
- int length = next(random) % 13;
- for (int j = 0; j < length + 1; j++)
- {
- int val = next(random);
- str += Integer.toString(val, 36);
- }
-
- System.out.println(str);
- result[i] = str;
- }
-
- return result;
- }
-
- private static int[] createIndices(int count, int range, long seed)
- {
- Random random = new Random(seed);
- int[] result = new int[count];
- for (int i = 0; i < result.length; i++)
- {
- result[i] = next(random) % range;
- }
-
- return result;
- }
-
- private static int next(Random random)
- {
- for (;;)
- {
- int val = random.nextInt();
- if (val > 0)
- {
- return val;
- }
- }
- }
-
- /**
- * @author Eike Stepper
- */
- public static class Stream extends Thread
- {
- private CountDownLatch latch;
-
- private Writer writer;
-
- private Reader reader;
-
- public Stream(CountDownLatch latch, StringCompressor writer, StringCompressor reader) throws IOException
- {
- this.latch = latch;
- this.writer = new Writer(writer);
- this.reader = new Reader(reader, this.writer);
- }
-
- @Override
- public void run()
- {
- try
- {
- reader.start();
- writer.start();
-
- reader.join();
- writer.join();
-
- latch.countDown();
- }
- catch (Exception ex)
- {
- ex.printStackTrace();
- }
- }
- }
-
- /**
- * @author Eike Stepper
- */
- public static class Writer extends Thread
- {
- private StringCompressor compressor;
-
- private PipedOutputStream pipe;
-
- private Exception exception;
-
- public Writer(StringCompressor compressor)
- {
- this.compressor = compressor;
- pipe = new PipedOutputStream();
- }
-
- public PipedOutputStream getPipe()
- {
- return pipe;
- }
-
- public Exception getException()
- {
- return exception;
- }
-
- @Override
- public void run()
- {
- try
- {
- ExtendedDataOutputStream out = new ExtendedDataOutputStream(pipe);
- for (int i = 0; i < indices.length; i++)
- {
- int index = indices[i];
- msg(getName() + " --> " + i);
- compressor.write(out, strings[index]);
- if (SLEEP_WRITER > 0)
- {
- Thread.sleep(SLEEP_WRITER);
- }
- }
- }
- catch (Exception ex)
- {
- exception = ex;
- ex.printStackTrace();
- }
- }
- }
-
- /**
- * @author Eike Stepper
- */
- public static class Reader extends Thread
- {
- private StringCompressor compressor;
-
- private PipedInputStream pipe;
-
- private Exception exception;
-
- public Reader(StringCompressor compressor, Writer writer) throws IOException
- {
- this.compressor = compressor;
- pipe = new PipedInputStream(writer.getPipe());
- }
-
- public Exception getException()
- {
- return exception;
- }
-
- @Override
- public void run()
- {
- try
- {
- ExtendedDataInput in = new ExtendedDataInputStream(pipe);
- for (int i = 0; i < indices.length; i++)
- {
- int index = indices[i];
- msg(getName() + " --> " + i);
- String toBeRead = strings[index];
-
- String read = compressor.read(in);
- assertEquals(toBeRead, read);
- if (SLEEP_READER > 0)
- {
- Thread.sleep(SLEEP_READER);
- }
- }
- }
- catch (Exception ex)
- {
- exception = ex;
- ex.printStackTrace();
- }
- }
- }
-}
+/*
+ * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.net4j.util.tests;
+
+import org.eclipse.net4j.util.io.ExtendedDataInput;
+import org.eclipse.net4j.util.io.ExtendedDataInputStream;
+import org.eclipse.net4j.util.io.ExtendedDataOutputStream;
+import org.eclipse.net4j.util.io.StringCompressor;
+
+import java.io.IOException;
+import java.io.PipedInputStream;
+import java.io.PipedOutputStream;
+import java.util.Random;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * @author Eike Stepper
+ */
+public class StringCompressorTest extends AbstractOMTest
+{
+ private static long SLEEP_WRITER = 1;
+
+ private static long SLEEP_READER = 0;
+
+ private static final String[] strings = createStrings(50, 837456);
+
+ private static final int[] indices = createIndices(100, 50, 9087346);
+
+ private StringCompressor.Counting client;
+
+ private StringCompressor.Counting server;
+
+ public void testSingleStreamToServer() throws Exception
+ {
+ run(1, 0);
+ }
+
+ public void testSingleStreamToClient() throws Exception
+ {
+ run(0, 1);
+ }
+
+ public void testBidi1() throws Exception
+ {
+ run(1, 1);
+ }
+
+ public void testBidi10() throws Exception
+ {
+ run(10, 10);
+ }
+
+ public void testBidi1Plus10() throws Exception
+ {
+ run(1, 1);
+ run(10, 10);
+ }
+
+ @Override
+ protected void doSetUp() throws Exception
+ {
+ super.doSetUp();
+ client = new StringCompressor.Counting(true);
+ server = new StringCompressor.Counting(false);
+ }
+
+ @Override
+ protected void doTearDown() throws Exception
+ {
+ System.out.println("Strings read by client compressor: " + client.getStringsRead());
+ System.out.println("Strings read by server compressor: " + server.getStringsRead());
+ System.out.println("Strings written by client compressor: " + client.getStringsWritten());
+ System.out.println("Strings written by server compressor: " + server.getStringsWritten());
+ super.doTearDown();
+ }
+
+ private void run(int toServer, int toClient) throws IOException, InterruptedException
+ {
+ CountDownLatch latch = new CountDownLatch(toServer + toClient);
+ while (toServer > 0 || toClient > 0)
+ {
+ if (toServer > 0)
+ {
+ --toServer;
+ new Stream(latch, client, server).start();
+ }
+
+ if (toClient > 0)
+ {
+ --toClient;
+ new Stream(latch, server, client).start();
+ }
+ }
+
+ latch.await(300, TimeUnit.SECONDS);
+ }
+
+ private static String[] createStrings(int count, long seed)
+ {
+ Random random = new Random(seed);
+ String[] result = new String[count];
+ for (int i = 0; i < result.length; i++)
+ {
+ String str = "";
+ int length = next(random) % 13;
+ for (int j = 0; j < length + 1; j++)
+ {
+ int val = next(random);
+ str += Integer.toString(val, 36);
+ }
+
+ result[i] = str;
+ }
+
+ return result;
+ }
+
+ private static int[] createIndices(int count, int range, long seed)
+ {
+ Random random = new Random(seed);
+ int[] result = new int[count];
+ for (int i = 0; i < result.length; i++)
+ {
+ result[i] = next(random) % range;
+ }
+
+ return result;
+ }
+
+ private static int next(Random random)
+ {
+ for (;;)
+ {
+ int val = random.nextInt();
+ if (val > 0)
+ {
+ return val;
+ }
+ }
+ }
+
+ /**
+ * @author Eike Stepper
+ */
+ public static class Stream extends Thread
+ {
+ private CountDownLatch latch;
+
+ private Writer writer;
+
+ private Reader reader;
+
+ public Stream(CountDownLatch latch, StringCompressor writer, StringCompressor reader) throws IOException
+ {
+ this.latch = latch;
+ this.writer = new Writer(writer);
+ this.reader = new Reader(reader, this.writer);
+ }
+
+ @Override
+ public void run()
+ {
+ try
+ {
+ reader.start();
+ writer.start();
+
+ reader.join();
+ writer.join();
+
+ latch.countDown();
+ }
+ catch (Exception ex)
+ {
+ ex.printStackTrace();
+ }
+ }
+ }
+
+ /**
+ * @author Eike Stepper
+ */
+ public static class Writer extends Thread
+ {
+ private StringCompressor compressor;
+
+ private PipedOutputStream pipe;
+
+ private Exception exception;
+
+ public Writer(StringCompressor compressor)
+ {
+ this.compressor = compressor;
+ pipe = new PipedOutputStream();
+ }
+
+ public PipedOutputStream getPipe()
+ {
+ return pipe;
+ }
+
+ public Exception getException()
+ {
+ return exception;
+ }
+
+ @Override
+ public void run()
+ {
+ try
+ {
+ ExtendedDataOutputStream out = new ExtendedDataOutputStream(pipe);
+ for (int i = 0; i < indices.length; i++)
+ {
+ int index = indices[i];
+ msg(getName() + " --> " + i);
+ compressor.write(out, strings[index]);
+ if (SLEEP_WRITER > 0)
+ {
+ Thread.sleep(SLEEP_WRITER);
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ exception = ex;
+ ex.printStackTrace();
+ }
+ }
+ }
+
+ /**
+ * @author Eike Stepper
+ */
+ public static class Reader extends Thread
+ {
+ private StringCompressor compressor;
+
+ private PipedInputStream pipe;
+
+ private Exception exception;
+
+ public Reader(StringCompressor compressor, Writer writer) throws IOException
+ {
+ this.compressor = compressor;
+ pipe = new PipedInputStream(writer.getPipe());
+ }
+
+ public Exception getException()
+ {
+ return exception;
+ }
+
+ @Override
+ public void run()
+ {
+ try
+ {
+ ExtendedDataInput in = new ExtendedDataInputStream(pipe);
+ for (int i = 0; i < indices.length; i++)
+ {
+ int index = indices[i];
+ msg(getName() + " --> " + i);
+ String toBeRead = strings[index];
+
+ String read = compressor.read(in);
+ assertEquals(toBeRead, read);
+ if (SLEEP_READER > 0)
+ {
+ Thread.sleep(SLEEP_READER);
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ exception = ex;
+ ex.printStackTrace();
+ }
+ }
+ }
+}
diff --git a/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/util/tests/UUIDGeneratorTest.java b/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/util/tests/UUIDGeneratorTest.java
index f786d11fd4..48c1a77464 100644
--- a/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/util/tests/UUIDGeneratorTest.java
+++ b/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/util/tests/UUIDGeneratorTest.java
@@ -1,59 +1,59 @@
-/*
- * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Eike Stepper - initial API and implementation
- */
-package org.eclipse.net4j.util.tests;
-
-import org.eclipse.net4j.util.UUIDGenerator;
-
-/**
- * @author Eike Stepper
- * @since 4.0
- */
-public class UUIDGeneratorTest extends AbstractOMTest
-{
- public void testCodec()
- {
- byte[] uuid = new byte[16];
- long start = System.currentTimeMillis();
-
- for (int b3 = Byte.MIN_VALUE; b3 <= Byte.MAX_VALUE; b3++)
- {
- for (int b2 = Byte.MIN_VALUE; b2 <= Byte.MAX_VALUE; b2++)
- {
- // System.out.println(b3 + ", " + b2);
- for (int b1 = Byte.MIN_VALUE; b1 <= Byte.MAX_VALUE; b1++)
- {
- for (int off = 0; off < 13; off++)
- {
- check(uuid, b1, b2, b3, off);
- }
- }
- }
- }
-
- long millis = System.currentTimeMillis() - start;
- System.out.println("Millis: " + millis);
- }
-
- private static void check(byte[] uuid, int b1, int b2, int b3, int off)
- {
- uuid[0 + off] = (byte)b1;
- uuid[2 + off] = (byte)b2;
- uuid[3 + off] = (byte)b3;
-
- String encoded = UUIDGenerator.DEFAULT.encode(uuid);
- byte[] decoded = UUIDGenerator.DEFAULT.decode(encoded);
-
- for (int i = 0; i < 3; i++)
- {
- assertEquals(uuid[i + off], decoded[i + off]);
- }
- }
-}
+/*
+ * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.net4j.util.tests;
+
+import org.eclipse.net4j.util.UUIDGenerator;
+import org.eclipse.net4j.util.io.IOUtil;
+
+/**
+ * @author Eike Stepper
+ * @since 4.0
+ */
+public class UUIDGeneratorTest extends AbstractOMTest
+{
+ public void testCodec()
+ {
+ byte[] uuid = new byte[16];
+ long start = System.currentTimeMillis();
+
+ for (int b3 = Byte.MIN_VALUE; b3 <= Byte.MAX_VALUE; b3++)
+ {
+ IOUtil.OUT().println(b3);
+ for (int b2 = Byte.MIN_VALUE; b2 <= Byte.MAX_VALUE; b2++)
+ {
+ for (int b1 = Byte.MIN_VALUE; b1 <= Byte.MAX_VALUE; b1++)
+ {
+ for (int off = 0; off < 13; off++)
+ {
+ check(uuid, b1, b2, b3, off);
+ }
+ }
+ }
+ }
+
+ IOUtil.OUT().println("Millis: " + (System.currentTimeMillis() - start));
+ }
+
+ private static void check(byte[] uuid, int b1, int b2, int b3, int off)
+ {
+ uuid[0 + off] = (byte)b1;
+ uuid[2 + off] = (byte)b2;
+ uuid[3 + off] = (byte)b3;
+
+ String encoded = UUIDGenerator.DEFAULT.encode(uuid);
+ byte[] decoded = UUIDGenerator.DEFAULT.decode(encoded);
+
+ for (int i = 0; i < 3; i++)
+ {
+ assertEquals(uuid[i + off], decoded[i + off]);
+ }
+ }
+}
diff --git a/plugins/org.eclipse.net4j.ui.shared/META-INF/MANIFEST.MF b/plugins/org.eclipse.net4j.ui.shared/META-INF/MANIFEST.MF
index 9e177a34a4..4a3b69b5bb 100644
--- a/plugins/org.eclipse.net4j.ui.shared/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.net4j.ui.shared/META-INF/MANIFEST.MF
@@ -1,7 +1,7 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-SymbolicName: org.eclipse.net4j.ui.shared;singleton:=true
-Bundle-Version: 4.0.100.qualifier
+Bundle-Version: 4.1.0.qualifier
Bundle-Name: %pluginName
Bundle-Vendor: %providerName
Bundle-Localization: plugin
@@ -9,8 +9,8 @@ Bundle-ActivationPolicy: lazy
Bundle-Activator: org.eclipse.net4j.ui.internal.shared.bundle.OM$Activator
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Bundle-ClassPath: .
-Export-Package: org.eclipse.net4j.ui.shared;version="4.0.100";uses:="org.eclipse.jface.resource,org.eclipse.swt.graphics",
- org.eclipse.net4j.ui.internal.shared.bundle;version="4.0.100";x-internal:=true
+Export-Package: org.eclipse.net4j.ui.shared;version="4.1.0";uses:="org.eclipse.jface.resource,org.eclipse.swt.graphics",
+ org.eclipse.net4j.ui.internal.shared.bundle;version="4.1.0";x-internal:=true
Require-Bundle: org.eclipse.ui;bundle-version="[3.6.0,4.0.0)",
org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)",
org.eclipse.net4j.util;bundle-version="[3.1.0,4.0.0)"
diff --git a/plugins/org.eclipse.net4j.ui.shared/icons/full/chat_32X32.png b/plugins/org.eclipse.net4j.ui.shared/icons/full/chat_32X32.png
deleted file mode 100644
index 21d3eed256..0000000000
--- a/plugins/org.eclipse.net4j.ui.shared/icons/full/chat_32X32.png
+++ /dev/null
Binary files differ
diff --git a/plugins/org.eclipse.net4j.ui.shared/icons/full/chat_wizard.png b/plugins/org.eclipse.net4j.ui.shared/icons/full/chat_wizard.png
deleted file mode 100644
index 74aee56b21..0000000000
--- a/plugins/org.eclipse.net4j.ui.shared/icons/full/chat_wizard.png
+++ /dev/null
Binary files differ
diff --git a/plugins/org.eclipse.net4j.ui.shared/icons/full/collaboration_32x32.png b/plugins/org.eclipse.net4j.ui.shared/icons/full/collaboration_32x32.png
deleted file mode 100644
index 134a1a97b3..0000000000
--- a/plugins/org.eclipse.net4j.ui.shared/icons/full/collaboration_32x32.png
+++ /dev/null
Binary files differ
diff --git a/plugins/org.eclipse.net4j.ui.shared/icons/full/collaboration_wizard.png b/plugins/org.eclipse.net4j.ui.shared/icons/full/collaboration_wizard.png
deleted file mode 100644
index 8b468507c0..0000000000
--- a/plugins/org.eclipse.net4j.ui.shared/icons/full/collaboration_wizard.png
+++ /dev/null
Binary files differ
diff --git a/plugins/org.eclipse.net4j.ui.shared/icons/full/etool16/part_mode.gif b/plugins/org.eclipse.net4j.ui.shared/icons/full/etool16/part_mode.gif
new file mode 100644
index 0000000000..eb7b90c767
--- /dev/null
+++ b/plugins/org.eclipse.net4j.ui.shared/icons/full/etool16/part_mode.gif
Binary files differ
diff --git a/plugins/org.eclipse.net4j.ui.shared/src/org/eclipse/net4j/ui/shared/SharedIcons.java b/plugins/org.eclipse.net4j.ui.shared/src/org/eclipse/net4j/ui/shared/SharedIcons.java
index 98c5d89734..87835c5a4a 100644
--- a/plugins/org.eclipse.net4j.ui.shared/src/org/eclipse/net4j/ui/shared/SharedIcons.java
+++ b/plugins/org.eclipse.net4j.ui.shared/src/org/eclipse/net4j/ui/shared/SharedIcons.java
@@ -1,147 +1,152 @@
-/*
- * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Eike Stepper - initial API and implementation
- */
-package org.eclipse.net4j.ui.shared;
-
-import org.eclipse.net4j.ui.internal.shared.bundle.OM;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.resource.ImageRegistry;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.plugin.AbstractUIPlugin;
-
-/**
- * @author Eike Stepper
- */
-public class SharedIcons
-{
- private static final ImageRegistry REGISTRY = new ImageRegistry(getDisplay());
-
- private static final String ETOOL = "etool16/"; //$NON-NLS-1$
-
- private static final String OBJ = "obj16/"; //$NON-NLS-1$
-
- public static final String OBJ_ACCEPTOR = OBJ + "acceptor"; //$NON-NLS-1$
-
- public static final String OBJ_ADAPTER = OBJ + "adapter"; //$NON-NLS-1$
-
- public static final String OBJ_CHANNEL = OBJ + "channel"; //$NON-NLS-1$
-
- public static final String OBJ_CONNECTOR = OBJ + "connector"; //$NON-NLS-1$
-
- public static final String OBJ_FACTORY = OBJ + "factory"; //$NON-NLS-1$
-
- public static final String OBJ_FOLDER = OBJ + "folder"; //$NON-NLS-1$
-
- public static final String ETOOL_ADD_ACCEPTOR = ETOOL + "add_acceptor"; //$NON-NLS-1$
-
- public static final String ETOOL_ADD_CONNECTOR = ETOOL + "add_connector"; //$NON-NLS-1$
-
- public static final String ETOOL_ADD = ETOOL + "add"; //$NON-NLS-1$
-
- public static final String ETOOL_DELETE = ETOOL + "delete"; //$NON-NLS-1$
-
- public static final String ETOOL_REFRESH = ETOOL + "refresh"; //$NON-NLS-1$
-
- private static final String TOOL = "etool16/"; //$NON-NLS-1$
-
- private static final String VIEW = "view16/"; //$NON-NLS-1$
-
- public static final String OBJ_BEAN = OBJ + "javabean"; //$NON-NLS-1$
-
- public static final String OBJ_ERROR = OBJ + "error"; //$NON-NLS-1$
-
- public static final String OBJ_PENDING = OBJ + "pending"; //$NON-NLS-1$
-
- public static final String VIEW_CONTAINER = VIEW + "container"; //$NON-NLS-1$
-
- public static final String TOOL_ADD = TOOL + "add"; //$NON-NLS-1$
-
- public static final String TOOL_DELETE = TOOL + "delete"; //$NON-NLS-1$
-
- public static final String TOOL_REFRESH = TOOL + "refresh"; //$NON-NLS-1$
-
- @SuppressWarnings("unused")
- private static final String WIZBAN = "wizban/"; //$NON-NLS-1$
-
- public static final String OBJ_COLLABORATION = OBJ + "collaboration"; //$NON-NLS-1$
-
- public static final String OBJ_BUDDY = OBJ + "buddy"; //$NON-NLS-1$
-
- public static final String OBJ_BUDDY_LONESOME = OBJ + "buddy_lonesome"; //$NON-NLS-1$
-
- public static final String OBJ_BUDDY_AWAY = OBJ + "buddy_away"; //$NON-NLS-1$
-
- public static final String OBJ_BUDDY_DO_NOT_DISTURB = OBJ + "buddy_do_not_disturb"; //$NON-NLS-1$
-
- public static final String OBJ_CHAT = OBJ + "chat"; //$NON-NLS-1$
-
- public static final String ETOOL_HORIZONTAL = ETOOL + "horizontal_layout"; //$NON-NLS-1$
-
- public static final String ETOOL_VERTICAL = ETOOL + "vertical_layout"; //$NON-NLS-1$
-
- public static Image getImage(String key)
- {
- key = mangleKey(key);
- Image image = REGISTRY.get(key);
- if (image == null)
- {
- createDescriptor(key);
- image = REGISTRY.get(key);
- }
-
- return image;
- }
-
- public static ImageDescriptor getDescriptor(String key)
- {
- key = mangleKey(key);
- ImageDescriptor descriptor = REGISTRY.getDescriptor(key);
- if (descriptor == null)
- {
- descriptor = createDescriptor(key);
- }
-
- return descriptor;
- }
-
- private static ImageDescriptor createDescriptor(String key)
- {
- ImageDescriptor descriptor = AbstractUIPlugin.imageDescriptorFromPlugin(OM.BUNDLE_ID, key);
- if (descriptor != null)
- {
- REGISTRY.put(key, descriptor);
- }
-
- return descriptor;
- }
-
- private static Display getDisplay()
- {
- Display display = Display.getCurrent();
- if (display == null)
- {
- display = Display.getDefault();
- }
-
- if (display == null)
- {
- throw new IllegalStateException("display == null"); //$NON-NLS-1$
- }
-
- return display;
- }
-
- private static String mangleKey(String key)
- {
- return "icons/full/" + key + ".gif"; //$NON-NLS-1$ //$NON-NLS-2$
- }
-}
+/*
+ * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.net4j.ui.shared;
+
+import org.eclipse.net4j.ui.internal.shared.bundle.OM;
+
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.resource.ImageRegistry;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+
+/**
+ * @author Eike Stepper
+ */
+public class SharedIcons
+{
+ private static final ImageRegistry REGISTRY = new ImageRegistry(getDisplay());
+
+ private static final String ETOOL = "etool16/"; //$NON-NLS-1$
+
+ private static final String OBJ = "obj16/"; //$NON-NLS-1$
+
+ public static final String OBJ_ACCEPTOR = OBJ + "acceptor"; //$NON-NLS-1$
+
+ public static final String OBJ_ADAPTER = OBJ + "adapter"; //$NON-NLS-1$
+
+ public static final String OBJ_CHANNEL = OBJ + "channel"; //$NON-NLS-1$
+
+ public static final String OBJ_CONNECTOR = OBJ + "connector"; //$NON-NLS-1$
+
+ public static final String OBJ_FACTORY = OBJ + "factory"; //$NON-NLS-1$
+
+ public static final String OBJ_FOLDER = OBJ + "folder"; //$NON-NLS-1$
+
+ public static final String ETOOL_ADD_ACCEPTOR = ETOOL + "add_acceptor"; //$NON-NLS-1$
+
+ public static final String ETOOL_ADD_CONNECTOR = ETOOL + "add_connector"; //$NON-NLS-1$
+
+ public static final String ETOOL_ADD = ETOOL + "add"; //$NON-NLS-1$
+
+ public static final String ETOOL_DELETE = ETOOL + "delete"; //$NON-NLS-1$
+
+ public static final String ETOOL_REFRESH = ETOOL + "refresh"; //$NON-NLS-1$
+
+ /**
+ * @since 4.1
+ */
+ public static final String ETOOL_PART_MODE = ETOOL + "part_mode"; //$NON-NLS-1$
+
+ private static final String TOOL = "etool16/"; //$NON-NLS-1$
+
+ private static final String VIEW = "view16/"; //$NON-NLS-1$
+
+ public static final String OBJ_BEAN = OBJ + "javabean"; //$NON-NLS-1$
+
+ public static final String OBJ_ERROR = OBJ + "error"; //$NON-NLS-1$
+
+ public static final String OBJ_PENDING = OBJ + "pending"; //$NON-NLS-1$
+
+ public static final String VIEW_CONTAINER = VIEW + "container"; //$NON-NLS-1$
+
+ public static final String TOOL_ADD = TOOL + "add"; //$NON-NLS-1$
+
+ public static final String TOOL_DELETE = TOOL + "delete"; //$NON-NLS-1$
+
+ public static final String TOOL_REFRESH = TOOL + "refresh"; //$NON-NLS-1$
+
+ @SuppressWarnings("unused")
+ private static final String WIZBAN = "wizban/"; //$NON-NLS-1$
+
+ public static final String OBJ_COLLABORATION = OBJ + "collaboration"; //$NON-NLS-1$
+
+ public static final String OBJ_BUDDY = OBJ + "buddy"; //$NON-NLS-1$
+
+ public static final String OBJ_BUDDY_LONESOME = OBJ + "buddy_lonesome"; //$NON-NLS-1$
+
+ public static final String OBJ_BUDDY_AWAY = OBJ + "buddy_away"; //$NON-NLS-1$
+
+ public static final String OBJ_BUDDY_DO_NOT_DISTURB = OBJ + "buddy_do_not_disturb"; //$NON-NLS-1$
+
+ public static final String OBJ_CHAT = OBJ + "chat"; //$NON-NLS-1$
+
+ public static final String ETOOL_HORIZONTAL = ETOOL + "horizontal_layout"; //$NON-NLS-1$
+
+ public static final String ETOOL_VERTICAL = ETOOL + "vertical_layout"; //$NON-NLS-1$
+
+ public static Image getImage(String key)
+ {
+ key = mangleKey(key);
+ Image image = REGISTRY.get(key);
+ if (image == null)
+ {
+ createDescriptor(key);
+ image = REGISTRY.get(key);
+ }
+
+ return image;
+ }
+
+ public static ImageDescriptor getDescriptor(String key)
+ {
+ key = mangleKey(key);
+ ImageDescriptor descriptor = REGISTRY.getDescriptor(key);
+ if (descriptor == null)
+ {
+ descriptor = createDescriptor(key);
+ }
+
+ return descriptor;
+ }
+
+ private static ImageDescriptor createDescriptor(String key)
+ {
+ ImageDescriptor descriptor = AbstractUIPlugin.imageDescriptorFromPlugin(OM.BUNDLE_ID, key);
+ if (descriptor != null)
+ {
+ REGISTRY.put(key, descriptor);
+ }
+
+ return descriptor;
+ }
+
+ private static Display getDisplay()
+ {
+ Display display = Display.getCurrent();
+ if (display == null)
+ {
+ display = Display.getDefault();
+ }
+
+ if (display == null)
+ {
+ throw new IllegalStateException("display == null"); //$NON-NLS-1$
+ }
+
+ return display;
+ }
+
+ private static String mangleKey(String key)
+ {
+ return "icons/full/" + key + ".gif"; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+}
diff --git a/plugins/org.eclipse.net4j.ui/src/org/eclipse/net4j/internal/ui/container/TCPAcceptorWizard.java b/plugins/org.eclipse.net4j.ui/src/org/eclipse/net4j/internal/ui/container/TCPAcceptorWizard.java
index 6a855cb114..9cbb9a5ead 100644
--- a/plugins/org.eclipse.net4j.ui/src/org/eclipse/net4j/internal/ui/container/TCPAcceptorWizard.java
+++ b/plugins/org.eclipse.net4j.ui/src/org/eclipse/net4j/internal/ui/container/TCPAcceptorWizard.java
@@ -11,9 +11,8 @@
*/
package org.eclipse.net4j.internal.ui.container;
-import org.eclipse.net4j.internal.tcp.TCPAcceptorFactory;
-import org.eclipse.net4j.internal.tcp.TCPAcceptorFactory.Data;
import org.eclipse.net4j.internal.ui.bundle.OM;
+import org.eclipse.net4j.tcp.TCPUtil.AcceptorData;
import org.eclipse.net4j.util.factory.ProductCreationException;
import org.eclipse.net4j.util.ui.container.ElementWizard;
import org.eclipse.net4j.util.ui.container.ElementWizardFactory;
@@ -53,7 +52,7 @@ public class TCPAcceptorWizard extends ElementWizard implements ModifyListener
{
try
{
- Data data = new TCPAcceptorFactory.Data(description);
+ AcceptorData data = new AcceptorData(description);
addressText.setText(data.getAddress());
portText.setText(Integer.toString(data.getPort()));
}
diff --git a/plugins/org.eclipse.net4j.ui/src/org/eclipse/net4j/internal/ui/container/TCPConnectorWizard.java b/plugins/org.eclipse.net4j.ui/src/org/eclipse/net4j/internal/ui/container/TCPConnectorWizard.java
index ba7ebe7894..63fe7c849a 100644
--- a/plugins/org.eclipse.net4j.ui/src/org/eclipse/net4j/internal/ui/container/TCPConnectorWizard.java
+++ b/plugins/org.eclipse.net4j.ui/src/org/eclipse/net4j/internal/ui/container/TCPConnectorWizard.java
@@ -12,6 +12,7 @@
package org.eclipse.net4j.internal.ui.container;
import org.eclipse.net4j.internal.ui.bundle.OM;
+import org.eclipse.net4j.tcp.TCPUtil.ConnectorData;
import org.eclipse.net4j.util.factory.ProductCreationException;
import org.eclipse.net4j.util.ui.container.ElementWizard;
import org.eclipse.net4j.util.ui.container.ElementWizardFactory;
@@ -22,9 +23,6 @@ import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Text;
-import java.net.MalformedURLException;
-import java.net.URL;
-
/**
* @author Eike Stepper
* @author Martin Fluegge
@@ -54,20 +52,13 @@ public class TCPConnectorWizard extends ElementWizard implements ModifyListener
{
try
{
- // TODO Don't use URL
- // Scheme "tcp://" would be rejected!
- URL url = new URL("http://" + description);
- // String userID = url.getUserInfo();
- hostText.setText(url.getHost());
- int port = url.getPort();
- if (port != -1)
- {
- portText.setText(Integer.toString(port));
- }
+ ConnectorData data = new ConnectorData(description);
+ hostText.setText(data.getHost());
+ portText.setText(Integer.toString(data.getPort()));
}
- catch (MalformedURLException ex)
+ catch (NoClassDefFoundError error)
{
- OM.LOG.error(ex);
+ OM.LOG.error(error);
}
}
}
diff --git a/plugins/org.eclipse.net4j.ui/src/org/eclipse/net4j/ui/FactoryTypeContentProvider.java b/plugins/org.eclipse.net4j.ui/src/org/eclipse/net4j/ui/FactoryTypeContentProvider.java
index 4f7963fcf0..559d12ef1a 100644
--- a/plugins/org.eclipse.net4j.ui/src/org/eclipse/net4j/ui/FactoryTypeContentProvider.java
+++ b/plugins/org.eclipse.net4j.ui/src/org/eclipse/net4j/ui/FactoryTypeContentProvider.java
@@ -1,56 +1,31 @@
-/*
- * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Eike Stepper - initial API and implementation
- */
-package org.eclipse.net4j.ui;
-
-import org.eclipse.net4j.util.container.IManagedContainer;
-import org.eclipse.net4j.util.factory.IFactoryKey;
-import org.eclipse.net4j.util.ui.StructuredContentProvider;
-
-/**
- * A {@link StructuredContentProvider structured content provider} that shows the {@link IFactoryKey#getType() factory
- * types} of the {@link #getInput() input}.
- *
- * @author Eike Stepper
- * @since 4.0
- */
-public class FactoryTypeContentProvider extends StructuredContentProvider<IManagedContainer>
-{
- private String productGroup;
-
- public FactoryTypeContentProvider(String productGroup)
- {
- this.productGroup = productGroup;
- }
-
- public String getProductGroup()
- {
- return productGroup;
- }
-
- public Object[] getElements(Object inputElement)
- {
- return getInput().getFactoryTypes(productGroup).toArray();
- }
-
- @Override
- protected void connectInput(IManagedContainer input)
- {
- input.addListener(this);
- input.getFactoryRegistry().addListener(this);
- }
-
- @Override
- protected void disconnectInput(IManagedContainer input)
- {
- input.removeListener(this);
- input.getFactoryRegistry().removeListener(this);
- }
-}
+/*
+ * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.net4j.ui;
+
+import org.eclipse.net4j.util.factory.IFactoryKey;
+import org.eclipse.net4j.util.ui.StructuredContentProvider;
+
+/**
+ * A {@link StructuredContentProvider structured content provider} that shows the {@link IFactoryKey#getType() factory
+ * types} of the {@link #getInput() input}.
+ *
+ * @author Eike Stepper
+ * @since 4.0
+ * @deprecated As of 4.1 use {@link org.eclipse.net4j.util.ui.FactoryTypeContentProvider}
+ */
+@Deprecated
+public class FactoryTypeContentProvider extends org.eclipse.net4j.util.ui.FactoryTypeContentProvider
+{
+ public FactoryTypeContentProvider(String productGroup)
+ {
+ super(productGroup);
+ }
+}
diff --git a/plugins/org.eclipse.net4j.util.doc/javadoc/allclasses-frame.html b/plugins/org.eclipse.net4j.util.doc/javadoc/allclasses-frame.html
index 4a07203a26..5b43e8509a 100644
--- a/plugins/org.eclipse.net4j.util.doc/javadoc/allclasses-frame.html
+++ b/plugins/org.eclipse.net4j.util.doc/javadoc/allclasses-frame.html
@@ -242,6 +242,8 @@ All Classes (Net4j Utilities Documentation)
<BR>
<A HREF="org/eclipse/net4j/util/container/FactoryNotFoundException.html" title="class in org.eclipse.net4j.util.container" target="classFrame">FactoryNotFoundException</A>
<BR>
+<A HREF="org/eclipse/net4j/util/ui/FactoryTypeContentProvider.html" title="class in org.eclipse.net4j.util.ui" target="classFrame">FactoryTypeContentProvider</A>
+<BR>
<A HREF="org/eclipse/net4j/util/collection/FastList.html" title="class in org.eclipse.net4j.util.collection" target="classFrame">FastList</A>
<BR>
<A HREF="org/eclipse/net4j/util/om/log/FileLogHandler.html" title="class in org.eclipse.net4j.util.om.log" target="classFrame">FileLogHandler</A>
@@ -354,6 +356,8 @@ All Classes (Net4j Utilities Documentation)
<BR>
<A HREF="org/eclipse/net4j/util/lifecycle/ILifecycle.html" title="interface in org.eclipse.net4j.util.lifecycle" target="classFrame"><I>ILifecycle</I></A>
<BR>
+<A HREF="org/eclipse/net4j/util/lifecycle/ILifecycle.DeferrableActivation.html" title="interface in org.eclipse.net4j.util.lifecycle" target="classFrame"><I>ILifecycle.DeferrableActivation</I></A>
+<BR>
<A HREF="org/eclipse/net4j/util/lifecycle/ILifecycleEvent.html" title="interface in org.eclipse.net4j.util.lifecycle" target="classFrame"><I>ILifecycleEvent</I></A>
<BR>
<A HREF="org/eclipse/net4j/util/lifecycle/ILifecycleEvent.Kind.html" title="enum in org.eclipse.net4j.util.lifecycle" target="classFrame">ILifecycleEvent.Kind</A>
diff --git a/plugins/org.eclipse.net4j.util.doc/javadoc/allclasses-noframe.html b/plugins/org.eclipse.net4j.util.doc/javadoc/allclasses-noframe.html
index 23833ca5cd..ae85779455 100644
--- a/plugins/org.eclipse.net4j.util.doc/javadoc/allclasses-noframe.html
+++ b/plugins/org.eclipse.net4j.util.doc/javadoc/allclasses-noframe.html
@@ -242,6 +242,8 @@ All Classes (Net4j Utilities Documentation)
<BR>
<A HREF="org/eclipse/net4j/util/container/FactoryNotFoundException.html" title="class in org.eclipse.net4j.util.container">FactoryNotFoundException</A>
<BR>
+<A HREF="org/eclipse/net4j/util/ui/FactoryTypeContentProvider.html" title="class in org.eclipse.net4j.util.ui">FactoryTypeContentProvider</A>
+<BR>
<A HREF="org/eclipse/net4j/util/collection/FastList.html" title="class in org.eclipse.net4j.util.collection">FastList</A>
<BR>
<A HREF="org/eclipse/net4j/util/om/log/FileLogHandler.html" title="class in org.eclipse.net4j.util.om.log">FileLogHandler</A>
@@ -354,6 +356,8 @@ All Classes (Net4j Utilities Documentation)
<BR>
<A HREF="org/eclipse/net4j/util/lifecycle/ILifecycle.html" title="interface in org.eclipse.net4j.util.lifecycle"><I>ILifecycle</I></A>
<BR>
+<A HREF="org/eclipse/net4j/util/lifecycle/ILifecycle.DeferrableActivation.html" title="interface in org.eclipse.net4j.util.lifecycle"><I>ILifecycle.DeferrableActivation</I></A>
+<BR>
<A HREF="org/eclipse/net4j/util/lifecycle/ILifecycleEvent.html" title="interface in org.eclipse.net4j.util.lifecycle"><I>ILifecycleEvent</I></A>
<BR>
<A HREF="org/eclipse/net4j/util/lifecycle/ILifecycleEvent.Kind.html" title="enum in org.eclipse.net4j.util.lifecycle">ILifecycleEvent.Kind</A>
diff --git a/plugins/org.eclipse.net4j.util.doc/javadoc/index-all.html b/plugins/org.eclipse.net4j.util.doc/javadoc/index-all.html
index ab005bfbb8..bd880aa247 100644
--- a/plugins/org.eclipse.net4j.util.doc/javadoc/index-all.html
+++ b/plugins/org.eclipse.net4j.util.doc/javadoc/index-all.html
@@ -351,6 +351,9 @@ Method in class org.eclipse.net4j.util.concurrent.<A HREF="./org/eclipse/net4j/u
<DT><A HREF="./org/eclipse/net4j/util/om/OMPlatform.html#addTraceHandler(org.eclipse.net4j.util.om.trace.OMTraceHandler)"><B>addTraceHandler(OMTraceHandler)</B></A> -
Method in interface org.eclipse.net4j.util.om.<A HREF="./org/eclipse/net4j/util/om/OMPlatform.html" title="interface in org.eclipse.net4j.util.om">OMPlatform</A>
<DD>&nbsp;
+<DT><A HREF="./org/eclipse/net4j/util/event/EventUtil.html#addUniqueListener(java.lang.Object, org.eclipse.net4j.util.event.IListener)"><B>addUniqueListener(Object, IListener)</B></A> -
+Static method in class org.eclipse.net4j.util.event.<A HREF="./org/eclipse/net4j/util/event/EventUtil.html" title="class in org.eclipse.net4j.util.event">EventUtil</A>
+<DD>&nbsp;
<DT><A HREF="./org/eclipse/net4j/util/security/IUserManager.html#addUser(java.lang.String, char[])"><B>addUser(String, char[])</B></A> -
Method in interface org.eclipse.net4j.util.security.<A HREF="./org/eclipse/net4j/util/security/IUserManager.html" title="interface in org.eclipse.net4j.util.security">IUserManager</A>
<DD>&nbsp;
@@ -903,6 +906,9 @@ Method in class org.eclipse.net4j.util.ui.widgets.<A HREF="./org/eclipse/net4j/u
<DT><A HREF="./org/eclipse/net4j/util/om/trace/RemoteTraceHandler.html#connect()"><B>connect()</B></A> -
Method in class org.eclipse.net4j.util.om.trace.<A HREF="./org/eclipse/net4j/util/om/trace/RemoteTraceHandler.html" title="class in org.eclipse.net4j.util.om.trace">RemoteTraceHandler</A>
<DD>&nbsp;
+<DT><A HREF="./org/eclipse/net4j/util/ui/FactoryTypeContentProvider.html#connectInput(org.eclipse.net4j.util.container.IManagedContainer)"><B>connectInput(IManagedContainer)</B></A> -
+Method in class org.eclipse.net4j.util.ui.<A HREF="./org/eclipse/net4j/util/ui/FactoryTypeContentProvider.html" title="class in org.eclipse.net4j.util.ui">FactoryTypeContentProvider</A>
+<DD>&nbsp;
<DT><A HREF="./org/eclipse/net4j/util/ui/StructuredContentProvider.html#connectInput(INPUT)"><B>connectInput(INPUT)</B></A> -
Method in class org.eclipse.net4j.util.ui.<A HREF="./org/eclipse/net4j/util/ui/StructuredContentProvider.html" title="class in org.eclipse.net4j.util.ui">StructuredContentProvider</A>
<DD>&nbsp;
@@ -1699,6 +1705,9 @@ Static variable in class org.eclipse.net4j.util.<A HREF="./org/eclipse/net4j/uti
<DT><A HREF="./org/eclipse/net4j/util/io/StringIO.html#DIRECT"><B>DIRECT</B></A> -
Static variable in interface org.eclipse.net4j.util.io.<A HREF="./org/eclipse/net4j/util/io/StringIO.html" title="interface in org.eclipse.net4j.util.io">StringIO</A>
<DD>&nbsp;
+<DT><A HREF="./org/eclipse/net4j/util/ui/FactoryTypeContentProvider.html#disconnectInput(org.eclipse.net4j.util.container.IManagedContainer)"><B>disconnectInput(IManagedContainer)</B></A> -
+Method in class org.eclipse.net4j.util.ui.<A HREF="./org/eclipse/net4j/util/ui/FactoryTypeContentProvider.html" title="class in org.eclipse.net4j.util.ui">FactoryTypeContentProvider</A>
+<DD>&nbsp;
<DT><A HREF="./org/eclipse/net4j/util/ui/StructuredContentProvider.html#disconnectInput(INPUT)"><B>disconnectInput(INPUT)</B></A> -
Method in class org.eclipse.net4j.util.ui.<A HREF="./org/eclipse/net4j/util/ui/StructuredContentProvider.html" title="class in org.eclipse.net4j.util.ui">StructuredContentProvider</A>
<DD>&nbsp;
@@ -2398,6 +2407,10 @@ Constructor for exception org.eclipse.net4j.util.container.<A HREF="./org/eclips
<DT><A HREF="./org/eclipse/net4j/util/ui/container/ElementWizardComposite.html#factoryTypeChanged()"><B>factoryTypeChanged()</B></A> -
Method in class org.eclipse.net4j.util.ui.container.<A HREF="./org/eclipse/net4j/util/ui/container/ElementWizardComposite.html" title="class in org.eclipse.net4j.util.ui.container">ElementWizardComposite</A>
<DD>&nbsp;
+<DT><A HREF="./org/eclipse/net4j/util/ui/FactoryTypeContentProvider.html" title="class in org.eclipse.net4j.util.ui"><B>FactoryTypeContentProvider</B></A> - Class in <A HREF="./org/eclipse/net4j/util/ui/package-summary.html">org.eclipse.net4j.util.ui</A><DD>A <A HREF="./org/eclipse/net4j/util/ui/StructuredContentProvider.html" title="class in org.eclipse.net4j.util.ui"><CODE>structured content provider</CODE></A> that shows the <A HREF="./org/eclipse/net4j/util/factory/IFactoryKey.html#getType()"><CODE>factory
+ types</CODE></A> of the <A HREF="./org/eclipse/net4j/util/ui/StructuredContentProvider.html#getInput()"><CODE>input</CODE></A>.<DT><A HREF="./org/eclipse/net4j/util/ui/FactoryTypeContentProvider.html#FactoryTypeContentProvider(java.lang.String)"><B>FactoryTypeContentProvider(String)</B></A> -
+Constructor for class org.eclipse.net4j.util.ui.<A HREF="./org/eclipse/net4j/util/ui/FactoryTypeContentProvider.html" title="class in org.eclipse.net4j.util.ui">FactoryTypeContentProvider</A>
+<DD>&nbsp;
<DT><A HREF="./org/eclipse/net4j/util/fsm/FiniteStateMachine.html#FAIL"><B>FAIL</B></A> -
Static variable in class org.eclipse.net4j.util.fsm.<A HREF="./org/eclipse/net4j/util/fsm/FiniteStateMachine.html" title="class in org.eclipse.net4j.util.fsm">FiniteStateMachine</A>
<DD>&nbsp;
@@ -3508,6 +3521,9 @@ Method in class org.eclipse.net4j.util.registry.<A HREF="./org/eclipse/net4j/uti
<DT><A HREF="./org/eclipse/net4j/util/ui/DelegatingContentProvider.html#getElements(java.lang.Object)"><B>getElements(Object)</B></A> -
Method in class org.eclipse.net4j.util.ui.<A HREF="./org/eclipse/net4j/util/ui/DelegatingContentProvider.html" title="class in org.eclipse.net4j.util.ui">DelegatingContentProvider</A>
<DD>&nbsp;
+<DT><A HREF="./org/eclipse/net4j/util/ui/FactoryTypeContentProvider.html#getElements(java.lang.Object)"><B>getElements(Object)</B></A> -
+Method in class org.eclipse.net4j.util.ui.<A HREF="./org/eclipse/net4j/util/ui/FactoryTypeContentProvider.html" title="class in org.eclipse.net4j.util.ui">FactoryTypeContentProvider</A>
+<DD>&nbsp;
<DT><A HREF="./org/eclipse/net4j/util/ui/StaticContentProvider.html#getElements(java.lang.Object)"><B>getElements(Object)</B></A> -
Method in class org.eclipse.net4j.util.ui.<A HREF="./org/eclipse/net4j/util/ui/StaticContentProvider.html" title="class in org.eclipse.net4j.util.ui">StaticContentProvider</A>
<DD>&nbsp;
@@ -4111,6 +4127,9 @@ Method in class org.eclipse.net4j.util.ui.container.<A HREF="./org/eclipse/net4j
<DT><A HREF="./org/eclipse/net4j/util/ui/container/ElementWizardDialog.html#getProductGroup()"><B>getProductGroup()</B></A> -
Method in class org.eclipse.net4j.util.ui.container.<A HREF="./org/eclipse/net4j/util/ui/container/ElementWizardDialog.html" title="class in org.eclipse.net4j.util.ui.container">ElementWizardDialog</A>
<DD>&nbsp;
+<DT><A HREF="./org/eclipse/net4j/util/ui/FactoryTypeContentProvider.html#getProductGroup()"><B>getProductGroup()</B></A> -
+Method in class org.eclipse.net4j.util.ui.<A HREF="./org/eclipse/net4j/util/ui/FactoryTypeContentProvider.html" title="class in org.eclipse.net4j.util.ui">FactoryTypeContentProvider</A>
+<DD>&nbsp;
<DT><A HREF="./org/eclipse/net4j/util/container/IManagedContainer.html#getProductGroups()"><B>getProductGroups()</B></A> -
Method in interface org.eclipse.net4j.util.container.<A HREF="./org/eclipse/net4j/util/container/IManagedContainer.html" title="interface in org.eclipse.net4j.util.container">IManagedContainer</A>
<DD>&nbsp;
@@ -4917,6 +4936,9 @@ Constructor for class org.eclipse.net4j.util.registry.<A HREF="./org/eclipse/net
<DT><A HREF="./org/eclipse/net4j/util/registry/HashMapRegistry.html#HashMapRegistry(java.util.Map)"><B>HashMapRegistry(Map&lt;? extends K, ? extends V&gt;)</B></A> -
Constructor for class org.eclipse.net4j.util.registry.<A HREF="./org/eclipse/net4j/util/registry/HashMapRegistry.html" title="class in org.eclipse.net4j.util.registry">HashMapRegistry</A>
<DD>&nbsp;
+<DT><A HREF="./org/eclipse/net4j/util/event/EventUtil.html#hasListener(java.lang.Object, org.eclipse.net4j.util.event.IListener)"><B>hasListener(Object, IListener)</B></A> -
+Static method in class org.eclipse.net4j.util.event.<A HREF="./org/eclipse/net4j/util/event/EventUtil.html" title="class in org.eclipse.net4j.util.event">EventUtil</A>
+<DD>&nbsp;
<DT><A HREF="./org/eclipse/net4j/util/concurrent/TimerLifecycle.html#hasListeners()"><B>hasListeners()</B></A> -
Method in class org.eclipse.net4j.util.concurrent.<A HREF="./org/eclipse/net4j/util/concurrent/TimerLifecycle.html" title="class in org.eclipse.net4j.util.concurrent">TimerLifecycle</A>
<DD>&nbsp;
@@ -5025,7 +5047,7 @@ Constructor for class org.eclipse.net4j.util.cache.<A HREF="./org/eclipse/net4j/
Static variable in class org.eclipse.net4j.util.fsm.<A HREF="./org/eclipse/net4j/util/fsm/FiniteStateMachine.html" title="class in org.eclipse.net4j.util.fsm">FiniteStateMachine</A>
<DD>&nbsp;
<DT><A HREF="./org/eclipse/net4j/util/collection/IHistory.html" title="interface in org.eclipse.net4j.util.collection"><B>IHistory</B></A>&lt;<A HREF="./org/eclipse/net4j/util/collection/IHistory.html" title="type parameter in IHistory">T</A>&gt; - Interface in <A HREF="./org/eclipse/net4j/util/collection/package-summary.html">org.eclipse.net4j.util.collection</A><DD>&nbsp;<DT><A HREF="./org/eclipse/net4j/util/collection/IHistoryChangeEvent.html" title="interface in org.eclipse.net4j.util.collection"><B>IHistoryChangeEvent</B></A> - Interface in <A HREF="./org/eclipse/net4j/util/collection/package-summary.html">org.eclipse.net4j.util.collection</A><DD>&nbsp;<DT><A HREF="./org/eclipse/net4j/util/collection/IHistoryElement.html" title="interface in org.eclipse.net4j.util.collection"><B>IHistoryElement</B></A>&lt;<A HREF="./org/eclipse/net4j/util/collection/IHistoryElement.html" title="type parameter in IHistoryElement">T</A>&gt; - Interface in <A HREF="./org/eclipse/net4j/util/collection/package-summary.html">org.eclipse.net4j.util.collection</A><DD>&nbsp;<DT><A HREF="./org/eclipse/net4j/util/lifecycle/ILifecycle.html" title="interface in org.eclipse.net4j.util.lifecycle"><B>ILifecycle</B></A> - Interface in <A HREF="./org/eclipse/net4j/util/lifecycle/package-summary.html">org.eclipse.net4j.util.lifecycle</A><DD>An entity that has a well-defined <A HREF="./org/eclipse/net4j/util/lifecycle/ILifecycle.html#getLifecycleState()"><CODE>lifecycle</CODE></A> and can be <A HREF="./org/eclipse/net4j/util/lifecycle/ILifecycle.html#activate()"><CODE>activated</CODE></A> or
- <A HREF="./org/eclipse/net4j/util/lifecycle/ILifecycle.html#deactivate()"><CODE>deactivated</CODE></A>.<DT><A HREF="./org/eclipse/net4j/util/lifecycle/ILifecycleEvent.html" title="interface in org.eclipse.net4j.util.lifecycle"><B>ILifecycleEvent</B></A> - Interface in <A HREF="./org/eclipse/net4j/util/lifecycle/package-summary.html">org.eclipse.net4j.util.lifecycle</A><DD>An <A HREF="./org/eclipse/net4j/util/event/IEvent.html" title="interface in org.eclipse.net4j.util.event"><CODE>event</CODE></A> fired from an entity with a <A HREF="./org/eclipse/net4j/util/lifecycle/ILifecycle.html" title="interface in org.eclipse.net4j.util.lifecycle"><CODE>lifecycle</CODE></A> when its lifecycle <A HREF="./org/eclipse/net4j/util/lifecycle/ILifecycleEvent.Kind.html" title="enum in org.eclipse.net4j.util.lifecycle"><CODE>state</CODE></A> has changed.<DT><A HREF="./org/eclipse/net4j/util/lifecycle/ILifecycleEvent.Kind.html" title="enum in org.eclipse.net4j.util.lifecycle"><B>ILifecycleEvent.Kind</B></A> - Enum in <A HREF="./org/eclipse/net4j/util/lifecycle/package-summary.html">org.eclipse.net4j.util.lifecycle</A><DD>Enumerates the possible <A HREF="./org/eclipse/net4j/util/lifecycle/ILifecycle.html#getLifecycleState()"><CODE>lifecycle state</CODE></A> changes of an entity.<DT><A HREF="./org/eclipse/net4j/util/event/IListener.html" title="interface in org.eclipse.net4j.util.event"><B>IListener</B></A> - Interface in <A HREF="./org/eclipse/net4j/util/event/package-summary.html">org.eclipse.net4j.util.event</A><DD>A callback interface that <A HREF="./org/eclipse/net4j/util/event/INotifier.html" title="interface in org.eclipse.net4j.util.event"><CODE>notifiers</CODE></A> use to pass <A HREF="./org/eclipse/net4j/util/event/IEvent.html" title="interface in org.eclipse.net4j.util.event"><CODE>events</CODE></A> to.<DT><A HREF="./org/eclipse/net4j/util/container/IManagedContainer.html" title="interface in org.eclipse.net4j.util.container"><B>IManagedContainer</B></A> - Interface in <A HREF="./org/eclipse/net4j/util/container/package-summary.html">org.eclipse.net4j.util.container</A><DD>A <A HREF="./org/eclipse/net4j/util/container/IContainer.html" title="interface in org.eclipse.net4j.util.container"><CODE>container</CODE></A> that populates itself by means of element <A HREF="./org/eclipse/net4j/util/container/IManagedContainer.html#getFactoryRegistry()"><CODE>factories</CODE></A> and
+ <A HREF="./org/eclipse/net4j/util/lifecycle/ILifecycle.html#deactivate()"><CODE>deactivated</CODE></A>.<DT><A HREF="./org/eclipse/net4j/util/lifecycle/ILifecycle.DeferrableActivation.html" title="interface in org.eclipse.net4j.util.lifecycle"><B>ILifecycle.DeferrableActivation</B></A> - Interface in <A HREF="./org/eclipse/net4j/util/lifecycle/package-summary.html">org.eclipse.net4j.util.lifecycle</A><DD>A mix-in interface for <A HREF="./org/eclipse/net4j/util/lifecycle/ILifecycle.html" title="interface in org.eclipse.net4j.util.lifecycle"><CODE>lifecycles</CODE></A> with deferrable activation.<DT><A HREF="./org/eclipse/net4j/util/lifecycle/ILifecycleEvent.html" title="interface in org.eclipse.net4j.util.lifecycle"><B>ILifecycleEvent</B></A> - Interface in <A HREF="./org/eclipse/net4j/util/lifecycle/package-summary.html">org.eclipse.net4j.util.lifecycle</A><DD>An <A HREF="./org/eclipse/net4j/util/event/IEvent.html" title="interface in org.eclipse.net4j.util.event"><CODE>event</CODE></A> fired from an entity with a <A HREF="./org/eclipse/net4j/util/lifecycle/ILifecycle.html" title="interface in org.eclipse.net4j.util.lifecycle"><CODE>lifecycle</CODE></A> when its lifecycle <A HREF="./org/eclipse/net4j/util/lifecycle/ILifecycleEvent.Kind.html" title="enum in org.eclipse.net4j.util.lifecycle"><CODE>state</CODE></A> has changed.<DT><A HREF="./org/eclipse/net4j/util/lifecycle/ILifecycleEvent.Kind.html" title="enum in org.eclipse.net4j.util.lifecycle"><B>ILifecycleEvent.Kind</B></A> - Enum in <A HREF="./org/eclipse/net4j/util/lifecycle/package-summary.html">org.eclipse.net4j.util.lifecycle</A><DD>Enumerates the possible <A HREF="./org/eclipse/net4j/util/lifecycle/ILifecycle.html#getLifecycleState()"><CODE>lifecycle state</CODE></A> changes of an entity.<DT><A HREF="./org/eclipse/net4j/util/event/IListener.html" title="interface in org.eclipse.net4j.util.event"><B>IListener</B></A> - Interface in <A HREF="./org/eclipse/net4j/util/event/package-summary.html">org.eclipse.net4j.util.event</A><DD>A callback interface that <A HREF="./org/eclipse/net4j/util/event/INotifier.html" title="interface in org.eclipse.net4j.util.event"><CODE>notifiers</CODE></A> use to pass <A HREF="./org/eclipse/net4j/util/event/IEvent.html" title="interface in org.eclipse.net4j.util.event"><CODE>events</CODE></A> to.<DT><A HREF="./org/eclipse/net4j/util/container/IManagedContainer.html" title="interface in org.eclipse.net4j.util.container"><B>IManagedContainer</B></A> - Interface in <A HREF="./org/eclipse/net4j/util/container/package-summary.html">org.eclipse.net4j.util.container</A><DD>A <A HREF="./org/eclipse/net4j/util/container/IContainer.html" title="interface in org.eclipse.net4j.util.container"><CODE>container</CODE></A> that populates itself by means of element <A HREF="./org/eclipse/net4j/util/container/IManagedContainer.html#getFactoryRegistry()"><CODE>factories</CODE></A> and
<A HREF="./org/eclipse/net4j/util/container/IManagedContainer.html#getPostProcessors()"><CODE>post processors</CODE></A> .<DT><A HREF="./org/eclipse/net4j/util/ImplementationError.html" title="class in org.eclipse.net4j.util"><B>ImplementationError</B></A> - Error in <A HREF="./org/eclipse/net4j/util/package-summary.html">org.eclipse.net4j.util</A><DD>Should not be used anymore in favour of <A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/AssertionError.html?is-external=true" title="class or interface in java.lang"><CODE>AssertionError</CODE></A>.<DT><A HREF="./org/eclipse/net4j/util/ImplementationError.html#ImplementationError()"><B>ImplementationError()</B></A> -
Constructor for error org.eclipse.net4j.util.<A HREF="./org/eclipse/net4j/util/ImplementationError.html" title="class in org.eclipse.net4j.util">ImplementationError</A>
<DD>&nbsp;
@@ -5323,9 +5345,15 @@ Method in interface org.eclipse.net4j.util.om.<A HREF="./org/eclipse/net4j/util/
<DT><A HREF="./org/eclipse/net4j/util/ui/prefs/OMPreferenceStore.html#isDefault(java.lang.String)"><B>isDefault(String)</B></A> -
Method in class org.eclipse.net4j.util.ui.prefs.<A HREF="./org/eclipse/net4j/util/ui/prefs/OMPreferenceStore.html" title="class in org.eclipse.net4j.util.ui.prefs">OMPreferenceStore</A>
<DD>&nbsp;
+<DT><A HREF="./org/eclipse/net4j/util/lifecycle/ILifecycle.DeferrableActivation.html#isDeferredActivation()"><B>isDeferredActivation()</B></A> -
+Method in interface org.eclipse.net4j.util.lifecycle.<A HREF="./org/eclipse/net4j/util/lifecycle/ILifecycle.DeferrableActivation.html" title="interface in org.eclipse.net4j.util.lifecycle">ILifecycle.DeferrableActivation</A>
+<DD>&nbsp;
<DT><A HREF="./org/eclipse/net4j/util/lifecycle/Lifecycle.html#isDeferredActivation()"><B>isDeferredActivation()</B></A> -
Method in class org.eclipse.net4j.util.lifecycle.<A HREF="./org/eclipse/net4j/util/lifecycle/Lifecycle.html" title="class in org.eclipse.net4j.util.lifecycle">Lifecycle</A>
<DD>&nbsp;
+<DT><A HREF="./org/eclipse/net4j/util/lifecycle/LifecycleUtil.html#isDeferredActivation(java.lang.Object)"><B>isDeferredActivation(Object)</B></A> -
+Static method in class org.eclipse.net4j.util.lifecycle.<A HREF="./org/eclipse/net4j/util/lifecycle/LifecycleUtil.html" title="class in org.eclipse.net4j.util.lifecycle">LifecycleUtil</A>
+<DD>&nbsp;
<DT><A HREF="./org/eclipse/net4j/util/om/pref/OMPreferences.html#isDirty()"><B>isDirty()</B></A> -
Method in interface org.eclipse.net4j.util.om.pref.<A HREF="./org/eclipse/net4j/util/om/pref/OMPreferences.html" title="interface in org.eclipse.net4j.util.om.pref">OMPreferences</A>
<DD>&nbsp;
diff --git a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/cache/Cache.html b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/cache/Cache.html
index b6dce5e67e..cf460e7036 100644
--- a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/cache/Cache.html
+++ b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/cache/Cache.html
@@ -141,6 +141,16 @@ Class Cache&lt;E&gt;</H2>
</TR>
</TABLE>
&nbsp;
+<A NAME="nested_classes_inherited_from_class_org.eclipse.net4j.util.lifecycle.ILifecycle"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Nested classes/interfaces inherited from interface org.eclipse.net4j.util.lifecycle.<A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.html" title="interface in org.eclipse.net4j.util.lifecycle">ILifecycle</A></B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.DeferrableActivation.html" title="interface in org.eclipse.net4j.util.lifecycle">ILifecycle.DeferrableActivation</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
<!-- =========== FIELD SUMMARY =========== -->
<A NAME="field_summary"><!-- --></A>
diff --git a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/cache/CacheMonitor.html b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/cache/CacheMonitor.html
index 54dc263260..ba01a91d70 100644
--- a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/cache/CacheMonitor.html
+++ b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/cache/CacheMonitor.html
@@ -151,6 +151,16 @@ Class CacheMonitor</H2>
</TR>
</TABLE>
&nbsp;
+<A NAME="nested_classes_inherited_from_class_org.eclipse.net4j.util.lifecycle.ILifecycle"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Nested classes/interfaces inherited from interface org.eclipse.net4j.util.lifecycle.<A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.html" title="interface in org.eclipse.net4j.util.lifecycle">ILifecycle</A></B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.DeferrableActivation.html" title="interface in org.eclipse.net4j.util.lifecycle">ILifecycle.DeferrableActivation</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
<!-- =========== FIELD SUMMARY =========== -->
<A NAME="field_summary"><!-- --></A>
diff --git a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/concurrent/QueueRunner.html b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/concurrent/QueueRunner.html
index 8c8d4d2c25..5e1bba0998 100644
--- a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/concurrent/QueueRunner.html
+++ b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/concurrent/QueueRunner.html
@@ -149,6 +149,16 @@ Class QueueRunner</H2>
</TR>
</TABLE>
&nbsp;
+<A NAME="nested_classes_inherited_from_class_org.eclipse.net4j.util.lifecycle.ILifecycle"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Nested classes/interfaces inherited from interface org.eclipse.net4j.util.lifecycle.<A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.html" title="interface in org.eclipse.net4j.util.lifecycle">ILifecycle</A></B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.DeferrableActivation.html" title="interface in org.eclipse.net4j.util.lifecycle">ILifecycle.DeferrableActivation</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
<!-- =========== FIELD SUMMARY =========== -->
<A NAME="field_summary"><!-- --></A>
diff --git a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/concurrent/QueueWorker.html b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/concurrent/QueueWorker.html
index 73cb045083..976eff2917 100644
--- a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/concurrent/QueueWorker.html
+++ b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/concurrent/QueueWorker.html
@@ -147,6 +147,16 @@ Class QueueWorker&lt;E&gt;</H2>
</TR>
</TABLE>
&nbsp;
+<A NAME="nested_classes_inherited_from_class_org.eclipse.net4j.util.lifecycle.ILifecycle"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Nested classes/interfaces inherited from interface org.eclipse.net4j.util.lifecycle.<A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.html" title="interface in org.eclipse.net4j.util.lifecycle">ILifecycle</A></B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.DeferrableActivation.html" title="interface in org.eclipse.net4j.util.lifecycle">ILifecycle.DeferrableActivation</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
<!-- =========== FIELD SUMMARY =========== -->
<A NAME="field_summary"><!-- --></A>
diff --git a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/concurrent/QueueWorkerWorkSerializer.html b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/concurrent/QueueWorkerWorkSerializer.html
index af570383b1..976a857521 100644
--- a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/concurrent/QueueWorkerWorkSerializer.html
+++ b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/concurrent/QueueWorkerWorkSerializer.html
@@ -143,6 +143,16 @@ Class QueueWorkerWorkSerializer</H2>
</TR>
</TABLE>
&nbsp;
+<A NAME="nested_classes_inherited_from_class_org.eclipse.net4j.util.lifecycle.ILifecycle"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Nested classes/interfaces inherited from interface org.eclipse.net4j.util.lifecycle.<A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.html" title="interface in org.eclipse.net4j.util.lifecycle">ILifecycle</A></B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.DeferrableActivation.html" title="interface in org.eclipse.net4j.util.lifecycle">ILifecycle.DeferrableActivation</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
<!-- =========== FIELD SUMMARY =========== -->
<A NAME="field_summary"><!-- --></A>
diff --git a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/concurrent/RWLockManager.html b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/concurrent/RWLockManager.html
index e9543b56e0..5ed7472ab3 100644
--- a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/concurrent/RWLockManager.html
+++ b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/concurrent/RWLockManager.html
@@ -175,6 +175,16 @@ Support Multiple reads/no write and upgrade lock from read to write. Many contex
</TR>
</TABLE>
&nbsp;
+<A NAME="nested_classes_inherited_from_class_org.eclipse.net4j.util.lifecycle.ILifecycle"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Nested classes/interfaces inherited from interface org.eclipse.net4j.util.lifecycle.<A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.html" title="interface in org.eclipse.net4j.util.lifecycle">ILifecycle</A></B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.DeferrableActivation.html" title="interface in org.eclipse.net4j.util.lifecycle">ILifecycle.DeferrableActivation</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
<!-- =========== FIELD SUMMARY =========== -->
<A NAME="field_summary"><!-- --></A>
diff --git a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/concurrent/RWOLockManager.html b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/concurrent/RWOLockManager.html
index 5589998f5c..b1ebf898f0 100644
--- a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/concurrent/RWOLockManager.html
+++ b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/concurrent/RWOLockManager.html
@@ -158,6 +158,16 @@ Keeps track of locks on objects. Locks are owned by contexts. A particular combi
</TR>
</TABLE>
&nbsp;
+<A NAME="nested_classes_inherited_from_class_org.eclipse.net4j.util.lifecycle.ILifecycle"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Nested classes/interfaces inherited from interface org.eclipse.net4j.util.lifecycle.<A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.html" title="interface in org.eclipse.net4j.util.lifecycle">ILifecycle</A></B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.DeferrableActivation.html" title="interface in org.eclipse.net4j.util.lifecycle">ILifecycle.DeferrableActivation</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
<!-- =========== FIELD SUMMARY =========== -->
<A NAME="field_summary"><!-- --></A>
diff --git a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/concurrent/TimerLifecycle.html b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/concurrent/TimerLifecycle.html
index eb76c53441..fb374379e2 100644
--- a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/concurrent/TimerLifecycle.html
+++ b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/concurrent/TimerLifecycle.html
@@ -141,7 +141,17 @@ Class TimerLifecycle</H2>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
</TABLE>
-&nbsp;<!-- =========== FIELD SUMMARY =========== -->
+&nbsp;<A NAME="nested_classes_inherited_from_class_org.eclipse.net4j.util.lifecycle.ILifecycle"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Nested classes/interfaces inherited from interface org.eclipse.net4j.util.lifecycle.<A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.html" title="interface in org.eclipse.net4j.util.lifecycle">ILifecycle</A></B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.DeferrableActivation.html" title="interface in org.eclipse.net4j.util.lifecycle">ILifecycle.DeferrableActivation</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- =========== FIELD SUMMARY =========== -->
<A NAME="field_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
diff --git a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/concurrent/Worker.html b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/concurrent/Worker.html
index 3b752c47e1..7021efe9d4 100644
--- a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/concurrent/Worker.html
+++ b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/concurrent/Worker.html
@@ -147,7 +147,17 @@ Class Worker</H2>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
</TABLE>
-&nbsp;<!-- =========== FIELD SUMMARY =========== -->
+&nbsp;<A NAME="nested_classes_inherited_from_class_org.eclipse.net4j.util.lifecycle.ILifecycle"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Nested classes/interfaces inherited from interface org.eclipse.net4j.util.lifecycle.<A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.html" title="interface in org.eclipse.net4j.util.lifecycle">ILifecycle</A></B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.DeferrableActivation.html" title="interface in org.eclipse.net4j.util.lifecycle">ILifecycle.DeferrableActivation</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- =========== FIELD SUMMARY =========== -->
<A NAME="field_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
diff --git a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/container/Container.html b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/container/Container.html
index 75bccf30cd..7e9ad10a85 100644
--- a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/container/Container.html
+++ b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/container/Container.html
@@ -149,6 +149,16 @@ A default <A HREF="../../../../../org/eclipse/net4j/util/container/IContainer.ht
</TR>
</TABLE>
&nbsp;
+<A NAME="nested_classes_inherited_from_class_org.eclipse.net4j.util.lifecycle.ILifecycle"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Nested classes/interfaces inherited from interface org.eclipse.net4j.util.lifecycle.<A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.html" title="interface in org.eclipse.net4j.util.lifecycle">ILifecycle</A></B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.DeferrableActivation.html" title="interface in org.eclipse.net4j.util.lifecycle">ILifecycle.DeferrableActivation</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
<!-- =========== FIELD SUMMARY =========== -->
<A NAME="field_summary"><!-- --></A>
diff --git a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/container/IManagedContainer.html b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/container/IManagedContainer.html
index 8b75ed2ca7..5c630708d7 100644
--- a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/container/IManagedContainer.html
+++ b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/container/IManagedContainer.html
@@ -154,6 +154,16 @@ A <A HREF="../../../../../org/eclipse/net4j/util/container/IContainer.html" titl
</TR>
</TABLE>
&nbsp;
+<A NAME="nested_classes_inherited_from_class_org.eclipse.net4j.util.lifecycle.ILifecycle"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Nested classes/interfaces inherited from interface org.eclipse.net4j.util.lifecycle.<A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.html" title="interface in org.eclipse.net4j.util.lifecycle">ILifecycle</A></B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.DeferrableActivation.html" title="interface in org.eclipse.net4j.util.lifecycle">ILifecycle.DeferrableActivation</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
<!-- ========== METHOD SUMMARY =========== -->
diff --git a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/container/IPluginContainer.html b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/container/IPluginContainer.html
index b87ebe01f9..105aa6dbbc 100644
--- a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/container/IPluginContainer.html
+++ b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/container/IPluginContainer.html
@@ -143,6 +143,16 @@ A <A HREF="../../../../../org/eclipse/net4j/util/container/IManagedContainer.htm
</TR>
</TABLE>
&nbsp;
+<A NAME="nested_classes_inherited_from_class_org.eclipse.net4j.util.lifecycle.ILifecycle"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Nested classes/interfaces inherited from interface org.eclipse.net4j.util.lifecycle.<A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.html" title="interface in org.eclipse.net4j.util.lifecycle">ILifecycle</A></B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.DeferrableActivation.html" title="interface in org.eclipse.net4j.util.lifecycle">ILifecycle.DeferrableActivation</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
<!-- =========== FIELD SUMMARY =========== -->
<A NAME="field_summary"><!-- --></A>
diff --git a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/container/ManagedContainer.html b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/container/ManagedContainer.html
index 119130dd5a..e635f5341f 100644
--- a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/container/ManagedContainer.html
+++ b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/container/ManagedContainer.html
@@ -144,6 +144,16 @@ A default implementation of a <A HREF="../../../../../org/eclipse/net4j/util/con
</TR>
</TABLE>
&nbsp;
+<A NAME="nested_classes_inherited_from_class_org.eclipse.net4j.util.lifecycle.ILifecycle"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Nested classes/interfaces inherited from interface org.eclipse.net4j.util.lifecycle.<A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.html" title="interface in org.eclipse.net4j.util.lifecycle">ILifecycle</A></B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.DeferrableActivation.html" title="interface in org.eclipse.net4j.util.lifecycle">ILifecycle.DeferrableActivation</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
<!-- =========== FIELD SUMMARY =========== -->
<A NAME="field_summary"><!-- --></A>
diff --git a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/container/SetContainer.html b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/container/SetContainer.html
index 099845969e..0e3365bc88 100644
--- a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/container/SetContainer.html
+++ b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/container/SetContainer.html
@@ -143,6 +143,16 @@ Class SetContainer&lt;E&gt;</H2>
</TR>
</TABLE>
&nbsp;
+<A NAME="nested_classes_inherited_from_class_org.eclipse.net4j.util.lifecycle.ILifecycle"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Nested classes/interfaces inherited from interface org.eclipse.net4j.util.lifecycle.<A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.html" title="interface in org.eclipse.net4j.util.lifecycle">ILifecycle</A></B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.DeferrableActivation.html" title="interface in org.eclipse.net4j.util.lifecycle">ILifecycle.DeferrableActivation</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
<!-- =========== FIELD SUMMARY =========== -->
<A NAME="field_summary"><!-- --></A>
diff --git a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/container/class-use/IManagedContainer.html b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/container/class-use/IManagedContainer.html
index 5f3866cd79..be70792e56 100644
--- a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/container/class-use/IManagedContainer.html
+++ b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/container/class-use/IManagedContainer.html
@@ -102,6 +102,10 @@ Packages that use <A HREF="../../../../../../org/eclipse/net4j/util/container/IM
<TD>Interfaces and classes for security, negotiation, authentication, authorization and cryptography.&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><A HREF="#org.eclipse.net4j.util.ui"><B>org.eclipse.net4j.util.ui</B></A></TD>
+<TD>Reusable UI components.&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><A HREF="#org.eclipse.net4j.util.ui.container"><B>org.eclipse.net4j.util.ui.container</B></A></TD>
<TD>An element wizard framework for managed containers.&nbsp;</TD>
</TR>
@@ -295,6 +299,39 @@ Uses of <A HREF="../../../../../../org/eclipse/net4j/util/container/IManagedCont
</TABLE>
&nbsp;
<P>
+<A NAME="org.eclipse.net4j.util.ui"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
+Uses of <A HREF="../../../../../../org/eclipse/net4j/util/container/IManagedContainer.html" title="interface in org.eclipse.net4j.util.container">IManagedContainer</A> in <A HREF="../../../../../../org/eclipse/net4j/util/ui/package-summary.html">org.eclipse.net4j.util.ui</A></FONT></TH>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left" COLSPAN="2">Methods in <A HREF="../../../../../../org/eclipse/net4j/util/ui/package-summary.html">org.eclipse.net4j.util.ui</A> with parameters of type <A HREF="../../../../../../org/eclipse/net4j/util/container/IManagedContainer.html" title="interface in org.eclipse.net4j.util.container">IManagedContainer</A></FONT></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;void</CODE></FONT></TD>
+<TD><CODE><B>FactoryTypeContentProvider.</B><B><A HREF="../../../../../../org/eclipse/net4j/util/ui/FactoryTypeContentProvider.html#connectInput(org.eclipse.net4j.util.container.IManagedContainer)">connectInput</A></B>(<A HREF="../../../../../../org/eclipse/net4j/util/container/IManagedContainer.html" title="interface in org.eclipse.net4j.util.container">IManagedContainer</A>&nbsp;input)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;void</CODE></FONT></TD>
+<TD><CODE><B>FactoryTypeContentProvider.</B><B><A HREF="../../../../../../org/eclipse/net4j/util/ui/FactoryTypeContentProvider.html#disconnectInput(org.eclipse.net4j.util.container.IManagedContainer)">disconnectInput</A></B>(<A HREF="../../../../../../org/eclipse/net4j/util/container/IManagedContainer.html" title="interface in org.eclipse.net4j.util.container">IManagedContainer</A>&nbsp;input)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
<A NAME="org.eclipse.net4j.util.ui.container"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
diff --git a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/container/package-use.html b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/container/package-use.html
index bbd5e1c978..d490f9c3a0 100644
--- a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/container/package-use.html
+++ b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/container/package-use.html
@@ -110,6 +110,10 @@ Packages that use <A HREF="../../../../../org/eclipse/net4j/util/container/packa
<TD>Interfaces and classes for security, negotiation, authentication, authorization and cryptography.&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><A HREF="#org.eclipse.net4j.util.ui"><B>org.eclipse.net4j.util.ui</B></A></TD>
+<TD>Reusable UI components.&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><A HREF="#org.eclipse.net4j.util.ui.container"><B>org.eclipse.net4j.util.ui.container</B></A></TD>
<TD>An element wizard framework for managed containers.&nbsp;</TD>
</TR>
@@ -296,6 +300,22 @@ Classes in <A HREF="../../../../../org/eclipse/net4j/util/container/package-summ
</TABLE>
&nbsp;
<P>
+<A NAME="org.eclipse.net4j.util.ui"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
+Classes in <A HREF="../../../../../org/eclipse/net4j/util/container/package-summary.html">org.eclipse.net4j.util.container</A> used by <A HREF="../../../../../org/eclipse/net4j/util/ui/package-summary.html">org.eclipse.net4j.util.ui</A></FONT></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><B><A HREF="../../../../../org/eclipse/net4j/util/container/class-use/IManagedContainer.html#org.eclipse.net4j.util.ui"><B>IManagedContainer</B></A></B>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A <A HREF="../../../../../org/eclipse/net4j/util/container/IContainer.html" title="interface in org.eclipse.net4j.util.container"><CODE>container</CODE></A> that populates itself by means of element <A HREF="../../../../../org/eclipse/net4j/util/container/IManagedContainer.html#getFactoryRegistry()"><CODE>factories</CODE></A> and
+ <A HREF="../../../../../org/eclipse/net4j/util/container/IManagedContainer.html#getPostProcessors()"><CODE>post processors</CODE></A> .</TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
<A NAME="org.eclipse.net4j.util.ui.container"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
diff --git a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/event/EventUtil.html b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/event/EventUtil.html
index decfcc20ba..5a478deb05 100644
--- a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/event/EventUtil.html
+++ b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/event/EventUtil.html
@@ -155,6 +155,15 @@ Various static helper methods for dealing with <A HREF="../../../../../org/eclip
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../org/eclipse/net4j/util/event/EventUtil.html#addUniqueListener(java.lang.Object, org.eclipse.net4j.util.event.IListener)">addUniqueListener</A></B>(<A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A>&nbsp;notifier,
+ <A HREF="../../../../../org/eclipse/net4j/util/event/IListener.html" title="interface in org.eclipse.net4j.util.event">IListener</A>&nbsp;listener)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;<A HREF="../../../../../org/eclipse/net4j/util/event/IListener.html" title="interface in org.eclipse.net4j.util.event">IListener</A>[]</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/eclipse/net4j/util/event/EventUtil.html#getListeners(java.lang.Object)">getListeners</A></B>(<A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A>&nbsp;notifier)</CODE>
@@ -164,6 +173,15 @@ Various static helper methods for dealing with <A HREF="../../../../../org/eclip
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../org/eclipse/net4j/util/event/EventUtil.html#hasListener(java.lang.Object, org.eclipse.net4j.util.event.IListener)">hasListener</A></B>(<A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A>&nbsp;notifier,
+ <A HREF="../../../../../org/eclipse/net4j/util/event/IListener.html" title="interface in org.eclipse.net4j.util.event">IListener</A>&nbsp;listener)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/eclipse/net4j/util/event/EventUtil.html#removeListener(java.lang.Object, org.eclipse.net4j.util.event.IListener)">removeListener</A></B>(<A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A>&nbsp;notifier,
<A HREF="../../../../../org/eclipse/net4j/util/event/IListener.html" title="interface in org.eclipse.net4j.util.event">IListener</A>&nbsp;listener)</CODE>
@@ -214,6 +232,20 @@ public static final <A HREF="../../../../../org/eclipse/net4j/util/event/IListen
</TR>
</TABLE>
+<A NAME="addUniqueListener(java.lang.Object, org.eclipse.net4j.util.event.IListener)"><!-- --></A><H3>
+addUniqueListener</H3>
+<PRE>
+public static boolean <B>addUniqueListener</B>(<A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A>&nbsp;notifier,
+ <A HREF="../../../../../org/eclipse/net4j/util/event/IListener.html" title="interface in org.eclipse.net4j.util.event">IListener</A>&nbsp;listener)</PRE>
+<DL>
+<DD><DL>
+<DT><B>Since:</B></DT>
+ <DD>3.2</DD>
+</DL>
+</DD>
+</DL>
+<HR>
+
<A NAME="addListener(java.lang.Object, org.eclipse.net4j.util.event.IListener)"><!-- --></A><H3>
addListener</H3>
<PRE>
@@ -247,6 +279,20 @@ public static <A HREF="../../../../../org/eclipse/net4j/util/event/IListener.htm
</DL>
</DD>
</DL>
+<HR>
+
+<A NAME="hasListener(java.lang.Object, org.eclipse.net4j.util.event.IListener)"><!-- --></A><H3>
+hasListener</H3>
+<PRE>
+public static boolean <B>hasListener</B>(<A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A>&nbsp;notifier,
+ <A HREF="../../../../../org/eclipse/net4j/util/event/IListener.html" title="interface in org.eclipse.net4j.util.event">IListener</A>&nbsp;listener)</PRE>
+<DL>
+<DD><DL>
+<DT><B>Since:</B></DT>
+ <DD>3.2</DD>
+</DL>
+</DD>
+</DL>
<!-- ========= END OF CLASS DATA ========= -->
<HR>
diff --git a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/event/IListener.html b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/event/IListener.html
index ae99d7599f..5d2db414db 100644
--- a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/event/IListener.html
+++ b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/event/IListener.html
@@ -95,7 +95,7 @@ Interface IListener</H2>
<DT><B>All Superinterfaces:</B> <DD><A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/util/EventListener.html?is-external=true" title="class or interface in java.util">EventListener</A></DD>
</DL>
<DL>
-<DT><B>All Known Implementing Classes:</B> <DD><A HREF="../../../../../org/eclipse/net4j/util/container/ContainerEventAdapter.html" title="class in org.eclipse.net4j.util.container">ContainerEventAdapter</A>, <A HREF="../../../../../org/eclipse/net4j/util/ui/views/ContainerItemProvider.html" title="class in org.eclipse.net4j.util.ui.views">ContainerItemProvider</A>, <A HREF="../../../../../org/eclipse/net4j/util/ui/views/ContainerItemProvider.LeafNode.html" title="class in org.eclipse.net4j.util.ui.views">ContainerItemProvider.LeafNode</A>, <A HREF="../../../../../org/eclipse/net4j/util/ui/views/ContainerPathItemProvider.html" title="class in org.eclipse.net4j.util.ui.views">ContainerPathItemProvider</A>, <A HREF="../../../../../org/eclipse/net4j/util/ui/container/ElementWizardComposite.html" title="class in org.eclipse.net4j.util.ui.container">ElementWizardComposite</A>, <A HREF="../../../../../org/eclipse/net4j/util/ui/container/ElementWizardComposite.WithCombo.html" title="class in org.eclipse.net4j.util.ui.container">ElementWizardComposite.WithCombo</A>, <A HREF="../../../../../org/eclipse/net4j/util/ui/container/ElementWizardComposite.WithRadios.html" title="class in org.eclipse.net4j.util.ui.container">ElementWizardComposite.WithRadios</A>, <A HREF="../../../../../org/eclipse/net4j/util/ui/views/ItemProvider.html" title="class in org.eclipse.net4j.util.ui.views">ItemProvider</A>, <A HREF="../../../../../org/eclipse/net4j/util/lifecycle/LifecycleEventAdapter.html" title="class in org.eclipse.net4j.util.lifecycle">LifecycleEventAdapter</A>, <A HREF="../../../../../org/eclipse/net4j/util/container/LifecycleEventConverter.html" title="class in org.eclipse.net4j.util.container">LifecycleEventConverter</A>, <A HREF="../../../../../org/eclipse/net4j/util/ui/actions/SashLayoutAction.html" title="class in org.eclipse.net4j.util.ui.actions">SashLayoutAction</A>, <A HREF="../../../../../org/eclipse/net4j/util/ui/actions/SashLayoutAction.Horizontal.html" title="class in org.eclipse.net4j.util.ui.actions">SashLayoutAction.Horizontal</A>, <A HREF="../../../../../org/eclipse/net4j/util/ui/actions/SashLayoutAction.Vertical.html" title="class in org.eclipse.net4j.util.ui.actions">SashLayoutAction.Vertical</A>, <A HREF="../../../../../org/eclipse/net4j/util/ui/StaticContentProvider.html" title="class in org.eclipse.net4j.util.ui">StaticContentProvider</A>, <A HREF="../../../../../org/eclipse/net4j/util/ui/StructuredContentProvider.html" title="class in org.eclipse.net4j.util.ui">StructuredContentProvider</A></DD>
+<DT><B>All Known Implementing Classes:</B> <DD><A HREF="../../../../../org/eclipse/net4j/util/container/ContainerEventAdapter.html" title="class in org.eclipse.net4j.util.container">ContainerEventAdapter</A>, <A HREF="../../../../../org/eclipse/net4j/util/ui/views/ContainerItemProvider.html" title="class in org.eclipse.net4j.util.ui.views">ContainerItemProvider</A>, <A HREF="../../../../../org/eclipse/net4j/util/ui/views/ContainerItemProvider.LeafNode.html" title="class in org.eclipse.net4j.util.ui.views">ContainerItemProvider.LeafNode</A>, <A HREF="../../../../../org/eclipse/net4j/util/ui/views/ContainerPathItemProvider.html" title="class in org.eclipse.net4j.util.ui.views">ContainerPathItemProvider</A>, <A HREF="../../../../../org/eclipse/net4j/util/ui/container/ElementWizardComposite.html" title="class in org.eclipse.net4j.util.ui.container">ElementWizardComposite</A>, <A HREF="../../../../../org/eclipse/net4j/util/ui/container/ElementWizardComposite.WithCombo.html" title="class in org.eclipse.net4j.util.ui.container">ElementWizardComposite.WithCombo</A>, <A HREF="../../../../../org/eclipse/net4j/util/ui/container/ElementWizardComposite.WithRadios.html" title="class in org.eclipse.net4j.util.ui.container">ElementWizardComposite.WithRadios</A>, <A HREF="../../../../../org/eclipse/net4j/util/ui/FactoryTypeContentProvider.html" title="class in org.eclipse.net4j.util.ui">FactoryTypeContentProvider</A>, <A HREF="../../../../../org/eclipse/net4j/util/ui/views/ItemProvider.html" title="class in org.eclipse.net4j.util.ui.views">ItemProvider</A>, <A HREF="../../../../../org/eclipse/net4j/util/lifecycle/LifecycleEventAdapter.html" title="class in org.eclipse.net4j.util.lifecycle">LifecycleEventAdapter</A>, <A HREF="../../../../../org/eclipse/net4j/util/container/LifecycleEventConverter.html" title="class in org.eclipse.net4j.util.container">LifecycleEventConverter</A>, <A HREF="../../../../../org/eclipse/net4j/util/ui/actions/SashLayoutAction.html" title="class in org.eclipse.net4j.util.ui.actions">SashLayoutAction</A>, <A HREF="../../../../../org/eclipse/net4j/util/ui/actions/SashLayoutAction.Horizontal.html" title="class in org.eclipse.net4j.util.ui.actions">SashLayoutAction.Horizontal</A>, <A HREF="../../../../../org/eclipse/net4j/util/ui/actions/SashLayoutAction.Vertical.html" title="class in org.eclipse.net4j.util.ui.actions">SashLayoutAction.Vertical</A>, <A HREF="../../../../../org/eclipse/net4j/util/ui/StaticContentProvider.html" title="class in org.eclipse.net4j.util.ui">StaticContentProvider</A>, <A HREF="../../../../../org/eclipse/net4j/util/ui/StructuredContentProvider.html" title="class in org.eclipse.net4j.util.ui">StructuredContentProvider</A></DD>
</DL>
<HR>
<DL>
diff --git a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/event/class-use/IListener.html b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/event/class-use/IListener.html
index f063cb3811..6fdd2c7e3f 100644
--- a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/event/class-use/IListener.html
+++ b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/event/class-use/IListener.html
@@ -309,6 +309,15 @@ Uses of <A HREF="../../../../../../org/eclipse/net4j/util/event/IListener.html"
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B>EventUtil.</B><B><A HREF="../../../../../../org/eclipse/net4j/util/event/EventUtil.html#addUniqueListener(java.lang.Object, org.eclipse.net4j.util.event.IListener)">addUniqueListener</A></B>(<A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A>&nbsp;notifier,
+ <A HREF="../../../../../../org/eclipse/net4j/util/event/IListener.html" title="interface in org.eclipse.net4j.util.event">IListener</A>&nbsp;listener)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B>Notifier.</B><B><A HREF="../../../../../../org/eclipse/net4j/util/event/Notifier.html#fireEvent(org.eclipse.net4j.util.event.IEvent, org.eclipse.net4j.util.event.IListener[])">fireEvent</A></B>(<A HREF="../../../../../../org/eclipse/net4j/util/event/IEvent.html" title="interface in org.eclipse.net4j.util.event">IEvent</A>&nbsp;event,
<A HREF="../../../../../../org/eclipse/net4j/util/event/IListener.html" title="interface in org.eclipse.net4j.util.event">IListener</A>[]&nbsp;listeners)</CODE>
@@ -318,6 +327,15 @@ Uses of <A HREF="../../../../../../org/eclipse/net4j/util/event/IListener.html"
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B>EventUtil.</B><B><A HREF="../../../../../../org/eclipse/net4j/util/event/EventUtil.html#hasListener(java.lang.Object, org.eclipse.net4j.util.event.IListener)">hasListener</A></B>(<A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A>&nbsp;notifier,
+ <A HREF="../../../../../../org/eclipse/net4j/util/event/IListener.html" title="interface in org.eclipse.net4j.util.event">IListener</A>&nbsp;listener)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B>INotifier.</B><B><A HREF="../../../../../../org/eclipse/net4j/util/event/INotifier.html#removeListener(org.eclipse.net4j.util.event.IListener)">removeListener</A></B>(<A HREF="../../../../../../org/eclipse/net4j/util/event/IListener.html" title="interface in org.eclipse.net4j.util.event">IListener</A>&nbsp;listener)</CODE>
@@ -500,6 +518,15 @@ Uses of <A HREF="../../../../../../org/eclipse/net4j/util/event/IListener.html"
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;class</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../../org/eclipse/net4j/util/ui/FactoryTypeContentProvider.html" title="class in org.eclipse.net4j.util.ui">FactoryTypeContentProvider</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A <A HREF="../../../../../../org/eclipse/net4j/util/ui/StructuredContentProvider.html" title="class in org.eclipse.net4j.util.ui"><CODE>structured content provider</CODE></A> that shows the <A HREF="../../../../../../org/eclipse/net4j/util/factory/IFactoryKey.html#getType()"><CODE>factory
+ types</CODE></A> of the <A HREF="../../../../../../org/eclipse/net4j/util/ui/StructuredContentProvider.html#getInput()"><CODE>input</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;class</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../../org/eclipse/net4j/util/ui/StaticContentProvider.html" title="class in org.eclipse.net4j.util.ui">StaticContentProvider</A></B></CODE>
<BR>
diff --git a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/fsm/FiniteStateMachine.html b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/fsm/FiniteStateMachine.html
index 2bff211337..bd3b70413f 100644
--- a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/fsm/FiniteStateMachine.html
+++ b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/fsm/FiniteStateMachine.html
@@ -176,7 +176,17 @@ A <a href="http://en.wikipedia.org/wiki/Finite-state_machine">finite state machi
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
</TABLE>
-&nbsp;<!-- =========== FIELD SUMMARY =========== -->
+&nbsp;<A NAME="nested_classes_inherited_from_class_org.eclipse.net4j.util.lifecycle.ILifecycle"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Nested classes/interfaces inherited from interface org.eclipse.net4j.util.lifecycle.<A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.html" title="interface in org.eclipse.net4j.util.lifecycle">ILifecycle</A></B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.DeferrableActivation.html" title="interface in org.eclipse.net4j.util.lifecycle">ILifecycle.DeferrableActivation</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- =========== FIELD SUMMARY =========== -->
<A NAME="field_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
diff --git a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/lifecycle/ILifecycle.DeferrableActivation.html b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/lifecycle/ILifecycle.DeferrableActivation.html
new file mode 100644
index 0000000000..b307e4c1ca
--- /dev/null
+++ b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/lifecycle/ILifecycle.DeferrableActivation.html
@@ -0,0 +1,224 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+
+<TITLE>
+ILifecycle.DeferrableActivation (Net4j Utilities Documentation)
+</TITLE>
+
+<META NAME="date" CONTENT="">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../../html/book.css" TITLE="Style">
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+ if (location.href.indexOf('is-external=true') == -1) {
+ parent.document.title="ILifecycle.DeferrableActivation (Net4j Utilities Documentation)";
+ }
+}
+</SCRIPT>
+<NOSCRIPT>
+</NOSCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+<HR>
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+ <TR ALIGN="center" VALIGN="top">
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/ILifecycle.DeferrableActivation.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+ </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.html" title="interface in org.eclipse.net4j.util.lifecycle"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycleEvent.html" title="interface in org.eclipse.net4j.util.lifecycle"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ <A HREF="../../../../../index.html?org/eclipse/net4j/util/lifecycle/ILifecycle.DeferrableActivation.html" target="_top"><B>FRAMES</B></A> &nbsp;
+&nbsp;<A HREF="ILifecycle.DeferrableActivation.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+ <!--
+ if(window==top) {
+ document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+ }
+ //-->
+</SCRIPT>
+<NOSCRIPT>
+ <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+ SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+org.eclipse.net4j.util.lifecycle</FONT>
+<BR>
+Interface ILifecycle.DeferrableActivation</H2>
+<DL>
+<DT><B>Enclosing interface:</B><DD><A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.html" title="interface in org.eclipse.net4j.util.lifecycle">ILifecycle</A></DD>
+</DL>
+<HR>
+<DL>
+ <DT>public static interface <B>ILifecycle.DeferrableActivation</B>
+</DL>
+
+<map id="APIVIZ" name="APIVIZ">
+<area shape="rect" id="node1" href="ILifecycle.DeferrableActivation.html" title="&#171;interface&#187; ILifecycle.DeferrableActivation" alt="" coords="5,5,200,45"/>
+</map>
+
+<CENTER><IMG SRC="ILifecycle.DeferrableActivation.png" USEMAP="#APIVIZ" BORDER="0"></CENTER>
+
+
+
+<P>
+A mix-in interface for <A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.html" title="interface in org.eclipse.net4j.util.lifecycle"><CODE>lifecycles</CODE></A> with deferrable activation.
+<P>
+
+<P>
+<DL>
+<DT><B>Since:</B></DT>
+ <DD>3.2</DD>
+</DL>
+<HR>
+
+<P>
+
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.DeferrableActivation.html#isDeferredActivation()">isDeferredActivation</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TH>
+</TR>
+</TABLE>
+
+<A NAME="isDeferredActivation()"><!-- --></A><H3>
+isDeferredActivation</H3>
+<PRE>
+boolean <B>isDeferredActivation</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+ <TR ALIGN="center" VALIGN="top">
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/ILifecycle.DeferrableActivation.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+ </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.html" title="interface in org.eclipse.net4j.util.lifecycle"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycleEvent.html" title="interface in org.eclipse.net4j.util.lifecycle"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ <A HREF="../../../../../index.html?org/eclipse/net4j/util/lifecycle/ILifecycle.DeferrableActivation.html" target="_top"><B>FRAMES</B></A> &nbsp;
+&nbsp;<A HREF="ILifecycle.DeferrableActivation.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+ <!--
+ if(window==top) {
+ document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+ }
+ //-->
+</SCRIPT>
+<NOSCRIPT>
+ <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+ SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+<i>Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.</i>
+</BODY>
+</HTML>
diff --git a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/lifecycle/ILifecycle.DeferrableActivation.png b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/lifecycle/ILifecycle.DeferrableActivation.png
new file mode 100644
index 0000000000..04e0466584
--- /dev/null
+++ b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/lifecycle/ILifecycle.DeferrableActivation.png
Binary files differ
diff --git a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/lifecycle/ILifecycle.html b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/lifecycle/ILifecycle.html
index a322c5253f..b021d9474f 100644
--- a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/lifecycle/ILifecycle.html
+++ b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/lifecycle/ILifecycle.html
@@ -56,7 +56,7 @@ function windowTitle()
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;PREV CLASS&nbsp;
-&nbsp;<A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycleEvent.html" title="interface in org.eclipse.net4j.util.lifecycle"><B>NEXT CLASS</B></A></FONT></TD>
+&nbsp;<A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.DeferrableActivation.html" title="interface in org.eclipse.net4j.util.lifecycle"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../../../../index.html?org/eclipse/net4j/util/lifecycle/ILifecycle.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="ILifecycle.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
@@ -76,7 +76,7 @@ function windowTitle()
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
- SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+ SUMMARY:&nbsp;<A HREF="#nested_class_summary">NESTED</A>&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
@@ -131,7 +131,24 @@ An entity that has a well-defined <A HREF="../../../../../org/eclipse/net4j/util
<HR>
<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+<A NAME="nested_class_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
+<B>Nested Class Summary</B></FONT></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;interface</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.DeferrableActivation.html" title="interface in org.eclipse.net4j.util.lifecycle">ILifecycle.DeferrableActivation</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A mix-in interface for <A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.html" title="interface in org.eclipse.net4j.util.lifecycle"><CODE>lifecycles</CODE></A> with deferrable activation.</TD>
+</TR>
+</TABLE>
+&nbsp;
<!-- ========== METHOD SUMMARY =========== -->
<A NAME="method_summary"><!-- --></A>
@@ -287,7 +304,7 @@ boolean <B>isActive</B>()</PRE>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;PREV CLASS&nbsp;
-&nbsp;<A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycleEvent.html" title="interface in org.eclipse.net4j.util.lifecycle"><B>NEXT CLASS</B></A></FONT></TD>
+&nbsp;<A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.DeferrableActivation.html" title="interface in org.eclipse.net4j.util.lifecycle"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../../../../index.html?org/eclipse/net4j/util/lifecycle/ILifecycle.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="ILifecycle.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
@@ -307,7 +324,7 @@ boolean <B>isActive</B>()</PRE>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
- SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+ SUMMARY:&nbsp;<A HREF="#nested_class_summary">NESTED</A>&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
diff --git a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/lifecycle/ILifecycleEvent.html b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/lifecycle/ILifecycleEvent.html
index 09574de36d..23a2798dcc 100644
--- a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/lifecycle/ILifecycleEvent.html
+++ b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/lifecycle/ILifecycleEvent.html
@@ -55,7 +55,7 @@ function windowTitle()
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
-&nbsp;<A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.html" title="interface in org.eclipse.net4j.util.lifecycle"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.DeferrableActivation.html" title="interface in org.eclipse.net4j.util.lifecycle"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycleEvent.Kind.html" title="enum in org.eclipse.net4j.util.lifecycle"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../../../../index.html?org/eclipse/net4j/util/lifecycle/ILifecycleEvent.html" target="_top"><B>FRAMES</B></A> &nbsp;
@@ -244,7 +244,7 @@ getKind</H3>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
-&nbsp;<A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.html" title="interface in org.eclipse.net4j.util.lifecycle"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.DeferrableActivation.html" title="interface in org.eclipse.net4j.util.lifecycle"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycleEvent.Kind.html" title="enum in org.eclipse.net4j.util.lifecycle"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../../../../index.html?org/eclipse/net4j/util/lifecycle/ILifecycleEvent.html" target="_top"><B>FRAMES</B></A> &nbsp;
diff --git a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/lifecycle/Lifecycle.html b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/lifecycle/Lifecycle.html
index fbbde03f5c..4ca9bdebd9 100644
--- a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/lifecycle/Lifecycle.html
+++ b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/lifecycle/Lifecycle.html
@@ -135,6 +135,25 @@ A default implementation of an entity with a <A HREF="../../../../../org/eclipse
<HR>
<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+<A NAME="nested_class_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
+<B>Nested Class Summary</B></FONT></TH>
+</TR>
+</TABLE>
+&nbsp;<A NAME="nested_classes_inherited_from_class_org.eclipse.net4j.util.lifecycle.ILifecycle"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Nested classes/interfaces inherited from interface org.eclipse.net4j.util.lifecycle.<A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.html" title="interface in org.eclipse.net4j.util.lifecycle">ILifecycle</A></B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.DeferrableActivation.html" title="interface in org.eclipse.net4j.util.lifecycle">ILifecycle.DeferrableActivation</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
<!-- =========== FIELD SUMMARY =========== -->
<A NAME="field_summary"><!-- --></A>
@@ -328,7 +347,7 @@ A default implementation of an entity with a <A HREF="../../../../../org/eclipse
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>protected &nbsp;boolean</CODE></FONT></TD>
+<CODE>&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/eclipse/net4j/util/lifecycle/Lifecycle.html#isDeferredActivation()">isDeferredActivation</A></B>()</CODE>
<BR>
@@ -649,12 +668,14 @@ protected final void <B>deferredActivate</B>(boolean&nbsp;successful)</PRE>
<A NAME="isDeferredActivation()"><!-- --></A><H3>
isDeferredActivation</H3>
<PRE>
-protected boolean <B>isDeferredActivation</B>()</PRE>
+public boolean <B>isDeferredActivation</B>()</PRE>
<DL>
<DD><DL>
</DL>
</DD>
<DD><DL>
+<DT><B>Since:</B></DT>
+ <DD>3.2</DD>
</DL>
</DD>
</DL>
diff --git a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/lifecycle/LifecycleUtil.html b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/lifecycle/LifecycleUtil.html
index 9cbab9f164..727181b0da 100644
--- a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/lifecycle/LifecycleUtil.html
+++ b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/lifecycle/LifecycleUtil.html
@@ -309,6 +309,14 @@ Various static helper methods for dealing with <A HREF="../../../../../org/eclip
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../org/eclipse/net4j/util/lifecycle/LifecycleUtil.html#isDeferredActivation(java.lang.Object)">isDeferredActivation</A></B>(<A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A>&nbsp;object)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/eclipse/net4j/util/lifecycle/LifecycleUtil.html#waitFor(java.lang.Object, long, org.eclipse.net4j.util.lifecycle.LifecycleState)">waitFor</A></B>(<A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A>&nbsp;object,
long&nbsp;millis,
<A HREF="../../../../../org/eclipse/net4j/util/lifecycle/LifecycleState.html" title="enum in org.eclipse.net4j.util.lifecycle">LifecycleState</A>&nbsp;state)</CODE>
@@ -357,6 +365,19 @@ Various static helper methods for dealing with <A HREF="../../../../../org/eclip
</TR>
</TABLE>
+<A NAME="isDeferredActivation(java.lang.Object)"><!-- --></A><H3>
+isDeferredActivation</H3>
+<PRE>
+public static boolean <B>isDeferredActivation</B>(<A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A>&nbsp;object)</PRE>
+<DL>
+<DD><DL>
+<DT><B>Since:</B></DT>
+ <DD>3.2</DD>
+</DL>
+</DD>
+</DL>
+<HR>
+
<A NAME="getLifecycleState(java.lang.Object)"><!-- --></A><H3>
getLifecycleState</H3>
<PRE>
diff --git a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/lifecycle/class-use/ILifecycle.DeferrableActivation.html b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/lifecycle/class-use/ILifecycle.DeferrableActivation.html
new file mode 100644
index 0000000000..e8f582fa35
--- /dev/null
+++ b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/lifecycle/class-use/ILifecycle.DeferrableActivation.html
@@ -0,0 +1,143 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+
+<TITLE>
+Uses of Interface org.eclipse.net4j.util.lifecycle.ILifecycle.DeferrableActivation (Net4j Utilities Documentation)
+</TITLE>
+
+<META NAME="date" CONTENT="">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../../../html/book.css" TITLE="Style">
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+ if (location.href.indexOf('is-external=true') == -1) {
+ parent.document.title="Uses of Interface org.eclipse.net4j.util.lifecycle.ILifecycle.DeferrableActivation (Net4j Utilities Documentation)";
+ }
+}
+</SCRIPT>
+<NOSCRIPT>
+</NOSCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+<HR>
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+ <TR ALIGN="center" VALIGN="top">
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.DeferrableActivation.html" title="interface in org.eclipse.net4j.util.lifecycle"><FONT CLASS="NavBarFont1"><B>Class</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Use</B></FONT>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+ </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ <A HREF="../../../../../../index.html?org/eclipse/net4j/util/lifecycle/\class-useILifecycle.DeferrableActivation.html" target="_top"><B>FRAMES</B></A> &nbsp;
+&nbsp;<A HREF="ILifecycle.DeferrableActivation.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+ <!--
+ if(window==top) {
+ document.writeln('<A HREF="../../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+ }
+ //-->
+</SCRIPT>
+<NOSCRIPT>
+ <A HREF="../../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H2>
+<B>Uses of Interface<br>org.eclipse.net4j.util.lifecycle.ILifecycle.DeferrableActivation</B></H2>
+</CENTER>
+No usage of org.eclipse.net4j.util.lifecycle.ILifecycle.DeferrableActivation
+<P>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+ <TR ALIGN="center" VALIGN="top">
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.DeferrableActivation.html" title="interface in org.eclipse.net4j.util.lifecycle"><FONT CLASS="NavBarFont1"><B>Class</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Use</B></FONT>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+ </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ <A HREF="../../../../../../index.html?org/eclipse/net4j/util/lifecycle/\class-useILifecycle.DeferrableActivation.html" target="_top"><B>FRAMES</B></A> &nbsp;
+&nbsp;<A HREF="ILifecycle.DeferrableActivation.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+ <!--
+ if(window==top) {
+ document.writeln('<A HREF="../../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+ }
+ //-->
+</SCRIPT>
+<NOSCRIPT>
+ <A HREF="../../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+<i>Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.</i>
+</BODY>
+</HTML>
diff --git a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/lifecycle/package-frame.html b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/lifecycle/package-frame.html
index 53e4d5e3ef..9181224cd5 100644
--- a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/lifecycle/package-frame.html
+++ b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/lifecycle/package-frame.html
@@ -26,6 +26,8 @@ Interfaces</FONT>&nbsp;
<BR>
<A HREF="ILifecycle.html" title="interface in org.eclipse.net4j.util.lifecycle" target="classFrame"><I>ILifecycle</I></A>
<BR>
+<A HREF="ILifecycle.DeferrableActivation.html" title="interface in org.eclipse.net4j.util.lifecycle" target="classFrame"><I>ILifecycle.DeferrableActivation</I></A>
+<BR>
<A HREF="ILifecycleEvent.html" title="interface in org.eclipse.net4j.util.lifecycle" target="classFrame"><I>ILifecycleEvent</I></A></FONT></TD>
</TR>
</TABLE>
diff --git a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/lifecycle/package-summary.html b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/lifecycle/package-summary.html
index 80366c647b..d685bf01d6 100644
--- a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/lifecycle/package-summary.html
+++ b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/lifecycle/package-summary.html
@@ -91,13 +91,14 @@ A framework for components with a simple lifecycle.
<P>
<map id="APIVIZ" name="APIVIZ">
-<area shape="rect" id="node1" href="../event/IEvent.html" title="&#171;interface&#187; IEvent (org.eclipse.net4j.util.event)" alt="" coords="6,70,186,125"/>
-<area shape="rect" id="node2" href="ILifecycle.html" title="&#171;interface&#187; ILifecycle" alt="" coords="496,145,581,185"/>
-<area shape="rect" id="node3" href="ILifecycleEvent.html" title="&#171;interface&#187; ILifecycleEvent" alt="" coords="255,77,363,117"/>
-<area shape="rect" id="node4" href="../event/INotifier.html" title="&#171;interface&#187; INotifier (org.eclipse.net4j.util.event)" alt="" coords="219,145,399,199"/>
-<area shape="rect" id="node5" href="LifecycleUtil.html" title="&#171;static&#187; LifecycleUtil" alt="" coords="50,5,142,45"/>
-<area shape="rect" id="node6" href="ILifecycleEvent.Kind.html" title="&#171;enum&#187; ILifecycleEvent.Kind" alt="" coords="469,73,608,113"/>
-<area shape="rect" id="node7" href="LifecycleState.html" title="&#171;enum&#187; LifecycleState" alt="" coords="640,145,744,185"/>
+<area shape="rect" id="node1" href="../event/IEvent.html" title="&#171;interface&#187; IEvent (org.eclipse.net4j.util.event)" alt="" coords="13,134,193,189"/>
+<area shape="rect" id="node2" href="ILifecycle.html" title="&#171;interface&#187; ILifecycle" alt="" coords="509,209,595,249"/>
+<area shape="rect" id="node3" href="ILifecycle.DeferrableActivation.html" title="&#171;interface&#187; ILifecycle.DeferrableActivation" alt="" coords="5,69,200,109"/>
+<area shape="rect" id="node4" href="ILifecycleEvent.html" title="&#171;interface&#187; ILifecycleEvent" alt="" coords="269,141,377,181"/>
+<area shape="rect" id="node5" href="../event/INotifier.html" title="&#171;interface&#187; INotifier (org.eclipse.net4j.util.event)" alt="" coords="233,209,413,263"/>
+<area shape="rect" id="node6" href="LifecycleUtil.html" title="&#171;static&#187; LifecycleUtil" alt="" coords="57,5,149,45"/>
+<area shape="rect" id="node7" href="ILifecycleEvent.Kind.html" title="&#171;enum&#187; ILifecycleEvent.Kind" alt="" coords="483,137,621,177"/>
+<area shape="rect" id="node8" href="LifecycleState.html" title="&#171;enum&#187; LifecycleState" alt="" coords="653,209,757,249"/>
</map>
<CENTER><IMG SRC="package-summary.png" USEMAP="#APIVIZ" BORDER="0"></CENTER>
@@ -113,6 +114,10 @@ A framework for components with a simple lifecycle.
<A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.html#deactivate()"><CODE>deactivated</CODE></A>.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.DeferrableActivation.html" title="interface in org.eclipse.net4j.util.lifecycle">ILifecycle.DeferrableActivation</A></B></TD>
+<TD>A mix-in interface for <A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.html" title="interface in org.eclipse.net4j.util.lifecycle"><CODE>lifecycles</CODE></A> with deferrable activation.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
<TD WIDTH="15%"><B><A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycleEvent.html" title="interface in org.eclipse.net4j.util.lifecycle">ILifecycleEvent</A></B></TD>
<TD>An <A HREF="../../../../../org/eclipse/net4j/util/event/IEvent.html" title="interface in org.eclipse.net4j.util.event"><CODE>event</CODE></A> fired from an entity with a <A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.html" title="interface in org.eclipse.net4j.util.lifecycle"><CODE>lifecycle</CODE></A> when its lifecycle <A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycleEvent.Kind.html" title="enum in org.eclipse.net4j.util.lifecycle"><CODE>state</CODE></A> has changed.</TD>
</TR>
diff --git a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/lifecycle/package-summary.png b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/lifecycle/package-summary.png
index 2914a65f2a..b04baef987 100644
--- a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/lifecycle/package-summary.png
+++ b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/lifecycle/package-summary.png
Binary files differ
diff --git a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ref/ReferenceQueueWorker.html b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ref/ReferenceQueueWorker.html
index b9750a266e..a02cb3c859 100644
--- a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ref/ReferenceQueueWorker.html
+++ b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ref/ReferenceQueueWorker.html
@@ -143,6 +143,16 @@ Class ReferenceQueueWorker&lt;T&gt;</H2>
</TR>
</TABLE>
&nbsp;
+<A NAME="nested_classes_inherited_from_class_org.eclipse.net4j.util.lifecycle.ILifecycle"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Nested classes/interfaces inherited from interface org.eclipse.net4j.util.lifecycle.<A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.html" title="interface in org.eclipse.net4j.util.lifecycle">ILifecycle</A></B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.DeferrableActivation.html" title="interface in org.eclipse.net4j.util.lifecycle">ILifecycle.DeferrableActivation</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
<!-- =========== FIELD SUMMARY =========== -->
<A NAME="field_summary"><!-- --></A>
diff --git a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/registry/DelegatingRegistry.html b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/registry/DelegatingRegistry.html
index 9899ee7678..0d5211cc8d 100644
--- a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/registry/DelegatingRegistry.html
+++ b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/registry/DelegatingRegistry.html
@@ -171,6 +171,16 @@ Implementation note: AbstractDelegatingRegistry does not preserve the "modifyabl
</TR>
</TABLE>
&nbsp;
+<A NAME="nested_classes_inherited_from_class_org.eclipse.net4j.util.lifecycle.ILifecycle"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Nested classes/interfaces inherited from interface org.eclipse.net4j.util.lifecycle.<A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.html" title="interface in org.eclipse.net4j.util.lifecycle">ILifecycle</A></B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.DeferrableActivation.html" title="interface in org.eclipse.net4j.util.lifecycle">ILifecycle.DeferrableActivation</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
<!-- =========== FIELD SUMMARY =========== -->
<A NAME="field_summary"><!-- --></A>
diff --git a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/registry/HashMapDelegatingRegistry.html b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/registry/HashMapDelegatingRegistry.html
index f08a950810..370e6e9f6f 100644
--- a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/registry/HashMapDelegatingRegistry.html
+++ b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/registry/HashMapDelegatingRegistry.html
@@ -161,6 +161,16 @@ Class HashMapDelegatingRegistry&lt;K,V&gt;</H2>
</TR>
</TABLE>
&nbsp;
+<A NAME="nested_classes_inherited_from_class_org.eclipse.net4j.util.lifecycle.ILifecycle"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Nested classes/interfaces inherited from interface org.eclipse.net4j.util.lifecycle.<A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.html" title="interface in org.eclipse.net4j.util.lifecycle">ILifecycle</A></B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.DeferrableActivation.html" title="interface in org.eclipse.net4j.util.lifecycle">ILifecycle.DeferrableActivation</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
<!-- =========== FIELD SUMMARY =========== -->
<A NAME="field_summary"><!-- --></A>
diff --git a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/registry/HashMapRegistry.html b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/registry/HashMapRegistry.html
index 2db7841803..8393f87ba5 100644
--- a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/registry/HashMapRegistry.html
+++ b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/registry/HashMapRegistry.html
@@ -160,6 +160,16 @@ Class HashMapRegistry&lt;K,V&gt;</H2>
</TR>
</TABLE>
&nbsp;
+<A NAME="nested_classes_inherited_from_class_org.eclipse.net4j.util.lifecycle.ILifecycle"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Nested classes/interfaces inherited from interface org.eclipse.net4j.util.lifecycle.<A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.html" title="interface in org.eclipse.net4j.util.lifecycle">ILifecycle</A></B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.DeferrableActivation.html" title="interface in org.eclipse.net4j.util.lifecycle">ILifecycle.DeferrableActivation</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
<!-- =========== FIELD SUMMARY =========== -->
<A NAME="field_summary"><!-- --></A>
diff --git a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/registry/Registry.html b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/registry/Registry.html
index 3f15a4ec94..1dff8c1644 100644
--- a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/registry/Registry.html
+++ b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/registry/Registry.html
@@ -164,6 +164,16 @@ Class Registry&lt;K,V&gt;</H2>
</TR>
</TABLE>
&nbsp;
+<A NAME="nested_classes_inherited_from_class_org.eclipse.net4j.util.lifecycle.ILifecycle"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Nested classes/interfaces inherited from interface org.eclipse.net4j.util.lifecycle.<A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.html" title="interface in org.eclipse.net4j.util.lifecycle">ILifecycle</A></B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.DeferrableActivation.html" title="interface in org.eclipse.net4j.util.lifecycle">ILifecycle.DeferrableActivation</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
<!-- =========== FIELD SUMMARY =========== -->
<A NAME="field_summary"><!-- --></A>
diff --git a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/security/ChallengeNegotiator.html b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/security/ChallengeNegotiator.html
index bacb5cfba4..1f18fa87df 100644
--- a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/security/ChallengeNegotiator.html
+++ b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/security/ChallengeNegotiator.html
@@ -161,6 +161,16 @@ Class ChallengeNegotiator</H2>
</TR>
</TABLE>
&nbsp;
+<A NAME="nested_classes_inherited_from_class_org.eclipse.net4j.util.lifecycle.ILifecycle"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Nested classes/interfaces inherited from interface org.eclipse.net4j.util.lifecycle.<A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.html" title="interface in org.eclipse.net4j.util.lifecycle">ILifecycle</A></B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.DeferrableActivation.html" title="interface in org.eclipse.net4j.util.lifecycle">ILifecycle.DeferrableActivation</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
<!-- =========== FIELD SUMMARY =========== -->
<A NAME="field_summary"><!-- --></A>
diff --git a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/security/ChallengeResponseNegotiator.html b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/security/ChallengeResponseNegotiator.html
index cdda1df26d..6833fd5fe1 100644
--- a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/security/ChallengeResponseNegotiator.html
+++ b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/security/ChallengeResponseNegotiator.html
@@ -165,6 +165,16 @@ Class ChallengeResponseNegotiator</H2>
</TR>
</TABLE>
&nbsp;
+<A NAME="nested_classes_inherited_from_class_org.eclipse.net4j.util.lifecycle.ILifecycle"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Nested classes/interfaces inherited from interface org.eclipse.net4j.util.lifecycle.<A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.html" title="interface in org.eclipse.net4j.util.lifecycle">ILifecycle</A></B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.DeferrableActivation.html" title="interface in org.eclipse.net4j.util.lifecycle">ILifecycle.DeferrableActivation</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
<!-- =========== FIELD SUMMARY =========== -->
<A NAME="field_summary"><!-- --></A>
diff --git a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/security/FileUserManager.html b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/security/FileUserManager.html
index e3812626d5..8af777e4de 100644
--- a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/security/FileUserManager.html
+++ b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/security/FileUserManager.html
@@ -120,6 +120,25 @@ Class FileUserManager</H2>
<HR>
<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+<A NAME="nested_class_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
+<B>Nested Class Summary</B></FONT></TH>
+</TR>
+</TABLE>
+&nbsp;<A NAME="nested_classes_inherited_from_class_org.eclipse.net4j.util.lifecycle.ILifecycle"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Nested classes/interfaces inherited from interface org.eclipse.net4j.util.lifecycle.<A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.html" title="interface in org.eclipse.net4j.util.lifecycle">ILifecycle</A></B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.DeferrableActivation.html" title="interface in org.eclipse.net4j.util.lifecycle">ILifecycle.DeferrableActivation</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
<!-- =========== FIELD SUMMARY =========== -->
<A NAME="field_summary"><!-- --></A>
diff --git a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/security/Negotiator.html b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/security/Negotiator.html
index be1b53ba2d..6344878bcb 100644
--- a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/security/Negotiator.html
+++ b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/security/Negotiator.html
@@ -146,6 +146,16 @@ Class Negotiator&lt;STATE extends <A HREF="http://download.oracle.com/javase/1.5
</TR>
</TABLE>
&nbsp;
+<A NAME="nested_classes_inherited_from_class_org.eclipse.net4j.util.lifecycle.ILifecycle"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Nested classes/interfaces inherited from interface org.eclipse.net4j.util.lifecycle.<A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.html" title="interface in org.eclipse.net4j.util.lifecycle">ILifecycle</A></B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.DeferrableActivation.html" title="interface in org.eclipse.net4j.util.lifecycle">ILifecycle.DeferrableActivation</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
<!-- =========== FIELD SUMMARY =========== -->
<A NAME="field_summary"><!-- --></A>
diff --git a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/security/Randomizer.html b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/security/Randomizer.html
index 717f7a91cd..38bb2cb673 100644
--- a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/security/Randomizer.html
+++ b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/security/Randomizer.html
@@ -121,6 +121,25 @@ Class Randomizer</H2>
<HR>
<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+<A NAME="nested_class_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
+<B>Nested Class Summary</B></FONT></TH>
+</TR>
+</TABLE>
+&nbsp;<A NAME="nested_classes_inherited_from_class_org.eclipse.net4j.util.lifecycle.ILifecycle"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Nested classes/interfaces inherited from interface org.eclipse.net4j.util.lifecycle.<A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.html" title="interface in org.eclipse.net4j.util.lifecycle">ILifecycle</A></B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.DeferrableActivation.html" title="interface in org.eclipse.net4j.util.lifecycle">ILifecycle.DeferrableActivation</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
<!-- =========== FIELD SUMMARY =========== -->
<A NAME="field_summary"><!-- --></A>
diff --git a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/security/ResponseNegotiator.html b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/security/ResponseNegotiator.html
index 5c98d11330..281142ce18 100644
--- a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/security/ResponseNegotiator.html
+++ b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/security/ResponseNegotiator.html
@@ -161,6 +161,16 @@ Class ResponseNegotiator</H2>
</TR>
</TABLE>
&nbsp;
+<A NAME="nested_classes_inherited_from_class_org.eclipse.net4j.util.lifecycle.ILifecycle"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Nested classes/interfaces inherited from interface org.eclipse.net4j.util.lifecycle.<A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.html" title="interface in org.eclipse.net4j.util.lifecycle">ILifecycle</A></B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.DeferrableActivation.html" title="interface in org.eclipse.net4j.util.lifecycle">ILifecycle.DeferrableActivation</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
<!-- =========== FIELD SUMMARY =========== -->
<A NAME="field_summary"><!-- --></A>
diff --git a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/security/UserManager.html b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/security/UserManager.html
index 6e95179cfa..303c2647d1 100644
--- a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/security/UserManager.html
+++ b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/security/UserManager.html
@@ -125,6 +125,25 @@ Class UserManager</H2>
<HR>
<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+<A NAME="nested_class_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
+<B>Nested Class Summary</B></FONT></TH>
+</TR>
+</TABLE>
+&nbsp;<A NAME="nested_classes_inherited_from_class_org.eclipse.net4j.util.lifecycle.ILifecycle"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Nested classes/interfaces inherited from interface org.eclipse.net4j.util.lifecycle.<A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.html" title="interface in org.eclipse.net4j.util.lifecycle">ILifecycle</A></B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.DeferrableActivation.html" title="interface in org.eclipse.net4j.util.lifecycle">ILifecycle.DeferrableActivation</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
<!-- =========== FIELD SUMMARY =========== -->
<A NAME="field_summary"><!-- --></A>
diff --git a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/DelegatingContentProvider.html b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/DelegatingContentProvider.html
index c8ac14abca..27495125e7 100644
--- a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/DelegatingContentProvider.html
+++ b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/DelegatingContentProvider.html
@@ -56,7 +56,7 @@ function windowTitle()
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../../../../org/eclipse/net4j/util/ui/DefaultPropertySource.DelegatingPropertyDescriptor.html" title="class in org.eclipse.net4j.util.ui"><B>PREV CLASS</B></A>&nbsp;
-&nbsp;<A HREF="../../../../../org/eclipse/net4j/util/ui/StaticContentProvider.html" title="class in org.eclipse.net4j.util.ui"><B>NEXT CLASS</B></A></FONT></TD>
+&nbsp;<A HREF="../../../../../org/eclipse/net4j/util/ui/FactoryTypeContentProvider.html" title="class in org.eclipse.net4j.util.ui"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../../../../index.html?org/eclipse/net4j/util/ui/DelegatingContentProvider.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="DelegatingContentProvider.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
@@ -378,7 +378,7 @@ public void <B>inputChanged</B>(org.eclipse.jface.viewers.Viewer&nbsp;viewer,
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../../../../org/eclipse/net4j/util/ui/DefaultPropertySource.DelegatingPropertyDescriptor.html" title="class in org.eclipse.net4j.util.ui"><B>PREV CLASS</B></A>&nbsp;
-&nbsp;<A HREF="../../../../../org/eclipse/net4j/util/ui/StaticContentProvider.html" title="class in org.eclipse.net4j.util.ui"><B>NEXT CLASS</B></A></FONT></TD>
+&nbsp;<A HREF="../../../../../org/eclipse/net4j/util/ui/FactoryTypeContentProvider.html" title="class in org.eclipse.net4j.util.ui"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../../../../index.html?org/eclipse/net4j/util/ui/DelegatingContentProvider.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="DelegatingContentProvider.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
diff --git a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/FactoryTypeContentProvider.html b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/FactoryTypeContentProvider.html
new file mode 100644
index 0000000000..506b8b6d5a
--- /dev/null
+++ b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/FactoryTypeContentProvider.html
@@ -0,0 +1,346 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+
+<TITLE>
+FactoryTypeContentProvider (Net4j Utilities Documentation)
+</TITLE>
+
+<META NAME="date" CONTENT="">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../../html/book.css" TITLE="Style">
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+ if (location.href.indexOf('is-external=true') == -1) {
+ parent.document.title="FactoryTypeContentProvider (Net4j Utilities Documentation)";
+ }
+}
+</SCRIPT>
+<NOSCRIPT>
+</NOSCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+<HR>
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+ <TR ALIGN="center" VALIGN="top">
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/FactoryTypeContentProvider.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+ </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../org/eclipse/net4j/util/ui/DelegatingContentProvider.html" title="class in org.eclipse.net4j.util.ui"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../org/eclipse/net4j/util/ui/StaticContentProvider.html" title="class in org.eclipse.net4j.util.ui"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ <A HREF="../../../../../index.html?org/eclipse/net4j/util/ui/FactoryTypeContentProvider.html" target="_top"><B>FRAMES</B></A> &nbsp;
+&nbsp;<A HREF="FactoryTypeContentProvider.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+ <!--
+ if(window==top) {
+ document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+ }
+ //-->
+</SCRIPT>
+<NOSCRIPT>
+ <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+ SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+org.eclipse.net4j.util.ui</FONT>
+<BR>
+Class FactoryTypeContentProvider</H2>
+<PRE>
+<A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</A>
+ <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../../../org/eclipse/net4j/util/ui/StructuredContentProvider.html" title="class in org.eclipse.net4j.util.ui">org.eclipse.net4j.util.ui.StructuredContentProvider</A>&lt;<A HREF="../../../../../org/eclipse/net4j/util/container/IManagedContainer.html" title="interface in org.eclipse.net4j.util.container">IManagedContainer</A>&gt;
+ <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by "><B>org.eclipse.net4j.util.ui.FactoryTypeContentProvider</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/util/EventListener.html?is-external=true" title="class or interface in java.util">EventListener</A>, org.eclipse.jface.viewers.IContentProvider, org.eclipse.jface.viewers.IStructuredContentProvider, <A HREF="../../../../../org/eclipse/net4j/util/event/IListener.html" title="interface in org.eclipse.net4j.util.event">IListener</A></DD>
+</DL>
+<HR>
+<DL>
+ <DT>public class <B>FactoryTypeContentProvider</B>
+ <DD>extends <A HREF="../../../../../org/eclipse/net4j/util/ui/StructuredContentProvider.html" title="class in org.eclipse.net4j.util.ui">StructuredContentProvider</A>&lt;<A HREF="../../../../../org/eclipse/net4j/util/container/IManagedContainer.html" title="interface in org.eclipse.net4j.util.container">IManagedContainer</A>&gt;
+</DL>
+
+<map id="APIVIZ" name="APIVIZ">
+<area shape="rect" id="node1" href="StructuredContentProvider.html" title="StructuredContentProvider" alt="" coords="10,6,184,31"/>
+<area shape="rect" id="node2" href="FactoryTypeContentProvider.html" title="FactoryTypeContentProvider" alt="" coords="5,71,189,97"/>
+</map>
+
+<CENTER><IMG SRC="FactoryTypeContentProvider.png" USEMAP="#APIVIZ" BORDER="0"></CENTER>
+
+
+
+<P>
+A <A HREF="../../../../../org/eclipse/net4j/util/ui/StructuredContentProvider.html" title="class in org.eclipse.net4j.util.ui"><CODE>structured content provider</CODE></A> that shows the <A HREF="../../../../../org/eclipse/net4j/util/factory/IFactoryKey.html#getType()"><CODE>factory
+ types</CODE></A> of the <A HREF="../../../../../org/eclipse/net4j/util/ui/StructuredContentProvider.html#getInput()"><CODE>input</CODE></A>.
+<P>
+
+<P>
+<DL>
+<DT><B>Since:</B></DT>
+ <DD>3.2</DD>
+</DL>
+<HR>
+
+<P>
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../org/eclipse/net4j/util/ui/FactoryTypeContentProvider.html#FactoryTypeContentProvider(java.lang.String)">FactoryTypeContentProvider</A></B>(<A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>&nbsp;productGroup)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../org/eclipse/net4j/util/ui/FactoryTypeContentProvider.html#connectInput(org.eclipse.net4j.util.container.IManagedContainer)">connectInput</A></B>(<A HREF="../../../../../org/eclipse/net4j/util/container/IManagedContainer.html" title="interface in org.eclipse.net4j.util.container">IManagedContainer</A>&nbsp;input)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../org/eclipse/net4j/util/ui/FactoryTypeContentProvider.html#disconnectInput(org.eclipse.net4j.util.container.IManagedContainer)">disconnectInput</A></B>(<A HREF="../../../../../org/eclipse/net4j/util/container/IManagedContainer.html" title="interface in org.eclipse.net4j.util.container">IManagedContainer</A>&nbsp;input)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A>[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../org/eclipse/net4j/util/ui/FactoryTypeContentProvider.html#getElements(java.lang.Object)">getElements</A></B>(<A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A>&nbsp;inputElement)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../org/eclipse/net4j/util/ui/FactoryTypeContentProvider.html#getProductGroup()">getProductGroup</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_org.eclipse.net4j.util.ui.StructuredContentProvider"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Methods inherited from class org.eclipse.net4j.util.ui.<A HREF="../../../../../org/eclipse/net4j/util/ui/StructuredContentProvider.html" title="class in org.eclipse.net4j.util.ui">StructuredContentProvider</A></B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../org/eclipse/net4j/util/ui/StructuredContentProvider.html#dispose()">dispose</A>, <A HREF="../../../../../org/eclipse/net4j/util/ui/StructuredContentProvider.html#getDisplay()">getDisplay</A>, <A HREF="../../../../../org/eclipse/net4j/util/ui/StructuredContentProvider.html#getInput()">getInput</A>, <A HREF="../../../../../org/eclipse/net4j/util/ui/StructuredContentProvider.html#getItalicFont()">getItalicFont</A>, <A HREF="../../../../../org/eclipse/net4j/util/ui/StructuredContentProvider.html#getViewer()">getViewer</A>, <A HREF="../../../../../org/eclipse/net4j/util/ui/StructuredContentProvider.html#inputChanged(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)">inputChanged</A>, <A HREF="../../../../../org/eclipse/net4j/util/ui/StructuredContentProvider.html#notifyEvent(org.eclipse.net4j.util.event.IEvent)">notifyEvent</A>, <A HREF="../../../../../org/eclipse/net4j/util/ui/StructuredContentProvider.html#refreshElement(java.lang.Object, boolean)">refreshElement</A>, <A HREF="../../../../../org/eclipse/net4j/util/ui/StructuredContentProvider.html#refreshSynced(java.lang.Object, boolean)">refreshSynced</A>, <A HREF="../../../../../org/eclipse/net4j/util/ui/StructuredContentProvider.html#refreshViewer(boolean)">refreshViewer</A>, <A HREF="../../../../../org/eclipse/net4j/util/ui/StructuredContentProvider.html#revealElement(java.lang.Object)">revealElement</A>, <A HREF="../../../../../org/eclipse/net4j/util/ui/StructuredContentProvider.html#selectElement(java.lang.Object, boolean)">selectElement</A>, <A HREF="../../../../../org/eclipse/net4j/util/ui/StructuredContentProvider.html#updateLabels(java.lang.Object)">updateLabels</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A></B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TH>
+</TR>
+</TABLE>
+
+<A NAME="FactoryTypeContentProvider(java.lang.String)"><!-- --></A><H3>
+FactoryTypeContentProvider</H3>
+<PRE>
+public <B>FactoryTypeContentProvider</B>(<A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>&nbsp;productGroup)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TH>
+</TR>
+</TABLE>
+
+<A NAME="getProductGroup()"><!-- --></A><H3>
+getProductGroup</H3>
+<PRE>
+public <A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A> <B>getProductGroup</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getElements(java.lang.Object)"><!-- --></A><H3>
+getElements</H3>
+<PRE>
+public <A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A>[] <B>getElements</B>(<A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A>&nbsp;inputElement)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="connectInput(org.eclipse.net4j.util.container.IManagedContainer)"><!-- --></A><H3>
+connectInput</H3>
+<PRE>
+protected void <B>connectInput</B>(<A HREF="../../../../../org/eclipse/net4j/util/container/IManagedContainer.html" title="interface in org.eclipse.net4j.util.container">IManagedContainer</A>&nbsp;input)</PRE>
+<DL>
+<DD><DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../../org/eclipse/net4j/util/ui/StructuredContentProvider.html#connectInput(INPUT)">connectInput</A></CODE> in class <CODE><A HREF="../../../../../org/eclipse/net4j/util/ui/StructuredContentProvider.html" title="class in org.eclipse.net4j.util.ui">StructuredContentProvider</A>&lt;<A HREF="../../../../../org/eclipse/net4j/util/container/IManagedContainer.html" title="interface in org.eclipse.net4j.util.container">IManagedContainer</A>&gt;</CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="disconnectInput(org.eclipse.net4j.util.container.IManagedContainer)"><!-- --></A><H3>
+disconnectInput</H3>
+<PRE>
+protected void <B>disconnectInput</B>(<A HREF="../../../../../org/eclipse/net4j/util/container/IManagedContainer.html" title="interface in org.eclipse.net4j.util.container">IManagedContainer</A>&nbsp;input)</PRE>
+<DL>
+<DD><DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../../org/eclipse/net4j/util/ui/StructuredContentProvider.html#disconnectInput(INPUT)">disconnectInput</A></CODE> in class <CODE><A HREF="../../../../../org/eclipse/net4j/util/ui/StructuredContentProvider.html" title="class in org.eclipse.net4j.util.ui">StructuredContentProvider</A>&lt;<A HREF="../../../../../org/eclipse/net4j/util/container/IManagedContainer.html" title="interface in org.eclipse.net4j.util.container">IManagedContainer</A>&gt;</CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+ <TR ALIGN="center" VALIGN="top">
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/FactoryTypeContentProvider.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+ </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../org/eclipse/net4j/util/ui/DelegatingContentProvider.html" title="class in org.eclipse.net4j.util.ui"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../org/eclipse/net4j/util/ui/StaticContentProvider.html" title="class in org.eclipse.net4j.util.ui"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ <A HREF="../../../../../index.html?org/eclipse/net4j/util/ui/FactoryTypeContentProvider.html" target="_top"><B>FRAMES</B></A> &nbsp;
+&nbsp;<A HREF="FactoryTypeContentProvider.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+ <!--
+ if(window==top) {
+ document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+ }
+ //-->
+</SCRIPT>
+<NOSCRIPT>
+ <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+ SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+<i>Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.</i>
+</BODY>
+</HTML>
diff --git a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/FactoryTypeContentProvider.png b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/FactoryTypeContentProvider.png
new file mode 100644
index 0000000000..389f656e9c
--- /dev/null
+++ b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/FactoryTypeContentProvider.png
Binary files differ
diff --git a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/StaticContentProvider.html b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/StaticContentProvider.html
index 8cdce5657d..a09d778a75 100644
--- a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/StaticContentProvider.html
+++ b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/StaticContentProvider.html
@@ -55,7 +55,7 @@ function windowTitle()
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
-&nbsp;<A HREF="../../../../../org/eclipse/net4j/util/ui/DelegatingContentProvider.html" title="class in org.eclipse.net4j.util.ui"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../org/eclipse/net4j/util/ui/FactoryTypeContentProvider.html" title="class in org.eclipse.net4j.util.ui"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../../../org/eclipse/net4j/util/ui/StructuredContentProvider.html" title="class in org.eclipse.net4j.util.ui"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../../../../index.html?org/eclipse/net4j/util/ui/StaticContentProvider.html" target="_top"><B>FRAMES</B></A> &nbsp;
@@ -267,7 +267,7 @@ public <A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Objec
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
-&nbsp;<A HREF="../../../../../org/eclipse/net4j/util/ui/DelegatingContentProvider.html" title="class in org.eclipse.net4j.util.ui"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../org/eclipse/net4j/util/ui/FactoryTypeContentProvider.html" title="class in org.eclipse.net4j.util.ui"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../../../org/eclipse/net4j/util/ui/StructuredContentProvider.html" title="class in org.eclipse.net4j.util.ui"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../../../../index.html?org/eclipse/net4j/util/ui/StaticContentProvider.html" target="_top"><B>FRAMES</B></A> &nbsp;
diff --git a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/StructuredContentProvider.html b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/StructuredContentProvider.html
index a6d7413f80..961848385e 100644
--- a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/StructuredContentProvider.html
+++ b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/StructuredContentProvider.html
@@ -99,7 +99,7 @@ Class StructuredContentProvider&lt;INPUT&gt;</H2>
<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://download.oracle.com/javase/1.5.0/docs/api/java/util/EventListener.html?is-external=true" title="class or interface in java.util">EventListener</A>, org.eclipse.jface.viewers.IContentProvider, org.eclipse.jface.viewers.IStructuredContentProvider, <A HREF="../../../../../org/eclipse/net4j/util/event/IListener.html" title="interface in org.eclipse.net4j.util.event">IListener</A></DD>
</DL>
<DL>
-<DT><B>Direct Known Subclasses:</B> <DD><A HREF="../../../../../org/eclipse/net4j/util/ui/views/ItemProvider.html" title="class in org.eclipse.net4j.util.ui.views">ItemProvider</A>, <A HREF="../../../../../org/eclipse/net4j/util/ui/StaticContentProvider.html" title="class in org.eclipse.net4j.util.ui">StaticContentProvider</A></DD>
+<DT><B>Direct Known Subclasses:</B> <DD><A HREF="../../../../../org/eclipse/net4j/util/ui/FactoryTypeContentProvider.html" title="class in org.eclipse.net4j.util.ui">FactoryTypeContentProvider</A>, <A HREF="../../../../../org/eclipse/net4j/util/ui/views/ItemProvider.html" title="class in org.eclipse.net4j.util.ui.views">ItemProvider</A>, <A HREF="../../../../../org/eclipse/net4j/util/ui/StaticContentProvider.html" title="class in org.eclipse.net4j.util.ui">StaticContentProvider</A></DD>
</DL>
<HR>
<DL>
@@ -109,11 +109,12 @@ Class StructuredContentProvider&lt;INPUT&gt;</H2>
</DL>
<map id="APIVIZ" name="APIVIZ">
-<area shape="rect" id="node1" title="&#171;interface&#187; IStructuredContentProvider (org.eclipse.jface.viewers)" alt="" coords="11,6,187,61"/>
-<area shape="rect" id="node2" href="../event/IListener.html" title="&#171;interface&#187; IListener (org.eclipse.net4j.util.event)" alt="" coords="217,6,396,61"/>
-<area shape="rect" id="node3" href="StructuredContentProvider.html" title="StructuredContentProvider" alt="" coords="115,101,289,126"/>
+<area shape="rect" id="node1" title="&#171;interface&#187; IStructuredContentProvider (org.eclipse.jface.viewers)" alt="" coords="111,6,287,61"/>
+<area shape="rect" id="node2" href="../event/IListener.html" title="&#171;interface&#187; IListener (org.eclipse.net4j.util.event)" alt="" coords="317,6,496,61"/>
+<area shape="rect" id="node3" href="StructuredContentProvider.html" title="StructuredContentProvider" alt="" coords="215,101,389,126"/>
<area shape="rect" id="node4" href="views/ItemProvider.html" title="ItemProvider (org.eclipse.net4j.util.ui.views)" alt="" coords="5,165,200,205"/>
<area shape="rect" id="node5" href="StaticContentProvider.html" title="StaticContentProvider" alt="" coords="229,173,376,198"/>
+<area shape="rect" id="node6" href="FactoryTypeContentProvider.html" title="FactoryTypeContentProvider" alt="" coords="406,173,591,198"/>
</map>
<CENTER><IMG SRC="StructuredContentProvider.png" USEMAP="#APIVIZ" BORDER="0"></CENTER>
diff --git a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/StructuredContentProvider.png b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/StructuredContentProvider.png
index 37e21e8774..9c8ee0c784 100644
--- a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/StructuredContentProvider.png
+++ b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/StructuredContentProvider.png
Binary files differ
diff --git a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/UIQueueRunner.html b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/UIQueueRunner.html
index d19f6edb48..8a8a606503 100644
--- a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/UIQueueRunner.html
+++ b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/UIQueueRunner.html
@@ -145,6 +145,16 @@ Class UIQueueRunner</H2>
</TR>
</TABLE>
&nbsp;
+<A NAME="nested_classes_inherited_from_class_org.eclipse.net4j.util.lifecycle.ILifecycle"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Nested classes/interfaces inherited from interface org.eclipse.net4j.util.lifecycle.<A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.html" title="interface in org.eclipse.net4j.util.lifecycle">ILifecycle</A></B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../org/eclipse/net4j/util/lifecycle/ILifecycle.DeferrableActivation.html" title="interface in org.eclipse.net4j.util.lifecycle">ILifecycle.DeferrableActivation</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
<!-- =========== FIELD SUMMARY =========== -->
<A NAME="field_summary"><!-- --></A>
diff --git a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/class-use/FactoryTypeContentProvider.html b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/class-use/FactoryTypeContentProvider.html
new file mode 100644
index 0000000000..71d4e440e7
--- /dev/null
+++ b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/class-use/FactoryTypeContentProvider.html
@@ -0,0 +1,143 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+
+<TITLE>
+Uses of Class org.eclipse.net4j.util.ui.FactoryTypeContentProvider (Net4j Utilities Documentation)
+</TITLE>
+
+<META NAME="date" CONTENT="">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../../../html/book.css" TITLE="Style">
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+ if (location.href.indexOf('is-external=true') == -1) {
+ parent.document.title="Uses of Class org.eclipse.net4j.util.ui.FactoryTypeContentProvider (Net4j Utilities Documentation)";
+ }
+}
+</SCRIPT>
+<NOSCRIPT>
+</NOSCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+<HR>
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+ <TR ALIGN="center" VALIGN="top">
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../../org/eclipse/net4j/util/ui/FactoryTypeContentProvider.html" title="class in org.eclipse.net4j.util.ui"><FONT CLASS="NavBarFont1"><B>Class</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Use</B></FONT>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+ </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ <A HREF="../../../../../../index.html?org/eclipse/net4j/util/ui/\class-useFactoryTypeContentProvider.html" target="_top"><B>FRAMES</B></A> &nbsp;
+&nbsp;<A HREF="FactoryTypeContentProvider.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+ <!--
+ if(window==top) {
+ document.writeln('<A HREF="../../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+ }
+ //-->
+</SCRIPT>
+<NOSCRIPT>
+ <A HREF="../../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H2>
+<B>Uses of Class<br>org.eclipse.net4j.util.ui.FactoryTypeContentProvider</B></H2>
+</CENTER>
+No usage of org.eclipse.net4j.util.ui.FactoryTypeContentProvider
+<P>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+ <TR ALIGN="center" VALIGN="top">
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../../org/eclipse/net4j/util/ui/FactoryTypeContentProvider.html" title="class in org.eclipse.net4j.util.ui"><FONT CLASS="NavBarFont1"><B>Class</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Use</B></FONT>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+ </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ <A HREF="../../../../../../index.html?org/eclipse/net4j/util/ui/\class-useFactoryTypeContentProvider.html" target="_top"><B>FRAMES</B></A> &nbsp;
+&nbsp;<A HREF="FactoryTypeContentProvider.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+ <!--
+ if(window==top) {
+ document.writeln('<A HREF="../../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+ }
+ //-->
+</SCRIPT>
+<NOSCRIPT>
+ <A HREF="../../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+<i>Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.</i>
+</BODY>
+</HTML>
diff --git a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/class-use/StructuredContentProvider.html b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/class-use/StructuredContentProvider.html
index 2d75860007..5b3cfcf046 100644
--- a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/class-use/StructuredContentProvider.html
+++ b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/class-use/StructuredContentProvider.html
@@ -117,6 +117,15 @@ Uses of <A HREF="../../../../../../org/eclipse/net4j/util/ui/StructuredContentPr
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;class</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../../org/eclipse/net4j/util/ui/FactoryTypeContentProvider.html" title="class in org.eclipse.net4j.util.ui">FactoryTypeContentProvider</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A <A HREF="../../../../../../org/eclipse/net4j/util/ui/StructuredContentProvider.html" title="class in org.eclipse.net4j.util.ui"><CODE>structured content provider</CODE></A> that shows the <A HREF="../../../../../../org/eclipse/net4j/util/factory/IFactoryKey.html#getType()"><CODE>factory
+ types</CODE></A> of the <A HREF="../../../../../../org/eclipse/net4j/util/ui/StructuredContentProvider.html#getInput()"><CODE>input</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;class</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../../org/eclipse/net4j/util/ui/StaticContentProvider.html" title="class in org.eclipse.net4j.util.ui">StaticContentProvider</A></B></CODE>
<BR>
diff --git a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/package-frame.html b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/package-frame.html
index 6541cf5cf5..ca92a9a765 100644
--- a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/package-frame.html
+++ b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/package-frame.html
@@ -47,6 +47,8 @@ Classes</FONT>&nbsp;
<BR>
<A HREF="DelegatingContentProvider.html" title="class in org.eclipse.net4j.util.ui" target="classFrame">DelegatingContentProvider</A>
<BR>
+<A HREF="FactoryTypeContentProvider.html" title="class in org.eclipse.net4j.util.ui" target="classFrame">FactoryTypeContentProvider</A>
+<BR>
<A HREF="StaticContentProvider.html" title="class in org.eclipse.net4j.util.ui" target="classFrame">StaticContentProvider</A>
<BR>
<A HREF="StructuredContentProvider.html" title="class in org.eclipse.net4j.util.ui" target="classFrame">StructuredContentProvider</A>
diff --git a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/package-summary.html b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/package-summary.html
index e85802990b..1dc20c006f 100644
--- a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/package-summary.html
+++ b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/package-summary.html
@@ -92,24 +92,25 @@ Reusable UI components.
<area shape="rect" id="node2" href="DefaultPropertySource.html" title="DefaultPropertySource" alt="" coords="332,657,484,682"/>
<area shape="rect" id="node3" href="DefaultPropertySource.DelegatingPropertyDescriptor.html" title="DefaultPropertySource.DelegatingPropertyDescriptor" alt="" coords="245,578,571,603"/>
<area shape="rect" id="node4" href="DelegatingContentProvider.html" title="DelegatingContentProvider" alt="" coords="321,421,495,446"/>
-<area shape="rect" id="node5" href="../concurrent/QueueRunner.html" title="QueueRunner (org.eclipse.net4j.util.concurrent)" alt="" coords="5,341,216,381"/>
-<area shape="rect" id="node6" href="StaticContentProvider.html" title="StaticContentProvider" alt="" coords="601,485,748,510"/>
-<area shape="rect" id="node7" href="UIActivator.html" title="UIActivator" alt="" coords="366,285,450,310"/>
-<area shape="rect" id="node8" href="UIQueueRunner.html" title="UIQueueRunner" alt="" coords="351,349,465,374"/>
-<area shape="rect" id="node9" href="ValidationContext.Aggregator.html" title="ValidationContext.Aggregator" alt="" coords="313,221,503,246"/>
-<area shape="rect" id="node10" href="AbstractPropertyAdapterFactory.html" title="AbstractPropertyAdapterFactory" alt="" coords="304,149,512,174"/>
-<area shape="rect" id="node11" title="AbstractUIPlugin (org.eclipse.ui.plugin)" alt="" coords="38,277,183,317"/>
-<area shape="rect" id="node12" href="StructuredContentProvider.html" title="StructuredContentProvider" alt="" coords="321,485,495,510"/>
-<area shape="rect" id="node13" href="UIActivator.WithState.html" title="UIActivator.WithState" alt="" coords="601,285,749,310"/>
-<area shape="rect" id="node14" title="&#171;interface&#187; IAdapterFactory (org.eclipse.core.runtime)" alt="" coords="26,134,195,189"/>
-<area shape="rect" id="node15" href="../event/IListener.html" title="&#171;interface&#187; IListener (org.eclipse.net4j.util.event)" alt="" coords="21,485,201,539"/>
-<area shape="rect" id="node16" title="&#171;interface&#187; IPropertyDescriptor (org.eclipse.ui.views.properties)" alt="" coords="9,563,212,618"/>
-<area shape="rect" id="node17" title="&#171;interface&#187; IPropertySource (org.eclipse.ui.views.properties)" alt="" coords="9,642,212,697"/>
-<area shape="rect" id="node18" title="&#171;interface&#187; IStructuredContentProvider (org.eclipse.jface.viewers)" alt="" coords="23,406,199,461"/>
-<area shape="rect" id="node19" title="&#171;interface&#187; ModifyListener (org.eclipse.swt.events)" alt="" coords="31,721,190,775"/>
-<area shape="rect" id="node20" href="ValidationContext.html" title="&#171;interface&#187; ValidationContext" alt="" coords="49,213,173,253"/>
-<area shape="rect" id="node21" href="ValidationParticipant.html" title="&#171;interface&#187; ValidationParticipant" alt="" coords="40,69,181,109"/>
-<area shape="rect" id="node22" href="UIUtil.html" title="&#171;static&#187; UIUtil" alt="" coords="77,5,145,45"/>
+<area shape="rect" id="node5" href="FactoryTypeContentProvider.html" title="FactoryTypeContentProvider" alt="" coords="601,459,786,485"/>
+<area shape="rect" id="node6" href="../concurrent/QueueRunner.html" title="QueueRunner (org.eclipse.net4j.util.concurrent)" alt="" coords="5,341,216,381"/>
+<area shape="rect" id="node7" href="StaticContentProvider.html" title="StaticContentProvider" alt="" coords="620,509,767,534"/>
+<area shape="rect" id="node8" href="UIActivator.html" title="UIActivator" alt="" coords="366,285,450,310"/>
+<area shape="rect" id="node9" href="UIQueueRunner.html" title="UIQueueRunner" alt="" coords="351,349,465,374"/>
+<area shape="rect" id="node10" href="ValidationContext.Aggregator.html" title="ValidationContext.Aggregator" alt="" coords="313,221,503,246"/>
+<area shape="rect" id="node11" href="AbstractPropertyAdapterFactory.html" title="AbstractPropertyAdapterFactory" alt="" coords="304,149,512,174"/>
+<area shape="rect" id="node12" title="AbstractUIPlugin (org.eclipse.ui.plugin)" alt="" coords="38,277,183,317"/>
+<area shape="rect" id="node13" href="StructuredContentProvider.html" title="StructuredContentProvider" alt="" coords="321,485,495,510"/>
+<area shape="rect" id="node14" href="UIActivator.WithState.html" title="UIActivator.WithState" alt="" coords="619,285,767,310"/>
+<area shape="rect" id="node15" title="&#171;interface&#187; IAdapterFactory (org.eclipse.core.runtime)" alt="" coords="26,134,195,189"/>
+<area shape="rect" id="node16" href="../event/IListener.html" title="&#171;interface&#187; IListener (org.eclipse.net4j.util.event)" alt="" coords="21,485,201,539"/>
+<area shape="rect" id="node17" title="&#171;interface&#187; IPropertyDescriptor (org.eclipse.ui.views.properties)" alt="" coords="9,563,212,618"/>
+<area shape="rect" id="node18" title="&#171;interface&#187; IPropertySource (org.eclipse.ui.views.properties)" alt="" coords="9,642,212,697"/>
+<area shape="rect" id="node19" title="&#171;interface&#187; IStructuredContentProvider (org.eclipse.jface.viewers)" alt="" coords="23,406,199,461"/>
+<area shape="rect" id="node20" title="&#171;interface&#187; ModifyListener (org.eclipse.swt.events)" alt="" coords="31,721,190,775"/>
+<area shape="rect" id="node21" href="ValidationContext.html" title="&#171;interface&#187; ValidationContext" alt="" coords="49,213,173,253"/>
+<area shape="rect" id="node22" href="ValidationParticipant.html" title="&#171;interface&#187; ValidationParticipant" alt="" coords="40,69,181,109"/>
+<area shape="rect" id="node23" href="UIUtil.html" title="&#171;static&#187; UIUtil" alt="" coords="77,5,145,45"/>
</map>
<CENTER><IMG SRC="package-summary.png" USEMAP="#APIVIZ" BORDER="0"></CENTER>
@@ -158,6 +159,11 @@ Reusable UI components.
<TD>&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../org/eclipse/net4j/util/ui/FactoryTypeContentProvider.html" title="class in org.eclipse.net4j.util.ui">FactoryTypeContentProvider</A></B></TD>
+<TD>A <A HREF="../../../../../org/eclipse/net4j/util/ui/StructuredContentProvider.html" title="class in org.eclipse.net4j.util.ui"><CODE>structured content provider</CODE></A> that shows the <A HREF="../../../../../org/eclipse/net4j/util/factory/IFactoryKey.html#getType()"><CODE>factory
+ types</CODE></A> of the <A HREF="../../../../../org/eclipse/net4j/util/ui/StructuredContentProvider.html#getInput()"><CODE>input</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
<TD WIDTH="15%"><B><A HREF="../../../../../org/eclipse/net4j/util/ui/StaticContentProvider.html" title="class in org.eclipse.net4j.util.ui">StaticContentProvider</A></B></TD>
<TD>&nbsp;</TD>
</TR>
diff --git a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/package-summary.png b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/package-summary.png
index c7df353725..e53d96d87f 100644
--- a/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/package-summary.png
+++ b/plugins/org.eclipse.net4j.util.doc/javadoc/org/eclipse/net4j/util/ui/package-summary.png
Binary files differ
diff --git a/plugins/org.eclipse.net4j.util.ui/Snippet1.java b/plugins/org.eclipse.net4j.util.ui/Snippet1.java
deleted file mode 100644
index 954296a05b..0000000000
--- a/plugins/org.eclipse.net4j.util.ui/Snippet1.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Eike Stepper - initial API and implementation
- */
-package org.eclipse.net4j.util.ui.container.examples;
-
-import org.eclipse.net4j.util.container.IPluginContainer;
-import org.eclipse.net4j.util.factory.Factory;
-import org.eclipse.net4j.util.factory.ProductCreationException;
-import org.eclipse.net4j.util.ui.UIUtil;
-import org.eclipse.net4j.util.ui.container.ElementWizard;
-import org.eclipse.net4j.util.ui.container.ElementWizardComposite;
-import org.eclipse.net4j.util.ui.container.ElementWizardFactory;
-import org.eclipse.net4j.util.ui.container.IElementWizard;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Text;
-
-/**
- * @author Eike Stepper
- */
-public class Snippet1
-{
- public static void main(String[] args)
- {
- IPluginContainer container = IPluginContainer.INSTANCE;
- String PG = "test.connectors";
-
- container.registerFactory(new Factory(PG, "tcp")
- {
- public Object create(String description) throws ProductCreationException
- {
- return null;
- }
- });
-
- container.registerFactory(new Factory(PG, "jvm")
- {
- public Object create(String description) throws ProductCreationException
- {
- return null;
- }
- });
-
- container.registerFactory(new Factory(PG, "http")
- {
- public Object create(String description) throws ProductCreationException
- {
- return null;
- }
- });
-
- container.registerFactory(new ElementWizardFactory(PG, "http")
- {
- @Override
- public IElementWizard create(String description) throws ProductCreationException
- {
- return new ElementWizard()
- {
- @Override
- protected void create(Composite parent)
- {
- addText(parent, "Server:");
- addCombo(parent, "Protocol:", "http", "https");
- addText(parent, "Resource:");
- }
- };
- }
- });
-
- container.registerFactory(new ElementWizardFactory(PG, "tcp")
- {
- @Override
- public IElementWizard create(String description) throws ProductCreationException
- {
- return new ElementWizard()
- {
- @Override
- protected void create(Composite parent)
- {
- Label l1 = new Label(parent, SWT.NONE);
- l1.setText("Hostname:");
- l1.setLayoutData(UIUtil.createGridData(false, false));
-
- Text t1 = new Text(parent, SWT.BORDER);
- t1.setLayoutData(UIUtil.createGridData(true, false));
- }
- };
- }
- });
-
- Display display = new Display();
- Shell shell = new Shell(display);
- shell.setLayout(new GridLayout(1, false));
-
- new ElementWizardComposite.WithCombo(shell, SWT.NONE, PG, "Type:");
-
- shell.pack();
- shell.open();
- while (!shell.isDisposed())
- {
- if (!display.readAndDispatch())
- {
- display.sleep();
- }
- }
-
- display.dispose();
- }
-}
diff --git a/plugins/org.eclipse.net4j.util.ui/src/org/eclipse/net4j/util/internal/ui/messages/messages.properties b/plugins/org.eclipse.net4j.util.ui/src/org/eclipse/net4j/util/internal/ui/messages/messages.properties
index fed153b915..0ceee5398c 100644
--- a/plugins/org.eclipse.net4j.util.ui/src/org/eclipse/net4j/util/internal/ui/messages/messages.properties
+++ b/plugins/org.eclipse.net4j.util.ui/src/org/eclipse/net4j/util/internal/ui/messages/messages.properties
@@ -1,58 +1,59 @@
-# ==============================================================================
-# Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-# Victor Roldan Betancort - initial API and implementation
-# Eike Stepper - maintenance
-# ==============================================================================
-
-# ==============================================================================
-# This properties file contains all strings subject to be shown in the UI.
-# ==============================================================================
-
-ContainerView_1=Refresh
-ContainerView_2=Refresh view
-CredentialsDialog_1=Enter your user ID and password.
-CredentialsDialog_2=User ID:
-CredentialsDialog_3=Password:
-CredentialsDialog_0=Login
-IntrospectAction_0=Introspect
-MasterDetailsView_2=Refresh
-MasterDetailsView_3=Refresh
-Net4jContainerItemProvider_0=Remove
-Net4jContainerItemProvider.1=Remove
-Net4jIntrospectorView_1=
-Net4jIntrospectorView_10=Type
-Net4jIntrospectorView_11=Element
-Net4jIntrospectorView_12=Type
-Net4jIntrospectorView_13=Index
-Net4jIntrospectorView_14=Element
-Net4jIntrospectorView_15=Type
-Net4jIntrospectorView_16=Back
-Net4jIntrospectorView_17=Container
-Net4jIntrospectorView_18=null
-Net4jIntrospectorView_21=null
-Net4jIntrospectorView_22=
-Net4jIntrospectorView_24=null
-Net4jIntrospectorView_25=
-Net4jIntrospectorView_27=null
-Net4jIntrospectorView_28=null
-Net4jIntrospectorView_29=
-Net4jIntrospectorView_4=Field
-Net4jIntrospectorView_5=Value
-Net4jIntrospectorView_6=Declared Type
-Net4jIntrospectorView_7=Concrete Type
-Net4jIntrospectorView_8=Key
-Net4jIntrospectorView_9=Value
-SafeAction_0=...
-SafeAction_1=See the Error log for details.
-SafeActionDelegate_0=See the Error log for details.
-SafeActionDelegate_1=Error
-SashLayoutAction_0=Vertical
-SashLayoutAction_1=Horizontal
-SashLayoutAction_2=Layout
-TextAndDisable.0=Disabled
+# ==============================================================================
+# Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+# Victor Roldan Betancort - initial API and implementation
+# Eike Stepper - maintenance
+# ==============================================================================
+
+# ==============================================================================
+# This properties file contains all strings subject to be shown in the UI.
+# ==============================================================================
+
+ContainerView_1=Refresh
+ContainerView_2=Refresh view
+CredentialsDialog_1=Enter your user ID and password.
+CredentialsDialog_2=User ID:
+CredentialsDialog_3=Password:
+CredentialsDialog_0=Login
+IntrospectAction_0=Introspect
+MasterDetailsView_2=Refresh
+MasterDetailsView_3=Refresh
+Net4jContainerItemProvider_0=Remove
+Net4jContainerItemProvider.1=Remove
+Net4jIntrospectorView_1=
+Net4jIntrospectorView_10=Type
+Net4jIntrospectorView_11=Element
+Net4jIntrospectorView_12=Type
+Net4jIntrospectorView_13=Index
+Net4jIntrospectorView_14=Element
+Net4jIntrospectorView_15=Type
+Net4jIntrospectorView_16=Back
+Net4jIntrospectorView_17=Container
+Net4jIntrospectorView_17b=Workbench Part
+Net4jIntrospectorView_18=null
+Net4jIntrospectorView_21=null
+Net4jIntrospectorView_22=
+Net4jIntrospectorView_24=null
+Net4jIntrospectorView_25=
+Net4jIntrospectorView_27=null
+Net4jIntrospectorView_28=null
+Net4jIntrospectorView_29=
+Net4jIntrospectorView_4=Field
+Net4jIntrospectorView_5=Value
+Net4jIntrospectorView_6=Declared Type
+Net4jIntrospectorView_7=Concrete Type
+Net4jIntrospectorView_8=Key
+Net4jIntrospectorView_9=Value
+SafeAction_0=...
+SafeAction_1=See the Error log for details.
+SafeActionDelegate_0=See the Error log for details.
+SafeActionDelegate_1=Error
+SashLayoutAction_0=Vertical
+SashLayoutAction_1=Horizontal
+SashLayoutAction_2=Layout
+TextAndDisable.0=Disabled
diff --git a/plugins/org.eclipse.net4j.util.ui/src/org/eclipse/net4j/util/internal/ui/views/Net4jIntrospectorView.java b/plugins/org.eclipse.net4j.util.ui/src/org/eclipse/net4j/util/internal/ui/views/Net4jIntrospectorView.java
index c668363df1..38ad6e9c18 100644
--- a/plugins/org.eclipse.net4j.util.ui/src/org/eclipse/net4j/util/internal/ui/views/Net4jIntrospectorView.java
+++ b/plugins/org.eclipse.net4j.util.ui/src/org/eclipse/net4j/util/internal/ui/views/Net4jIntrospectorView.java
@@ -1,743 +1,829 @@
-/*
- * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Eike Stepper - initial API and implementation
- */
-package org.eclipse.net4j.util.internal.ui.views;
-
-import org.eclipse.net4j.ui.shared.SharedIcons;
-import org.eclipse.net4j.util.ReflectUtil;
-import org.eclipse.net4j.util.WrappedException;
-import org.eclipse.net4j.util.collection.Pair;
-import org.eclipse.net4j.util.container.IPluginContainer;
-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.internal.ui.bundle.OM;
-import org.eclipse.net4j.util.internal.ui.messages.Messages;
-import org.eclipse.net4j.util.ui.UIUtil;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.IToolBarManager;
-import org.eclipse.jface.viewers.DoubleClickEvent;
-import org.eclipse.jface.viewers.IDoubleClickListener;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredContentProvider;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.ITableLabelProvider;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.jface.viewers.TableViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerSorter;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.StackLayout;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableColumn;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.IActionBars;
-import org.eclipse.ui.ISelectionListener;
-import org.eclipse.ui.ISharedImages;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.part.ViewPart;
-
-import java.lang.reflect.Field;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Stack;
-
-/**
- * @author Eike Stepper
- */
-public class Net4jIntrospectorView extends ViewPart implements ISelectionListener, IDoubleClickListener, IListener
-{
- public static final String VIEW_ID = "org.eclipse.net4j.util.Net4jIntrospectorView"; //$NON-NLS-1$
-
- private static final Object[] NO_ELEMENTS = {};
-
- private static Net4jIntrospectorView instance;
-
- private TableViewer currentViewer;
-
- private TableViewer objectViewer;
-
- private TableViewer iterableViewer;
-
- private TableViewer arrayViewer;
-
- private TableViewer mapViewer;
-
- private Stack<Object> elements = new Stack<Object>();
-
- private Text classLabel;
-
- private Text objectLabel;
-
- private IAction backAction = new BackAction();
-
- private IAction containerAction = new ContainerAction();
-
- private IAction refreshAction = new RefreshAction();
-
- private StackLayout stackLayout;
-
- private Composite stacked;
-
- public Net4jIntrospectorView()
- {
- }
-
- @Override
- public void dispose()
- {
- getSite().getPage().removeSelectionListener(this);
- super.dispose();
- }
-
- public static Net4jIntrospectorView getInstance()
- {
- return instance;
- }
-
- public static synchronized Net4jIntrospectorView getInstance(boolean show)
- {
- if (instance == null)
- {
- try
- {
- IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
- page.showView(VIEW_ID);
- }
- catch (Exception ex)
- {
- throw WrappedException.wrap(ex);
- }
- }
-
- return instance;
- }
-
- @Override
- public void createPartControl(Composite parent)
- {
- Color bg = parent.getDisplay().getSystemColor(SWT.COLOR_LIST_BACKGROUND);
- Color gray = parent.getDisplay().getSystemColor(SWT.COLOR_DARK_BLUE);
-
- Composite composite = new Composite(parent, SWT.NONE);
- composite.setLayout(UIUtil.createGridLayout(1));
-
- Composite c = new Composite(composite, SWT.BORDER);
- c.setLayout(UIUtil.createGridLayout(2));
- c.setLayoutData(UIUtil.createGridData(true, false));
-
- classLabel = new Text(c, SWT.READ_ONLY);
- classLabel.setLayoutData(UIUtil.createGridData(false, false));
- classLabel.setBackground(bg);
- classLabel.setForeground(gray);
-
- objectLabel = new Text(c, SWT.READ_ONLY);
- objectLabel.setLayoutData(UIUtil.createGridData(true, false));
- objectLabel.setBackground(bg);
-
- stackLayout = new StackLayout();
- stacked = new Composite(composite, SWT.NONE);
- stacked.setLayoutData(UIUtil.createGridData());
- stacked.setLayout(stackLayout);
-
- objectViewer = createViewer(stacked);
- createObjectColmuns();
- objectViewer.addDoubleClickListener(this);
- objectViewer.setContentProvider(new ObjectContentProvider());
- objectViewer.setLabelProvider(new ObjectLabelProvider());
- objectViewer.setSorter(new NameSorter());
- objectViewer.setInput(getViewSite());
-
- iterableViewer = createViewer(stacked);
- createIterableColmuns();
- iterableViewer.addDoubleClickListener(this);
- iterableViewer.setContentProvider(new IterableContentProvider());
- iterableViewer.setLabelProvider(new IterableLabelProvider());
- iterableViewer.setInput(getViewSite());
-
- arrayViewer = createViewer(stacked);
- createArrayColmuns();
- arrayViewer.addDoubleClickListener(this);
- arrayViewer.setContentProvider(new ArrayContentProvider());
- arrayViewer.setLabelProvider(new ArrayLabelProvider());
- arrayViewer.setInput(getViewSite());
-
- mapViewer = createViewer(stacked);
- createMapColmuns();
- mapViewer.addDoubleClickListener(this);
- mapViewer.setContentProvider(new MapContentProvider());
- mapViewer.setLabelProvider(new MapLabelProvider());
- mapViewer.setSorter(new NameSorter());
- mapViewer.setInput(getViewSite());
-
- IActionBars bars = getViewSite().getActionBars();
- fillLocalPullDown(bars.getMenuManager());
- fillLocalToolBar(bars.getToolBarManager());
- getSite().getPage().addSelectionListener(this);
- setCurrentViewer(objectViewer);
- instance = this;
- }
-
- private void setCurrentViewer(TableViewer viewer)
- {
- currentViewer = viewer;
- stackLayout.topControl = currentViewer.getControl();
- stacked.layout();
- }
-
- private TableViewer createViewer(Composite parent)
- {
- TableViewer viewer = new TableViewer(parent, SWT.FULL_SELECTION | SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
- viewer.getTable().setLayoutData(UIUtil.createGridData());
- viewer.getTable().setHeaderVisible(true);
- viewer.getTable().setLinesVisible(true);
- return viewer;
- }
-
- public void refreshViewer()
- {
- UIUtil.refreshViewer(currentViewer);
- }
-
- public void selectionChanged(IWorkbenchPart part, ISelection sel)
- {
- if (part == this)
- {
- return;
- }
-
- if (sel instanceof IStructuredSelection)
- {
- IStructuredSelection ssel = (IStructuredSelection)sel;
- elements.clear();
- setObject(ssel.getFirstElement());
- }
- else
- {
- setObject(null);
- }
- }
-
- public void doubleClick(DoubleClickEvent event)
- {
- ISelection sel = event.getSelection();
- if (sel instanceof IStructuredSelection)
- {
- IStructuredSelection ssel = (IStructuredSelection)sel;
- Object element = ssel.getFirstElement();
- if (currentViewer == objectViewer && element instanceof Pair<?, ?>)
- {
- @SuppressWarnings("unchecked")
- Pair<Field, Object> pair = (Pair<Field, Object>)element;
-
- Field field = pair.getElement1();
- if (!field.getType().isPrimitive())
- {
- setObject(pair.getElement2());
- }
- }
- else if (currentViewer == mapViewer && element instanceof Map.Entry<?, ?>)
- {
- Map.Entry<?, ?> entry = (Map.Entry<?, ?>)element;
- setObject(entry.getValue());
- }
- else if (currentViewer == iterableViewer)
- {
- setObject(element);
- }
- else if (currentViewer == arrayViewer && element instanceof Pair<?, ?>)
- {
- @SuppressWarnings("unchecked")
- Pair<Integer, Object> pair = (Pair<Integer, Object>)element;
- setObject(pair.getElement2());
- }
- }
- }
-
- /**
- * Passing the focus request to the viewer's control.
- */
- @Override
- public void setFocus()
- {
- try
- {
- currentViewer.getControl().setFocus();
- }
- catch (RuntimeException ignore)
- {
- }
- }
-
- public void notifyEvent(IEvent event)
- {
- refreshViewer();
- }
-
- public void setObject(Object object)
- {
- EventUtil.removeListener(object, this);
- if (object != null)
- {
- if (!elements.isEmpty())
- {
- Object element = elements.peek();
- if (element != object)
- {
- EventUtil.removeListener(element, this);
- elements.push(object);
- }
- }
- else
- {
- elements.push(object);
- }
- }
-
- if (object == null)
- {
- classLabel.setText(""); //$NON-NLS-1$
- objectLabel.setText(""); //$NON-NLS-1$
- currentViewer = objectViewer;
- }
- else
- {
- EventUtil.addListener(object, this);
- String className = object.getClass().getName();
- classLabel.setText(className);
-
- String value = object.toString();
- if (value.startsWith(className + "@")) //$NON-NLS-1$
- {
- objectLabel.setText(value.substring(className.length()));
- }
- else
- {
- objectLabel.setText(value);
- }
- }
-
- classLabel.getParent().layout();
- backAction.setEnabled(elements.size() >= 2);
-
- if (object instanceof Map<?, ?>)
- {
- setCurrentViewer(mapViewer);
- }
- else if (object instanceof Iterable<?>)
- {
- setCurrentViewer(iterableViewer);
- }
- else if (object != null && object.getClass().isArray())
- {
- setCurrentViewer(arrayViewer);
- }
- else
- {
- setCurrentViewer(objectViewer);
- }
-
- refreshViewer();
- }
-
- private void createObjectColmuns()
- {
- Table table = objectViewer.getTable();
- String[] columnNames = {
- Messages.getString("Net4jIntrospectorView_4"), Messages.getString("Net4jIntrospectorView_5"), Messages.getString("Net4jIntrospectorView_6"), Messages.getString("Net4jIntrospectorView_7") }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
- int[] columnWidths = { 200, 400, 300, 300 };
- createColumns(table, columnNames, columnWidths);
- }
-
- private void createMapColmuns()
- {
- Table table = mapViewer.getTable();
- String[] columnNames = {
- Messages.getString("Net4jIntrospectorView_8"), Messages.getString("Net4jIntrospectorView_9"), Messages.getString("Net4jIntrospectorView_10") }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- int[] columnWidths = { 200, 400, 300 };
- createColumns(table, columnNames, columnWidths);
- }
-
- private void createIterableColmuns()
- {
- Table table = iterableViewer.getTable();
- String[] columnNames = {
- Messages.getString("Net4jIntrospectorView_11"), Messages.getString("Net4jIntrospectorView_12") }; //$NON-NLS-1$ //$NON-NLS-2$
- int[] columnWidths = { 400, 300 };
- createColumns(table, columnNames, columnWidths);
- }
-
- private void createArrayColmuns()
- {
- Table table = arrayViewer.getTable();
- String[] columnNames = {
- Messages.getString("Net4jIntrospectorView_13"), Messages.getString("Net4jIntrospectorView_14"), Messages.getString("Net4jIntrospectorView_15") }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- int[] columnWidths = { 50, 400, 300 };
- createColumns(table, columnNames, columnWidths);
- }
-
- private void createColumns(Table table, String[] columnNames, int[] columnWidths)
- {
- TableColumn[] columns = new TableColumn[columnNames.length];
- for (int i = 0; i < columns.length; i++)
- {
- TableColumn column = new TableColumn(table, SWT.LEFT, i);
- column.setText(columnNames[i]);
- column.setWidth(columnWidths[i]);
- column.setMoveable(true);
- column.setResizable(true);
- }
- }
-
- private void fillLocalPullDown(IMenuManager manager)
- {
- }
-
- private void fillLocalToolBar(IToolBarManager manager)
- {
- manager.add(backAction);
- manager.add(containerAction);
- manager.add(refreshAction);
- }
-
- /**
- * @author Eike Stepper
- */
- class BackAction extends Action
- {
- private BackAction()
- {
- super(Messages.getString("Net4jIntrospectorView_16")); //$NON-NLS-1$
- ISharedImages sharedImages = PlatformUI.getWorkbench().getSharedImages();
- setImageDescriptor(sharedImages.getImageDescriptor(ISharedImages.IMG_TOOL_BACK));
- setDisabledImageDescriptor(sharedImages.getImageDescriptor(ISharedImages.IMG_TOOL_BACK_DISABLED));
- }
-
- @Override
- public void run()
- {
- if (!elements.isEmpty())
- {
- elements.pop();
- if (!elements.isEmpty())
- {
- setObject(elements.peek());
- }
- }
- }
- }
-
- /**
- * @author Eike Stepper
- */
- class ContainerAction extends Action
- {
- private ContainerAction()
- {
- super(Messages.getString("Net4jIntrospectorView_17")); //$NON-NLS-1$
- setImageDescriptor(SharedIcons.getDescriptor(SharedIcons.VIEW_CONTAINER));
- }
-
- @Override
- public void run()
- {
- setObject(IPluginContainer.INSTANCE);
- }
- }
-
- /**
- * @author Eike Stepper
- */
- class RefreshAction extends Action
- {
- private RefreshAction()
- {
- super("Refresh"); //$NON-NLS-1$
- setImageDescriptor(SharedIcons.getDescriptor(SharedIcons.ETOOL_REFRESH));
- }
-
- @Override
- public void run()
- {
- refreshViewer();
- }
- }
-
- /**
- * @author Eike Stepper
- */
- abstract class AbstractContentProvider implements IStructuredContentProvider
- {
- public void inputChanged(Viewer v, Object oldInput, Object newInput)
- {
- }
-
- public void dispose()
- {
- }
- }
-
- /**
- * @author Eike Stepper
- */
- abstract class AbstractLabelProvider extends LabelProvider implements ITableLabelProvider
- {
- @Override
- public String getText(Object element)
- {
- return getColumnText(element, 0);
- }
-
- public Image getColumnImage(Object obj, int index)
- {
- return null;
- }
-
- @Override
- public Image getImage(Object obj)
- {
- return null;
- }
- }
-
- /**
- * @author Eike Stepper
- */
- class ObjectContentProvider extends AbstractContentProvider
- {
- public Object[] getElements(Object parent)
- {
- if (!elements.isEmpty())
- {
- try
- {
- return ReflectUtil.dumpToArray(elements.peek());
- }
- catch (RuntimeException ex)
- {
- OM.LOG.error(ex);
- }
- }
-
- return NO_ELEMENTS;
- }
- }
-
- /**
- * @author Eike Stepper
- */
- class ObjectLabelProvider extends AbstractLabelProvider
- {
- public String getColumnText(Object obj, int index)
- {
- if (obj instanceof Pair<?, ?>)
- {
- try
- {
- @SuppressWarnings("unchecked")
- Pair<Field, Object> pair = (Pair<Field, Object>)obj;
-
- Field field = pair.getElement1();
- Object value = pair.getElement2();
-
- switch (index)
- {
- case 0:
- return field.getName();
- case 1:
- return value == null ? Messages.getString("Net4jIntrospectorView_18") : value.toString(); //$NON-NLS-1$
- case 2:
- return field.getType().getName();
- case 3:
- return value == null ? Messages.getString("Net4jIntrospectorView_1") : value.getClass().getName(); //$NON-NLS-1$
- }
- }
- catch (RuntimeException ex)
- {
- OM.LOG.error(ex);
- }
- }
-
- return ""; //$NON-NLS-1$
- }
- }
-
- /**
- * @author Eike Stepper
- */
- class IterableContentProvider extends AbstractContentProvider
- {
- public Object[] getElements(Object parent)
- {
- if (!elements.isEmpty())
- {
- Object element = elements.peek();
- if (element instanceof Iterable<?>)
- {
- List<Object> result = new ArrayList<Object>();
- for (Object object : (Iterable<?>)element)
- {
- result.add(object);
- }
-
- return result.toArray();
- }
- }
-
- return NO_ELEMENTS;
- }
- }
-
- /**
- * @author Eike Stepper
- */
- class IterableLabelProvider extends AbstractLabelProvider
- {
- public String getColumnText(Object obj, int index)
- {
- switch (index)
- {
- case 0:
- return obj == null ? Messages.getString("Net4jIntrospectorView_21") : obj.toString(); //$NON-NLS-1$
- case 1:
- return obj == null ? Messages.getString("Net4jIntrospectorView_22") : obj.getClass().getName(); //$NON-NLS-1$
- }
-
- return ""; //$NON-NLS-1$
- }
- }
-
- /**
- * @author Eike Stepper
- */
- class ArrayContentProvider extends AbstractContentProvider
- {
- @SuppressWarnings("unchecked")
- public Object[] getElements(Object parent)
- {
- if (!elements.isEmpty())
- {
- Object element = elements.peek();
- if (element.getClass().isArray())
- {
- Object[] array = (Object[])element;
- Pair<Integer, Object>[] result = new Pair[array.length];
- for (int i = 0; i < array.length; i++)
- {
- result[i] = new Pair<Integer, Object>(i, array[i]);
- }
-
- return result;
- }
- }
-
- return NO_ELEMENTS;
- }
- }
-
- /**
- * @author Eike Stepper
- */
- class ArrayLabelProvider extends AbstractLabelProvider
- {
- public String getColumnText(Object obj, int index)
- {
- if (obj instanceof Pair<?, ?>)
- {
- try
- {
- @SuppressWarnings("unchecked")
- Pair<Integer, Object> pair = (Pair<Integer, Object>)obj;
-
- int i = pair.getElement1();
- Object value = pair.getElement2();
- switch (index)
- {
- case 0:
- return String.valueOf(i);
- case 1:
- return value == null ? Messages.getString("Net4jIntrospectorView_24") : value.toString(); //$NON-NLS-1$
- case 2:
- return value == null ? Messages.getString("Net4jIntrospectorView_25") : value.getClass().getName(); //$NON-NLS-1$
- }
- }
- catch (RuntimeException ex)
- {
- OM.LOG.error(ex);
- }
- }
-
- return ""; //$NON-NLS-1$
- }
- }
-
- /**
- * @author Eike Stepper
- */
- class MapContentProvider extends AbstractContentProvider
- {
- public Object[] getElements(Object parent)
- {
- if (!elements.isEmpty())
- {
- Object element = elements.peek();
- if (element instanceof Map<?, ?>)
- {
- return ((Map<?, ?>)element).entrySet().toArray();
- }
- }
-
- return NO_ELEMENTS;
- }
- }
-
- /**
- * @author Eike Stepper
- */
- class MapLabelProvider extends AbstractLabelProvider
- {
- public String getColumnText(Object obj, int index)
- {
- if (obj instanceof Map.Entry<?, ?>)
- {
- Map.Entry<?, ?> entry = (Map.Entry<?, ?>)obj;
- Object key = entry.getKey();
- Object value = entry.getValue();
- switch (index)
- {
- case 0:
- return key == null ? Messages.getString("Net4jIntrospectorView_27") : key.toString(); //$NON-NLS-1$
- case 1:
- return value == null ? Messages.getString("Net4jIntrospectorView_28") : value.toString(); //$NON-NLS-1$
- case 2:
- return value == null ? Messages.getString("Net4jIntrospectorView_29") : value.getClass().getName(); //$NON-NLS-1$
- }
- }
-
- return ""; //$NON-NLS-1$
- }
- }
-
- /**
- * @author Eike Stepper
- */
- class NameSorter extends ViewerSorter
- {
- }
-}
+/*
+ * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.net4j.util.internal.ui.views;
+
+import org.eclipse.net4j.ui.shared.SharedIcons;
+import org.eclipse.net4j.util.ReflectUtil;
+import org.eclipse.net4j.util.WrappedException;
+import org.eclipse.net4j.util.collection.Pair;
+import org.eclipse.net4j.util.container.IPluginContainer;
+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.internal.ui.bundle.OM;
+import org.eclipse.net4j.util.internal.ui.messages.Messages;
+import org.eclipse.net4j.util.ui.UIUtil;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.viewers.DoubleClickEvent;
+import org.eclipse.jface.viewers.IDoubleClickListener;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerSorter;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.StackLayout;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.IActionBars;
+import org.eclipse.ui.IPartListener;
+import org.eclipse.ui.ISelectionListener;
+import org.eclipse.ui.ISharedImages;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.part.ViewPart;
+
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Stack;
+
+/**
+ * @author Eike Stepper
+ */
+public class Net4jIntrospectorView extends ViewPart implements IPartListener, ISelectionListener, IDoubleClickListener,
+ IListener
+{
+ public static final String VIEW_ID = "org.eclipse.net4j.util.Net4jIntrospectorView"; //$NON-NLS-1$
+
+ private static final Object[] NO_ELEMENTS = {};
+
+ private static Net4jIntrospectorView instance;
+
+ private TableViewer currentViewer;
+
+ private TableViewer objectViewer;
+
+ private TableViewer iterableViewer;
+
+ private TableViewer arrayViewer;
+
+ private TableViewer mapViewer;
+
+ private Stack<Object> elements = new Stack<Object>();
+
+ private Text classLabel;
+
+ private Text objectLabel;
+
+ private IAction backAction = new BackAction();
+
+ private IAction modeAction = new ModeAction();
+
+ private IAction containerAction = new ContainerAction();
+
+ private IAction refreshAction = new RefreshAction();
+
+ private StackLayout stackLayout;
+
+ private Composite stacked;
+
+ private IWorkbenchPart activePart;
+
+ public Net4jIntrospectorView()
+ {
+ }
+
+ @Override
+ public void dispose()
+ {
+ IWorkbenchPage page = getSite().getPage();
+ page.removePartListener(this);
+ page.removeSelectionListener(this);
+ super.dispose();
+ }
+
+ public static Net4jIntrospectorView getInstance()
+ {
+ return instance;
+ }
+
+ public static synchronized Net4jIntrospectorView getInstance(boolean show)
+ {
+ if (instance == null)
+ {
+ try
+ {
+ IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
+ page.showView(VIEW_ID);
+ }
+ catch (Exception ex)
+ {
+ throw WrappedException.wrap(ex);
+ }
+ }
+
+ return instance;
+ }
+
+ @Override
+ public void createPartControl(Composite parent)
+ {
+ Color bg = parent.getDisplay().getSystemColor(SWT.COLOR_LIST_BACKGROUND);
+ Color gray = parent.getDisplay().getSystemColor(SWT.COLOR_DARK_BLUE);
+
+ Composite composite = new Composite(parent, SWT.NONE);
+ composite.setLayout(UIUtil.createGridLayout(1));
+
+ Composite c = new Composite(composite, SWT.BORDER);
+ c.setLayout(UIUtil.createGridLayout(2));
+ c.setLayoutData(UIUtil.createGridData(true, false));
+
+ classLabel = new Text(c, SWT.READ_ONLY);
+ classLabel.setLayoutData(UIUtil.createGridData(false, false));
+ classLabel.setBackground(bg);
+ classLabel.setForeground(gray);
+
+ objectLabel = new Text(c, SWT.READ_ONLY);
+ objectLabel.setLayoutData(UIUtil.createGridData(true, false));
+ objectLabel.setBackground(bg);
+
+ stackLayout = new StackLayout();
+ stacked = new Composite(composite, SWT.NONE);
+ stacked.setLayoutData(UIUtil.createGridData());
+ stacked.setLayout(stackLayout);
+
+ objectViewer = createViewer(stacked);
+ createObjectColmuns();
+ objectViewer.addDoubleClickListener(this);
+ objectViewer.setContentProvider(new ObjectContentProvider());
+ objectViewer.setLabelProvider(new ObjectLabelProvider());
+ objectViewer.setSorter(new NameSorter());
+ objectViewer.setInput(getViewSite());
+
+ iterableViewer = createViewer(stacked);
+ createIterableColmuns();
+ iterableViewer.addDoubleClickListener(this);
+ iterableViewer.setContentProvider(new IterableContentProvider());
+ iterableViewer.setLabelProvider(new IterableLabelProvider());
+ iterableViewer.setInput(getViewSite());
+
+ arrayViewer = createViewer(stacked);
+ createArrayColmuns();
+ arrayViewer.addDoubleClickListener(this);
+ arrayViewer.setContentProvider(new ArrayContentProvider());
+ arrayViewer.setLabelProvider(new ArrayLabelProvider());
+ arrayViewer.setInput(getViewSite());
+
+ mapViewer = createViewer(stacked);
+ createMapColmuns();
+ mapViewer.addDoubleClickListener(this);
+ mapViewer.setContentProvider(new MapContentProvider());
+ mapViewer.setLabelProvider(new MapLabelProvider());
+ mapViewer.setSorter(new NameSorter());
+ mapViewer.setInput(getViewSite());
+
+ IActionBars bars = getViewSite().getActionBars();
+ fillLocalPullDown(bars.getMenuManager());
+ fillLocalToolBar(bars.getToolBarManager());
+
+ IWorkbenchPage page = getSite().getPage();
+ page.addPartListener(this);
+ page.addSelectionListener(this);
+
+ setCurrentViewer(objectViewer);
+ instance = this;
+ }
+
+ private void setCurrentViewer(TableViewer viewer)
+ {
+ currentViewer = viewer;
+ stackLayout.topControl = currentViewer.getControl();
+ stacked.layout();
+ }
+
+ private TableViewer createViewer(Composite parent)
+ {
+ TableViewer viewer = new TableViewer(parent, SWT.FULL_SELECTION | SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
+ viewer.getTable().setLayoutData(UIUtil.createGridData());
+ viewer.getTable().setHeaderVisible(true);
+ viewer.getTable().setLinesVisible(true);
+ return viewer;
+ }
+
+ public void refreshViewer()
+ {
+ UIUtil.refreshViewer(currentViewer);
+ }
+
+ public void partActivated(IWorkbenchPart part)
+ {
+ if (part == this)
+ {
+ return;
+ }
+
+ activePart = part;
+ if (modeAction.isChecked())
+ {
+ elements.clear();
+ setObject(activePart);
+ }
+ }
+
+ public void partBroughtToTop(IWorkbenchPart part)
+ {
+ }
+
+ public void partClosed(IWorkbenchPart part)
+ {
+ }
+
+ public void partDeactivated(IWorkbenchPart part)
+ {
+ if (modeAction.isChecked())
+ {
+ if (part == activePart)
+ {
+ activePart = null;
+ setObject(null);
+ }
+ }
+ }
+
+ public void partOpened(IWorkbenchPart part)
+ {
+ }
+
+ public void selectionChanged(IWorkbenchPart part, ISelection sel)
+ {
+ if (part == this)
+ {
+ return;
+ }
+
+ if (modeAction.isChecked())
+ {
+ return;
+ }
+
+ if (sel instanceof IStructuredSelection)
+ {
+ IStructuredSelection ssel = (IStructuredSelection)sel;
+ elements.clear();
+ setObject(ssel.getFirstElement());
+ }
+ else
+ {
+ setObject(null);
+ }
+ }
+
+ public void doubleClick(DoubleClickEvent event)
+ {
+ ISelection sel = event.getSelection();
+ if (sel instanceof IStructuredSelection)
+ {
+ IStructuredSelection ssel = (IStructuredSelection)sel;
+ Object element = ssel.getFirstElement();
+ if (currentViewer == objectViewer && element instanceof Pair<?, ?>)
+ {
+ @SuppressWarnings("unchecked")
+ Pair<Field, Object> pair = (Pair<Field, Object>)element;
+
+ Field field = pair.getElement1();
+ if (!field.getType().isPrimitive())
+ {
+ setObject(pair.getElement2());
+ }
+ }
+ else if (currentViewer == mapViewer && element instanceof Map.Entry<?, ?>)
+ {
+ Map.Entry<?, ?> entry = (Map.Entry<?, ?>)element;
+ setObject(entry.getValue());
+ }
+ else if (currentViewer == iterableViewer)
+ {
+ setObject(element);
+ }
+ else if (currentViewer == arrayViewer && element instanceof Pair<?, ?>)
+ {
+ @SuppressWarnings("unchecked")
+ Pair<Integer, Object> pair = (Pair<Integer, Object>)element;
+ setObject(pair.getElement2());
+ }
+ }
+ }
+
+ /**
+ * Passing the focus request to the viewer's control.
+ */
+ @Override
+ public void setFocus()
+ {
+ try
+ {
+ currentViewer.getControl().setFocus();
+ }
+ catch (RuntimeException ignore)
+ {
+ }
+ }
+
+ public void notifyEvent(IEvent event)
+ {
+ refreshViewer();
+ }
+
+ public void setObject(Object object)
+ {
+ EventUtil.removeListener(object, this);
+ if (object != null)
+ {
+ if (!elements.isEmpty())
+ {
+ Object element = elements.peek();
+ if (element != object)
+ {
+ EventUtil.removeListener(element, this);
+ elements.push(object);
+ }
+ }
+ else
+ {
+ elements.push(object);
+ }
+ }
+
+ if (object == null)
+ {
+ classLabel.setText(""); //$NON-NLS-1$
+ objectLabel.setText(""); //$NON-NLS-1$
+ currentViewer = objectViewer;
+ }
+ else
+ {
+ EventUtil.addListener(object, this);
+ String className = object.getClass().getName();
+ classLabel.setText(className);
+
+ String value = object.toString();
+ if (value.startsWith(className + "@")) //$NON-NLS-1$
+ {
+ objectLabel.setText(value.substring(className.length()));
+ }
+ else
+ {
+ objectLabel.setText(value);
+ }
+ }
+
+ classLabel.getParent().layout();
+ backAction.setEnabled(elements.size() >= 2);
+
+ if (object instanceof Map<?, ?>)
+ {
+ setCurrentViewer(mapViewer);
+ }
+ else if (object instanceof Iterable<?>)
+ {
+ setCurrentViewer(iterableViewer);
+ }
+ else if (object != null && object.getClass().isArray())
+ {
+ setCurrentViewer(arrayViewer);
+ }
+ else
+ {
+ setCurrentViewer(objectViewer);
+ }
+
+ refreshViewer();
+ }
+
+ private void createObjectColmuns()
+ {
+ Table table = objectViewer.getTable();
+ String[] columnNames = {
+ Messages.getString("Net4jIntrospectorView_4"), Messages.getString("Net4jIntrospectorView_5"), Messages.getString("Net4jIntrospectorView_6"), Messages.getString("Net4jIntrospectorView_7") }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+ int[] columnWidths = { 200, 400, 300, 300 };
+ createColumns(table, columnNames, columnWidths);
+ }
+
+ private void createMapColmuns()
+ {
+ Table table = mapViewer.getTable();
+ String[] columnNames = {
+ Messages.getString("Net4jIntrospectorView_8"), Messages.getString("Net4jIntrospectorView_9"), Messages.getString("Net4jIntrospectorView_10") }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ int[] columnWidths = { 200, 400, 300 };
+ createColumns(table, columnNames, columnWidths);
+ }
+
+ private void createIterableColmuns()
+ {
+ Table table = iterableViewer.getTable();
+ String[] columnNames = {
+ Messages.getString("Net4jIntrospectorView_11"), Messages.getString("Net4jIntrospectorView_12") }; //$NON-NLS-1$ //$NON-NLS-2$
+ int[] columnWidths = { 400, 300 };
+ createColumns(table, columnNames, columnWidths);
+ }
+
+ private void createArrayColmuns()
+ {
+ Table table = arrayViewer.getTable();
+ String[] columnNames = {
+ Messages.getString("Net4jIntrospectorView_13"), Messages.getString("Net4jIntrospectorView_14"), Messages.getString("Net4jIntrospectorView_15") }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ int[] columnWidths = { 50, 400, 300 };
+ createColumns(table, columnNames, columnWidths);
+ }
+
+ private void createColumns(Table table, String[] columnNames, int[] columnWidths)
+ {
+ TableColumn[] columns = new TableColumn[columnNames.length];
+ for (int i = 0; i < columns.length; i++)
+ {
+ TableColumn column = new TableColumn(table, SWT.LEFT, i);
+ column.setText(columnNames[i]);
+ column.setWidth(columnWidths[i]);
+ column.setMoveable(true);
+ column.setResizable(true);
+ }
+ }
+
+ private void fillLocalPullDown(IMenuManager manager)
+ {
+ }
+
+ private void fillLocalToolBar(IToolBarManager manager)
+ {
+ manager.add(backAction);
+ manager.add(containerAction);
+ manager.add(new Separator());
+ manager.add(modeAction);
+ manager.add(new Separator());
+ manager.add(refreshAction);
+ }
+
+ /**
+ * @author Eike Stepper
+ */
+ class BackAction extends Action
+ {
+ private BackAction()
+ {
+ super(Messages.getString("Net4jIntrospectorView_16")); //$NON-NLS-1$
+ ISharedImages sharedImages = PlatformUI.getWorkbench().getSharedImages();
+ setImageDescriptor(sharedImages.getImageDescriptor(ISharedImages.IMG_TOOL_BACK));
+ setDisabledImageDescriptor(sharedImages.getImageDescriptor(ISharedImages.IMG_TOOL_BACK_DISABLED));
+ }
+
+ @Override
+ public void run()
+ {
+ if (!elements.isEmpty())
+ {
+ elements.pop();
+ if (!elements.isEmpty())
+ {
+ setObject(elements.peek());
+ }
+ }
+ }
+ }
+
+ /**
+ * @author Eike Stepper
+ */
+ class ModeAction extends Action
+ {
+ private ModeAction()
+ {
+ super(Messages.getString("Net4jIntrospectorView_17b"), AS_CHECK_BOX); //$NON-NLS-1$
+ setImageDescriptor(SharedIcons.getDescriptor(SharedIcons.ETOOL_PART_MODE));
+ }
+
+ @Override
+ public void run()
+ {
+ if (isChecked())
+ {
+ elements.clear();
+ setObject(activePart);
+ }
+ else
+ {
+ setObject(null);
+ }
+ }
+ }
+
+ /**
+ * @author Eike Stepper
+ */
+ class ContainerAction extends Action
+ {
+ private ContainerAction()
+ {
+ super(Messages.getString("Net4jIntrospectorView_17")); //$NON-NLS-1$
+ setImageDescriptor(SharedIcons.getDescriptor(SharedIcons.VIEW_CONTAINER));
+ }
+
+ @Override
+ public void run()
+ {
+ setObject(IPluginContainer.INSTANCE);
+ }
+ }
+
+ /**
+ * @author Eike Stepper
+ */
+ class RefreshAction extends Action
+ {
+ private RefreshAction()
+ {
+ super("Refresh"); //$NON-NLS-1$
+ setImageDescriptor(SharedIcons.getDescriptor(SharedIcons.ETOOL_REFRESH));
+ }
+
+ @Override
+ public void run()
+ {
+ refreshViewer();
+ }
+ }
+
+ /**
+ * @author Eike Stepper
+ */
+ abstract class AbstractContentProvider implements IStructuredContentProvider
+ {
+ public void inputChanged(Viewer v, Object oldInput, Object newInput)
+ {
+ }
+
+ public void dispose()
+ {
+ }
+ }
+
+ /**
+ * @author Eike Stepper
+ */
+ abstract class AbstractLabelProvider extends LabelProvider implements ITableLabelProvider
+ {
+ @Override
+ public String getText(Object element)
+ {
+ return getColumnText(element, 0);
+ }
+
+ public Image getColumnImage(Object obj, int index)
+ {
+ return null;
+ }
+
+ @Override
+ public Image getImage(Object obj)
+ {
+ return null;
+ }
+ }
+
+ /**
+ * @author Eike Stepper
+ */
+ class ObjectContentProvider extends AbstractContentProvider
+ {
+ public Object[] getElements(Object parent)
+ {
+ if (!elements.isEmpty())
+ {
+ try
+ {
+ return ReflectUtil.dumpToArray(elements.peek());
+ }
+ catch (RuntimeException ex)
+ {
+ OM.LOG.error(ex);
+ }
+ }
+
+ return NO_ELEMENTS;
+ }
+ }
+
+ /**
+ * @author Eike Stepper
+ */
+ class ObjectLabelProvider extends AbstractLabelProvider
+ {
+ public String getColumnText(Object obj, int index)
+ {
+ if (obj instanceof Pair<?, ?>)
+ {
+ try
+ {
+ @SuppressWarnings("unchecked")
+ Pair<Field, Object> pair = (Pair<Field, Object>)obj;
+
+ Field field = pair.getElement1();
+ Object value = pair.getElement2();
+
+ switch (index)
+ {
+ case 0:
+ return field.getName();
+ case 1:
+ return value == null ? Messages.getString("Net4jIntrospectorView_18") : value.toString(); //$NON-NLS-1$
+ case 2:
+ return field.getType().getName();
+ case 3:
+ return value == null ? Messages.getString("Net4jIntrospectorView_1") : value.getClass().getName(); //$NON-NLS-1$
+ }
+ }
+ catch (RuntimeException ex)
+ {
+ OM.LOG.error(ex);
+ }
+ }
+
+ return ""; //$NON-NLS-1$
+ }
+ }
+
+ /**
+ * @author Eike Stepper
+ */
+ class IterableContentProvider extends AbstractContentProvider
+ {
+ public Object[] getElements(Object parent)
+ {
+ if (!elements.isEmpty())
+ {
+ Object element = elements.peek();
+ if (element instanceof Iterable<?>)
+ {
+ List<Object> result = new ArrayList<Object>();
+ for (Object object : (Iterable<?>)element)
+ {
+ result.add(object);
+ }
+
+ return result.toArray();
+ }
+ }
+
+ return NO_ELEMENTS;
+ }
+ }
+
+ /**
+ * @author Eike Stepper
+ */
+ class IterableLabelProvider extends AbstractLabelProvider
+ {
+ public String getColumnText(Object obj, int index)
+ {
+ switch (index)
+ {
+ case 0:
+ return obj == null ? Messages.getString("Net4jIntrospectorView_21") : obj.toString(); //$NON-NLS-1$
+ case 1:
+ return obj == null ? Messages.getString("Net4jIntrospectorView_22") : obj.getClass().getName(); //$NON-NLS-1$
+ }
+
+ return ""; //$NON-NLS-1$
+ }
+ }
+
+ /**
+ * @author Eike Stepper
+ */
+ class ArrayContentProvider extends AbstractContentProvider
+ {
+ @SuppressWarnings("unchecked")
+ public Object[] getElements(Object parent)
+ {
+ if (!elements.isEmpty())
+ {
+ Object element = elements.peek();
+ if (element.getClass().isArray())
+ {
+ Object[] array = (Object[])element;
+ Pair<Integer, Object>[] result = new Pair[array.length];
+ for (int i = 0; i < array.length; i++)
+ {
+ result[i] = new Pair<Integer, Object>(i, array[i]);
+ }
+
+ return result;
+ }
+ }
+
+ return NO_ELEMENTS;
+ }
+ }
+
+ /**
+ * @author Eike Stepper
+ */
+ class ArrayLabelProvider extends AbstractLabelProvider
+ {
+ public String getColumnText(Object obj, int index)
+ {
+ if (obj instanceof Pair<?, ?>)
+ {
+ try
+ {
+ @SuppressWarnings("unchecked")
+ Pair<Integer, Object> pair = (Pair<Integer, Object>)obj;
+
+ int i = pair.getElement1();
+ Object value = pair.getElement2();
+ switch (index)
+ {
+ case 0:
+ return String.valueOf(i);
+ case 1:
+ return value == null ? Messages.getString("Net4jIntrospectorView_24") : value.toString(); //$NON-NLS-1$
+ case 2:
+ return value == null ? Messages.getString("Net4jIntrospectorView_25") : value.getClass().getName(); //$NON-NLS-1$
+ }
+ }
+ catch (RuntimeException ex)
+ {
+ OM.LOG.error(ex);
+ }
+ }
+
+ return ""; //$NON-NLS-1$
+ }
+ }
+
+ /**
+ * @author Eike Stepper
+ */
+ class MapContentProvider extends AbstractContentProvider
+ {
+ public Object[] getElements(Object parent)
+ {
+ if (!elements.isEmpty())
+ {
+ Object element = elements.peek();
+ if (element instanceof Map<?, ?>)
+ {
+ return ((Map<?, ?>)element).entrySet().toArray();
+ }
+ }
+
+ return NO_ELEMENTS;
+ }
+ }
+
+ /**
+ * @author Eike Stepper
+ */
+ class MapLabelProvider extends AbstractLabelProvider
+ {
+ public String getColumnText(Object obj, int index)
+ {
+ if (obj instanceof Map.Entry<?, ?>)
+ {
+ Map.Entry<?, ?> entry = (Map.Entry<?, ?>)obj;
+ Object key = entry.getKey();
+ Object value = entry.getValue();
+ switch (index)
+ {
+ case 0:
+ return key == null ? Messages.getString("Net4jIntrospectorView_27") : key.toString(); //$NON-NLS-1$
+ case 1:
+ return value == null ? Messages.getString("Net4jIntrospectorView_28") : value.toString(); //$NON-NLS-1$
+ case 2:
+ return value == null ? Messages.getString("Net4jIntrospectorView_29") : value.getClass().getName(); //$NON-NLS-1$
+ }
+ }
+
+ return ""; //$NON-NLS-1$
+ }
+ }
+
+ /**
+ * @author Eike Stepper
+ */
+ class NameSorter extends ViewerSorter
+ {
+ }
+}
diff --git a/plugins/org.eclipse.net4j.util.ui/src/org/eclipse/net4j/util/ui/FactoryTypeContentProvider.java b/plugins/org.eclipse.net4j.util.ui/src/org/eclipse/net4j/util/ui/FactoryTypeContentProvider.java
new file mode 100644
index 0000000000..a9872d7f46
--- /dev/null
+++ b/plugins/org.eclipse.net4j.util.ui/src/org/eclipse/net4j/util/ui/FactoryTypeContentProvider.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.net4j.util.ui;
+
+import org.eclipse.net4j.util.container.IManagedContainer;
+import org.eclipse.net4j.util.factory.IFactoryKey;
+
+/**
+ * A {@link StructuredContentProvider structured content provider} that shows the {@link IFactoryKey#getType() factory
+ * types} of the {@link #getInput() input}.
+ *
+ * @author Eike Stepper
+ * @since 3.2
+ */
+public class FactoryTypeContentProvider extends StructuredContentProvider<IManagedContainer>
+{
+ private String productGroup;
+
+ public FactoryTypeContentProvider(String productGroup)
+ {
+ this.productGroup = productGroup;
+ }
+
+ public String getProductGroup()
+ {
+ return productGroup;
+ }
+
+ public Object[] getElements(Object inputElement)
+ {
+ return getInput().getFactoryTypes(productGroup).toArray();
+ }
+
+ @Override
+ protected void connectInput(IManagedContainer input)
+ {
+ input.addListener(this);
+ input.getFactoryRegistry().addListener(this);
+ }
+
+ @Override
+ protected void disconnectInput(IManagedContainer input)
+ {
+ input.removeListener(this);
+ input.getFactoryRegistry().removeListener(this);
+ }
+}
diff --git a/plugins/org.eclipse.net4j.util.ui/src/org/eclipse/net4j/util/ui/container/ElementWizardAction.java b/plugins/org.eclipse.net4j.util.ui/src/org/eclipse/net4j/util/ui/container/ElementWizardAction.java
index a6c5f0160b..b0ac24d7b8 100644
--- a/plugins/org.eclipse.net4j.util.ui/src/org/eclipse/net4j/util/ui/container/ElementWizardAction.java
+++ b/plugins/org.eclipse.net4j.util.ui/src/org/eclipse/net4j/util/ui/container/ElementWizardAction.java
@@ -111,7 +111,8 @@ public class ElementWizardAction extends LongRunningAction
{
public void run()
{
- MessageDialog.openError(shell, title, "An error occured: " + ex.getMessage());
+ MessageDialog.openError(shell, title, "An error occured: " + ex.getMessage()
+ + "\n\nThe error log may contain more information about the problem.");
}
});
}
diff --git a/plugins/org.eclipse.net4j.util.ui/src/org/eclipse/net4j/util/ui/views/ContainerItemProvider.java b/plugins/org.eclipse.net4j.util.ui/src/org/eclipse/net4j/util/ui/views/ContainerItemProvider.java
index e68ece4e93..e23fd48060 100644
--- a/plugins/org.eclipse.net4j.util.ui/src/org/eclipse/net4j/util/ui/views/ContainerItemProvider.java
+++ b/plugins/org.eclipse.net4j.util.ui/src/org/eclipse/net4j/util/ui/views/ContainerItemProvider.java
@@ -1,721 +1,707 @@
-/*
- * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Eike Stepper - initial API and implementation
- */
-package org.eclipse.net4j.util.ui.views;
-
-import org.eclipse.net4j.internal.util.bundle.OM;
-import org.eclipse.net4j.ui.shared.SharedIcons;
-import org.eclipse.net4j.util.container.ContainerEventAdapter;
-import org.eclipse.net4j.util.container.IContainer;
-import org.eclipse.net4j.util.container.ISlow;
-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.LifecycleState;
-import org.eclipse.net4j.util.lifecycle.LifecycleUtil;
-import org.eclipse.net4j.util.ui.UIUtil;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.viewers.ITreeSelection;
-import org.eclipse.jface.viewers.TreePath;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.ui.PartInitException;
-
-import java.text.MessageFormat;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-/**
- * @author Eike Stepper
- */
-/**
- * @author Eike Stepper
- */
-public class ContainerItemProvider<CONTAINER extends IContainer<Object>> extends ItemProvider<CONTAINER>
-{
- private Map<Object, Node> nodes = new HashMap<Object, Node>();
-
- private Node root;
-
- private IElementFilter rootElementFilter;
-
- public ContainerItemProvider()
- {
- }
-
- public ContainerItemProvider(IElementFilter rootElementFilter)
- {
- this.rootElementFilter = rootElementFilter;
- }
-
- public IElementFilter getRootElementFilter()
- {
- return rootElementFilter;
- }
-
- @Override
- public boolean hasChildren(Object element)
- {
- try
- {
- Node node = getNode(element);
- return !node.getChildren().isEmpty();
- }
- catch (Exception ex)
- {
- return false;
- }
- }
-
- public Object[] getChildren(Object element)
- {
- try
- {
- Node node = getNode(element);
- List<Node> children = node.getChildren();
- for (Iterator<Node> it = children.iterator(); it.hasNext();)
- {
- Node child = it.next();
- if (child.isDisposed())
- {
- it.remove();
- }
- else
- {
- Object childElement = child.getElement();
- LifecycleState lifecycleState = LifecycleUtil.getLifecycleState(childElement);
- if (lifecycleState == LifecycleState.INACTIVE || lifecycleState == LifecycleState.DEACTIVATING)
- {
- handleInactiveElement(it, child);
- }
- }
- }
-
- Object[] result = new Object[children.size()];
- for (int i = 0; i < result.length; i++)
- {
- result[i] = children.get(i).getElement();
- }
-
- return result;
- }
- catch (RuntimeException ex)
- {
- return NO_ELEMENTS;
- }
- }
-
- public Object getParent(Object element)
- {
- try
- {
- Node node = getNode(element);
- Node parentNode = node.getParent();
- return parentNode == null ? null : parentNode.getElement();
- }
- catch (RuntimeException ex)
- {
- return null;
- }
- }
-
- @Override
- public void dispose()
- {
- super.dispose();
- }
-
- @Override
- protected void connectInput(CONTAINER input)
- {
- root = createNode(null, input);
- if (root != null)
- {
- addNode(input, root);
- }
- }
-
- @Override
- protected void disconnectInput(CONTAINER input)
- {
- root.dispose();
- root = null;
- nodes.clear();
- }
-
- /**
- * @since 2.0
- */
- protected void handleInactiveElement(Iterator<Node> it, Node child)
- {
- it.remove();
- child.dispose();
- }
-
- protected void elementAdded(Object element, Object parent)
- {
- }
-
- protected void elementRemoved(Object element, Object parent)
- {
- }
-
- protected Node getRoot()
- {
- return root;
- }
-
- protected Map<Object, Node> getNodes()
- {
- return nodes;
- }
-
- protected Node getNode(Object element)
- {
- Node node = root;
- if (element != getInput())
- {
- node = nodes.get(element);
- }
-
- if (node == null)
- {
- throw new IllegalStateException("No node for " + element); //$NON-NLS-1$
- }
-
- return node;
- }
-
- protected Node createNode(Node parent, Object element)
- {
- if (element instanceof IContainer<?>)
- {
- return createContaineNode(parent, element);
- }
-
- return createLeafNode(parent, element);
- }
-
- protected LeafNode createLeafNode(Node parent, Object element)
- {
- return new LeafNode(parent, element);
- }
-
- @SuppressWarnings("unchecked")
- protected ContainerNode createContaineNode(Node parent, Object element)
- {
- return new ContainerNode(parent, (IContainer<Object>)element);
- }
-
- protected void addNode(Object element, Node node)
- {
- nodes.put(element, node);
- }
-
- protected Node removeNode(Object element)
- {
- return nodes.remove(element);
- }
-
- protected boolean filterRootElement(Object element)
- {
- if (rootElementFilter != null)
- {
- return rootElementFilter.filter(element);
- }
-
- return true;
- }
-
- /**
- * @since 3.1
- */
- protected void executeRunnable(Runnable runnable)
- {
- Thread thread = new Thread(runnable);
- thread.setDaemon(true);
- thread.start();
- }
-
- /**
- * @since 3.1
- */
- protected boolean isSlow(IContainer<Object> container)
- {
- return container instanceof ISlow;
- }
-
- /**
- * @since 3.1
- */
- protected String getSlowText(IContainer<Object> container)
- {
- return "Pending...";
- }
-
- /**
- * @since 3.1
- */
- protected String getErrorText(IContainer<Object> container)
- {
- return "Error";
- }
-
- @Override
- protected void fillContextMenu(IMenuManager manager, ITreeSelection selection)
- {
- super.fillContextMenu(manager, selection);
- if (selection.size() == 1)
- {
- Object element = selection.getFirstElement();
- if (element instanceof ContainerItemProvider.ErrorElement)
- {
- manager.add(new Action("Open Error Log")
- {
- @Override
- public void run()
- {
- try
- {
- UIUtil.getActiveWorkbenchPage().showView(UIUtil.ERROR_LOG_ID);
- }
- catch (PartInitException ex)
- {
- OM.LOG.error(ex);
- }
- }
- });
- }
- }
- }
-
- @Override
- public Font getFont(Object obj)
- {
- if (obj instanceof ContainerItemProvider.LazyElement)
- {
- return getItalicFont();
- }
-
- return super.getFont(obj);
- }
-
- @Override
- public Color getForeground(Object obj)
- {
- if (obj instanceof ContainerItemProvider.LazyElement)
- {
- return getDisplay().getSystemColor(SWT.COLOR_GRAY);
- }
-
- return super.getForeground(obj);
- }
-
- @Override
- public Image getImage(Object obj)
- {
- if (obj instanceof ContainerItemProvider.LazyElement)
- {
- return SharedIcons.getImage(SharedIcons.OBJ_PENDING);
- }
-
- if (obj instanceof ContainerItemProvider.ErrorElement)
- {
- return SharedIcons.getImage(SharedIcons.OBJ_ERROR);
- }
-
- return super.getImage(obj);
- }
-
- /**
- * @author Eike Stepper
- */
- public interface Node
- {
- public void dispose();
-
- public boolean isDisposed();
-
- public Object getElement();
-
- public Node getParent();
-
- public List<Node> getChildren();
-
- public TreePath getTreePath();
- }
-
- /**
- * @author Eike Stepper
- */
- public abstract class AbstractNode implements Node
- {
- private Node parent;
-
- private boolean disposed;
-
- public AbstractNode(Node parent)
- {
- this.parent = parent;
- }
-
- public void dispose()
- {
- if (!disposed)
- {
- removeNode(getElement());
- parent = null;
- disposed = true;
- }
- }
-
- public boolean isDisposed()
- {
- return disposed;
- }
-
- @Override
- public String toString()
- {
- return MessageFormat.format("{0}[{1}]", getClass().getSimpleName(), getElement()); //$NON-NLS-1$
- }
-
- public final Node getParent()
- {
- checkNotDisposed();
- return parent;
- }
-
- public TreePath getTreePath()
- {
- TreePath parentPath = parent == null ? TreePath.EMPTY : parent.getTreePath();
- return parentPath.createChildPath(getElement());
- }
-
- protected void checkNotDisposed()
- {
- if (disposed)
- {
- throw new IllegalStateException("Node is already disposed of"); //$NON-NLS-1$
- }
- }
-
- protected Node addChild(Collection<Node> children, Object element)
- {
- if (nodes.containsKey(element))
- {
- return null;
- }
-
- if (this != root || filterRootElement(element))
- {
- Node node = createNode(this, element);
- if (node != null)
- {
- addNode(element, node);
- children.add(node);
- return node;
- }
- }
-
- return null;
- }
- }
-
- /**
- * @author Eike Stepper
- */
- public abstract class AbstractContainerNode extends AbstractNode
- {
- private List<Node> children;
-
- protected IListener containerListener = new ContainerEventAdapter<Object>()
- {
- @Override
- protected void onAdded(IContainer<Object> container, Object element)
- {
- AbstractContainerNode.this.onAdded(container, element);
- }
-
- @Override
- protected void onRemoved(IContainer<Object> container, Object element)
- {
- AbstractContainerNode.this.onRemoved(container, element);
- }
-
- @Override
- protected void notifyOtherEvent(IEvent event)
- {
- updateLabels(event.getSource());
- }
- };
-
- public AbstractContainerNode(Node parent)
- {
- super(parent);
- }
-
- @Override
- public void dispose()
- {
- if (!isDisposed())
- {
- if (children != null)
- {
- for (Node child : children)
- {
- child.dispose();
- }
-
- children.clear();
- children = null;
- containerListener = null;
- }
-
- super.dispose();
- }
- }
-
- public final List<Node> getChildren()
- {
- checkNotDisposed();
- if (children == null)
- {
- children = createChildren();
- }
-
- return children;
- }
-
- @SuppressWarnings("unchecked")
- public IContainer<Object> getContainer()
- {
- return (IContainer<Object>)getElement();
- }
-
- protected List<Node> createChildren()
- {
- final List<Node> children = new ArrayList<Node>();
- final IContainer<Object> container = getContainer();
-
- if (isSlow(container))
- {
- final LazyElement lazyElement = new LazyElement(container);
- addChild(children, lazyElement);
-
- Runnable runnable = new Runnable()
- {
- public void run()
- {
- try
- {
- fillChildren(children, container);
- }
- catch (Exception ex)
- {
- OM.LOG.error(ex);
- addChild(children, new ErrorElement(container));
- }
- finally
- {
- Node node = removeNode(lazyElement);
- children.remove(node);
- refreshElement(container, false);
- }
- }
- };
-
- executeRunnable(runnable);
- }
- else
- {
- fillChildren(children, container);
- }
-
- container.addListener(containerListener);
- return children;
- }
-
- /**
- * @since 3.1
- */
- protected void fillChildren(List<Node> children, IContainer<Object> container)
- {
- Object[] elements = container.getElements();
- for (int i = 0; i < elements.length; i++)
- {
- Object element = elements[i];
- addChild(children, element);
- }
- }
-
- protected void onAdded(IContainer<Object> container, Object element)
- {
- Node node = addChild(getChildren(), element);
- if (node != null)
- {
- refreshElement(container, true);
- revealElement(element);
- elementAdded(element, container);
- }
- }
-
- protected void onRemoved(IContainer<Object> container, Object element)
- {
- Node node = removeNode(element);
- if (node != null)
- {
- getChildren().remove(node);
- elementRemoved(element, container);
-
- Object rootElement = root.getElement();
- Object refreshElement = container == rootElement ? null : container;
- refreshElement(refreshElement, true);
- node.dispose();
- }
- }
- }
-
- /**
- * @author Eike Stepper
- */
- public class ContainerNode extends AbstractContainerNode
- {
- private IContainer<Object> container;
-
- public ContainerNode(Node parent, IContainer<Object> container)
- {
- super(parent);
- this.container = container;
- if (container == null)
- {
- throw new IllegalArgumentException("container == null"); //$NON-NLS-1$
- }
- }
-
- @Override
- public void dispose()
- {
- if (!isDisposed())
- {
- container.removeListener(containerListener);
- container = null;
- super.dispose();
- }
- }
-
- public Object getElement()
- {
- return container;
- }
- }
-
- /**
- * @author Eike Stepper
- */
- public class LeafNode extends AbstractNode implements IListener
- {
- private Object element;
-
- public LeafNode(Node parent, Object element)
- {
- super(parent);
- this.element = element;
- EventUtil.addListener(element, this);
- }
-
- @Override
- public void dispose()
- {
- if (!isDisposed())
- {
- EventUtil.removeListener(element, this);
- element = null;
- super.dispose();
- }
- }
-
- public Object getElement()
- {
- checkNotDisposed();
- return element;
- }
-
- public List<Node> getChildren()
- {
- checkNotDisposed();
- return Collections.emptyList();
- }
-
- public void notifyEvent(IEvent event)
- {
- updateLabels(event.getSource());
- }
- }
-
- /**
- * @author Eike Stepper
- * @since 3.1
- */
- public class LazyElement
- {
- private IContainer<Object> container;
-
- public LazyElement(IContainer<Object> container)
- {
- this.container = container;
- }
-
- public IContainer<Object> getContainer()
- {
- return container;
- }
-
- @Override
- public String toString()
- {
- return getSlowText(container);
- }
- }
-
- /**
- * @author Eike Stepper
- * @since 3.1
- */
- public class ErrorElement
- {
- private IContainer<Object> container;
-
- public ErrorElement(IContainer<Object> container)
- {
- this.container = container;
- }
-
- public IContainer<Object> getContainer()
- {
- return container;
- }
-
- @Override
- public String toString()
- {
- return getErrorText(container);
- }
- }
-}
+/*
+ * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.net4j.util.ui.views;
+
+import org.eclipse.net4j.internal.util.bundle.OM;
+import org.eclipse.net4j.ui.shared.SharedIcons;
+import org.eclipse.net4j.util.container.ContainerEventAdapter;
+import org.eclipse.net4j.util.container.IContainer;
+import org.eclipse.net4j.util.container.ISlow;
+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.LifecycleState;
+import org.eclipse.net4j.util.lifecycle.LifecycleUtil;
+import org.eclipse.net4j.util.ui.UIUtil;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.viewers.ITreeSelection;
+import org.eclipse.jface.viewers.TreePath;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.graphics.Font;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.ui.PartInitException;
+
+import java.text.MessageFormat;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author Eike Stepper
+ */
+/**
+ * @author Eike Stepper
+ */
+public class ContainerItemProvider<CONTAINER extends IContainer<Object>> extends ItemProvider<CONTAINER>
+{
+ private Map<Object, Node> nodes = new HashMap<Object, Node>();
+
+ private Node root;
+
+ private IElementFilter rootElementFilter;
+
+ public ContainerItemProvider()
+ {
+ }
+
+ public ContainerItemProvider(IElementFilter rootElementFilter)
+ {
+ this.rootElementFilter = rootElementFilter;
+ }
+
+ public IElementFilter getRootElementFilter()
+ {
+ return rootElementFilter;
+ }
+
+ public Object[] getChildren(Object element)
+ {
+ try
+ {
+ Node node = getNode(element);
+ List<Node> children = node.getChildren();
+ for (Iterator<Node> it = children.iterator(); it.hasNext();)
+ {
+ Node child = it.next();
+ if (child.isDisposed())
+ {
+ it.remove();
+ }
+ else
+ {
+ Object childElement = child.getElement();
+ LifecycleState lifecycleState = LifecycleUtil.getLifecycleState(childElement);
+ if (lifecycleState == LifecycleState.INACTIVE || lifecycleState == LifecycleState.DEACTIVATING)
+ {
+ handleInactiveElement(it, child);
+ }
+ }
+ }
+
+ Object[] result = new Object[children.size()];
+ for (int i = 0; i < result.length; i++)
+ {
+ result[i] = children.get(i).getElement();
+ }
+
+ return result;
+ }
+ catch (RuntimeException ex)
+ {
+ return NO_ELEMENTS;
+ }
+ }
+
+ public Object getParent(Object element)
+ {
+ try
+ {
+ Node node = getNode(element);
+ Node parentNode = node.getParent();
+ return parentNode == null ? null : parentNode.getElement();
+ }
+ catch (RuntimeException ex)
+ {
+ return null;
+ }
+ }
+
+ @Override
+ public void dispose()
+ {
+ super.dispose();
+ }
+
+ @Override
+ protected void connectInput(CONTAINER input)
+ {
+ root = createNode(null, input);
+ if (root != null)
+ {
+ addNode(input, root);
+ }
+ }
+
+ @Override
+ protected void disconnectInput(CONTAINER input)
+ {
+ root.dispose();
+ root = null;
+ nodes.clear();
+ }
+
+ /**
+ * @since 2.0
+ */
+ protected void handleInactiveElement(Iterator<Node> it, Node child)
+ {
+ it.remove();
+ child.dispose();
+ }
+
+ protected void elementAdded(Object element, Object parent)
+ {
+ }
+
+ protected void elementRemoved(Object element, Object parent)
+ {
+ }
+
+ protected Node getRoot()
+ {
+ return root;
+ }
+
+ protected Map<Object, Node> getNodes()
+ {
+ return nodes;
+ }
+
+ protected Node getNode(Object element)
+ {
+ Node node = root;
+ if (element != getInput())
+ {
+ node = nodes.get(element);
+ }
+
+ if (node == null)
+ {
+ throw new IllegalStateException("No node for " + element); //$NON-NLS-1$
+ }
+
+ return node;
+ }
+
+ protected Node createNode(Node parent, Object element)
+ {
+ if (element instanceof IContainer<?>)
+ {
+ return createContaineNode(parent, element);
+ }
+
+ return createLeafNode(parent, element);
+ }
+
+ protected LeafNode createLeafNode(Node parent, Object element)
+ {
+ return new LeafNode(parent, element);
+ }
+
+ @SuppressWarnings("unchecked")
+ protected ContainerNode createContaineNode(Node parent, Object element)
+ {
+ return new ContainerNode(parent, (IContainer<Object>)element);
+ }
+
+ protected void addNode(Object element, Node node)
+ {
+ nodes.put(element, node);
+ }
+
+ protected Node removeNode(Object element)
+ {
+ return nodes.remove(element);
+ }
+
+ protected boolean filterRootElement(Object element)
+ {
+ if (rootElementFilter != null)
+ {
+ return rootElementFilter.filter(element);
+ }
+
+ return true;
+ }
+
+ /**
+ * @since 3.1
+ */
+ protected void executeRunnable(Runnable runnable)
+ {
+ Thread thread = new Thread(runnable);
+ thread.setDaemon(true);
+ thread.start();
+ }
+
+ /**
+ * @since 3.1
+ */
+ protected boolean isSlow(IContainer<Object> container)
+ {
+ return container instanceof ISlow;
+ }
+
+ /**
+ * @since 3.1
+ */
+ protected String getSlowText(IContainer<Object> container)
+ {
+ return "Pending...";
+ }
+
+ /**
+ * @since 3.1
+ */
+ protected String getErrorText(IContainer<Object> container)
+ {
+ return "Error";
+ }
+
+ @Override
+ protected void fillContextMenu(IMenuManager manager, ITreeSelection selection)
+ {
+ super.fillContextMenu(manager, selection);
+ if (selection.size() == 1)
+ {
+ Object element = selection.getFirstElement();
+ if (element instanceof ContainerItemProvider.ErrorElement)
+ {
+ manager.add(new Action("Open Error Log")
+ {
+ @Override
+ public void run()
+ {
+ try
+ {
+ UIUtil.getActiveWorkbenchPage().showView(UIUtil.ERROR_LOG_ID);
+ }
+ catch (PartInitException ex)
+ {
+ OM.LOG.error(ex);
+ }
+ }
+ });
+ }
+ }
+ }
+
+ @Override
+ public Font getFont(Object obj)
+ {
+ if (obj instanceof ContainerItemProvider.LazyElement)
+ {
+ return getItalicFont();
+ }
+
+ return super.getFont(obj);
+ }
+
+ @Override
+ public Color getForeground(Object obj)
+ {
+ if (obj instanceof ContainerItemProvider.LazyElement)
+ {
+ return getDisplay().getSystemColor(SWT.COLOR_GRAY);
+ }
+
+ return super.getForeground(obj);
+ }
+
+ @Override
+ public Image getImage(Object obj)
+ {
+ if (obj instanceof ContainerItemProvider.LazyElement)
+ {
+ return SharedIcons.getImage(SharedIcons.OBJ_PENDING);
+ }
+
+ if (obj instanceof ContainerItemProvider.ErrorElement)
+ {
+ return SharedIcons.getImage(SharedIcons.OBJ_ERROR);
+ }
+
+ return super.getImage(obj);
+ }
+
+ /**
+ * @author Eike Stepper
+ */
+ public interface Node
+ {
+ public void dispose();
+
+ public boolean isDisposed();
+
+ public Object getElement();
+
+ public Node getParent();
+
+ public List<Node> getChildren();
+
+ public TreePath getTreePath();
+ }
+
+ /**
+ * @author Eike Stepper
+ */
+ public abstract class AbstractNode implements Node
+ {
+ private Node parent;
+
+ private boolean disposed;
+
+ public AbstractNode(Node parent)
+ {
+ this.parent = parent;
+ }
+
+ public void dispose()
+ {
+ if (!disposed)
+ {
+ removeNode(getElement());
+ parent = null;
+ disposed = true;
+ }
+ }
+
+ public boolean isDisposed()
+ {
+ return disposed;
+ }
+
+ @Override
+ public String toString()
+ {
+ return MessageFormat.format("{0}[{1}]", getClass().getSimpleName(), getElement()); //$NON-NLS-1$
+ }
+
+ public final Node getParent()
+ {
+ checkNotDisposed();
+ return parent;
+ }
+
+ public TreePath getTreePath()
+ {
+ TreePath parentPath = parent == null ? TreePath.EMPTY : parent.getTreePath();
+ return parentPath.createChildPath(getElement());
+ }
+
+ protected void checkNotDisposed()
+ {
+ if (disposed)
+ {
+ throw new IllegalStateException("Node is already disposed of"); //$NON-NLS-1$
+ }
+ }
+
+ protected Node addChild(Collection<Node> children, Object element)
+ {
+ if (nodes.containsKey(element))
+ {
+ return null;
+ }
+
+ if (this != root || filterRootElement(element))
+ {
+ Node node = createNode(this, element);
+ if (node != null)
+ {
+ addNode(element, node);
+ children.add(node);
+ return node;
+ }
+ }
+
+ return null;
+ }
+ }
+
+ /**
+ * @author Eike Stepper
+ */
+ public abstract class AbstractContainerNode extends AbstractNode
+ {
+ private List<Node> children;
+
+ protected IListener containerListener = new ContainerEventAdapter<Object>()
+ {
+ @Override
+ protected void onAdded(IContainer<Object> container