Make PrimitiveCollections generated for all primitive maps.
Motivation: We should support XXXCollections methods for all primitive map types. Modifications: Removed PrimitiveCollections and added a template for XXXCollections. Result: Fixes #4001
This commit is contained in:
parent
93fc3c6e45
commit
296649cfc8
@ -34,9 +34,9 @@ import static io.netty.handler.codec.http2.Http2Stream.State.RESERVED_REMOTE;
|
|||||||
import static io.netty.util.internal.ObjectUtil.checkNotNull;
|
import static io.netty.util.internal.ObjectUtil.checkNotNull;
|
||||||
import io.netty.buffer.ByteBuf;
|
import io.netty.buffer.ByteBuf;
|
||||||
import io.netty.handler.codec.http2.Http2Stream.State;
|
import io.netty.handler.codec.http2.Http2Stream.State;
|
||||||
|
import io.netty.util.collection.IntCollections;
|
||||||
import io.netty.util.collection.IntObjectHashMap;
|
import io.netty.util.collection.IntObjectHashMap;
|
||||||
import io.netty.util.collection.IntObjectMap;
|
import io.netty.util.collection.IntObjectMap;
|
||||||
import io.netty.util.collection.PrimitiveCollections;
|
|
||||||
import io.netty.util.internal.EmptyArrays;
|
import io.netty.util.internal.EmptyArrays;
|
||||||
import io.netty.util.internal.PlatformDependent;
|
import io.netty.util.internal.PlatformDependent;
|
||||||
import io.netty.util.internal.SystemPropertyUtil;
|
import io.netty.util.internal.SystemPropertyUtil;
|
||||||
@ -292,7 +292,7 @@ public class DefaultHttp2Connection implements Http2Connection {
|
|||||||
private State state;
|
private State state;
|
||||||
private short weight = DEFAULT_PRIORITY_WEIGHT;
|
private short weight = DEFAULT_PRIORITY_WEIGHT;
|
||||||
private DefaultStream parent;
|
private DefaultStream parent;
|
||||||
private IntObjectMap<DefaultStream> children = PrimitiveCollections.emptyIntObjectMap();
|
private IntObjectMap<DefaultStream> children = IntCollections.emptyMap();
|
||||||
private int totalChildWeights;
|
private int totalChildWeights;
|
||||||
private int prioritizableForTree = 1;
|
private int prioritizableForTree = 1;
|
||||||
private boolean resetSent;
|
private boolean resetSent;
|
||||||
@ -539,7 +539,7 @@ public class DefaultHttp2Connection implements Http2Connection {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void initChildrenIfEmpty() {
|
private void initChildrenIfEmpty() {
|
||||||
if (children == PrimitiveCollections.<DefaultStream>emptyIntObjectMap()) {
|
if (children == IntCollections.<DefaultStream>emptyMap()) {
|
||||||
initChildren();
|
initChildren();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -59,7 +59,6 @@ import io.netty.channel.ChannelHandlerContext;
|
|||||||
import io.netty.channel.ChannelPromise;
|
import io.netty.channel.ChannelPromise;
|
||||||
import io.netty.handler.codec.http2.Http2CodecUtil.SimpleChannelPromiseAggregator;
|
import io.netty.handler.codec.http2.Http2CodecUtil.SimpleChannelPromiseAggregator;
|
||||||
import io.netty.handler.codec.http2.Http2FrameWriter.Configuration;
|
import io.netty.handler.codec.http2.Http2FrameWriter.Configuration;
|
||||||
import io.netty.util.collection.CharObjectMap;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A {@link Http2FrameWriter} that supports all frame types defined by the HTTP/2 specification.
|
* A {@link Http2FrameWriter} that supports all frame types defined by the HTTP/2 specification.
|
||||||
@ -213,7 +212,7 @@ public class DefaultHttp2FrameWriter implements Http2FrameWriter, Http2FrameSize
|
|||||||
int payloadLength = SETTING_ENTRY_LENGTH * settings.size();
|
int payloadLength = SETTING_ENTRY_LENGTH * settings.size();
|
||||||
ByteBuf buf = ctx.alloc().buffer(FRAME_HEADER_LENGTH + settings.size() * SETTING_ENTRY_LENGTH);
|
ByteBuf buf = ctx.alloc().buffer(FRAME_HEADER_LENGTH + settings.size() * SETTING_ENTRY_LENGTH);
|
||||||
writeFrameHeaderInternal(buf, payloadLength, SETTINGS, new Http2Flags(), 0);
|
writeFrameHeaderInternal(buf, payloadLength, SETTINGS, new Http2Flags(), 0);
|
||||||
for (CharObjectMap.PrimitiveEntry<Long> entry : settings.entries()) {
|
for (Http2Settings.PrimitiveEntry<Long> entry : settings.entries()) {
|
||||||
writeUnsignedShort(entry.key(), buf);
|
writeUnsignedShort(entry.key(), buf);
|
||||||
writeUnsignedInt(entry.value(), buf);
|
writeUnsignedInt(entry.value(), buf);
|
||||||
}
|
}
|
||||||
|
@ -1,20 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2014 The Netty Project
|
|
||||||
*
|
|
||||||
* The Netty Project licenses this file to you under the Apache License,
|
|
||||||
* version 2.0 (the "License"); you may not use this file except in compliance
|
|
||||||
* with the License. You may obtain a copy of the License at:
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
||||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
||||||
* License for the specific language governing permissions and limitations
|
|
||||||
* under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Utility classes for commonly used collections.
|
|
||||||
*/
|
|
||||||
package io.netty.util.collection;
|
|
@ -22,47 +22,46 @@ import java.util.NoSuchElementException;
|
|||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Utility methods for primitive collections.
|
* Utilities for @k@-based primitive collections.
|
||||||
*/
|
*/
|
||||||
public final class PrimitiveCollections {
|
public final class @K@Collections {
|
||||||
|
|
||||||
private static final IntObjectMap<Object> EMPTY_INT_OBJECT_MAP = new EmptyIntObjectMap();
|
private static final @K@ObjectMap<Object> EMPTY_MAP = new EmptyMap();
|
||||||
|
|
||||||
private PrimitiveCollections() {
|
private @K@Collections() {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns an unmodifiable empty {@link IntObjectMap}.
|
* Returns an unmodifiable empty {@link @K@ObjectMap}.
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
public static <V> IntObjectMap<V> emptyIntObjectMap() {
|
public static <V> @K@ObjectMap<V> emptyMap() {
|
||||||
return (IntObjectMap<V>) EMPTY_INT_OBJECT_MAP;
|
return (@K@ObjectMap<V>) EMPTY_MAP;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates an unmodifiable wrapper around the given map.
|
* Creates an unmodifiable wrapper around the given map.
|
||||||
*/
|
*/
|
||||||
public static <V> IntObjectMap<V> unmodifiableIntObjectMap(final IntObjectMap<V> map) {
|
public static <V> @K@ObjectMap<V> unmodifiableMap(final @K@ObjectMap<V> map) {
|
||||||
return new UnmodifiableIntObjectMap<V>(map);
|
return new UnmodifiableMap<V>(map);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An empty map. All operations that attempt to modify the map are unsupported.
|
* An empty map. All operations that attempt to modify the map are unsupported.
|
||||||
*/
|
*/
|
||||||
private static final class EmptyIntObjectMap implements IntObjectMap<Object> {
|
private static final class EmptyMap implements @K@ObjectMap<Object> {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object get(int key) {
|
public Object get(@k@ key) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object put(int key, Object value) {
|
public Object put(@k@ key, Object value) {
|
||||||
throw new UnsupportedOperationException("put");
|
throw new UnsupportedOperationException("put");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object remove(int key) {
|
public Object remove(@k@ key) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -87,12 +86,12 @@ public final class PrimitiveCollections {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Set<Integer> keySet() {
|
public Set<@O@> keySet() {
|
||||||
return Collections.emptySet();
|
return Collections.emptySet();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean containsKey(int key) {
|
public boolean containsKey(@k@ key) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -112,7 +111,7 @@ public final class PrimitiveCollections {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object put(Integer key, Object value) {
|
public Object put(@O@ key, Object value) {
|
||||||
throw new UnsupportedOperationException();
|
throw new UnsupportedOperationException();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -122,7 +121,7 @@ public final class PrimitiveCollections {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void putAll(Map<? extends Integer, ?> m) {
|
public void putAll(Map<? extends @O@, ?> m) {
|
||||||
throw new UnsupportedOperationException();
|
throw new UnsupportedOperationException();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -132,39 +131,39 @@ public final class PrimitiveCollections {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Set<Entry<Integer, Object>> entrySet() {
|
public Set<Entry<@O@, Object>> entrySet() {
|
||||||
return Collections.emptySet();
|
return Collections.emptySet();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An unmodifiable wrapper around a {@link IntObjectMap}.
|
* An unmodifiable wrapper around a {@link @K@ObjectMap}.
|
||||||
*
|
*
|
||||||
* @param <V> the value type stored in the map.
|
* @param <V> the value type stored in the map.
|
||||||
*/
|
*/
|
||||||
private static final class UnmodifiableIntObjectMap<V> implements IntObjectMap<V> {
|
private static final class UnmodifiableMap<V> implements @K@ObjectMap<V> {
|
||||||
private final IntObjectMap<V> map;
|
private final @K@ObjectMap<V> map;
|
||||||
private Set<Integer> keySet;
|
private Set<@O@> keySet;
|
||||||
private Set<Entry<Integer, V>> entrySet;
|
private Set<Entry<@O@, V>> entrySet;
|
||||||
private Collection<V> values;
|
private Collection<V> values;
|
||||||
private Iterable<PrimitiveEntry<V>> entries;
|
private Iterable<PrimitiveEntry<V>> entries;
|
||||||
|
|
||||||
UnmodifiableIntObjectMap(IntObjectMap<V> map) {
|
UnmodifiableMap(@K@ObjectMap<V> map) {
|
||||||
this.map = map;
|
this.map = map;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public V get(int key) {
|
public V get(@k@ key) {
|
||||||
return map.get(key);
|
return map.get(key);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public V put(int key, V value) {
|
public V put(@k@ key, V value) {
|
||||||
throw new UnsupportedOperationException("put");
|
throw new UnsupportedOperationException("put");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public V remove(int key) {
|
public V remove(@k@ key) {
|
||||||
throw new UnsupportedOperationException("remove");
|
throw new UnsupportedOperationException("remove");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -184,7 +183,7 @@ public final class PrimitiveCollections {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean containsKey(int key) {
|
public boolean containsKey(@k@ key) {
|
||||||
return map.containsKey(key);
|
return map.containsKey(key);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -204,7 +203,7 @@ public final class PrimitiveCollections {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public V put(Integer key, V value) {
|
public V put(@O@ key, V value) {
|
||||||
throw new UnsupportedOperationException("put");
|
throw new UnsupportedOperationException("put");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -214,7 +213,7 @@ public final class PrimitiveCollections {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void putAll(Map<? extends Integer, ? extends V> m) {
|
public void putAll(Map<? extends @O@, ? extends V> m) {
|
||||||
throw new UnsupportedOperationException("putAll");
|
throw new UnsupportedOperationException("putAll");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -233,7 +232,7 @@ public final class PrimitiveCollections {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Set<Integer> keySet() {
|
public Set<@O@> keySet() {
|
||||||
if (keySet == null) {
|
if (keySet == null) {
|
||||||
keySet = Collections.unmodifiableSet(map.keySet());
|
keySet = Collections.unmodifiableSet(map.keySet());
|
||||||
}
|
}
|
||||||
@ -241,7 +240,7 @@ public final class PrimitiveCollections {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Set<Entry<Integer, V>> entrySet() {
|
public Set<Entry<@O@, V>> entrySet() {
|
||||||
if (entrySet == null) {
|
if (entrySet == null) {
|
||||||
entrySet = Collections.unmodifiableSet(map.entrySet());
|
entrySet = Collections.unmodifiableSet(map.entrySet());
|
||||||
}
|
}
|
||||||
@ -289,14 +288,14 @@ public final class PrimitiveCollections {
|
|||||||
* Unmodifiable wrapper for an entry.
|
* Unmodifiable wrapper for an entry.
|
||||||
*/
|
*/
|
||||||
private class EntryImpl implements PrimitiveEntry<V> {
|
private class EntryImpl implements PrimitiveEntry<V> {
|
||||||
final PrimitiveEntry<V> entry;
|
private final PrimitiveEntry<V> entry;
|
||||||
|
|
||||||
EntryImpl(PrimitiveEntry<V> entry) {
|
EntryImpl(PrimitiveEntry<V> entry) {
|
||||||
this.entry = entry;
|
this.entry = entry;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int key() {
|
public @k@ key() {
|
||||||
return entry.key();
|
return entry.key();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user