From 6568cbfec42c07e2121a5adeb342b069fa0a065a Mon Sep 17 00:00:00 2001 From: Norman Maurer Date: Thu, 21 Feb 2013 19:38:23 +0100 Subject: [PATCH] [#1071] Remove Attribute from map after Attribute.remove() was called --- common/src/main/java/io/netty/util/Attribute.java | 3 +-- common/src/main/java/io/netty/util/DefaultAttributeMap.java | 6 ++++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/common/src/main/java/io/netty/util/Attribute.java b/common/src/main/java/io/netty/util/Attribute.java index b104a16a72..41c7bb8390 100644 --- a/common/src/main/java/io/netty/util/Attribute.java +++ b/common/src/main/java/io/netty/util/Attribute.java @@ -49,8 +49,7 @@ public interface Attribute { boolean compareAndSet(T oldValue, T newValue); /** - * Remove the current value which is stored in this {@link Attribute}, which means after this call {@link #get()} - * will return {@code null}. + * Remove this attribute from the {@link AttributeMap}. */ void remove(); } diff --git a/common/src/main/java/io/netty/util/DefaultAttributeMap.java b/common/src/main/java/io/netty/util/DefaultAttributeMap.java index a4b9c1b6ae..75e2076a23 100644 --- a/common/src/main/java/io/netty/util/DefaultAttributeMap.java +++ b/common/src/main/java/io/netty/util/DefaultAttributeMap.java @@ -45,7 +45,7 @@ public class DefaultAttributeMap implements AttributeMap { return attr; } - private static final class DefaultAttribute extends AtomicReference implements Attribute { + private final class DefaultAttribute extends AtomicReference implements Attribute { private static final long serialVersionUID = -2661411462200283011L; @@ -62,7 +62,9 @@ public class DefaultAttributeMap implements AttributeMap { @Override public void remove() { - set(null); + synchronized (DefaultAttributeMap.this) { + map.remove(this); + } } } }