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;
.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())
--- /dev/null
+/*
+ * 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);
+ }
+}
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}.
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);
+ }
}
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;
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);
+ }
}
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;
/**
@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);
}
final var result = holder.getResult();
- return ImmutableMetadataNormalizedAnydata.ofOptional(inference, result.data(),
- Optional.ofNullable(result.metadata()));
+ return NormalizedAnydata.of(inference, result.data(), result.metadata());
}
@Override
+++ /dev/null
-/*
- * 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();
- }
-}
+++ /dev/null
-/*
- * 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);
- }
-
-}