Binding v2 DOM Codec - generator - base implementation
[mdsal.git] / binding2 / mdsal-binding2-dom-codec / src / main / java / org / opendaylight / mdsal / binding / javav2 / dom / codec / generator / impl / TreeNodeSerializerPrototype.java
diff --git a/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/generator/impl/TreeNodeSerializerPrototype.java b/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/generator/impl/TreeNodeSerializerPrototype.java
new file mode 100644 (file)
index 0000000..b108193
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) 2017 Pantheon Technologies s.r.o. 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.javav2.dom.codec.generator.impl;
+
+import com.google.common.annotations.Beta;
+import java.io.IOException;
+import org.opendaylight.mdsal.binding.javav2.spec.base.TreeNode;
+import org.opendaylight.mdsal.binding.javav2.spec.runtime.BindingStreamEventWriter;
+import org.opendaylight.mdsal.binding.javav2.spec.runtime.TreeNodeSerializerImplementation;
+import org.opendaylight.mdsal.binding.javav2.spec.runtime.TreeNodeSerializerRegistry;
+
+/**
+ * Prototype of a TreeNodeSerializerImplementation. This is a template class, which the stream writer
+ * generator uses to instantiate {@link TreeNodeSerializerImplementation} on a per-type basis. During that
+ * time, the {@link #serialize(TreeNodeSerializerRegistry, TreeNode, BindingStreamEventWriter)} method will be
+ * replaced by the real implementation.
+ */
+@Beta
+public final class TreeNodeSerializerPrototype implements TreeNodeSerializerImplementation {
+
+    private static final TreeNodeSerializerPrototype INSTANCE = new TreeNodeSerializerPrototype();
+
+    private TreeNodeSerializerPrototype() {
+        // Intentionally hidden, subclasses can replace it
+    }
+
+    /**
+     * Return the shared serializer instance.
+     *
+     * @return Global singleton instance.
+     */
+    public static TreeNodeSerializerPrototype getInstance() {
+        return INSTANCE;
+    }
+
+    @Override
+    public void serialize(final TreeNodeSerializerRegistry reg, final TreeNode obj, final BindingStreamEventWriter stream)
+            throws IOException {
+        throw new UnsupportedOperationException("Prototype body, this code should never be invoked.");
+    }
+
+}