Add SchemaPath/SchemaNodeIdentifier.createChild(QName)
[yangtools.git] / yang / yang-model-util / src / main / java / org / opendaylight / yangtools / yang / model / util / EffectiveAugmentationSchema.java
index 7e22270712e772c27e5b5163159fac6ecdd472c9..179f295c3d768aa25c3d15cfa07f883df287304f 100644 (file)
@@ -7,18 +7,21 @@
  */
 package org.opendaylight.yangtools.yang.model.util;
 
-import com.google.common.base.Optional;
-import com.google.common.base.Preconditions;
+import static java.util.Objects.requireNonNull;
+
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.ImmutableSet;
 import java.util.HashMap;
 import java.util.List;
 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.AugmentationSchema;
+import org.opendaylight.yangtools.yang.model.api.ActionDefinition;
+import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode;
 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;
@@ -28,18 +31,18 @@ import org.opendaylight.yangtools.yang.model.api.UsesNode;
 
 /**
  * Proxy for AugmentationSchema. Child node schemas are replaced with actual schemas from parent.
- *
  */
-public final class EffectiveAugmentationSchema implements AugmentationSchema {
-    private final AugmentationSchema delegate;
+public final class EffectiveAugmentationSchema implements AugmentationSchemaNode {
+    private final AugmentationSchemaNode delegate;
     private final Set<DataSchemaNode> realChildSchemas;
     private final Map<QName, DataSchemaNode> mappedChildSchemas;
 
-    public EffectiveAugmentationSchema(final AugmentationSchema augmentSchema, final Set<DataSchemaNode> realChildSchemas) {
-        this.delegate = Preconditions.checkNotNull(augmentSchema);
+    public EffectiveAugmentationSchema(final AugmentationSchemaNode augmentSchema,
+            final Set<DataSchemaNode> realChildSchemas) {
+        this.delegate = requireNonNull(augmentSchema);
         this.realChildSchemas = ImmutableSet.copyOf(realChildSchemas);
 
-        final Map<QName, DataSchemaNode> m = new HashMap<>(realChildSchemas.size());;
+        final Map<QName, DataSchemaNode> m = new HashMap<>(realChildSchemas.size());
         for (DataSchemaNode realChildSchema : realChildSchemas) {
             m.put(realChildSchema.getQName(), realChildSchema);
         }
@@ -48,17 +51,17 @@ public final class EffectiveAugmentationSchema implements AugmentationSchema {
     }
 
     @Override
-    public RevisionAwareXPath getWhenCondition() {
+    public Optional<RevisionAwareXPath> getWhenCondition() {
         return delegate.getWhenCondition();
     }
 
     @Override
-    public String getDescription() {
+    public Optional<String> getDescription() {
         return delegate.getDescription();
     }
 
     @Override
-    public String getReference() {
+    public Optional<String> getReference() {
         return delegate.getReference();
     }
 
@@ -93,8 +96,8 @@ public final class EffectiveAugmentationSchema implements AugmentationSchema {
     }
 
     @Override
-    public DataSchemaNode getDataChildByName(final QName name) {
-        return mappedChildSchemas.get(name);
+    public Optional<DataSchemaNode> findDataChildByName(final QName name) {
+        return Optional.ofNullable(mappedChildSchemas.get(requireNonNull(name)));
     }
 
     @Override
@@ -103,7 +106,17 @@ public final class EffectiveAugmentationSchema implements AugmentationSchema {
     }
 
     @Override
-    public Optional<AugmentationSchema> getOriginalDefinition() {
+    public Optional<AugmentationSchemaNode> getOriginalDefinition() {
         return delegate.getOriginalDefinition();
     }
+
+    @Override
+    public Set<ActionDefinition> getActions() {
+        return delegate.getActions();
+    }
+
+    @Override
+    public Set<NotificationDefinition> getNotifications() {
+        return delegate.getNotifications();
+    }
 }