Eliminate DataObjectSerializerImplementation 51/106551/3
authorRobert Varga <robert.varga@pantheon.tech>
Tue, 20 Jun 2023 10:14:57 +0000 (12:14 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Tue, 20 Jun 2023 10:31:41 +0000 (12:31 +0200)
We do not need the intermediate interface and can just have
DataObjectStreamer as the main entrypoint.

Change-Id: I14b01652baf5c0c6bd86ffe3951255717b2bd831
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/DataObjectSerializerImplementation.java [deleted file]
binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/DataObjectSerializerRegistry.java
binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/DataObjectStreamer.java
binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/DataObjectStreamerGenerator.java

diff --git a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/DataObjectSerializerImplementation.java b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/DataObjectSerializerImplementation.java
deleted file mode 100644 (file)
index 6d459d2..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Copyright (c) 2014 Cisco Systems, Inc. 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.mdsal.binding.dom.codec.impl;
-
-import java.io.IOException;
-import org.opendaylight.mdsal.binding.dom.codec.api.BindingStreamEventWriter;
-import org.opendaylight.yangtools.yang.binding.DataObject;
-
-/**
- * SPI-level contract for implementations of {@link DataObjectSerializer}.
- * The contract is kept between implementation of {@link DataObjectSerializerRegistry},
- * which maintains the lookup context required for recursive serialization.
- */
-//* FIXME: this interface should not be necessary
-public interface DataObjectSerializerImplementation {
-    /**
-     * Writes stream events for supplied data object to provided stream.
-     *
-     * <p>
-     * DataObjectSerializerRegistry may be used to lookup serializers for other generated classes  in order to support
-     * writing their events.
-     */
-    void serialize(DataObjectSerializerRegistry reg, DataObject obj, BindingStreamEventWriter stream)
-            throws IOException;
-}
index 21c237b10155b339d643e2913ec4f66c8b499bac..5e22eaec5e40ce590a32408b21ba21e306d20580 100644 (file)
@@ -10,9 +10,9 @@ package org.opendaylight.mdsal.binding.dom.codec.impl;
 import org.opendaylight.yangtools.yang.binding.DataObject;
 
 /**
- * SPI-level contract for registry of {@link DataObjectSerializer}. The contract is kept between implementation
- * of {@link DataObjectSerializerImplementation}, Registry provides lookup for serializers to support recursive
- * serialization of nested {@link DataObject}s.
+ * SPI-level contract for registry of {@link DataObjectSerializer}. The contract is kept between implementation of
+ * {@link DataObjectSerializer}, Registry provides lookup for serializers to support recursive serialization of nested
+ * {@link DataObject}s.
  */
 // FIXME: this interface should not be necessary
 public interface DataObjectSerializerRegistry {
index 96e346eab35a02601397d838aec46faacf8fcd0f..839a78beb6a4f51917e086b97f580f585b9a7be1 100644 (file)
@@ -32,13 +32,23 @@ import org.slf4j.LoggerFactory;
  * @param <T> DataObject type
  */
 @Beta
-public abstract class DataObjectStreamer<T extends DataObject> implements DataObjectSerializerImplementation {
+public abstract class DataObjectStreamer<T extends DataObject> {
     private static final Logger LOG = LoggerFactory.getLogger(DataObjectStreamer.class);
 
     protected DataObjectStreamer() {
 
     }
 
+    /**
+     * Writes stream events for supplied data object to provided stream.
+     *
+     * <p>
+     * DataObjectSerializerRegistry may be used to lookup serializers for other generated classes  in order to support
+     * writing their events.
+     */
+    protected abstract void serialize(DataObjectSerializerRegistry reg, DataObject obj, BindingStreamEventWriter stream)
+            throws IOException;
+
     protected static final void streamAnydata(final BindingStreamEventWriter writer, final String localName,
             final Object value) throws IOException {
         if (value != null && writer instanceof AnydataBindingStreamWriter) {
index 5124ce6c80011e33edcb7830016b13f7858a9fbb..e2bc8bafa3ec983e9fea554d2cd0d6c14481efa7 100644 (file)
@@ -88,12 +88,8 @@ final class DataObjectStreamerGenerator<T extends DataObjectStreamer<?>> impleme
     private static final Generic BB_BESV = TypeDefinition.Sort.describe(BindingStreamEventWriter.class);
     private static final Generic BB_IOX = TypeDefinition.Sort.describe(IOException.class);
 
-    private static final int PUB_FINAL = Opcodes.ACC_PUBLIC | Opcodes.ACC_FINAL | Opcodes.ACC_SYNTHETIC;
-    private static final int PUB_CONST = Opcodes.ACC_PUBLIC | Opcodes.ACC_STATIC | Opcodes.ACC_FINAL
-            | Opcodes.ACC_SYNTHETIC;
-
     private static final Builder<?> TEMPLATE = new ByteBuddy().subclass(DataObjectStreamer.class)
-            .modifiers(PUB_FINAL);
+            .modifiers(Opcodes.ACC_PUBLIC | Opcodes.ACC_FINAL | Opcodes.ACC_SYNTHETIC);
 
     private static final StackManipulation REG = MethodVariableAccess.REFERENCE.loadFrom(1);
     private static final StackManipulation OBJ = MethodVariableAccess.REFERENCE.loadFrom(2);
@@ -237,7 +233,7 @@ final class DataObjectStreamerGenerator<T extends DataObjectStreamer<?>> impleme
         }
 
         final GeneratorResult<T> result = GeneratorResult.of(builder
-            .defineMethod("serialize", BB_VOID, PUB_FINAL)
+            .defineMethod("serialize", BB_VOID, Opcodes.ACC_PROTECTED | Opcodes.ACC_FINAL | Opcodes.ACC_SYNTHETIC)
                 .withParameters(BB_DOSR, BB_DATAOBJECT, BB_BESV)
                 .throwing(BB_IOX)
             .intercept(new SerializeImplementation(bindingInterface, startEvent, children)).make(), depBuilder.build());
@@ -402,7 +398,9 @@ final class DataObjectStreamerGenerator<T extends DataObjectStreamer<?>> impleme
         public InstrumentedType prepare(final InstrumentedType instrumentedType) {
             return instrumentedType
                     // private static final This INSTANCE = new This()
-                    .withField(new FieldDescription.Token(INSTANCE_FIELD, PUB_CONST, instrumentedType.asGenericType()))
+                    .withField(new FieldDescription.Token(INSTANCE_FIELD,
+                        Opcodes.ACC_PUBLIC | Opcodes.ACC_STATIC | Opcodes.ACC_FINAL | Opcodes.ACC_SYNTHETIC,
+                        instrumentedType.asGenericType()))
                     .withInitializer(InitializeInstanceField.INSTANCE);
         }