2 * Copyright (c) 2014 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
9 package org.opendaylight.controller.sal.dom.broker.util;
12 import java.util.Collection;
13 import java.util.Date;
14 import java.util.List;
17 import org.opendaylight.yangtools.yang.common.QName;
18 import org.opendaylight.yangtools.yang.model.api.AugmentationSchema;
19 import org.opendaylight.yangtools.yang.model.api.ConstraintDefinition;
20 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
21 import org.opendaylight.yangtools.yang.model.api.ExtensionDefinition;
22 import org.opendaylight.yangtools.yang.model.api.GroupingDefinition;
23 import org.opendaylight.yangtools.yang.model.api.Module;
24 import org.opendaylight.yangtools.yang.model.api.ModuleIdentifier;
25 import org.opendaylight.yangtools.yang.model.api.NotificationDefinition;
26 import org.opendaylight.yangtools.yang.model.api.RpcDefinition;
27 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
28 import org.opendaylight.yangtools.yang.model.api.SchemaContextProvider;
29 import org.opendaylight.yangtools.yang.model.api.SchemaPath;
30 import org.opendaylight.yangtools.yang.model.api.Status;
31 import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
32 import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
33 import org.opendaylight.yangtools.yang.model.api.UsesNode;
35 import com.google.common.base.Optional;
36 import com.google.common.base.Preconditions;
39 * ProxySchema Context for SchemaContextProviders
41 public class ProxySchemaContext implements SchemaContext {
43 private final SchemaContextProvider schemaProvider;
45 public ProxySchemaContext(final SchemaContextProvider schemaProvider) {
46 this.schemaProvider = schemaProvider;
49 private SchemaContext getCurrentSchema() {
50 Preconditions.checkState(schemaProvider.getSchemaContext() != null, "Schema context unavailable from %s", schemaProvider);
51 return schemaProvider.getSchemaContext();
55 public Set<DataSchemaNode> getDataDefinitions() {
56 return getCurrentSchema().getDataDefinitions();
60 public Set<Module> getModules() {
61 return getCurrentSchema().getModules();
65 public Set<NotificationDefinition> getNotifications() {
66 return getCurrentSchema().getNotifications();
70 public Set<RpcDefinition> getOperations() {
71 return getCurrentSchema().getOperations();
75 public Set<ExtensionDefinition> getExtensions() {
76 return getCurrentSchema().getExtensions();
80 public Module findModuleByName(final String s, final Date date) {
81 return getCurrentSchema().findModuleByName(s, date);
85 public Set<Module> findModuleByNamespace(final URI uri) {
86 return getCurrentSchema().findModuleByNamespace(uri);
90 public Module findModuleByNamespaceAndRevision(final URI uri, final Date date) {
91 return getCurrentSchema().findModuleByNamespaceAndRevision(uri, date);
95 public Optional<String> getModuleSource(final ModuleIdentifier moduleIdentifier) {
96 return getCurrentSchema().getModuleSource(moduleIdentifier);
100 public Set<ModuleIdentifier> getAllModuleIdentifiers() {
101 return getCurrentSchema().getAllModuleIdentifiers();
105 public boolean isPresenceContainer() {
106 return getCurrentSchema().isPresenceContainer();
110 public Set<TypeDefinition<?>> getTypeDefinitions() {
111 return getCurrentSchema().getTypeDefinitions();
115 public Collection<DataSchemaNode> getChildNodes() {
116 return getCurrentSchema().getChildNodes();
120 public Set<GroupingDefinition> getGroupings() {
121 return getCurrentSchema().getGroupings();
125 public DataSchemaNode getDataChildByName(final QName qName) {
126 return getCurrentSchema().getDataChildByName(qName);
130 public DataSchemaNode getDataChildByName(final String s) {
131 return getCurrentSchema().getDataChildByName(s);
135 public Set<UsesNode> getUses() {
136 return getCurrentSchema().getUses();
140 public Set<AugmentationSchema> getAvailableAugmentations() {
141 return getCurrentSchema().getAvailableAugmentations();
145 public boolean isAugmenting() {
146 return getCurrentSchema().isAugmenting();
150 public boolean isAddedByUses() {
151 return getCurrentSchema().isAddedByUses();
155 public boolean isConfiguration() {
156 return getCurrentSchema().isConfiguration();
160 public ConstraintDefinition getConstraints() {
161 return getCurrentSchema().getConstraints();
165 public QName getQName() {
166 return getCurrentSchema().getQName();
170 public SchemaPath getPath() {
171 return getCurrentSchema().getPath();
175 public List<UnknownSchemaNode> getUnknownSchemaNodes() {
176 return getCurrentSchema().getUnknownSchemaNodes();
180 public String getDescription() {
181 return getCurrentSchema().getDescription();
185 public String getReference() {
186 return getCurrentSchema().getReference();
190 public Status getStatus() {
191 return getCurrentSchema().getStatus();