Speed up StmtContextUtils.getModuleQNameByPrefix() 26/93926/1
authorRobert Varga <robert.varga@pantheon.tech>
Wed, 25 Nov 2020 02:34:26 +0000 (03:34 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Wed, 25 Nov 2020 08:58:33 +0000 (09:58 +0100)
We are looking up root twice here. Cache the lookup for reuse,
skipping one traversal.

Change-Id: I4ead06fa82b2ef822cbee0a2761bd90674bc1676
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit 61f49cd2ff55f24af91c232d3a82ab3f2b565255)

yang/yang-parser-spi/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/StmtContextUtils.java

index 4b1678e2d37d20a27f440220587c22e16728ee7a..10b6dbaa046bf312e5aaee7b7036ce36d542abc0 100644 (file)
@@ -593,14 +593,13 @@ public final class StmtContextUtils {
     }
 
     public static QNameModule getModuleQNameByPrefix(final StmtContext<?, ?, ?> ctx, final String prefix) {
-        final StmtContext<?, ?, ?> importedModule = ctx.getRoot().getFromNamespace(ImportPrefixToModuleCtx.class,
-            prefix);
+        final StmtContext<?, ?, ?> root = ctx.getRoot();
+        final StmtContext<?, ?, ?> importedModule = root.getFromNamespace(ImportPrefixToModuleCtx.class, prefix);
         final QNameModule qnameModule = ctx.getFromNamespace(ModuleCtxToModuleQName.class, importedModule);
         if (qnameModule != null) {
             return qnameModule;
         }
 
-        final StmtContext<?, ?, ?> root = ctx.getRoot();
         if (root.producesDeclared(SubmoduleStatement.class)) {
             final String moduleName = root.getFromNamespace(BelongsToPrefixToModuleName.class, prefix);
             return ctx.getFromNamespace(ModuleNameToModuleQName.class, moduleName);