BUG-8043: eliminate ConstraintFactory
[yangtools.git] / yang / yang-parser-impl / src / main / java / org / opendaylight / yangtools / yang / parser / stmt / rfc6020 / effective / GroupingEffectiveStatementImpl.java
index d526f002e3e1df7f8c23c76f61dd204c2c9229a3..94881883bfb6dab4fdb32ff01162477030d934fe 100644 (file)
@@ -9,23 +9,29 @@
 package org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective;
 
 import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableList.Builder;
+import com.google.common.collect.ImmutableSet;
 import java.util.List;
 import java.util.Objects;
+import javax.annotation.Nonnull;
+import java.util.Set;
 import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.model.api.ActionDefinition;
 import org.opendaylight.yangtools.yang.model.api.GroupingDefinition;
+import org.opendaylight.yangtools.yang.model.api.NotificationDefinition;
 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.GroupingStatement;
-import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
 import org.opendaylight.yangtools.yang.parser.spi.meta.CopyType;
+import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
 
 public class GroupingEffectiveStatementImpl extends
         AbstractEffectiveDocumentedDataNodeContainer<QName, GroupingStatement> implements GroupingDefinition {
     private final QName qname;
     private final SchemaPath path;
     private final boolean addedByUses;
+    private final Set<ActionDefinition> actions;
+    private final Set<NotificationDefinition> notifications;
     private final List<UnknownSchemaNode> unknownNodes;
 
     public GroupingEffectiveStatementImpl(
@@ -37,21 +43,35 @@ public class GroupingEffectiveStatementImpl extends
 
         addedByUses = ctx.getCopyHistory().contains(CopyType.ADDED_BY_USES);
 
-        final Builder<UnknownSchemaNode> b = ImmutableList.builder();
-        for (EffectiveStatement<?, ?> effectiveStatement : effectiveSubstatements()) {
+        final ImmutableSet.Builder<ActionDefinition> actionsBuilder = ImmutableSet.builder();
+        final ImmutableSet.Builder<NotificationDefinition> notificationsBuilder = ImmutableSet.builder();
+        final ImmutableList.Builder<UnknownSchemaNode> b = ImmutableList.builder();
+        for (final EffectiveStatement<?, ?> effectiveStatement : effectiveSubstatements()) {
+            if (effectiveStatement instanceof ActionDefinition) {
+                actionsBuilder.add((ActionDefinition) effectiveStatement);
+            }
+
+            if (effectiveStatement instanceof NotificationDefinition) {
+                notificationsBuilder.add((NotificationDefinition) effectiveStatement);
+            }
+
             if (effectiveStatement instanceof UnknownSchemaNode) {
                 b.add((UnknownSchemaNode) effectiveStatement);
             }
         }
 
+        this.actions = actionsBuilder.build();
+        this.notifications = notificationsBuilder.build();
         unknownNodes = b.build();
     }
 
+    @Nonnull
     @Override
     public QName getQName() {
         return qname;
     }
 
+    @Nonnull
     @Override
     public SchemaPath getPath() {
         return path;
@@ -62,6 +82,17 @@ public class GroupingEffectiveStatementImpl extends
         return addedByUses;
     }
 
+    @Override
+    public Set<ActionDefinition> getActions() {
+        return actions;
+    }
+
+    @Nonnull
+    @Override
+    public Set<NotificationDefinition> getNotifications() {
+        return notifications;
+    }
+
     @Override
     public List<UnknownSchemaNode> getUnknownSchemaNodes() {
         return unknownNodes;
@@ -93,8 +124,6 @@ public class GroupingEffectiveStatementImpl extends
 
     @Override
     public String toString() {
-        return GroupingEffectiveStatementImpl.class.getSimpleName() + "[" +
-                "qname=" + qname +
-                "]";
+        return GroupingEffectiveStatementImpl.class.getSimpleName() + "[" + "qname=" + qname + "]";
     }
 }