2 * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.yangtools.yang.data.util;
10 import static java.util.Objects.requireNonNull;
12 import com.google.common.annotations.Beta;
13 import com.google.common.collect.ForwardingObject;
14 import com.google.common.collect.ImmutableSet;
15 import java.util.ArrayList;
16 import java.util.Collection;
17 import java.util.List;
18 import java.util.Optional;
20 import org.eclipse.jdt.annotation.NonNull;
21 import org.opendaylight.yangtools.yang.common.QName;
22 import org.opendaylight.yangtools.yang.model.api.ActionDefinition;
23 import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode;
24 import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
25 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
26 import org.opendaylight.yangtools.yang.model.api.GroupingDefinition;
27 import org.opendaylight.yangtools.yang.model.api.MustDefinition;
28 import org.opendaylight.yangtools.yang.model.api.NotificationDefinition;
29 import org.opendaylight.yangtools.yang.model.api.OperationDefinition;
30 import org.opendaylight.yangtools.yang.model.api.RevisionAwareXPath;
31 import org.opendaylight.yangtools.yang.model.api.SchemaPath;
32 import org.opendaylight.yangtools.yang.model.api.Status;
33 import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
34 import org.opendaylight.yangtools.yang.model.api.UsesNode;
37 public class OperationAsContainer extends ForwardingObject implements ContainerSchemaNode, OperationDefinition {
38 private final @NonNull OperationDefinition delegate;
40 OperationAsContainer(final OperationDefinition parentNode) {
41 delegate = requireNonNull(parentNode);
44 public static @NonNull OperationAsContainer of(final OperationDefinition delegate) {
45 return new OperationAsContainer(delegate);
49 protected final @NonNull OperationDefinition delegate() {
54 public final Optional<String> getDescription() {
55 return delegate.getDescription();
59 public final Optional<String> getReference() {
60 return delegate.getReference();
64 public final Set<TypeDefinition<?>> getTypeDefinitions() {
65 return delegate.getTypeDefinitions();
69 public final Set<GroupingDefinition> getGroupings() {
70 return delegate.getGroupings();
74 public final Status getStatus() {
75 return delegate.getStatus();
79 public final ContainerSchemaNode getInput() {
80 return delegate.getInput();
84 public final ContainerSchemaNode getOutput() {
85 return delegate.getOutput();
89 public final QName getQName() {
90 return delegate.getQName();
94 public final SchemaPath getPath() {
95 return delegate.getPath();
99 public final Optional<DataSchemaNode> findDataChildByName(final QName name) {
100 if (!name.getModule().equals(getQName().getModule())) {
101 return Optional.empty();
104 switch (name.getLocalName()) {
106 return Optional.of(delegate.getInput());
108 return Optional.of(delegate.getOutput());
110 return Optional.empty();
115 public Set<UsesNode> getUses() {
116 return ImmutableSet.of();
120 public final Set<AugmentationSchemaNode> getAvailableAugmentations() {
121 return ImmutableSet.of();
125 public final boolean isPresenceContainer() {
130 public final Collection<DataSchemaNode> getChildNodes() {
131 final List<DataSchemaNode> ret = new ArrayList<>();
132 final ContainerSchemaNode input = getInput();
133 final ContainerSchemaNode output = getOutput();
137 if (output != null) {
145 public final boolean isAugmenting() {
151 public final boolean isAddedByUses() {
156 public final boolean isConfiguration() {
161 public final Set<ActionDefinition> getActions() {
162 return ImmutableSet.of();
166 public Optional<ActionDefinition> findAction(final QName qname) {
167 requireNonNull(qname);
168 return Optional.empty();
172 public final Set<NotificationDefinition> getNotifications() {
173 return ImmutableSet.of();
177 public Optional<NotificationDefinition> findNotification(final QName qname) {
178 requireNonNull(qname);
179 return Optional.empty();
183 public final Collection<MustDefinition> getMustConstraints() {
184 return ImmutableSet.of();
188 public final Optional<RevisionAwareXPath> getWhenCondition() {
189 return Optional.empty();