diff options
14 files changed, 66 insertions, 33 deletions
diff --git a/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/bundle/AbstractOMBundle.java b/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/bundle/AbstractOMBundle.java index 04372b8a8b..ce6022f08e 100644 --- a/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/bundle/AbstractOMBundle.java +++ b/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/bundle/AbstractOMBundle.java @@ -45,7 +45,7 @@ public abstract class AbstractOMBundle implements OMBundle private boolean debuggingInitialized; - private Map<String, OMTracerImpl> tracers = new ConcurrentHashMap(); + private Map<String, OMTracerImpl> tracers = new ConcurrentHashMap(0); private OMLogger logger; @@ -53,9 +53,9 @@ public abstract class AbstractOMBundle implements OMBundle public ResourceBundle untranslatedResourceBundle; - public Map<String, String> strings = new HashMap(); + public Map<String, String> strings = new HashMap(0); - public Map<String, String> untranslatedStrings = new HashMap(); + public Map<String, String> untranslatedStrings = new HashMap(0); public boolean shouldTranslate = true; diff --git a/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/bundle/AbstractOMPlatform.java b/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/bundle/AbstractOMPlatform.java index 62f40f25a9..f692808a15 100644 --- a/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/bundle/AbstractOMPlatform.java +++ b/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/bundle/AbstractOMPlatform.java @@ -33,7 +33,7 @@ public abstract class AbstractOMPlatform implements OMPlatform private static ContextTracer __TRACER__; - private Map<String, AbstractOMBundle> bundles = new ConcurrentHashMap(); + private Map<String, AbstractOMBundle> bundles = new ConcurrentHashMap(0); private Queue<OMLogHandler> logHandlers = new ConcurrentLinkedQueue(); diff --git a/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/bundle/LegacyPlatform.java b/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/bundle/LegacyPlatform.java index 87df18e1c5..f44add1694 100644 --- a/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/bundle/LegacyPlatform.java +++ b/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/bundle/LegacyPlatform.java @@ -20,7 +20,7 @@ import java.util.concurrent.ConcurrentHashMap; */ public class LegacyPlatform extends AbstractOMPlatform { - private Map<String, String> debugOptions = new ConcurrentHashMap(); + private Map<String, String> debugOptions = new ConcurrentHashMap(0); public LegacyPlatform() { diff --git a/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/transport/AbstractConnector.java b/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/transport/AbstractConnector.java index dec095aec0..46853d7fe7 100644 --- a/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/transport/AbstractConnector.java +++ b/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/transport/AbstractConnector.java @@ -312,7 +312,7 @@ public abstract class AbstractConnector extends AbstractLifecycle implements Con public Channel[] getChannels() { - final List<Channel> result = new ArrayList<Channel>(); + final List<Channel> result = new ArrayList(channels.size()); synchronized (channels) { for (final ChannelImpl channel : channels) @@ -397,7 +397,7 @@ public abstract class AbstractConnector extends AbstractLifecycle implements Con protected List<Queue<Buffer>> getChannelBufferQueues() { - final List<Queue<Buffer>> result = new ArrayList(); + final List<Queue<Buffer>> result = new ArrayList(channels.size()); synchronized (channels) { for (final ChannelImpl channel : channels) diff --git a/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/transport/tcp/ControlChannelImpl.java b/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/transport/tcp/ControlChannelImpl.java index 0deb676c92..63b2e26e08 100644 --- a/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/transport/tcp/ControlChannelImpl.java +++ b/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/transport/tcp/ControlChannelImpl.java @@ -3,6 +3,7 @@ package org.eclipse.internal.net4j.transport.tcp; import org.eclipse.net4j.transport.Buffer; import org.eclipse.net4j.util.concurrent.Synchronizer; import org.eclipse.net4j.util.concurrent.SynchronizingCorrelator; +import org.eclipse.net4j.util.om.ContextTracer; import org.eclipse.internal.net4j.bundle.Net4j; import org.eclipse.internal.net4j.transport.BufferUtil; @@ -29,6 +30,9 @@ public final class ControlChannelImpl extends ChannelImpl public static final byte FAILURE = 0; + private static final ContextTracer TRACER = new ContextTracer(Net4j.DEBUG_CHANNEL, + ControlChannelImpl.class); + private SynchronizingCorrelator<Short, Boolean> registrations = new SynchronizingCorrelator(); public ControlChannelImpl(AbstractTCPConnector connector) @@ -120,7 +124,32 @@ public final class ControlChannelImpl extends ChannelImpl } case OPCODE_DEREGISTRATION: - throw new UnsupportedOperationException(); + { + short channelID = byteBuffer.getShort(); + assertValidChannelID(channelID); + + try + { + ChannelImpl channel = ((AbstractTCPConnector)getConnector()).getChannel(channelID); + if (channel != null) + { + channel.deactivate(); + } + else + { + if (TRACER.isEnabled()) + { + TRACER.trace(toString() + ": Invalid channel id: " + channelID); //$NON-NLS-1$ + } + } + } + catch (Exception ex) + { + Net4j.LOG.error(ex); + } + + break; + } default: Net4j.LOG.error("Invalid opcode: " + opcode); //$NON-NLS-1$ @@ -133,12 +162,6 @@ public final class ControlChannelImpl extends ChannelImpl } } - // private Buffer getBuffer() - // { - // return - // ((AbstractTCPConnector)getConnector()).getBufferProvider().provideBuffer(); - // } - private void sendStatus(byte opcode, short channelID, boolean status) { Buffer buffer = provideBuffer(); diff --git a/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/transport/tcp/TCPAcceptorImpl.java b/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/transport/tcp/TCPAcceptorImpl.java index c93c9b5f85..04b5a67b95 100644 --- a/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/transport/tcp/TCPAcceptorImpl.java +++ b/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/transport/tcp/TCPAcceptorImpl.java @@ -67,7 +67,7 @@ public class TCPAcceptorImpl extends AbstractLifecycle implements TCPAcceptor, B private SelectionKey selectionKey; - private Set<TCPConnector> acceptedConnectors = new HashSet(); + private Set<TCPConnector> acceptedConnectors = new HashSet(0); /** * An optional executor to be used by the {@link Channel}s to process their @@ -167,7 +167,7 @@ public class TCPAcceptorImpl extends AbstractLifecycle implements TCPAcceptor, B ArrayList<TCPConnector> result; synchronized (acceptedConnectors) { - result = new ArrayList<TCPConnector>(acceptedConnectors); + result = new ArrayList(acceptedConnectors); } return result.toArray(new TCPConnector[result.size()]); diff --git a/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/util/AbstractCachingMap.java b/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/util/AbstractCachingMap.java index bb69be2f2d..c384bb69fa 100644 --- a/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/util/AbstractCachingMap.java +++ b/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/util/AbstractCachingMap.java @@ -202,24 +202,31 @@ public abstract class AbstractCachingMap<K, V> extends AbstractDelegatingMap<K, protected Set<Entry<K, V>> mergedEntrySet() { - final Map<K, V> merged = new HashMap<K, V>(); - merged.putAll(getDelegate()); - merged.putAll(getCache()); + final Map<K, V> delegate = getDelegate(); + final Map<K, V> cache = getCache(); + final Map<K, V> merged = new HashMap(delegate.size() + cache.size()); + + merged.putAll(delegate); + merged.putAll(cache); return merged.entrySet(); } protected Set<K> mergedKeySet() { - final Set<K> merged = new HashSet<K>(); - merged.addAll(getDelegate().keySet()); - merged.addAll(getCache().keySet()); + final Set<K> delegateKeys = getDelegate().keySet(); + final Set<K> cacheKeys = getCache().keySet(); + final Set<K> merged = new HashSet(delegateKeys.size() + cacheKeys.size()); + + merged.addAll(delegateKeys); + merged.addAll(cacheKeys); return merged; } protected Collection<V> mergedValues() { - final List<V> result = new ArrayList<V>(); - for (K key : keySet()) + final Set<K> keys = keySet(); + final List<V> result = new ArrayList(keys.size()); + for (K key : keys) { result.add(get(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 2afc01f83f..b3f2bfa196 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 @@ -43,7 +43,7 @@ public abstract class SignalProtocol extends AbstractProtocol private ExecutorService executorService; - private Map<Integer, Signal> signals = new ConcurrentHashMap(); + private Map<Integer, Signal> signals = new ConcurrentHashMap(0); private int nextCorrelationID = MIN_CORRELATION_ID; diff --git a/plugins/org.eclipse.net4j/src/org/eclipse/net4j/transport/ProtocolFactory.java b/plugins/org.eclipse.net4j/src/org/eclipse/net4j/transport/ProtocolFactory.java index 86f6c3877a..fe16d6136d 100644 --- a/plugins/org.eclipse.net4j/src/org/eclipse/net4j/transport/ProtocolFactory.java +++ b/plugins/org.eclipse.net4j/src/org/eclipse/net4j/transport/ProtocolFactory.java @@ -17,7 +17,7 @@ public interface ProtocolFactory extends IRegistryElement<String> public static final Set<Type> FOR_SERVERS = Collections.singleton(Type.SERVER); - public static final Set<Type> SYMMETRIC = Collections.unmodifiableSet(new HashSet<Type>(Arrays + public static final Set<Type> SYMMETRIC = Collections.unmodifiableSet(new HashSet(Arrays .asList(new Type[] { Type.CLIENT, Type.SERVER }))); public Set<Type> getConnectorTypes(); diff --git a/plugins/org.eclipse.net4j/src/org/eclipse/net4j/util/concurrent/SynchronizingCorrelator.java b/plugins/org.eclipse.net4j/src/org/eclipse/net4j/util/concurrent/SynchronizingCorrelator.java index d43f462d62..7668f88388 100644 --- a/plugins/org.eclipse.net4j/src/org/eclipse/net4j/util/concurrent/SynchronizingCorrelator.java +++ b/plugins/org.eclipse.net4j/src/org/eclipse/net4j/util/concurrent/SynchronizingCorrelator.java @@ -19,7 +19,7 @@ import java.util.concurrent.ConcurrentMap; public class SynchronizingCorrelator<CORRELATION, RESULT> implements Correlator<CORRELATION, Synchronizer<RESULT>> { - private ConcurrentMap<CORRELATION, Synchronizer<RESULT>> map = new ConcurrentHashMap(); + private ConcurrentMap<CORRELATION, Synchronizer<RESULT>> map = new ConcurrentHashMap(0); public boolean isCorrelated(CORRELATION correlation) { diff --git a/plugins/org.eclipse.net4j/src/org/eclipse/net4j/util/registry/AbstractCachingRegistry.java b/plugins/org.eclipse.net4j/src/org/eclipse/net4j/util/registry/AbstractCachingRegistry.java index c7b116fc24..cd0f06179c 100644 --- a/plugins/org.eclipse.net4j/src/org/eclipse/net4j/util/registry/AbstractCachingRegistry.java +++ b/plugins/org.eclipse.net4j/src/org/eclipse/net4j/util/registry/AbstractCachingRegistry.java @@ -109,9 +109,12 @@ public abstract class AbstractCachingRegistry<ID, E extends IRegistryElement<ID> @Override public Set<ID> getElementIDs() { - Set<ID> ids = new HashSet(); - ids.addAll(super.getElementIDs()); - ids.addAll(getCache().keySet()); + final Set<ID> delegateIDs = super.getElementIDs(); + final Set<ID> cacheIDs = getCache().keySet(); + final Set<ID> ids = new HashSet(delegateIDs.size() + cacheIDs.size()); + + ids.addAll(delegateIDs); + ids.addAll(cacheIDs); return ids; } diff --git a/plugins/org.eclipse.net4j/src/org/eclipse/net4j/util/registry/AbstractRegistry.java b/plugins/org.eclipse.net4j/src/org/eclipse/net4j/util/registry/AbstractRegistry.java index 809fc0976b..f67d10cad1 100644 --- a/plugins/org.eclipse.net4j/src/org/eclipse/net4j/util/registry/AbstractRegistry.java +++ b/plugins/org.eclipse.net4j/src/org/eclipse/net4j/util/registry/AbstractRegistry.java @@ -93,7 +93,7 @@ public abstract class AbstractRegistry<ID, E extends IRegistryElement<ID>> imple public final synchronized Collection<E> getElements(boolean resolve) { Set<ID> elementKeys = getElementIDs(); - List<E> elements = new ArrayList<E>(elementKeys.size()); + List<E> elements = new ArrayList(elementKeys.size()); for (ID id : elementKeys) { elements.add(lookup(id, resolve)); diff --git a/plugins/org.eclipse.net4j/src/org/eclipse/net4j/util/registry/HashCacheRegistry.java b/plugins/org.eclipse.net4j/src/org/eclipse/net4j/util/registry/HashCacheRegistry.java index 29f80d4cbc..fb0c2e05d5 100644 --- a/plugins/org.eclipse.net4j/src/org/eclipse/net4j/util/registry/HashCacheRegistry.java +++ b/plugins/org.eclipse.net4j/src/org/eclipse/net4j/util/registry/HashCacheRegistry.java @@ -40,6 +40,6 @@ public class HashCacheRegistry<ID, E extends IRegistryElement<ID>> extends protected Map<ID, E> createCache() { - return new HashMap(); + return new HashMap(0); } } diff --git a/plugins/org.eclipse.net4j/src/org/eclipse/net4j/util/registry/HashMapRegistry.java b/plugins/org.eclipse.net4j/src/org/eclipse/net4j/util/registry/HashMapRegistry.java index 83b75fdaf3..e73fa9ae02 100644 --- a/plugins/org.eclipse.net4j/src/org/eclipse/net4j/util/registry/HashMapRegistry.java +++ b/plugins/org.eclipse.net4j/src/org/eclipse/net4j/util/registry/HashMapRegistry.java @@ -40,6 +40,6 @@ public class HashMapRegistry<ID, E extends IRegistryElement<ID>> extends protected Map<ID, E> createMap() { - return new HashMap(); + return new HashMap(0); } } |