summaryrefslogtreecommitdiffstats
path: root/infra/translate-utils/src/main/java/io/fd/honeycomb/translate/util/read/cache/TypeAwareIdentifierCacheKeyFactory.java
diff options
context:
space:
mode:
authorMarek Gradzki <mgradzki@cisco.com>2017-03-21 13:38:21 +0100
committerMarek Gradzki <mgradzki@cisco.com>2017-03-22 08:58:00 +0100
commit3bd0a6a0bcd1cec006500c60de20eb0904697263 (patch)
tree847fedb3a20a63eac6cc20830d22c1d84f767564 /infra/translate-utils/src/main/java/io/fd/honeycomb/translate/util/read/cache/TypeAwareIdentifierCacheKeyFactory.java
parent9297f70f8a75fae4c3b5ad8fe7324a5420895352 (diff)
HONEYCOMB-348: include dump params in entity key
Change-Id: I18b2ea3c897c467740f19bf346d13240aac458ac Signed-off-by: Marek Gradzki <mgradzki@cisco.com>
Diffstat (limited to 'infra/translate-utils/src/main/java/io/fd/honeycomb/translate/util/read/cache/TypeAwareIdentifierCacheKeyFactory.java')
-rw-r--r--infra/translate-utils/src/main/java/io/fd/honeycomb/translate/util/read/cache/TypeAwareIdentifierCacheKeyFactory.java21
1 files changed, 17 insertions, 4 deletions
diff --git a/infra/translate-utils/src/main/java/io/fd/honeycomb/translate/util/read/cache/TypeAwareIdentifierCacheKeyFactory.java b/infra/translate-utils/src/main/java/io/fd/honeycomb/translate/util/read/cache/TypeAwareIdentifierCacheKeyFactory.java
index ba4e7e493..3cefedb95 100644
--- a/infra/translate-utils/src/main/java/io/fd/honeycomb/translate/util/read/cache/TypeAwareIdentifierCacheKeyFactory.java
+++ b/infra/translate-utils/src/main/java/io/fd/honeycomb/translate/util/read/cache/TypeAwareIdentifierCacheKeyFactory.java
@@ -20,11 +20,13 @@ import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.base.Preconditions.checkNotNull;
import static org.opendaylight.yangtools.yang.binding.InstanceIdentifier.IdentifiableItem;
+import com.google.common.annotations.VisibleForTesting;
import java.util.Collections;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.StreamSupport;
import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
import org.opendaylight.yangtools.yang.binding.DataObject;
import org.opendaylight.yangtools.yang.binding.Identifiable;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
@@ -32,9 +34,11 @@ import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
/**
* Factory providing cache keys to easier switching between scopes of caching
*/
-public final class TypeAwareIdentifierCacheKeyFactory implements CacheKeyFactory {
+public final class TypeAwareIdentifierCacheKeyFactory<U> implements CacheKeyFactory<U> {
private static final String KEY_PARTS_SEPARATOR = "|";
+ @VisibleForTesting
+ protected static final String NO_PARAMS_KEY = "NO_PARAMS";
// should be Set<Class<? extends DataObject & Identifiable<?>>>, but that's not possible for wildcards
private final Set<Class<? extends DataObject>> additionalKeyTypes;
@@ -78,14 +82,15 @@ public final class TypeAwareIdentifierCacheKeyFactory implements CacheKeyFactory
}
@Override
- public String createKey(@Nonnull final InstanceIdentifier<?> actualContextIdentifier) {
+ public String createKey(@Nonnull final InstanceIdentifier<?> actualContextIdentifier, @Nullable final U dumpParams) {
checkNotNull(actualContextIdentifier, "Cannot construct key for null InstanceIdentifier");
// easiest case when only simple key is needed
if (additionalKeyTypes.isEmpty()) {
return String
- .join(KEY_PARTS_SEPARATOR, type.getTypeName(), actualContextIdentifier.getTargetType().toString());
+ .join(KEY_PARTS_SEPARATOR, type.getTypeName(), params(dumpParams),
+ actualContextIdentifier.getTargetType().toString());
}
checkArgument(isUniqueKeyConstructable(actualContextIdentifier),
@@ -95,7 +100,15 @@ public final class TypeAwareIdentifierCacheKeyFactory implements CacheKeyFactory
// joins unique key in form : type | additional keys | actual context
return String
.join(KEY_PARTS_SEPARATOR, type.getTypeName(), additionalKeys(actualContextIdentifier),
- actualContextIdentifier.getTargetType().toString());
+ params(dumpParams), actualContextIdentifier.getTargetType().toString());
+ }
+
+ private String params(final U dumpParams) {
+ if (dumpParams == null) {
+ return NO_PARAMS_KEY;
+ } else {
+ return String.valueOf(dumpParams.hashCode());
+ }
}
@Override