Refactor DOMYangTextSourceProvider
[mdsal.git] / dom / mdsal-dom-api / src / main / java / org / opendaylight / mdsal / dom / api / DTIv1.java
1 /*
2  * Copyright (c) 2023 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.mdsal.dom.api;
9
10 import static com.google.common.base.Verify.verifyNotNull;
11 import static java.util.Objects.requireNonNull;
12
13 import java.io.Externalizable;
14 import java.io.IOException;
15 import java.io.ObjectInput;
16 import java.io.ObjectOutput;
17 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
18 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
19
20 /**
21  * A serialization proxy for {@link DOMDataTreeIdentifier}.
22  */
23 final class DTIv1 implements Externalizable {
24     @java.io.Serial
25     private static final long serialVersionUID = 1L;
26
27     private DOMDataTreeIdentifier id;
28
29     @SuppressWarnings("redundantModifier")
30     public DTIv1() {
31         // For Externalizable
32     }
33
34     DTIv1(final DOMDataTreeIdentifier id) {
35         this.id = requireNonNull(id);
36     }
37
38     @Override
39     public void writeExternal(final ObjectOutput out) throws IOException {
40         id.datastore().writeTo(out);
41         out.writeObject(id.path());
42     }
43
44     @Override
45     public void readExternal(final ObjectInput in) throws IOException, ClassNotFoundException {
46         id = DOMDataTreeIdentifier.of(LogicalDatastoreType.readFrom(in), (YangInstanceIdentifier) in.readObject());
47     }
48
49     @java.io.Serial
50     Object readResolve() {
51         return verifyNotNull(id);
52     }
53 }