Refactor AbstractIdentifiable
[yangtools.git] / yang / rfc7952-data-util / src / main / java / org / opendaylight / yangtools / rfc7952 / data / util / ImmutableNormalizedMetadata.java
index 147c24abbbf1a9033cdc34ad1f67f6cd03270e80..4d5b0491adc29f0a1a41a964fd9f917530948890 100644 (file)
@@ -15,8 +15,8 @@ import com.google.common.collect.ImmutableMap;
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.Map;
-import java.util.Optional;
 import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.yangtools.concepts.AbstractSimpleIdentifiable;
 import org.opendaylight.yangtools.rfc7952.data.api.NormalizedMetadata;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
@@ -25,9 +25,10 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgum
  * Immutable implementation of {@link NormalizedMetadata}.
  */
 @Beta
-public class ImmutableNormalizedMetadata implements NormalizedMetadata {
+public class ImmutableNormalizedMetadata extends AbstractSimpleIdentifiable<PathArgument>
+        implements NormalizedMetadata {
     private static final class Container extends ImmutableNormalizedMetadata {
-        private final ImmutableMap<PathArgument, ImmutableNormalizedMetadata> children;
+        private final @NonNull ImmutableMap<PathArgument, NormalizedMetadata> children;
 
         Container(final PathArgument identifier, final Map<QName, Object> annotations,
                 final Map<PathArgument, ImmutableNormalizedMetadata> children) {
@@ -36,16 +37,15 @@ public class ImmutableNormalizedMetadata implements NormalizedMetadata {
         }
 
         @Override
-        public Optional<NormalizedMetadata> getChild(final PathArgument child) {
-            return Optional.ofNullable(children.get(requireNonNull(child)));
+        public ImmutableMap<PathArgument, NormalizedMetadata> getChildren() {
+            return children;
         }
     }
 
-    private final @NonNull PathArgument identifier;
     private final @NonNull ImmutableMap<QName, Object> annotations;
 
-    ImmutableNormalizedMetadata(final PathArgument identifier, final Map<QName, Object> annotations) {
-        this.identifier = requireNonNull(identifier);
+    ImmutableNormalizedMetadata(final @NonNull PathArgument identifier, final Map<QName, Object> annotations) {
+        super(identifier);
         this.annotations = ImmutableMap.copyOf(annotations);
     }
 
@@ -58,11 +58,6 @@ public class ImmutableNormalizedMetadata implements NormalizedMetadata {
         return new Builder();
     }
 
-    @Override
-    public final PathArgument getIdentifier() {
-        return identifier;
-    }
-
     @Override
     public final ImmutableMap<QName, Object> getAnnotations() {
         return annotations;