Remove old YangInstanceIdentifier serialization 23/102123/4
authorRobert Varga <robert.varga@pantheon.tech>
Wed, 17 Aug 2022 08:13:23 +0000 (10:13 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Wed, 17 Aug 2022 08:56:59 +0000 (10:56 +0200)
YangInstanceIdentifier is written out through YIDv1 since version 3.0.0,
there is no point in supporting direct serialization methods anymore.
This has a nice effect of ditching reflection.

Change-Id: I50ad185df83b88495cb1fc1024170dcb4cd41ade
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/FixedYangInstanceIdentifier.java
data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/StackedYangInstanceIdentifier.java

index 33b5003d9c6841ea32ee78a5fb64175e8618506f..390c9dd99b6261c5ba73a4f7310e5883830d1612 100644 (file)
@@ -12,7 +12,6 @@ import static com.google.common.base.Verify.verifyNotNull;
 import static java.util.Objects.requireNonNull;
 
 import com.google.common.collect.ImmutableList;
-import java.io.ObjectStreamException;
 import java.io.Serial;
 import java.util.List;
 import org.eclipse.jdt.annotation.NonNull;
@@ -25,7 +24,8 @@ final class FixedYangInstanceIdentifier extends YangInstanceIdentifier implement
     private static final long serialVersionUID = 1L;
 
     private final ImmutableList<PathArgument> path;
-    private transient volatile YangInstanceIdentifier parent;
+
+    private transient volatile YangInstanceIdentifier parent = null;
 
     FixedYangInstanceIdentifier(final ImmutableList<PathArgument> path) {
         this.path = requireNonNull(path, "path must not be null.");
@@ -119,11 +119,6 @@ final class FixedYangInstanceIdentifier extends YangInstanceIdentifier implement
             : new FixedYangInstanceIdentifier(path.subList(skipFromRoot, path.size()));
     }
 
-    @Serial
-    private Object readResolve() throws ObjectStreamException {
-        return path.isEmpty() ? EMPTY_INSTANCE : this;
-    }
-
     @Override
     int computeHashCode() {
         int ret = 1;
index 2944440aea24cceec823e90cc99e55e28894699f..e58bd9db2b0c08a2952fbca41d27ff1660ffe256 100644 (file)
@@ -14,13 +14,7 @@ import static java.util.Objects.requireNonNull;
 
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Lists;
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
 import java.io.Serial;
-import java.lang.reflect.Field;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
 import java.util.ArrayList;
 import java.util.List;
 import org.eclipse.jdt.annotation.NonNull;
@@ -29,23 +23,6 @@ import org.opendaylight.yangtools.util.HashCodeBuilder;
 final class StackedYangInstanceIdentifier extends YangInstanceIdentifier implements Cloneable {
     @Serial
     private static final long serialVersionUID = 1L;
-    private static final Field PARENT_FIELD;
-
-    static {
-        final Field f;
-        try {
-            f = StackedYangInstanceIdentifier.class.getDeclaredField("parent");
-        } catch (NoSuchFieldException | SecurityException e) {
-            throw new ExceptionInInitializerError(e);
-        }
-
-        AccessController.doPrivileged((PrivilegedAction<Void>) () -> {
-            f.setAccessible(true);
-            return null;
-        });
-
-        PARENT_FIELD = f;
-    }
 
     private final @NonNull YangInstanceIdentifier parent;
     private final @NonNull PathArgument pathArgument;
@@ -177,31 +154,6 @@ final class StackedYangInstanceIdentifier extends YangInstanceIdentifier impleme
         return super.pathArgumentsEqual(other);
     }
 
-    @Serial
-    private void readObject(final ObjectInputStream inputStream) throws IOException, ClassNotFoundException {
-        inputStream.defaultReadObject();
-
-        final FixedYangInstanceIdentifier p = (FixedYangInstanceIdentifier) inputStream.readObject();
-        try {
-            PARENT_FIELD.set(this, p);
-        } catch (IllegalArgumentException | IllegalAccessException e) {
-            throw new IOException("Failed to set parent", e);
-        }
-    }
-
-    @Serial
-    private void writeObject(final ObjectOutputStream outputStream) throws IOException {
-        outputStream.defaultWriteObject();
-
-        final FixedYangInstanceIdentifier p;
-        if (parent instanceof FixedYangInstanceIdentifier) {
-            p = (FixedYangInstanceIdentifier) parent;
-        } else {
-            p = FixedYangInstanceIdentifier.of(parent.getPathArguments());
-        }
-        outputStream.writeObject(p);
-    }
-
     @Override
     public YangInstanceIdentifier toOptimized() {
         return FixedYangInstanceIdentifier.create(getPathArguments());