From e71125e47b2e0ea4da38eb1912d0637d6581125d Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Tue, 7 Jun 2011 14:56:29 +0400 Subject: [PATCH] cleanup --- .../openapi/util/UserDataHolderBase.java | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/platform/util/src/com/intellij/openapi/util/UserDataHolderBase.java b/platform/util/src/com/intellij/openapi/util/UserDataHolderBase.java index 06cc02b46502..83d5824282c8 100644 --- a/platform/util/src/com/intellij/openapi/util/UserDataHolderBase.java +++ b/platform/util/src/com/intellij/openapi/util/UserDataHolderBase.java @@ -30,7 +30,7 @@ public class UserDataHolderBase implements UserDataHolderEx, Cloneable { private static final Key> COPYABLE_USER_MAP_KEY = Key.create("COPYABLE_USER_MAP_KEY"); /** - * Concurrent writes to this field are via CASes only, using the {@link updater} + * Concurrent writes to this field are via CASes only, using the {@link #updater} * When map becomes empty, this field set to null atomically * * Basic state transitions are as follows: @@ -87,6 +87,7 @@ public class UserDataHolderBase implements UserDataHolderEx, Cloneable { public T getUserData(@NotNull Key key) { final Map map = myUserMap; + //noinspection unchecked return map == null ? null : (T)map.get(key); } @@ -96,6 +97,7 @@ public class UserDataHolderBase implements UserDataHolderEx, Cloneable { if (value == null) { ConcurrentMap map = myUserMap; if (map == null) break; + @SuppressWarnings("unchecked") T previous = (T)map.remove(key); boolean removed = previous != null; if (removed) { @@ -103,8 +105,7 @@ public class UserDataHolderBase implements UserDataHolderEx, Cloneable { } } else { - Map map = getOrCreateMap(); - map.put(key, value); + getOrCreateMap().put(key, value); } break; } @@ -113,7 +114,7 @@ public class UserDataHolderBase implements UserDataHolderEx, Cloneable { } } - protected ConcurrentMap createDataMap(int initialCapacity) { + private static ConcurrentMap createDataMap(int initialCapacity) { return new StripedLockConcurrentHashMap(initialCapacity); } @@ -123,6 +124,7 @@ public class UserDataHolderBase implements UserDataHolderEx, Cloneable { protected final T getCopyableUserDataImpl(Key key) { Map map = getUserData(COPYABLE_USER_MAP_KEY); + //noinspection unchecked return map == null ? null : (T)map.get(key); } @@ -210,9 +212,13 @@ public class UserDataHolderBase implements UserDataHolderEx, Cloneable { @NotNull public T putUserDataIfAbsent(@NotNull final Key key, @NotNull final T value) { Object v = getOrCreateMap().get(key); - if (v != null) return (T)v; + if (v != null) { + //noinspection unchecked + return (T)v; + } while (true) { try { + @SuppressWarnings("unchecked") T prev = (T)getOrCreateMap().putIfAbsent(key, value); return prev == null ? value : prev; }