import com.google.common.collect.ImmutableList;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.List;
import java.util.Objects;
import org.opendaylight.yangtools.yang.common.QName;
private final String argument;
private final SchemaPath schemaPath;
- private final List<UnknownSchemaNode> unknownNodes;
+ private List<UnknownSchemaNode> unknownNodes;
private final boolean yin;
public ExtensionEffectiveStatementImpl(
final StmtContext<QName, ExtensionStatement, EffectiveStatement<QName, ExtensionStatement>> ctx) {
- super(ctx);
+ super(ctx, false);
this.qname = ctx.getStatementArgument();
this.schemaPath = ctx.getSchemaPath().get();
- // initSubstatementCollections
- List<UnknownSchemaNode> unknownNodesInit = new ArrayList<>();
- for (EffectiveStatement<?, ?> effectiveStatement : effectiveSubstatements()) {
- if (effectiveStatement instanceof UnknownSchemaNode) {
- UnknownSchemaNode unknownNode = (UnknownSchemaNode) effectiveStatement;
- unknownNodesInit.add(unknownNode);
- }
- }
- this.unknownNodes = ImmutableList.copyOf(unknownNodesInit);
-
// initFields
ArgumentEffectiveStatementImpl argumentSubstatement = firstEffective(ArgumentEffectiveStatementImpl.class);
if (argumentSubstatement != null) {
}
}
+ void initUnknownSchemaNodes() {
+ if (unknownNodes != null) {
+ return;
+ }
+
+ Collection<EffectiveStatement<?, ?>> buildedUnknownNodes = getOmittedUnknownSubstatements();
+ List<UnknownSchemaNode> unknownNodesInit = new ArrayList<>();
+ for (EffectiveStatement<?, ?> unknownNode : buildedUnknownNodes) {
+ if (unknownNode instanceof UnknownSchemaNode) {
+ unknownNodesInit.add((UnknownSchemaNode) unknownNode);
+ }
+ }
+ this.unknownNodes = ImmutableList.copyOf(unknownNodesInit);
+ }
+
@Override
public QName getQName() {
return qname;
@Override
public List<UnknownSchemaNode> getUnknownSchemaNodes() {
+ if(unknownNodes == null) {
+ initUnknownSchemaNodes();
+ }
return unknownNodes;
}