diff options
Diffstat (limited to 'plugins/org.eclipse.net4j/src/org')
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); |