X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=common%2Futil%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Futil%2FOffsetMapCache.java;h=df6c35e3f649dd7baa5569c2ce2939fba1ea084c;hb=6bb7f3a20168a59eeeea366d7d30fa29702e522f;hp=6c78c9ed6dc15869f97e109791a82080434a2402;hpb=ac6b1c788424ca50221ce7b243e4255a8b6fe4c4;p=yangtools.git diff --git a/common/util/src/main/java/org/opendaylight/yangtools/util/OffsetMapCache.java b/common/util/src/main/java/org/opendaylight/yangtools/util/OffsetMapCache.java index 6c78c9ed6d..df6c35e3f6 100644 --- a/common/util/src/main/java/org/opendaylight/yangtools/util/OffsetMapCache.java +++ b/common/util/src/main/java/org/opendaylight/yangtools/util/OffsetMapCache.java @@ -74,6 +74,18 @@ final class OffsetMapCache { return unorderedOffsets(args instanceof Set ? (Set)args : ImmutableSet.copyOf(args)); } + @SuppressWarnings("unchecked") + private static Map unorderedOffsets(final Set args) { + final Map existing = (Map) UNORDERED_CACHE.getIfPresent(args); + if (existing != null) { + return existing; + } + + final Map newMap = createMap(args); + final Map raced = UNORDERED_CACHE.asMap().putIfAbsent(newMap.keySet(), newMap); + return raced == null ? newMap : (Map)raced; + } + static V[] adjustedArray(final Map offsets, final List keys, final V[] array) { Verify.verify(offsets.size() == keys.size(), "Offsets %s do not match keys %s", offsets, keys); @@ -94,35 +106,23 @@ final class OffsetMapCache { private static Map createMap(final Collection keys) { final Builder b = ImmutableMap.builder(); - int i = 0; + int counter = 0; for (T arg : keys) { - b.put(arg, i++); + b.put(arg, counter++); } return b.build(); } - @SuppressWarnings("unchecked") - private static Map unorderedOffsets(final Set args) { - final Map existing = (Map) UNORDERED_CACHE.getIfPresent(args); - if (existing != null) { - return existing; - } - - final Map newMap = createMap(args); - final Map raced = UNORDERED_CACHE.asMap().putIfAbsent(newMap.keySet(), newMap); - return raced == null ? newMap : (Map)raced; - } - private static V[] adjustArray(final Map offsets, final List keys, final V[] array) { @SuppressWarnings("unchecked") final V[] ret = (V[]) Array.newInstance(array.getClass().getComponentType(), array.length); - int i = 0; + int offset = 0; for (final K k : keys) { final Integer o = Verify.verifyNotNull(offsets.get(k), "Key %s not present in offsets %s", k, offsets); - ret[o] = array[i++]; + ret[o] = array[offset++]; } return ret;