import com.google.common.collect.ImmutableMap;
import java.util.HashMap;
import java.util.Map;
-import java.util.Map.Entry;
import org.eclipse.jdt.annotation.NonNull;
-import org.opendaylight.yangtools.yang.parser.spi.meta.NamespaceBehaviour;
import org.opendaylight.yangtools.yang.parser.spi.meta.NamespaceNotAvailableException;
import org.opendaylight.yangtools.yang.parser.spi.meta.NamespaceStorage;
import org.opendaylight.yangtools.yang.parser.spi.meta.ParserNamespace;
private Map<ParserNamespace<?, ?>, Map<?, ?>> namespaces = ImmutableMap.of();
/**
- * {@inheritDoc}
- *
- * <p>
- * This method override provides bimorphic invocation on this method invocation between
- * {@link SourceSpecificContext} and the more general {@link AbstractNamespaceStorage}. We typically do not expect
- * the two accesses to overlap.
- */
- @Override
- public abstract NamespaceStorage getParentStorage();
-
- /**
- * Get a namespace behavior.
+ * Get access to a {@link ParserNamespace}.
*
* @param <K> key type
* @param <V> value type
* @throws NamespaceNotAvailableException when the namespace is not available
* @throws NullPointerException if {@code namespace} is {@code null}
*/
- abstract <K, V> @NonNull NamespaceBehaviour<K, V> getNamespaceBehaviour(ParserNamespace<K, V> namespace);
+ abstract <K, V> @NonNull NamespaceAccess<K, V> accessNamespace(ParserNamespace<K, V> namespace);
// FIXME: 8.0.0: do we really need this method?
final void checkLocalNamespaceAllowed(final ParserNamespace<?, ?> type) {
}
final <K, V> Map<K, V> getNamespace(final ParserNamespace<K, V> type) {
- return getNamespaceBehaviour(type).getAllFrom(this);
+ return accessNamespace(type).allFrom(this);
}
@SuppressWarnings("unchecked")
return (Map<K, V>) local.get(type);
}
- final <K, V, T extends K, U extends V> void addToNamespace(final ParserNamespace<K, V> type, final T key,
- final U value) {
- getNamespaceBehaviour(type).addTo(this, key, value);
+ final <K, V> void addToNamespace(final ParserNamespace<K, V> type, final K key, final V value) {
+ accessNamespace(type).valueTo(this, key, value);
}
@Override
break;
case 1:
// Alright, time to grow to a full HashMap
- final Map<ParserNamespace<?, ?>, Map<?,?>> newNamespaces = new HashMap<>(4);
- final Entry<ParserNamespace<?, ?>, Map<?, ?>> entry = namespaces.entrySet().iterator().next();
+ final var newNamespaces = new HashMap<ParserNamespace<?, ?>, Map<?, ?>>(4);
+ final var entry = namespaces.entrySet().iterator().next();
newNamespaces.put(entry.getKey(), entry.getValue());
namespaces = newNamespaces;
// fall through