X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=parser%2Fyang-parser-reactor%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fyang%2Fparser%2Fstmt%2Freactor%2FReactorStmtCtx.java;h=feebe381a7ce48c1e2b17fa52f212c3d76eefc84;hb=26151dbea9819243549196a54f4ac2f6822c444d;hp=2f64a787637c8f2843624e3bc7079e0282e6d7b7;hpb=c79437354af7a0086ebf3c86e727564070fe16be;p=yangtools.git diff --git a/parser/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/ReactorStmtCtx.java b/parser/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/ReactorStmtCtx.java index 2f64a78763..feebe381a7 100644 --- a/parser/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/ReactorStmtCtx.java +++ b/parser/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/ReactorStmtCtx.java @@ -880,15 +880,15 @@ abstract class ReactorStmtCtx, E extends Effec private byte calculateParentRefcount() { final ReactorStmtCtx parent = getParentContext(); - if (parent == null) { - return PARENTREF_ABSENT; - } + return parent == null ? PARENTREF_ABSENT : parent.refcountForChild(); + } + private byte refcountForChild() { // A slight wrinkle here is that our machinery handles only PRESENT -> ABSENT invalidation and we can reach here // while inference is still ongoing and hence we may not have a complete picture about existing references. We // could therefore end up caching an ABSENT result and then that information becoming stale as a new reference // is introduced. - if (parent.executionOrder() < ExecutionOrder.EFFECTIVE_MODEL) { + if (executionOrder() < ExecutionOrder.EFFECTIVE_MODEL) { return PARENTREF_UNKNOWN; } @@ -897,9 +897,9 @@ abstract class ReactorStmtCtx, E extends Effec // - negative (< REFCOUNT_NONE), meaning parent is in some stage of sweeping, hence it does not have // a reference to us // - positive (> REFCOUNT_NONE), meaning parent has an explicit refcount which is holding us down - final int refs = parent.refcount; + final int refs = refcount; if (refs == REFCOUNT_NONE) { - return parent.parentRefcount(); + return parentRefcount(); } return refs < REFCOUNT_NONE ? PARENTREF_ABSENT : PARENTREF_PRESENT; }