Hide ImmutableNormalizedAnydata 56/106056/1
authorRobert Varga <robert.varga@pantheon.tech>
Thu, 18 May 2023 21:27:10 +0000 (23:27 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Thu, 18 May 2023 21:28:47 +0000 (23:28 +0200)
The two implementations here are extremely simple: hide them behind
(Metadata)NormalizedAnydata.of() static factory method.

Change-Id: I383b4eac35b96c75d7c0001c508a747a9456087f
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
codec/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/AnydataSerializeTest.java
data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/ImmutableNormalizedAnydata.java [new file with mode: 0644]
data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/MetadataNormalizedAnydata.java
data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/NormalizedAnydata.java
data/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/AbstractNormalizableAnydata.java
data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/ImmutableMetadataNormalizedAnydata.java [deleted file]
data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/ImmutableNormalizedAnydata.java [deleted file]

index 61adfd8b371dd0e00b2371f946c23304b6a81bc3..57803ce0fdddec38a0b35b290cf638d8ed20dcea 100644 (file)
@@ -35,7 +35,6 @@ import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWrit
 import org.opendaylight.yangtools.yang.data.impl.schema.Builders;
 import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNormalizedNodeStreamWriter;
 import org.opendaylight.yangtools.yang.data.impl.schema.NormalizationResultHolder;
-import org.opendaylight.yangtools.yang.data.util.ImmutableNormalizedAnydata;
 import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Absolute;
 import org.opendaylight.yangtools.yang.model.spi.DefaultSchemaTreeInference;
 import org.opendaylight.yangtools.yang.model.util.SchemaInferenceStack.Inference;
@@ -217,7 +216,7 @@ public class AnydataSerializeTest extends AbstractAnydataTest {
             .withNodeIdentifier(CONT_NODEID)
             .withChild(Builders.anydataBuilder(NormalizedAnydata.class)
                 .withNodeIdentifier(CONT_ANY_NODEID)
-                .withValue(new ImmutableNormalizedAnydata(
+                .withValue(NormalizedAnydata.of(
                     DefaultSchemaTreeInference.of(SCHEMA_CONTEXT, Absolute.of(CONT_QNAME)),
                     Builders.containerBuilder().withNodeIdentifier(CONT_NODEID).build()))
                 .build())
diff --git a/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/ImmutableNormalizedAnydata.java b/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/ImmutableNormalizedAnydata.java
new file mode 100644 (file)
index 0000000..d2a59c3
--- /dev/null
@@ -0,0 +1,79 @@
+/*
+ * Copyright (c) 2019 PANTHEON.tech, s.r.o. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.yangtools.yang.data.api.schema;
+
+import static java.util.Objects.requireNonNull;
+
+import com.google.common.base.MoreObjects;
+import com.google.common.base.MoreObjects.ToStringHelper;
+import java.io.IOException;
+import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.eclipse.jdt.annotation.Nullable;
+import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedMetadataWriter;
+import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter;
+import org.opendaylight.yangtools.yang.model.api.EffectiveStatementInference;
+
+@NonNullByDefault
+sealed class ImmutableNormalizedAnydata implements NormalizedAnydata {
+    static final class WithMetadata extends ImmutableNormalizedAnydata implements MetadataNormalizedAnydata {
+        private final NormalizedMetadata metadata;
+
+        WithMetadata(final EffectiveStatementInference inference, final NormalizedNode data,
+                final NormalizedMetadata metadata) {
+            super(inference, data);
+            this.metadata = requireNonNull(metadata);
+        }
+
+        @Override
+        public NormalizedMetadata getMetadata() {
+            return metadata;
+        }
+
+        @Override
+        public void writeTo(final NormalizedNodeStreamWriter writer, final boolean orderKeyLeaves) throws IOException {
+            NormalizedMetadataWriter.forStreamWriter(writer, orderKeyLeaves).write(getData(), getMetadata()).flush();
+        }
+    }
+
+    private final EffectiveStatementInference inference;
+    private final NormalizedNode data;
+
+    ImmutableNormalizedAnydata(final EffectiveStatementInference inference, final NormalizedNode data) {
+        this.inference = requireNonNull(inference);
+        this.data = requireNonNull(data);
+    }
+
+    @Override
+    public EffectiveStatementInference getInference() {
+        return inference;
+    }
+
+    @Override
+    public NormalizedNode getData() {
+        return data;
+    }
+
+    @Override
+    public int hashCode() {
+        return super.hashCode();
+    }
+
+    @Override
+    public boolean equals(final @Nullable Object obj) {
+        return super.equals(obj);
+    }
+
+    @Override
+    public String toString() {
+        return addToStringAttributes(MoreObjects.toStringHelper(this)).toString();
+    }
+
+    ToStringHelper addToStringAttributes(final ToStringHelper helper) {
+        return helper.add("inference", inference).add("data", data);
+    }
+}
index cf26fb0ef0394132b82530576cc4f62c5a0de8b9..ba04d837d6d345674db112b9b6667766e999aff4 100644 (file)
@@ -9,6 +9,7 @@ package org.opendaylight.yangtools.yang.data.api.schema;
 
 import com.google.common.annotations.Beta;
 import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.opendaylight.yangtools.yang.model.api.EffectiveStatementInference;
 
 /**
  * A piece of {@link NormalizedAnydata} with a corresponding piece of {@link NormalizedMetadata}.
@@ -18,4 +19,9 @@ import org.eclipse.jdt.annotation.NonNullByDefault;
 public interface MetadataNormalizedAnydata extends NormalizedAnydata {
 
     NormalizedMetadata getMetadata();
+
+    static NormalizedAnydata of(final EffectiveStatementInference inference, final NormalizedNode data,
+            final NormalizedMetadata metadata) {
+        return new ImmutableNormalizedAnydata.WithMetadata(inference, data, metadata);
+    }
 }
index d915984cf8c06b22304363baa75aef38e3af161a..d6246fabb32c007d033adb1ed3679ba2f70cab9d 100644 (file)
@@ -10,6 +10,7 @@ package org.opendaylight.yangtools.yang.data.api.schema;
 import com.google.common.annotations.Beta;
 import java.io.IOException;
 import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.eclipse.jdt.annotation.Nullable;
 import org.opendaylight.yangtools.concepts.Immutable;
 import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter;
 import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter;
@@ -49,4 +50,13 @@ public interface NormalizedAnydata extends Immutable {
     default void writeTo(final NormalizedNodeStreamWriter writer, final boolean orderKeyLeaves) throws IOException {
         NormalizedNodeWriter.forStreamWriter(writer, orderKeyLeaves).write(getData()).flush();
     }
+
+    static NormalizedAnydata of(final EffectiveStatementInference inference, final NormalizedNode data) {
+        return new ImmutableNormalizedAnydata(inference, data);
+    }
+
+    static NormalizedAnydata of(final EffectiveStatementInference inference, final NormalizedNode data,
+            final @Nullable NormalizedMetadata metadata) {
+        return metadata != null ? MetadataNormalizedAnydata.of(inference, data, metadata) : of(inference, data);
+    }
 }
index efdad29f542317744a83e0b0e87de918f6c2dc66..244efff74036419db7a07bb7497f5759974f4999 100644 (file)
@@ -11,13 +11,11 @@ import com.google.common.annotations.Beta;
 import com.google.common.base.MoreObjects;
 import com.google.common.base.MoreObjects.ToStringHelper;
 import java.io.IOException;
-import java.util.Optional;
 import org.eclipse.jdt.annotation.NonNullByDefault;
 import org.opendaylight.yangtools.yang.data.api.schema.AnydataNormalizationException;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizableAnydata;
+import org.opendaylight.yangtools.yang.data.api.schema.NormalizedAnydata;
 import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter;
-import org.opendaylight.yangtools.yang.data.util.ImmutableMetadataNormalizedAnydata;
-import org.opendaylight.yangtools.yang.data.util.ImmutableNormalizedAnydata;
 import org.opendaylight.yangtools.yang.model.api.EffectiveStatementInference;
 
 /**
@@ -28,7 +26,7 @@ import org.opendaylight.yangtools.yang.model.api.EffectiveStatementInference;
 @NonNullByDefault
 public abstract class AbstractNormalizableAnydata implements NormalizableAnydata {
     @Override
-    public final ImmutableNormalizedAnydata normalizeTo(final EffectiveStatementInference inference)
+    public final NormalizedAnydata normalizeTo(final EffectiveStatementInference inference)
             throws AnydataNormalizationException {
         final var holder = new NormalizationResultHolder();
         final var streamWriter = ImmutableNormalizedNodeStreamWriter.from(holder);
@@ -39,8 +37,7 @@ public abstract class AbstractNormalizableAnydata implements NormalizableAnydata
         }
 
         final var result = holder.getResult();
-        return ImmutableMetadataNormalizedAnydata.ofOptional(inference, result.data(),
-            Optional.ofNullable(result.metadata()));
+        return NormalizedAnydata.of(inference, result.data(), result.metadata());
     }
 
     @Override
diff --git a/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/ImmutableMetadataNormalizedAnydata.java b/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/ImmutableMetadataNormalizedAnydata.java
deleted file mode 100644 (file)
index aacf862..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright (c) 2019 PANTHEON.tech, s.r.o. and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.yangtools.yang.data.util;
-
-import static java.util.Objects.requireNonNull;
-
-import com.google.common.annotations.Beta;
-import java.io.IOException;
-import java.util.Optional;
-import org.eclipse.jdt.annotation.NonNullByDefault;
-import org.opendaylight.yangtools.yang.data.api.schema.MetadataNormalizedAnydata;
-import org.opendaylight.yangtools.yang.data.api.schema.NormalizedMetadata;
-import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
-import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedMetadataWriter;
-import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter;
-import org.opendaylight.yangtools.yang.model.api.EffectiveStatementInference;
-
-@Beta
-@NonNullByDefault
-public final class ImmutableMetadataNormalizedAnydata extends ImmutableNormalizedAnydata
-        implements MetadataNormalizedAnydata {
-    private final NormalizedMetadata metadata;
-
-    public ImmutableMetadataNormalizedAnydata(final EffectiveStatementInference inference, final NormalizedNode data,
-            final NormalizedMetadata metadata) {
-        super(inference, data);
-        this.metadata = requireNonNull(metadata);
-    }
-
-    public static ImmutableNormalizedAnydata ofOptional(final EffectiveStatementInference inference,
-            final NormalizedNode data, final Optional<NormalizedMetadata> metadata) {
-        return metadata.isPresent()
-                ? new ImmutableMetadataNormalizedAnydata(inference, data, metadata.orElseThrow())
-                        : new ImmutableNormalizedAnydata(inference, data);
-    }
-
-    @Override
-    public NormalizedMetadata getMetadata() {
-        return metadata;
-    }
-
-    @Override
-    public void writeTo(final NormalizedNodeStreamWriter writer, final boolean orderKeyLeaves) throws IOException {
-        NormalizedMetadataWriter.forStreamWriter(writer, orderKeyLeaves).write(getData(), getMetadata()).flush();
-    }
-}
diff --git a/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/ImmutableNormalizedAnydata.java b/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/ImmutableNormalizedAnydata.java
deleted file mode 100644 (file)
index 1c23a01..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright (c) 2019 PANTHEON.tech, s.r.o. and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.yangtools.yang.data.util;
-
-import static java.util.Objects.requireNonNull;
-
-import com.google.common.annotations.Beta;
-import com.google.common.base.MoreObjects;
-import com.google.common.base.MoreObjects.ToStringHelper;
-import org.eclipse.jdt.annotation.NonNullByDefault;
-import org.eclipse.jdt.annotation.Nullable;
-import org.opendaylight.yangtools.yang.data.api.schema.NormalizedAnydata;
-import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
-import org.opendaylight.yangtools.yang.model.api.EffectiveStatementInference;
-
-@Beta
-@NonNullByDefault
-public class ImmutableNormalizedAnydata implements NormalizedAnydata {
-    private final EffectiveStatementInference inference;
-    private final NormalizedNode data;
-
-    public ImmutableNormalizedAnydata(final EffectiveStatementInference inference, final NormalizedNode data) {
-        this.inference = requireNonNull(inference);
-        this.data = requireNonNull(data);
-    }
-
-    @Override
-    public final EffectiveStatementInference getInference() {
-        return inference;
-    }
-
-    @Override
-    public final NormalizedNode getData() {
-        return data;
-    }
-
-    @Override
-    public final int hashCode() {
-        return super.hashCode();
-    }
-
-    @Override
-    public final boolean equals(final @Nullable Object obj) {
-        return super.equals(obj);
-    }
-
-    @Override
-    public final String toString() {
-        return addToStringAttributes(MoreObjects.toStringHelper(this)).toString();
-    }
-
-    protected ToStringHelper addToStringAttributes(final ToStringHelper helper) {
-        return helper.add("inference", inference).add("data", data);
-    }
-
-}