Eliminate NormalizedNodePayload.headers
[netconf.git] / restconf / restconf-nb / src / main / java / org / opendaylight / restconf / nb / rfc8040 / legacy / NormalizedNodePayload.java
1 /*
2  * Copyright (c) 2021 PANTHEON.tech, s.r.o. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8 package org.opendaylight.restconf.nb.rfc8040.legacy;
9
10 import static java.util.Objects.requireNonNull;
11
12 import org.eclipse.jdt.annotation.NonNull;
13 import org.eclipse.jdt.annotation.Nullable;
14 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
15 import org.opendaylight.yangtools.yang.model.util.SchemaInferenceStack.Inference;
16
17 /**
18  * A RFC8040 overlay from our marriage to NormalizedNodeContext. This represents a NormalizedNode along with further
19  * messy details needed to deal with the payload.
20  */
21 public final class NormalizedNodePayload {
22     private final @NonNull QueryParameters writerParameters;
23     private final @NonNull Inference inference;
24     private final NormalizedNode data;
25
26     private NormalizedNodePayload(final Inference inference, final NormalizedNode data,
27             final QueryParameters writerParameters) {
28         this.inference = requireNonNull(inference);
29         this.data = data;
30         this.writerParameters = requireNonNull(writerParameters);
31     }
32
33     public static @NonNull NormalizedNodePayload empty(final Inference inference) {
34         return new NormalizedNodePayload(inference, null, QueryParameters.empty());
35     }
36
37     public static @NonNull NormalizedNodePayload of(final Inference inference, final NormalizedNode data) {
38         return new NormalizedNodePayload(inference, requireNonNull(data), QueryParameters.empty());
39     }
40
41     public static @NonNull NormalizedNodePayload ofNullable(final Inference inference, final NormalizedNode data) {
42         return data == null ? empty(inference) : of(inference, data);
43     }
44
45     public static Object ofReadData(final Inference inference, final NormalizedNode data,
46             final QueryParameters parameters) {
47         return new NormalizedNodePayload(inference, requireNonNull(data), parameters);
48     }
49
50     public @NonNull Inference inference() {
51         return inference;
52     }
53
54     public @Nullable NormalizedNode getData() {
55         return data;
56     }
57
58     public @NonNull QueryParameters getWriterParameters() {
59         return writerParameters;
60     }
61 }