*/
package org.opendaylight.mdsal.dom.spi;
+import static com.google.common.base.Preconditions.checkState;
+import static java.util.Objects.requireNonNull;
+
import com.google.common.annotations.Beta;
-import com.google.common.base.Preconditions;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
-import javax.annotation.concurrent.NotThreadSafe;
import org.opendaylight.yangtools.concepts.Identifiable;
+import org.opendaylight.yangtools.concepts.Mutable;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+/**
+ * An entry in DOMDataTreePrefixTable. This class is not thread-safe.
+ */
@Beta
-@NotThreadSafe
-public final class DOMDataTreePrefixTableEntry<V> implements Identifiable<PathArgument> {
+public final class DOMDataTreePrefixTableEntry<V> implements Identifiable<PathArgument>, Mutable {
private static final Logger LOG = LoggerFactory.getLogger(DOMDataTreePrefixTableEntry.class);
// FIXME: We do probably want to adapt map
private final Map<PathArgument, DOMDataTreePrefixTableEntry<V>> children = new HashMap<>();
}
DOMDataTreePrefixTableEntry(final PathArgument identifier) {
- this.identifier = Preconditions.checkNotNull(identifier);
+ this.identifier = requireNonNull(identifier);
}
@Override
DOMDataTreePrefixTableEntry<V> lookup(final YangInstanceIdentifier id) {
final Iterator<PathArgument> it = id.getPathArguments().iterator();
DOMDataTreePrefixTableEntry<V> entry = this;
+ DOMDataTreePrefixTableEntry<V> lastPresentEntry = entry.getValue() != null ? entry : null;
while (it.hasNext()) {
final PathArgument a = it.next();
}
entry = child;
+
+ if (child.getValue() != null) {
+ lastPresentEntry = child;
+ }
}
- return entry;
+ return lastPresentEntry;
}
void store(final YangInstanceIdentifier id, final V reg) {
entry = child;
}
- Preconditions.checkState(entry.value == null);
+ checkState(entry.value == null);
entry.value = reg;
}