*/
package org.opendaylight.yangtools.yang.data.util;
+import static java.util.Objects.requireNonNull;
+
import com.google.common.annotations.Beta;
import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Maps;
-
import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
+import java.util.Optional;
+import org.eclipse.jdt.annotation.NonNull;
import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.model.api.AugmentationSchema;
-import org.opendaylight.yangtools.yang.model.api.ConstraintDefinition;
-import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.ActionDefinition;
+import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.ContainerLike;
import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
import org.opendaylight.yangtools.yang.model.api.GroupingDefinition;
+import org.opendaylight.yangtools.yang.model.api.InputSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.MustDefinition;
import org.opendaylight.yangtools.yang.model.api.NotificationDefinition;
+import org.opendaylight.yangtools.yang.model.api.OutputSchemaNode;
import org.opendaylight.yangtools.yang.model.api.RpcDefinition;
import org.opendaylight.yangtools.yang.model.api.SchemaNode;
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import org.opendaylight.yangtools.yang.model.api.Status;
import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
-import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
import org.opendaylight.yangtools.yang.model.api.UsesNode;
-
+import org.opendaylight.yangtools.yang.xpath.api.YangXPathExpression.QualifiedBound;
/**
* yang-data-util
}
@Beta
- public static ContainerSchemaNode forNotification(final NotificationDefinition notification) {
+ public static ContainerLike forNotification(final NotificationDefinition notification) {
return new NotificationContainerSchemaNode(notification);
}
@Beta
- public static ContainerSchemaNode forRPC(final RpcDefinition rpc) {
+ public static ContainerLike forRPC(final RpcDefinition rpc) {
return new RpcContainerSchemaNode(rpc);
}
- private abstract static class AbstractContainerSchemaNode implements ContainerSchemaNode {
-
+ private abstract static class AbstractContainerSchemaNode implements ContainerLike {
private final SchemaNode schemaNode;
private AbstractContainerSchemaNode(final SchemaNode schemaNode) {
}
@Override
- public boolean isPresenceContainer() {
- return false;
- }
-
- @Override
- public Set<UsesNode> getUses() {
+ public Collection<? extends UsesNode> getUses() {
return ImmutableSet.of();
}
}
@Override
- public boolean isConfiguration() {
- return false;
- }
-
- @Override
- public ConstraintDefinition getConstraints() {
- return EmptyConstraintDefinition.create(false);
+ public Optional<Boolean> effectiveConfig() {
+ return Optional.empty();
}
- @Nonnull
@Override
public QName getQName() {
return schemaNode.getQName();
}
- @Nonnull
@Override
+ @Deprecated
public SchemaPath getPath() {
return schemaNode.getPath();
}
- @Nullable
@Override
- public String getDescription() {
+ public Optional<String> getDescription() {
return schemaNode.getDescription();
}
- @Nullable
@Override
- public String getReference() {
+ public Optional<String> getReference() {
return schemaNode.getReference();
}
- @Nonnull
@Override
public Status getStatus() {
return schemaNode.getStatus();
}
@Override
- public List<UnknownSchemaNode> getUnknownSchemaNodes() {
+ public Collection<? extends @NonNull MustDefinition> getMustConstraints() {
return ImmutableList.of();
}
+
+ @Override
+ public Optional<? extends QualifiedBound> getWhenCondition() {
+ return Optional.empty();
+ }
}
private static final class RpcContainerSchemaNode extends AbstractContainerSchemaNode {
}
@Override
- public Set<GroupingDefinition> getGroupings() {
+ public Collection<? extends GroupingDefinition> getGroupings() {
return rpcDefinition.getGroupings();
}
@Override
- public Set<TypeDefinition<?>> getTypeDefinitions() {
+ public Collection<? extends TypeDefinition<?>> getTypeDefinitions() {
return rpcDefinition.getTypeDefinitions();
}
@Override
- public Set<AugmentationSchema> getAvailableAugmentations() {
+ public Collection<? extends AugmentationSchemaNode> getAvailableAugmentations() {
return ImmutableSet.of();
}
@Override
- public Collection<DataSchemaNode> getChildNodes() {
- final ContainerSchemaNode input = rpcDefinition.getInput();
- final ContainerSchemaNode output = rpcDefinition.getOutput();
+ public Collection<? extends DataSchemaNode> getChildNodes() {
+ final InputSchemaNode input = rpcDefinition.getInput();
+ final OutputSchemaNode output = rpcDefinition.getOutput();
if (input == null && output == null) {
return ImmutableList.of();
} else if (input != null && output != null) {
}
@Override
- public DataSchemaNode getDataChildByName(QName name) {
+ public Optional<DataSchemaNode> findDataChildByName(final QName name) {
switch (name.getLocalName()) {
case "input":
- return rpcDefinition.getInput();
+ return Optional.of(rpcDefinition.getInput());
case "output":
- return rpcDefinition.getOutput();
+ return Optional.of(rpcDefinition.getOutput());
default:
- return null;
+ return Optional.empty();
}
}
+ @Deprecated
@Override
public boolean isAddedByUses() {
return false;
}
+
+ @Override
+ public Collection<? extends ActionDefinition> getActions() {
+ return ImmutableSet.of();
+ }
+
+ @Override
+ public Collection<? extends NotificationDefinition> getNotifications() {
+ return ImmutableSet.of();
+ }
}
private static final class NotificationContainerSchemaNode extends AbstractContainerSchemaNode {
private final NotificationDefinition notification;
- private final Map<QName, DataSchemaNode> mapNodes;
+ private final ImmutableMap<QName, ? extends DataSchemaNode> mapNodes;
private NotificationContainerSchemaNode(final NotificationDefinition notification) {
super(notification);
}
@Override
- public Set<AugmentationSchema> getAvailableAugmentations() {
+ public Collection<? extends NotificationDefinition> getNotifications() {
+ return ImmutableSet.of(notification);
+ }
+
+ @Override
+ public Collection<? extends AugmentationSchemaNode> getAvailableAugmentations() {
return notification.getAvailableAugmentations();
}
@Override
- public Set<TypeDefinition<?>> getTypeDefinitions() {
+ public Collection<? extends TypeDefinition<?>> getTypeDefinitions() {
return notification.getTypeDefinitions();
}
@Override
- public Collection<DataSchemaNode> getChildNodes() {
+ public Collection<? extends DataSchemaNode> getChildNodes() {
return notification.getChildNodes();
}
@Override
- public Set<GroupingDefinition> getGroupings() {
+ public Collection<? extends GroupingDefinition> getGroupings() {
return notification.getGroupings();
}
@Override
- public DataSchemaNode getDataChildByName(QName name) {
- return mapNodes.get(name);
+ public Optional<DataSchemaNode> findDataChildByName(final QName name) {
+ return Optional.ofNullable(mapNodes.get(requireNonNull(name)));
}
@Override
+ @Deprecated
public boolean isAddedByUses() {
//FIXME: reference to https://bugs.opendaylight.org/show_bug.cgi?id=6897
return false;
}
+
+ @Override
+ public Collection<? extends ActionDefinition> getActions() {
+ return ImmutableSet.of();
+ }
}
}