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.NamespaceBehaviour.GlobalStorageAccess;
import org.opendaylight.yangtools.yang.parser.spi.meta.NamespaceKeyCriterion;
import org.opendaylight.yangtools.yang.parser.spi.meta.NamespaceStorage;
+import org.opendaylight.yangtools.yang.parser.spi.meta.NamespaceStorage.GlobalStorage;
/**
* A {@link NamespaceAccess} backed by a {@link NamespaceBehaviour}. Also holds reference to {@link BuildGlobalContext}.
*/
-final class BehaviourNamespaceAccess<K, V> extends NamespaceAccess<K, V> implements GlobalStorageAccess {
- private final @NonNull AbstractNamespaceStorage globalContext;
+final class BehaviourNamespaceAccess<K, V> extends NamespaceAccess<K, V> {
private final @NonNull NamespaceBehaviour<K, V> behaviour;
+ private final @NonNull GlobalStorage globalStorage;
// FIXME: Change this to Multimap, once issue with modules is resolved.
private List<KeyedValueAddedListener<K>> listeners;
private List<PredicateValueAddedListener<K, V>> predicateListeners;
- BehaviourNamespaceAccess(final AbstractNamespaceStorage globalContext, final NamespaceBehaviour<K, V> behaviour) {
- this.globalContext = requireNonNull(globalContext);
+ BehaviourNamespaceAccess(final GlobalStorage globalStorage, final NamespaceBehaviour<K, V> behaviour) {
+ this.globalStorage = requireNonNull(globalStorage);
this.behaviour = requireNonNull(behaviour);
}
- @Override
- public AbstractNamespaceStorage getGlobalStorage() {
- return globalContext;
- }
-
@Override
V valueFrom(final NamespaceStorage storage, final K key) {
- return behaviour.getFrom(this, storage, key);
+ return behaviour.getFrom(globalStorage, storage, key);
}
@Override
void valueTo(final NamespaceStorage storage, final K key, final V value) {
- behaviour.addTo(this, storage, key, value);
+ behaviour.addTo(globalStorage, storage, key, value);
if (listeners != null) {
final var toNotify = new ArrayList<KeyedValueAddedListener<K>>();
@Override
Map<K, V> allFrom(final NamespaceStorage storage) {
- return behaviour.getAllFrom(this, storage);
+ return behaviour.getAllFrom(globalStorage, storage);
}
@Override
Entry<K, V> entryFrom(final NamespaceStorage storage, final NamespaceKeyCriterion<K> criterion) {
- return behaviour.getFrom(this, storage, criterion);
+ return behaviour.getFrom(globalStorage, storage, criterion);
}
@Override
import org.opendaylight.yangtools.yang.model.api.stmt.SchemaTreeEffectiveStatement;
import org.opendaylight.yangtools.yang.parser.spi.meta.NamespaceBehaviour;
import org.opendaylight.yangtools.yang.parser.spi.meta.NamespaceStorage;
+import org.opendaylight.yangtools.yang.parser.spi.meta.NamespaceStorage.GlobalStorage;
import org.opendaylight.yangtools.yang.parser.spi.meta.NamespaceStorage.StorageType;
import org.opendaylight.yangtools.yang.parser.spi.meta.OnDemandSchemaTreeStorage;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
* This method is analogous to {@link SchemaTreeAwareEffectiveStatement#findSchemaTreeNode(QName)}.
*/
@Override
- public StmtContext<QName, D, E> getFrom(final GlobalStorageAccess globalAccess, final NamespaceStorage storage,
+ public StmtContext<QName, D, E> getFrom(final GlobalStorage global, final NamespaceStorage storage,
final QName key) {
// Get the backing storage node for the requested storage
final NamespaceStorage storageNode = globalOrStatementSpecific(storage);
}
@Override
- public Map<QName, StmtContext<QName, D, E>> getAllFrom(final GlobalStorageAccess globalAccess,
- final NamespaceStorage storage) {
+ public Map<QName, StmtContext<QName, D, E>> getAllFrom(final GlobalStorage global, final NamespaceStorage storage) {
// FIXME: 7.0.0: this method needs to be well-defined
return null;
}
@Override
- public void addTo(final GlobalStorageAccess globalAccess, final NamespaceStorage storage, final QName key,
+ public void addTo(final GlobalStorage global, final NamespaceStorage storage, final QName key,
final StmtContext<QName, D, E> value) {
final var prev = globalOrStatementSpecific(storage).putToLocalStorageIfAbsent(namespace(), key, value);
if (prev != null) {
import java.util.Map.Entry;
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.Nullable;
+import org.opendaylight.yangtools.yang.parser.spi.meta.NamespaceStorage.GlobalStorage;
import org.opendaylight.yangtools.yang.parser.spi.meta.NamespaceStorage.StorageType;
/**
* @param <V> Value type
*/
public abstract class NamespaceBehaviour<K, V> {
- /**
- * Interface allowing quick access to {@link StorageType#GLOBAL} {@link NamespaceStorage}.
- */
- public interface GlobalStorageAccess {
- /**
- * Return the {@link StorageType#GLOBAL} {@link NamespaceStorage}.
- *
- * @return Global namespace storage
- */
- @NonNull NamespaceStorage getGlobalStorage();
- }
-
private final @NonNull ParserNamespace<K, V> namespace;
protected NamespaceBehaviour(final ParserNamespace<K, V> namespace) {
/**
* Returns a value from model namespace storage according to key param class.
*
- * @param globalAccess A {@link GlobalStorageAccess}
+ * @param global global namespace storage
* @param storage namespace storage
* @param key type parameter
* @return value from model namespace storage according to key param class
*/
- public abstract V getFrom(GlobalStorageAccess globalAccess, NamespaceStorage storage, K key);
+ public abstract V getFrom(GlobalStorage global, NamespaceStorage storage, K key);
/**
* Returns the key/value mapping best matching specified criterion.
*
- * @param globalAccess A {@link GlobalStorageAccess}
+ * @param global global namespace storage
* @param storage namespace storage
* @param criterion selection criterion
* @return Selected mapping, if available.
*/
- public final @Nullable Entry<K, V> getFrom(final GlobalStorageAccess globalAccess, final NamespaceStorage storage,
+ public final @Nullable Entry<K, V> getFrom(final GlobalStorage global, final NamespaceStorage storage,
final NamespaceKeyCriterion<K> criterion) {
- final var mappings = getAllFrom(globalAccess, storage);
+ final var mappings = getAllFrom(global, storage);
if (mappings == null) {
return null;
}
/**
* Returns all values of a keys of param class from model namespace storage.
*
- * @param globalAccess A {@link GlobalStorageAccess}
+ * @param global global namespace storage
* @param storage namespace storage
* @return all values of keys of param class from model namespace storage
*/
- public abstract Map<K, V> getAllFrom(GlobalStorageAccess globalAccess, NamespaceStorage storage);
+ public abstract Map<K, V> getAllFrom(GlobalStorage global, NamespaceStorage storage);
/**
* Adds a key/value to corresponding namespace storage according to param class.
*
- * @param globalAccess A {@link GlobalStorageAccess}
+ * @param global global namespace storage
* @param storage namespace storage
* @param key type parameter
* @param value type parameter
*/
- public abstract void addTo(GlobalStorageAccess globalAccess, NamespaceStorage storage, K key, V value);
+ public abstract void addTo(GlobalStorage global, NamespaceStorage storage, K key, V value);
protected final V getFromLocalStorage(final NamespaceStorage storage, final K key) {
return storage.getFromLocalStorage(namespace, key);
}
@Override
- public final V getFrom(final GlobalStorageAccess globalAccess, final NamespaceStorage storage, final K key) {
- return getFromLocalStorage(findStorage(globalAccess, storage), key);
+ public final V getFrom(final GlobalStorage global, final NamespaceStorage storage, final K key) {
+ return getFromLocalStorage(findStorage(global, storage), key);
}
@Override
- public final Map<K, V> getAllFrom(final GlobalStorageAccess globalAccess, final NamespaceStorage storage) {
- return getAllFromLocalStorage(findStorage(globalAccess, storage));
+ public final Map<K, V> getAllFrom(final GlobalStorage global, final NamespaceStorage storage) {
+ return getAllFromLocalStorage(findStorage(global, storage));
}
@Override
- public final void addTo(final GlobalStorageAccess globalAccess, final NamespaceStorage storage, final K key,
+ public final void addTo(final GlobalStorage global, final NamespaceStorage storage, final K key,
final V value) {
- addToStorage(findStorage(globalAccess, storage), key, value);
+ addToStorage(findStorage(global, storage), key, value);
}
- abstract NamespaceStorage findStorage(GlobalStorageAccess globalAccess, NamespaceStorage storage);
+ abstract NamespaceStorage findStorage(GlobalStorage global, NamespaceStorage storage);
}
private static final class StatementLocal<K, V> extends AbstractSpecific<K, V> {
}
@Override
- NamespaceStorage findStorage(final GlobalStorageAccess globalAccess, final NamespaceStorage storage) {
+ NamespaceStorage findStorage(final GlobalStorage global, final NamespaceStorage storage) {
return storage;
}
}
}
@Override
- NamespaceStorage findStorage(final GlobalStorageAccess globalAccess, final NamespaceStorage storage) {
- return globalAccess.getGlobalStorage();
+ GlobalStorage findStorage(final GlobalStorage global, final NamespaceStorage storage) {
+ return global;
}
}
}
@Override
- NamespaceStorage findStorage(final GlobalStorageAccess globalAccess, final NamespaceStorage storage) {
+ NamespaceStorage findStorage(final GlobalStorage global, final NamespaceStorage storage) {
var current = storage;
while (current != null && current.getStorageType() != type) {
current = current.getParentStorage();
}
@Override
- public V getFrom(final GlobalStorageAccess globalAccess, final NamespaceStorage storage, final K key) {
- NamespaceStorage current = storage;
+ public V getFrom(final GlobalStorage global, final NamespaceStorage storage, final K key) {
+ var current = storage;
while (current != null) {
final V val = getFromLocalStorage(current, key);
if (val != null) {
}
@Override
- public Map<K, V> getAllFrom(final GlobalStorageAccess globalAccess, final NamespaceStorage storage) {
+ public Map<K, V> getAllFrom(final GlobalStorage global, final NamespaceStorage storage) {
var current = storage;
while (current != null) {
final Map<K, V> val = getAllFromLocalStorage(current);
}
@Override
- public void addTo(final GlobalStorageAccess globalAccess, final NamespaceStorage storage, final K key,
- final V value) {
+ public void addTo(final GlobalStorage global, final NamespaceStorage storage, final K key, final V value) {
addToStorage(storage, key, value);
}
}