import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
+import java.util.Collection;
import java.util.HashMap;
-import java.util.List;
+import java.util.HashSet;
import java.util.Map;
import java.util.Optional;
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.AugmentationSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
import org.opendaylight.yangtools.yang.model.api.GroupingDefinition;
+import org.opendaylight.yangtools.yang.model.api.NotificationDefinition;
import org.opendaylight.yangtools.yang.model.api.RevisionAwareXPath;
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import org.opendaylight.yangtools.yang.model.api.Status;
*/
public final class EffectiveAugmentationSchema implements AugmentationSchemaNode {
private final AugmentationSchemaNode delegate;
- private final Set<DataSchemaNode> realChildSchemas;
- private final Map<QName, DataSchemaNode> mappedChildSchemas;
+ private final ImmutableSet<DataSchemaNode> realChildSchemas;
+ private final ImmutableMap<QName, DataSchemaNode> mappedChildSchemas;
public EffectiveAugmentationSchema(final AugmentationSchemaNode augmentSchema,
- final Set<DataSchemaNode> realChildSchemas) {
+ final Collection<? extends DataSchemaNode> realChildSchemas) {
this.delegate = requireNonNull(augmentSchema);
this.realChildSchemas = ImmutableSet.copyOf(realChildSchemas);
this.mappedChildSchemas = ImmutableMap.copyOf(m);
}
+ /**
+ * Returns an AugmentationSchemaNode as effective in a parent node.
+ *
+ * @param schema Augmentation schema
+ * @param parent Parent schema
+ * @return Adjusted Augmentation schema
+ * @throws NullPointerException if any of the arguments is null
+ */
+ public static AugmentationSchemaNode create(final AugmentationSchemaNode schema, final DataNodeContainer parent) {
+ Set<DataSchemaNode> children = new HashSet<>();
+ for (DataSchemaNode augNode : schema.getChildNodes()) {
+ children.add(parent.getDataChildByName(augNode.getQName()));
+ }
+ return new EffectiveAugmentationSchema(schema, children);
+ }
+
@Override
public Optional<RevisionAwareXPath> getWhenCondition() {
return delegate.getWhenCondition();
}
@Override
- public List<UnknownSchemaNode> getUnknownSchemaNodes() {
+ public Collection<? extends UnknownSchemaNode> getUnknownSchemaNodes() {
return delegate.getUnknownSchemaNodes();
}
@Override
- public Set<TypeDefinition<?>> getTypeDefinitions() {
+ public Collection<? extends TypeDefinition<?>> getTypeDefinitions() {
return delegate.getTypeDefinitions();
}
@Override
- public Set<DataSchemaNode> getChildNodes() {
+ public Collection<? extends DataSchemaNode> getChildNodes() {
return realChildSchemas;
}
@Override
- public Set<GroupingDefinition> getGroupings() {
+ public Collection<? extends GroupingDefinition> getGroupings() {
return delegate.getGroupings();
}
}
@Override
- public Set<UsesNode> getUses() {
+ public Collection<? extends UsesNode> getUses() {
return delegate.getUses();
}
}
@Override
- public Set<ActionDefinition> getActions() {
+ public Collection<? extends ActionDefinition> getActions() {
return delegate.getActions();
}
+
+ @Override
+ public Optional<ActionDefinition> findAction(final QName qname) {
+ return delegate.findAction(qname);
+ }
+
+ @Override
+ public Collection<? extends NotificationDefinition> getNotifications() {
+ return delegate.getNotifications();
+ }
+
+ @Override
+ public Optional<NotificationDefinition> findNotification(final QName qname) {
+ return delegate.findNotification(qname);
+ }
}