import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.UnknownEffectiveStatementBase;
import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractDeclaredStatement;
import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport;
-import org.opendaylight.yangtools.yang.parser.spi.meta.QNameCacheNamespace;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext.Mutable;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils;
@Override
public QName adaptArgumentValue(final StmtContext<QName, MountPointStatement, MountPointEffectiveStatement> ctx,
final QNameModule targetModule) {
- return ctx.getFromNamespace(QNameCacheNamespace.class, ctx.getStatementArgument().withModule(targetModule));
+ return ctx.coerceStatementArgument().withModule(targetModule).intern();
}
@Override
import org.opendaylight.yangtools.yang.parser.spi.TypeNamespace;
import org.opendaylight.yangtools.yang.parser.spi.meta.DerivedIdentitiesNamespace;
import org.opendaylight.yangtools.yang.parser.spi.meta.ModelProcessingPhase;
-import org.opendaylight.yangtools.yang.parser.spi.meta.QNameCacheNamespace;
import org.opendaylight.yangtools.yang.parser.spi.meta.SemanticVersionModuleNamespace;
import org.opendaylight.yangtools.yang.parser.spi.meta.SemanticVersionNamespace;
import org.opendaylight.yangtools.yang.parser.spi.meta.StatementDefinitionNamespace;
.addSupport(ModuleCtxToSourceIdentifier.BEHAVIOUR)
.addSupport(ModuleQNameToModuleName.BEHAVIOUR)
.addSupport(PrefixToModule.BEHAVIOUR)
- .addSupport(QNameCacheNamespace.getInstance())
.addSupport(ImportedModuleContext.BEHAVIOUR)
.addSupport(IncludedModuleContext.BEHAVIOUR)
.addSupport(IncludedSubmoduleNameToModuleCtx.BEHAVIOUR)
import org.opendaylight.yangtools.yang.model.api.stmt.KeyStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier;
import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.BaseStatementSupport;
-import org.opendaylight.yangtools.yang.parser.spi.meta.QNameCacheNamespace;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils;
import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
for (final SchemaNodeIdentifier arg : ctx.coerceStatementArgument()) {
final QName qname = arg.getLastComponent();
if (!targetModule.equals(qname.getModule())) {
- final QName newQname = ctx.getFromNamespace(QNameCacheNamespace.class, qname.withModule(targetModule));
+ final QName newQname = qname.withModule(targetModule).intern();
builder.add(SchemaNodeIdentifier.SAME.createChild(newQname));
replaced = true;
} else {
*/
package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.type;
-import com.google.common.base.Preconditions;
+import static com.google.common.base.Preconditions.checkArgument;
+
import com.google.common.collect.ImmutableMap;
import java.util.Collection;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.parser.spi.meta.ModelActionBuilder.InferenceContext;
import org.opendaylight.yangtools.yang.parser.spi.meta.ModelActionBuilder.Prerequisite;
import org.opendaylight.yangtools.yang.parser.spi.meta.ModelProcessingPhase;
-import org.opendaylight.yangtools.yang.parser.spi.meta.QNameCacheNamespace;
import org.opendaylight.yangtools.yang.parser.spi.meta.StatementSupport;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext.Mutable;
final SchemaPath path = stmtCtx.getSchemaPath().get();
final SchemaPath parent = path.getParent();
final QName parentQName = parent.getLastComponent();
- Preconditions.checkArgument(parentQName != null, "Path %s has an empty parent", path);
+ checkArgument(parentQName != null, "Path %s has an empty parent", path);
- final QName qname = stmtCtx.getFromNamespace(QNameCacheNamespace.class,
- QName.create(parentQName, path.getLastComponent().getLocalName()));
+ final QName qname = path.getLastComponent().withModule(parentQName.getModule()).intern();
return parent.createChild(qname);
}
}
\ No newline at end of file
@Override
public QName adaptArgumentValue(final StmtContext<QName, D, E> ctx, final QNameModule targetModule) {
- return ctx.getFromNamespace(QNameCacheNamespace.class, ctx.getStatementArgument().withModule(targetModule));
+ return ctx.getStatementArgument().withModule(targetModule).intern();
}
}
+++ /dev/null
-/*
- * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.yangtools.yang.parser.spi.meta;
-
-import java.util.Map;
-import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.model.api.meta.IdentifierNamespace;
-
-/**
- * An {@link IdentifierNamespace} implementing a {@link QName} internment interface. Lookups in this namespace always
- * return a non-null object. They capture the first object instance and return that on subsequent lookups.
- */
-public final class QNameCacheNamespace extends NamespaceBehaviour<QName, QName, QNameCacheNamespace>
- implements IdentifierNamespace<QName, QName> {
-
- private static final QNameCacheNamespace INSTANCE = new QNameCacheNamespace();
-
- private QNameCacheNamespace() {
- super(QNameCacheNamespace.class);
- }
-
- public static QNameCacheNamespace getInstance() {
- return INSTANCE;
- }
-
- @Override
- public QName get(final QName identifier) {
- throw new UnsupportedOperationException("Identifier/implementation API borkage");
- }
-
- private static NamespaceStorageNode getRoot(final NamespaceStorageNode storage) {
- NamespaceStorageNode wlk = storage;
-
- while (wlk.getParentNamespaceStorage() != null) {
- wlk = wlk.getParentNamespaceStorage();
- }
-
- return wlk;
- }
-
- @Override
- public QName getFrom(final NamespaceStorageNode storage, final QName key) {
- final NamespaceStorageNode root = getRoot(storage);
- final QName stored = root.getFromLocalStorage(QNameCacheNamespace.class, key);
- if (stored != null) {
- return stored;
- }
-
- root.putToLocalStorage(QNameCacheNamespace.class, key, key);
- return key;
- }
-
- @Override
- public Map<QName, QName> getAllFrom(final NamespaceStorageNode storage) {
- return getRoot(storage).getAllFromLocalStorage(QNameCacheNamespace.class);
- }
-
- @Override
- public void addTo(final NamespaceStorageNode storage, final QName key, final QName value) {
- throw new UnsupportedOperationException("Automagically populated");
- }
-}
} catch (IllegalArgumentException e) {
throw new SourceException(ctx.getStatementSourceReference(), e, "Invalid identifier '%s'", localName);
}
-
- return ctx.getFromNamespace(QNameCacheNamespace.class, template);
+ return template.intern();
}
public static QNameModule getRootModuleQName(final StmtContext<?, ?, ?> ctx) {
+++ /dev/null
-/*
- * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.yangtools.yang.parser.spi.meta;
-
-import static org.junit.Assert.assertNotNull;
-
-import org.junit.Test;
-
-public class QNameCacheNamespaceTest {
- @Test
- public void testGetInstance() {
- assertNotNull(QNameCacheNamespace.getInstance());
- }
-}