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;
19 import org.eclipse.jdt.annotation.NonNull;
20 import org.opendaylight.yangtools.yang.common.QName;
21 import org.opendaylight.yangtools.yang.model.api.ActionDefinition;
22 import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode;
23 import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
24 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
25 import org.opendaylight.yangtools.yang.model.api.GroupingDefinition;
26 import org.opendaylight.yangtools.yang.model.api.MustDefinition;
27 import org.opendaylight.yangtools.yang.model.api.NotificationDefinition;
28 import org.opendaylight.yangtools.yang.model.api.OperationDefinition;
29 import org.opendaylight.yangtools.yang.model.api.RevisionAwareXPath;
30 import org.opendaylight.yangtools.yang.model.api.SchemaPath;
31 import org.opendaylight.yangtools.yang.model.api.Status;
32 import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
33 import org.opendaylight.yangtools.yang.model.api.UsesNode;
36 public class OperationAsContainer extends ForwardingObject implements ContainerSchemaNode, OperationDefinition {
37 private final @NonNull OperationDefinition delegate;
39 OperationAsContainer(final OperationDefinition parentNode) {
40 delegate = requireNonNull(parentNode);
43 public static @NonNull OperationAsContainer of(final OperationDefinition delegate) {
44 return new OperationAsContainer(delegate);
48 protected final @NonNull OperationDefinition delegate() {
53 public final Optional<String> getDescription() {
54 return delegate.getDescription();
58 public final Optional<String> getReference() {
59 return delegate.getReference();
63 public final Collection<? extends TypeDefinition<?>> getTypeDefinitions() {
64 return delegate.getTypeDefinitions();
68 public final Collection<? extends GroupingDefinition> getGroupings() {
69 return delegate.getGroupings();
73 public final Status getStatus() {
74 return delegate.getStatus();
78 public final ContainerSchemaNode getInput() {
79 return delegate.getInput();
83 public final ContainerSchemaNode getOutput() {
84 return delegate.getOutput();
88 public final QName getQName() {
89 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 Collection<? extends UsesNode> getUses() {
116 return ImmutableSet.of();
120 public final Collection<? extends AugmentationSchemaNode> getAvailableAugmentations() {
121 return ImmutableSet.of();
125 public final boolean isPresenceContainer() {
130 public final Collection<? extends 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 Collection<? extends ActionDefinition> getActions() {
162 return ImmutableSet.of();
166 public Optional<ActionDefinition> findAction(final QName qname) {
167 requireNonNull(qname);
168 return Optional.empty();
172 public final Collection<? extends 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<? extends MustDefinition> getMustConstraints() {
184 return ImmutableSet.of();
188 public final Optional<RevisionAwareXPath> getWhenCondition() {
189 return Optional.empty();