X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=yang%2Fyang-parser-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fyang%2Fparser%2Fstmt%2Frfc6020%2Feffective%2FRefineEffectiveStatementImpl.java;h=e22a17be05875755b653d112226651f1c87d67d4;hb=c24d6e2f39acbb11e22b5676bb7481ed52bec461;hp=b5c222106d3ccab03219c013af572224cd28cef1;hpb=f1c55073f8d7631007c01a401346cc83383e5745;p=yangtools.git diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/RefineEffectiveStatementImpl.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/RefineEffectiveStatementImpl.java index b5c222106d..e22a17be05 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/RefineEffectiveStatementImpl.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/RefineEffectiveStatementImpl.java @@ -1,23 +1,71 @@ -/** +/* * 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.stmt.rfc6020.effective; +import com.google.common.collect.ImmutableList; +import java.util.Collection; +import java.util.LinkedList; +import java.util.List; +import javax.annotation.Nonnull; +import org.opendaylight.yangtools.yang.common.QName; +import org.opendaylight.yangtools.yang.model.api.SchemaNode; +import org.opendaylight.yangtools.yang.model.api.SchemaPath; +import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; +import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.RefineStatement; import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier; import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext; -public class RefineEffectiveStatementImpl extends - EffectiveStatementBase { +public final class RefineEffectiveStatementImpl extends + AbstractEffectiveDocumentedNode implements SchemaNode { - public RefineEffectiveStatementImpl( - StmtContext ctx) { + private final QName qname; + private final SchemaPath path; + private final List unknownNodes; + private final SchemaNode refineTargetNode; + + public RefineEffectiveStatementImpl(final StmtContext ctx) { super(ctx); + qname = ctx.getStatementArgument().getLastComponent(); + path = ctx.getSchemaPath().get(); + refineTargetNode = (SchemaNode) ctx.getEffectOfStatement().iterator().next().buildEffective(); + + // initSubstatementCollectionsAndFields + Collection> effectiveSubstatements = effectiveSubstatements(); + List unknownNodesInit = new LinkedList<>(); + for (EffectiveStatement effectiveSubstatement : effectiveSubstatements) { + if (effectiveSubstatement instanceof UnknownSchemaNode) { + UnknownSchemaNode unknownNode = (UnknownSchemaNode) effectiveSubstatement; + unknownNodesInit.add(unknownNode); + } + } + this.unknownNodes = ImmutableList.copyOf(unknownNodesInit); + } + + public SchemaNode getRefineTargetNode() { + return refineTargetNode; + } + + @Nonnull + @Override + public QName getQName() { + return qname; + } + @Nonnull + @Override + public SchemaPath getPath() { + return path; } + @Nonnull + @Override + public List getUnknownSchemaNodes() { + return unknownNodes; + } } \ No newline at end of file