Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.net4j/src/org')
-rw-r--r--plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/bundle/Net4j.java1
-rw-r--r--plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/bundle/PluginTransportContainer.java76
-rw-r--r--plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/transport/BufferFactory.java4
-rw-r--r--plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/transport/BufferPool.java3
-rw-r--r--plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/transport/Channel.java3
-rw-r--r--plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/transport/Connector.java39
-rw-r--r--plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/transport/TransportContainer.java22
-rw-r--r--plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/util/concurrent/NamedExecutorService.java137
-rw-r--r--plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/util/container/LifecycleEventConverter.java16
-rw-r--r--plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/util/container/ManagedContainer.java55
-rw-r--r--plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/util/container/PluginElementProcessorList.java132
-rw-r--r--plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/util/registry/Registry.java3
-rw-r--r--plugins/org.eclipse.net4j/src/org/eclipse/net4j/signal/SignalProtocol.java3
-rw-r--r--plugins/org.eclipse.net4j/src/org/eclipse/net4j/transport/ConnectorException.java2
-rw-r--r--plugins/org.eclipse.net4j/src/org/eclipse/net4j/transport/IPluginTransportContainer.java21
-rw-r--r--plugins/org.eclipse.net4j/src/org/eclipse/net4j/transport/ITransportContainer.java18
-rw-r--r--plugins/org.eclipse.net4j/src/org/eclipse/net4j/util/container/IManagedContainer.java5
17 files changed, 485 insertions, 55 deletions
diff --git a/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/bundle/Net4j.java b/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/bundle/Net4j.java
index 85e18742a3..74ad1659fb 100644
--- a/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/bundle/Net4j.java
+++ b/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/bundle/Net4j.java
@@ -94,6 +94,7 @@ public final class Net4j
public void stop(BundleContext context) throws Exception
{
+ PluginTransportContainer.dispose();
traceStop(context);
Net4j.BUNDLE.setBundleContext(null);
AbstractOMPlatform.systemContext = null;
diff --git a/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/bundle/PluginTransportContainer.java b/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/bundle/PluginTransportContainer.java
new file mode 100644
index 0000000000..3d708ee89f
--- /dev/null
+++ b/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/bundle/PluginTransportContainer.java
@@ -0,0 +1,76 @@
+/***************************************************************************
+ * Copyright (c) 2004, 2005, 2006 Eike Stepper, Germany.
+ * 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.internal.net4j.bundle;
+
+import org.eclipse.net4j.transport.IPluginTransportContainer;
+import org.eclipse.net4j.util.container.IElementProcessor;
+import org.eclipse.net4j.util.factory.IFactory;
+import org.eclipse.net4j.util.factory.IFactoryKey;
+import org.eclipse.net4j.util.registry.IRegistry;
+
+import org.eclipse.internal.net4j.transport.TransportContainer;
+import org.eclipse.internal.net4j.util.container.PluginElementProcessorList;
+import org.eclipse.internal.net4j.util.factory.PluginFactoryRegistry;
+
+import java.util.List;
+
+/**
+ * @author Eike Stepper
+ */
+public class PluginTransportContainer extends TransportContainer implements IPluginTransportContainer
+{
+ private static PluginTransportContainer instance;
+
+ private PluginTransportContainer()
+ {
+ }
+
+ @Override
+ protected IRegistry<IFactoryKey, IFactory> createFactoryRegistry()
+ {
+ return new PluginFactoryRegistry();
+ }
+
+ @Override
+ protected List<IElementProcessor> createPostProcessors()
+ {
+ return new PluginElementProcessorList();
+ }
+
+ static void dispose()
+ {
+ if (instance != null)
+ {
+ instance.deactivate();
+ instance = null;
+ }
+ }
+
+ public static synchronized PluginTransportContainer getInstance()
+ {
+ if (instance == null)
+ {
+ instance = new PluginTransportContainer();
+
+ try
+ {
+ instance.activate();
+ }
+ catch (Exception ex)
+ {
+ Net4j.LOG.error(ex);
+ instance = null;
+ }
+ }
+
+ return instance;
+ }
+}
diff --git a/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/transport/BufferFactory.java b/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/transport/BufferFactory.java
index 7517f9cd0c..45f772fb64 100644
--- a/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/transport/BufferFactory.java
+++ b/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/transport/BufferFactory.java
@@ -15,6 +15,8 @@ import org.eclipse.net4j.util.om.trace.ContextTracer;
import org.eclipse.internal.net4j.bundle.Net4j;
+import java.text.MessageFormat;
+
/**
* @author Eike Stepper
*/
@@ -53,6 +55,6 @@ public class BufferFactory extends BufferProvider
@Override
public String toString()
{
- return "BufferFactory[capacity=" + getBufferCapacity() + "]"; //$NON-NLS-1$ //$NON-NLS-2$
+ return MessageFormat.format("BufferFactory[{0}]", getBufferCapacity()); //$NON-NLS-1$
}
}
diff --git a/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/transport/BufferPool.java b/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/transport/BufferPool.java
index d744c3e313..a666a5fa32 100644
--- a/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/transport/BufferPool.java
+++ b/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/transport/BufferPool.java
@@ -20,6 +20,7 @@ import org.eclipse.internal.net4j.bundle.Net4j;
import java.lang.ref.ReferenceQueue;
import java.lang.ref.SoftReference;
+import java.text.MessageFormat;
import java.util.Queue;
import java.util.concurrent.ConcurrentLinkedQueue;
@@ -110,7 +111,7 @@ public class BufferPool extends BufferProvider implements IBufferPool, IBufferPo
@Override
public String toString()
{
- return "BufferPool[" + pooledBuffers + ", " + provider + "]"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ return MessageFormat.format("BufferPool[{0}]", getBufferCapacity()); //$NON-NLS-1$
}
@Override
diff --git a/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/transport/Channel.java b/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/transport/Channel.java
index 085a1d10b3..904536e256 100644
--- a/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/transport/Channel.java
+++ b/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/transport/Channel.java
@@ -28,6 +28,7 @@ import org.eclipse.internal.net4j.util.concurrent.AsynchronousWorkSerializer;
import org.eclipse.internal.net4j.util.concurrent.SynchronousWorkSerializer;
import org.eclipse.internal.net4j.util.lifecycle.Lifecycle;
+import java.text.MessageFormat;
import java.util.Queue;
import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.ExecutorService;
@@ -195,7 +196,7 @@ public class Channel extends Lifecycle implements IChannel, IBufferProvider
@Override
public String toString()
{
- return "Channel[" + connector + ", channelIndex=" + channelIndex + "]"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ return MessageFormat.format("Channel[{0}, {1}]", channelIndex, receiveHandler); //$NON-NLS-1$
}
@Override
diff --git a/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/transport/Connector.java b/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/transport/Connector.java
index 0cb1799e35..bb63d41fe4 100644
--- a/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/transport/Connector.java
+++ b/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/transport/Connector.java
@@ -22,13 +22,11 @@ import org.eclipse.net4j.transport.IConnectorCredentials;
import org.eclipse.net4j.transport.IConnectorStateEvent;
import org.eclipse.net4j.transport.IProtocol;
import org.eclipse.net4j.util.StringUtil;
-import org.eclipse.net4j.util.container.IContainerDelta;
import org.eclipse.net4j.util.container.IContainerDelta.Kind;
import org.eclipse.net4j.util.event.IListener;
import org.eclipse.net4j.util.event.INotifier;
import org.eclipse.net4j.util.factory.IFactory;
import org.eclipse.net4j.util.factory.IFactoryKey;
-import org.eclipse.net4j.util.lifecycle.ILifecycleEvent;
import org.eclipse.net4j.util.lifecycle.LifecycleUtil;
import org.eclipse.net4j.util.om.trace.ContextTracer;
import org.eclipse.net4j.util.registry.IRegistry;
@@ -83,21 +81,23 @@ public abstract class Connector extends Lifecycle implements IConnector
* Is registered with each {@link IChannel} of this {@link IConnector}.
* <p>
*/
- private transient IListener lifecycleEventConverter = new LifecycleEventConverter(this)
- {
- @Override
- protected void added(ILifecycleEvent e)
- {
- super.added(e);
- fireEvent(new ConnectorChannelsEvent(Connector.this, (IChannel)e.getLifecycle(), IContainerDelta.Kind.ADDED));
- }
-
- @Override
- protected void removed(ILifecycleEvent e)
- {
- fireEvent(new ConnectorChannelsEvent(Connector.this, (IChannel)e.getLifecycle(), IContainerDelta.Kind.REMOVED));
- super.removed(e);
- }
+ private transient IListener lifecycleEventConverter = new LifecycleEventConverter(this);
+ {
+ // @Override
+ // protected void added(ILifecycleEvent e)
+ // {
+ // super.added(e);
+ // fireEvent(new ConnectorChannelsEvent(Connector.this,
+ // (IChannel)e.getLifecycle(), IContainerDelta.Kind.ADDED));
+ // }
+ //
+ // @Override
+ // protected void removed(ILifecycleEvent e)
+ // {
+ // fireEvent(new ConnectorChannelsEvent(Connector.this,
+ // (IChannel)e.getLifecycle(), IContainerDelta.Kind.REMOVED));
+ // super.removed(e);
+ // }
};
private transient CountDownLatch finishedConnecting;
@@ -328,6 +328,11 @@ public abstract class Connector extends Lifecycle implements IConnector
public IChannel openChannel(String protocolID) throws ConnectorException
{
IProtocol protocol = createProtocol(protocolID);
+ if (protocol == null)
+ {
+ throw new IllegalArgumentException("Unknown protocolID: " + protocolID);
+ }
+
return openChannel(protocol);
}
diff --git a/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/transport/TransportContainer.java b/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/transport/TransportContainer.java
index f75c6c6d07..1650a03e6b 100644
--- a/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/transport/TransportContainer.java
+++ b/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/transport/TransportContainer.java
@@ -16,35 +16,17 @@ import org.eclipse.net4j.transport.TransportUtil;
import org.eclipse.net4j.util.container.IElementProcessor;
import org.eclipse.net4j.util.container.IManagedContainer;
-import org.eclipse.internal.net4j.bundle.Net4j;
+import org.eclipse.internal.net4j.util.concurrent.NamedExecutorService;
import org.eclipse.internal.net4j.util.container.ManagedContainer;
import java.text.MessageFormat;
import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.ThreadFactory;
/**
* @author Eike Stepper
*/
public class TransportContainer extends ManagedContainer implements ITransportContainer
{
- public static final String EXECUTOR_SERVICE_GROUP = Net4j.BUNDLE_ID + ".executorServices";
-
- public static final String BUFFER_PROVIDER_GROUP = Net4j.BUNDLE_ID + ".bufferProviders";
-
- public static final short DEFAULT_BUFFER_CAPACITY = 4096;
-
- public static final ThreadFactory THREAD_FACTORY = new ThreadFactory()
- {
- public Thread newThread(Runnable r)
- {
- Thread thread = new Thread(r);
- thread.setDaemon(true);
- return thread;
- }
- };
-
private short bufferCapacity;
public TransportContainer(short bufferCapacity)
@@ -98,7 +80,7 @@ public class TransportContainer extends ManagedContainer implements ITransportCo
protected ExecutorService createExecutorService()
{
- return Executors.newCachedThreadPool(THREAD_FACTORY);
+ return new NamedExecutorService();
}
/**
diff --git a/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/util/concurrent/NamedExecutorService.java b/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/util/concurrent/NamedExecutorService.java
new file mode 100644
index 0000000000..c9aaeda555
--- /dev/null
+++ b/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/util/concurrent/NamedExecutorService.java
@@ -0,0 +1,137 @@
+/***************************************************************************
+ * Copyright (c) 2004, 2005, 2006 Eike Stepper, Germany.
+ * 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.internal.net4j.util.concurrent;
+
+import java.text.MessageFormat;
+import java.util.Collection;
+import java.util.List;
+import java.util.concurrent.Callable;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.Future;
+import java.util.concurrent.ThreadFactory;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
+
+/**
+ * @author Eike Stepper
+ */
+public class NamedExecutorService implements ExecutorService
+{
+ public static final ThreadFactory THREAD_FACTORY = new ThreadFactory()
+ {
+ public Thread newThread(Runnable r)
+ {
+ Thread thread = new Thread(r);
+ thread.setDaemon(true);
+ return thread;
+ }
+ };
+
+ private String name;
+
+ private ExecutorService delegate;
+
+ public NamedExecutorService(String name, ExecutorService delegate)
+ {
+ this.name = name;
+ this.delegate = delegate;
+ }
+
+ public NamedExecutorService(String name, ThreadFactory threadFactory)
+ {
+ this(name, Executors.newCachedThreadPool(threadFactory));
+ }
+
+ public NamedExecutorService(String name)
+ {
+ this(name, THREAD_FACTORY);
+ }
+
+ public NamedExecutorService()
+ {
+ this("DaemonThreadPool");
+ }
+
+ public boolean awaitTermination(long timeout, TimeUnit unit) throws InterruptedException
+ {
+ return delegate.awaitTermination(timeout, unit);
+ }
+
+ public void execute(Runnable command)
+ {
+ delegate.execute(command);
+ }
+
+ public <T> List<Future<T>> invokeAll(Collection<Callable<T>> tasks, long timeout, TimeUnit unit)
+ throws InterruptedException
+ {
+ return delegate.invokeAll(tasks, timeout, unit);
+ }
+
+ public <T> List<Future<T>> invokeAll(Collection<Callable<T>> tasks) throws InterruptedException
+ {
+ return delegate.invokeAll(tasks);
+ }
+
+ public <T> T invokeAny(Collection<Callable<T>> tasks, long timeout, TimeUnit unit) throws InterruptedException,
+ ExecutionException, TimeoutException
+ {
+ return delegate.invokeAny(tasks, timeout, unit);
+ }
+
+ public <T> T invokeAny(Collection<Callable<T>> tasks) throws InterruptedException, ExecutionException
+ {
+ return delegate.invokeAny(tasks);
+ }
+
+ public boolean isShutdown()
+ {
+ return delegate.isShutdown();
+ }
+
+ public boolean isTerminated()
+ {
+ return delegate.isTerminated();
+ }
+
+ public void shutdown()
+ {
+ delegate.shutdown();
+ }
+
+ public List<Runnable> shutdownNow()
+ {
+ return delegate.shutdownNow();
+ }
+
+ public <T> Future<T> submit(Callable<T> task)
+ {
+ return delegate.submit(task);
+ }
+
+ public <T> Future<T> submit(Runnable task, T result)
+ {
+ return delegate.submit(task, result);
+ }
+
+ public Future<?> submit(Runnable task)
+ {
+ return delegate.submit(task);
+ }
+
+ @Override
+ public String toString()
+ {
+ return MessageFormat.format("ExecutorService[{0}]", name); //$NON-NLS-1$
+ }
+} \ No newline at end of file
diff --git a/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/util/container/LifecycleEventConverter.java b/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/util/container/LifecycleEventConverter.java
index 7d809efaa9..a224b7953d 100644
--- a/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/util/container/LifecycleEventConverter.java
+++ b/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/util/container/LifecycleEventConverter.java
@@ -40,28 +40,30 @@ public class LifecycleEventConverter<E> implements IListener
{
case ACTIVATED:
added(e);
- fireContainerEvent(e, IContainerDelta.Kind.ADDED);
- return;
+ break;
case DEACTIVATED:
removed(e);
- fireContainerEvent(e, IContainerDelta.Kind.REMOVED);
- return;
+ break;
}
}
-
- owner.fireEvent(event);
+ // else
+ // {
+ // owner.fireEvent(event);
+ // }
}
protected void added(ILifecycleEvent e)
{
+ fireContainerEvent(e, IContainerDelta.Kind.ADDED);
}
protected void removed(ILifecycleEvent e)
{
+ fireContainerEvent(e, IContainerDelta.Kind.REMOVED);
}
- private void fireContainerEvent(ILifecycleEvent e, IContainerDelta.Kind kind)
+ protected void fireContainerEvent(ILifecycleEvent e, IContainerDelta.Kind kind)
{
ContainerEvent<E> containerEvent = new ContainerEvent<E>((IContainer<E>)owner);
containerEvent.addDelta(new ContainerDelta<E>((E)e.getLifecycle(), kind));
diff --git a/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/util/container/ManagedContainer.java b/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/util/container/ManagedContainer.java
index 0c3da3d082..6d66dae3b5 100644
--- a/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/util/container/ManagedContainer.java
+++ b/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/util/container/ManagedContainer.java
@@ -34,7 +34,9 @@ import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
+import java.util.HashSet;
import java.util.List;
+import java.util.Set;
import java.util.Map.Entry;
/**
@@ -90,6 +92,44 @@ public class ManagedContainer extends Lifecycle implements IManagedContainer
getPostProcessors().remove(postProcessor);
}
+ public Set<String> getProductGroups()
+ {
+ Set<String> result = new HashSet();
+ for (IFactoryKey key : factoryRegistry.keySet())
+ {
+ result.add(key.getProductGroup());
+ }
+
+ for (ElementKey key : elementRegistry.keySet())
+ {
+ result.add(key.getProductGroup());
+ }
+
+ return result;
+ }
+
+ public Set<String> getFactoryTypes(String productGroup)
+ {
+ Set<String> result = new HashSet();
+ for (IFactoryKey key : factoryRegistry.keySet())
+ {
+ if (ObjectUtil.equals(key.getProductGroup(), productGroup))
+ {
+ result.add(key.getType());
+ }
+ }
+
+ for (ElementKey key : elementRegistry.keySet())
+ {
+ if (ObjectUtil.equals(key.getProductGroup(), productGroup))
+ {
+ result.add(key.getFactoryType());
+ }
+ }
+
+ return result;
+ }
+
public boolean isEmpty()
{
return elementRegistry.isEmpty();
@@ -259,12 +299,12 @@ public class ManagedContainer extends Lifecycle implements IManagedContainer
return "ManagedContainer";
}
- protected HashMapRegistry createFactoryRegistry()
+ protected IRegistry<IFactoryKey, IFactory> createFactoryRegistry()
{
return new HashMapRegistry();
}
- protected ArrayList createPostProcessors()
+ protected List<IElementProcessor> createPostProcessors()
{
return new ArrayList();
}
@@ -308,6 +348,14 @@ public class ManagedContainer extends Lifecycle implements IManagedContainer
}
@Override
+ protected void doActivate() throws Exception
+ {
+ super.doActivate();
+ LifecycleUtil.activate(getFactoryRegistry());
+ LifecycleUtil.activate(getPostProcessors());
+ }
+
+ @Override
protected void doDeactivate() throws Exception
{
for (Object element : elementRegistry.values())
@@ -321,6 +369,9 @@ public class ManagedContainer extends Lifecycle implements IManagedContainer
Net4j.LOG.error(ex);
}
}
+
+ LifecycleUtil.deactivate(factoryRegistry);
+ LifecycleUtil.deactivate(postProcessors);
super.doDeactivate();
}
diff --git a/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/util/container/PluginElementProcessorList.java b/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/util/container/PluginElementProcessorList.java
index 4feabbbf97..4f0f55ed93 100644
--- a/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/util/container/PluginElementProcessorList.java
+++ b/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/util/container/PluginElementProcessorList.java
@@ -22,18 +22,21 @@ import org.eclipse.internal.net4j.bundle.Net4j;
import org.eclipse.internal.net4j.util.lifecycle.Lifecycle;
import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
import java.util.List;
+import java.util.ListIterator;
/**
* @author Eike Stepper
*/
-public class PluginElementProcessorList extends Lifecycle
+public class PluginElementProcessorList extends Lifecycle implements List<IElementProcessor>
{
private static final String ATTR_CLASS = "class";
public static final String NAMESPACE = Net4j.BUNDLE_ID;
- public static final String EXT_POINT = "postProcessors";
+ public static final String EXT_POINT = "elementProcessors";
private List<IElementProcessor> processors = new ArrayList();
@@ -54,6 +57,131 @@ public class PluginElementProcessorList extends Lifecycle
{
}
+ public boolean add(IElementProcessor o)
+ {
+ return processors.add(o);
+ }
+
+ public void add(int index, IElementProcessor element)
+ {
+ processors.add(index, element);
+ }
+
+ public boolean addAll(Collection<? extends IElementProcessor> c)
+ {
+ return processors.addAll(c);
+ }
+
+ public boolean addAll(int index, Collection<? extends IElementProcessor> c)
+ {
+ return processors.addAll(index, c);
+ }
+
+ public void clear()
+ {
+ processors.clear();
+ }
+
+ public boolean contains(Object o)
+ {
+ return processors.contains(o);
+ }
+
+ public boolean containsAll(Collection<?> c)
+ {
+ return processors.containsAll(c);
+ }
+
+ public boolean equals(Object o)
+ {
+ return processors.equals(o);
+ }
+
+ public IElementProcessor get(int index)
+ {
+ return processors.get(index);
+ }
+
+ public int hashCode()
+ {
+ return processors.hashCode();
+ }
+
+ public int indexOf(Object o)
+ {
+ return processors.indexOf(o);
+ }
+
+ public boolean isEmpty()
+ {
+ return processors.isEmpty();
+ }
+
+ public Iterator<IElementProcessor> iterator()
+ {
+ return processors.iterator();
+ }
+
+ public int lastIndexOf(Object o)
+ {
+ return processors.lastIndexOf(o);
+ }
+
+ public ListIterator<IElementProcessor> listIterator()
+ {
+ return processors.listIterator();
+ }
+
+ public ListIterator<IElementProcessor> listIterator(int index)
+ {
+ return processors.listIterator(index);
+ }
+
+ public IElementProcessor remove(int index)
+ {
+ return processors.remove(index);
+ }
+
+ public boolean remove(Object o)
+ {
+ return processors.remove(o);
+ }
+
+ public boolean removeAll(Collection<?> c)
+ {
+ return processors.removeAll(c);
+ }
+
+ public boolean retainAll(Collection<?> c)
+ {
+ return processors.retainAll(c);
+ }
+
+ public IElementProcessor set(int index, IElementProcessor element)
+ {
+ return processors.set(index, element);
+ }
+
+ public int size()
+ {
+ return processors.size();
+ }
+
+ public List<IElementProcessor> subList(int fromIndex, int toIndex)
+ {
+ return processors.subList(fromIndex, toIndex);
+ }
+
+ public Object[] toArray()
+ {
+ return processors.toArray();
+ }
+
+ public <T> T[] toArray(T[] a)
+ {
+ return processors.toArray(a);
+ }
+
@Override
protected void doActivate() throws Exception
{
diff --git a/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/util/registry/Registry.java b/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/util/registry/Registry.java
index 3417deb9e9..bb22b62ba9 100644
--- a/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/util/registry/Registry.java
+++ b/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/util/registry/Registry.java
@@ -129,8 +129,7 @@ public abstract class Registry<K, V> extends Lifecycle implements IRegistry<K, V
{
if (!isEmpty())
{
- Set<K> keys = keySet();
- for (K key : keys)
+ for (Object key : keySet().toArray())
{
deregister(key);
}
diff --git a/plugins/org.eclipse.net4j/src/org/eclipse/net4j/signal/SignalProtocol.java b/plugins/org.eclipse.net4j/src/org/eclipse/net4j/signal/SignalProtocol.java
index 9fa8d58c05..5d0c85aa82 100644
--- a/plugins/org.eclipse.net4j/src/org/eclipse/net4j/signal/SignalProtocol.java
+++ b/plugins/org.eclipse.net4j/src/org/eclipse/net4j/signal/SignalProtocol.java
@@ -21,6 +21,7 @@ import org.eclipse.internal.net4j.transport.BufferUtil;
import org.eclipse.internal.net4j.transport.Protocol;
import java.nio.ByteBuffer;
+import java.text.MessageFormat;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ExecutorService;
@@ -131,7 +132,7 @@ public abstract class SignalProtocol extends Protocol
@Override
public String toString()
{
- return "SignalProtocol[" + getType() + ", " + getChannel() + "]"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ return MessageFormat.format("SignalProtocol[{0}]", getType()); //$NON-NLS-1$
}
protected final SignalReactor createSignalReactor(short signalID)
diff --git a/plugins/org.eclipse.net4j/src/org/eclipse/net4j/transport/ConnectorException.java b/plugins/org.eclipse.net4j/src/org/eclipse/net4j/transport/ConnectorException.java
index 051f2a20cd..294d41e3a7 100644
--- a/plugins/org.eclipse.net4j/src/org/eclipse/net4j/transport/ConnectorException.java
+++ b/plugins/org.eclipse.net4j/src/org/eclipse/net4j/transport/ConnectorException.java
@@ -13,7 +13,7 @@ package org.eclipse.net4j.transport;
/**
* @author Eike Stepper
*/
-public class ConnectorException extends Exception
+public class ConnectorException extends RuntimeException
{
private static final long serialVersionUID = 1L;
diff --git a/plugins/org.eclipse.net4j/src/org/eclipse/net4j/transport/IPluginTransportContainer.java b/plugins/org.eclipse.net4j/src/org/eclipse/net4j/transport/IPluginTransportContainer.java
new file mode 100644
index 0000000000..4c7c8966f7
--- /dev/null
+++ b/plugins/org.eclipse.net4j/src/org/eclipse/net4j/transport/IPluginTransportContainer.java
@@ -0,0 +1,21 @@
+/***************************************************************************
+ * Copyright (c) 2004, 2005, 2006 Eike Stepper, Germany.
+ * 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.transport;
+
+import org.eclipse.internal.net4j.bundle.PluginTransportContainer;
+
+/**
+ * @author Eike Stepper
+ */
+public interface IPluginTransportContainer extends ITransportContainer
+{
+ public static final ITransportContainer INSTANCE = PluginTransportContainer.getInstance();
+}
diff --git a/plugins/org.eclipse.net4j/src/org/eclipse/net4j/transport/ITransportContainer.java b/plugins/org.eclipse.net4j/src/org/eclipse/net4j/transport/ITransportContainer.java
index 0dba548671..de130f2ddd 100644
--- a/plugins/org.eclipse.net4j/src/org/eclipse/net4j/transport/ITransportContainer.java
+++ b/plugins/org.eclipse.net4j/src/org/eclipse/net4j/transport/ITransportContainer.java
@@ -1,7 +1,19 @@
+/***************************************************************************
+ * Copyright (c) 2004, 2005, 2006 Eike Stepper, Germany.
+ * 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.transport;
import org.eclipse.net4j.util.container.IManagedContainer;
+import org.eclipse.internal.net4j.bundle.Net4j;
+
import java.util.concurrent.ExecutorService;
/**
@@ -9,6 +21,12 @@ import java.util.concurrent.ExecutorService;
*/
public interface ITransportContainer extends IManagedContainer
{
+ public static final String EXECUTOR_SERVICE_GROUP = Net4j.BUNDLE_ID + ".executorServices";
+
+ public static final String BUFFER_PROVIDER_GROUP = Net4j.BUNDLE_ID + ".bufferProviders";
+
+ public static final short DEFAULT_BUFFER_CAPACITY = 4096;
+
public short getBufferCapacity();
public IBufferProvider getBufferProvider();
diff --git a/plugins/org.eclipse.net4j/src/org/eclipse/net4j/util/container/IManagedContainer.java b/plugins/org.eclipse.net4j/src/org/eclipse/net4j/util/container/IManagedContainer.java
index 68f9ab6966..12e9875468 100644
--- a/plugins/org.eclipse.net4j/src/org/eclipse/net4j/util/container/IManagedContainer.java
+++ b/plugins/org.eclipse.net4j/src/org/eclipse/net4j/util/container/IManagedContainer.java
@@ -18,6 +18,7 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;
+import java.util.Set;
/**
* @author Eike Stepper
@@ -32,6 +33,10 @@ public interface IManagedContainer extends IContainer
public void removePostProcessor(IElementProcessor postProcessor);
+ public Set<String> getProductGroups();
+
+ public Set<String> getFactoryTypes(String productGroup);
+
public Object[] getElements(String productGroup);
public Object[] getElements(String productGroup, String factoryType);

Back to the top