From a24959b9ea4251b3b029a333a7de1510bb2be2bb Mon Sep 17 00:00:00 2001 From: Trustin Lee Date: Tue, 21 Apr 2009 23:59:59 +0000 Subject: [PATCH] Fixed issue NETTY-148: ChannelLocal.initialValue() must return non-null * Made ChannelLocal.initialValue() abstract * Null check in ChannelLocal --- .../java/org/jboss/netty/channel/ChannelLocal.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/jboss/netty/channel/ChannelLocal.java b/src/main/java/org/jboss/netty/channel/ChannelLocal.java index 1a07bb9a02..fffa08c1fb 100644 --- a/src/main/java/org/jboss/netty/channel/ChannelLocal.java +++ b/src/main/java/org/jboss/netty/channel/ChannelLocal.java @@ -33,7 +33,7 @@ import org.jboss.netty.util.internal.ConcurrentIdentityWeakKeyHashMap; * * @apiviz.stereotype utility */ -public class ChannelLocal { +public abstract class ChannelLocal { private final ConcurrentMap map = new ConcurrentIdentityWeakKeyHashMap(); @@ -44,14 +44,18 @@ public class ChannelLocal { super(); } - protected T initialValue(@SuppressWarnings("unused") Channel channel) { - return null; - } + protected abstract T initialValue(Channel channel); public T get(Channel channel) { T value = map.get(channel); if (value == null) { value = initialValue(channel); + if (value == null) { + throw new IllegalStateException( + ChannelLocal.class.getSimpleName() + + ".initialValue() must return non-null."); + } + T oldValue = setIfAbsent(channel, value); if (oldValue != null) { value = oldValue;