Skip to content

Commit

Permalink
Hide ImmutableNormalizedAnydata
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
rovarga committed May 18, 2023
1 parent b5faf5b commit a9a741c
Show file tree
Hide file tree
Showing 7 changed files with 99 additions and 120 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@
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;
Expand Down Expand Up @@ -217,7 +216,7 @@ public void testNormalizedSerialize() throws Exception {
.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())
Expand Down
Original file line number Diff line number Diff line change
@@ -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);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@

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}.
Expand All @@ -18,4 +19,9 @@
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);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
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;
Expand Down Expand Up @@ -49,4 +50,13 @@ default void writeTo(final NormalizedNodeStreamWriter writer) throws IOException
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);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,11 @@
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;

/**
Expand All @@ -28,7 +26,7 @@
@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);
Expand All @@ -39,8 +37,7 @@ public final ImmutableNormalizedAnydata normalizeTo(final EffectiveStatementInfe
}

final var result = holder.getResult();
return ImmutableMetadataNormalizedAnydata.ofOptional(inference, result.data(),
Optional.ofNullable(result.metadata()));
return NormalizedAnydata.of(inference, result.data(), result.metadata());
}

@Override
Expand Down

This file was deleted.

This file was deleted.

0 comments on commit a9a741c

Please sign in to comment.