import org.opendaylight.mdsal.binding.runtime.api.BindingRuntimeContext;
import org.opendaylight.mdsal.binding.runtime.api.ListRuntimeType;
import org.opendaylight.mdsal.binding.spec.reflect.BindingReflections;
-import org.opendaylight.yangtools.concepts.Delegator;
import org.opendaylight.yangtools.concepts.Immutable;
import org.opendaylight.yangtools.util.ClassLoaderUtils;
import org.opendaylight.yangtools.yang.binding.Action;
@MetaInfServices(value = BindingDOMCodecServices.class)
public final class BindingCodecContext extends AbstractBindingNormalizedNodeSerializer
implements BindingDOMCodecServices, Immutable, CodecContextFactory, DataObjectSerializerRegistry {
- private final class DataObjectSerializerProxy implements DataObjectSerializer, Delegator<DataObjectStreamer<?>> {
- private final @NonNull DataObjectStreamer<?> delegate;
-
- DataObjectSerializerProxy(final DataObjectStreamer<?> delegate) {
- this.delegate = requireNonNull(delegate);
- }
-
- @Override
- public DataObjectStreamer<?> getDelegate() {
- return delegate;
- }
-
- @Override
- public void serialize(final DataObject obj, final BindingStreamEventWriter stream) throws IOException {
- delegate.serialize(BindingCodecContext.this, obj, stream);
- }
- }
-
private static final Logger LOG = LoggerFactory.getLogger(BindingCodecContext.class);
private static final @NonNull NodeIdentifier FAKE_NODEID = new NodeIdentifier(QName.create("fake", "fake"));
private static final File BYTECODE_DIRECTORY;
new CacheLoader<Class<?>, DataObjectSerializer>() {
@Override
public DataObjectSerializer load(final Class<?> key) throws ExecutionException {
- return new DataObjectSerializerProxy(streamers.get(key));
+ return new DataObjectSerializer(BindingCodecContext.this, streamers.get(key));
}
});
*/
package org.opendaylight.mdsal.binding.dom.codec.impl;
+import static java.util.Objects.requireNonNull;
+
import java.io.IOException;
+import org.eclipse.jdt.annotation.NonNull;
import org.opendaylight.mdsal.binding.dom.codec.api.BindingStreamEventWriter;
import org.opendaylight.yangtools.yang.binding.DataObject;
/**
* A serializer which writes DataObject to supplied stream event writer.
*/
-// FIXME: this interface should not be necessary
-public interface DataObjectSerializer {
+final class DataObjectSerializer {
+ private final @NonNull DataObjectSerializerRegistry registry;
+ private final @NonNull DataObjectStreamer<?> delegate;
+
+ DataObjectSerializer(final DataObjectSerializerRegistry registry, final DataObjectStreamer<?> delegate) {
+ this.registry = requireNonNull(registry);
+ this.delegate = requireNonNull(delegate);
+ }
+
/**
* Writes stream events representing object to supplied stream.
*
- * @param obj
- * Source of stream events
- * @param stream
- * Stream to which events should be written.
+ * @param obj Source of stream events
+ * @param stream Stream to which events should be written.
*/
- void serialize(DataObject obj, BindingStreamEventWriter stream) throws IOException;
+ void serialize(final DataObject obj, final BindingStreamEventWriter stream) throws IOException {
+ delegate.serialize(registry, obj, stream);
+ }
}