import com.google.common.annotations.Beta;
import java.util.EnumMap;
import java.util.Map;
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
-import javax.annotation.concurrent.NotThreadSafe;
+import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.jdt.annotation.Nullable;
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.mdsal.dom.api.DOMDataTreeIdentifier;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
- * Prefix table indexed by {@link DOMDataTreeIdentifier}.
- * Stores values in tree and provides lookup of closest ancestor
+ * Prefix table indexed by {@link DOMDataTreeIdentifier}. Stores values in tree and provides lookup of closest ancestor.
+ * This class is not thread-safe.
*
* @param <V> Value type
*/
@Beta
-@NotThreadSafe
public final class DOMDataTreePrefixTable<V> {
-
private static final Logger LOG = LoggerFactory.getLogger(DOMDataTreePrefixTable.class);
+
private final Map<LogicalDatastoreType, DOMDataTreePrefixTableEntry<V>> roots =
new EnumMap<>(LogicalDatastoreType.class);
private DOMDataTreePrefixTable() {
-
+ // Hidden in purpose
}
public static <V> DOMDataTreePrefixTable<V> create() {
* @param prefix Prefix for lookup
* @return closest non-null entry towards root or null if no entry towards root exists.
*/
- @Nullable
- public DOMDataTreePrefixTableEntry<V> lookup(@Nonnull final DOMDataTreeIdentifier prefix) {
- final DOMDataTreePrefixTableEntry<V> t = roots.get(prefix.getDatastoreType());
- if (t == null) {
- return null;
- }
-
- return t.lookup(prefix.getRootIdentifier());
+ public @Nullable DOMDataTreePrefixTableEntry<V> lookup(final @NonNull DOMDataTreeIdentifier prefix) {
+ final var entryt = roots.get(prefix.datastore());
+ return entryt == null ? null : entryt.lookup(prefix.path());
}
/**
* @param value Value to be stored
* @throws IllegalStateException If value is already stored for provided prefix
*/
- public void store(@Nonnull final DOMDataTreeIdentifier prefix, @Nonnull final V value) {
- DOMDataTreePrefixTableEntry<V> domDataTreePrefixTableEntry = roots.get(prefix.getDatastoreType());
+ public void store(final @NonNull DOMDataTreeIdentifier prefix, final @NonNull V value) {
+ var domDataTreePrefixTableEntry = roots.get(prefix.datastore());
if (domDataTreePrefixTableEntry == null) {
domDataTreePrefixTableEntry = new DOMDataTreePrefixTableEntry<>();
- roots.put(prefix.getDatastoreType(), domDataTreePrefixTableEntry);
+ roots.put(prefix.datastore(), domDataTreePrefixTableEntry);
}
- domDataTreePrefixTableEntry.store(prefix.getRootIdentifier(), value);
+ domDataTreePrefixTableEntry.store(prefix.path(), value);
}
/**
*
* @param prefix to be removed
*/
- public void remove(@Nonnull final DOMDataTreeIdentifier prefix) {
- final DOMDataTreePrefixTableEntry<V> t = roots.get(prefix.getDatastoreType());
- if (t == null) {
- LOG.warn("Shard registration {} points to non-existent table", t);
+ public void remove(final @NonNull DOMDataTreeIdentifier prefix) {
+ final var entry = roots.get(prefix.datastore());
+ if (entry == null) {
+ LOG.warn("Shard registration {} points to non-existent table", prefix);
return;
}
- t.remove(prefix.getRootIdentifier());
+ entry.remove(prefix.path());
}
-
}