Bug 1439, Bug 1443 Binding Codec NormalizedNodeWriter support
[yangtools.git] / code-generator / binding-data-codec / src / main / java / org / opendaylight / yangtools / binding / data / codec / api / BindingNormalizedNodeSerializer.java
1 /*
2  * Copyright (c) 2014 Cisco Systems, Inc. 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.yangtools.binding.data.codec.api;
9
10 import java.util.Map;
11 import java.util.Map.Entry;
12 import org.opendaylight.yangtools.yang.binding.DataObject;
13 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
14 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
15 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
16
17 /**
18  * Serialization service, which provides two-way serialization between
19  * Java Binding Data representation and NormalizedNode representation.
20  *
21  */
22 public interface BindingNormalizedNodeSerializer {
23
24      /**
25       * Translates supplied Binding Instance Identifier into NormalizedNode instance identifier.
26       *
27       * @param binding Binding Instance Identifier
28       * @return DOM Instance Identifier
29       */
30      YangInstanceIdentifier toYangInstanceIdentifier(final InstanceIdentifier<?> binding);
31
32      /**
33       * Translates supplied YANG Instance Identifier into Binding instance identifier.
34       *
35       * @param dom YANG Instance Identifier
36       * @return Binding Instance Identifier
37       */
38      InstanceIdentifier<?> fromYangInstanceIdentifier(final YangInstanceIdentifier dom);
39
40      /**
41       * Translates supplied Binding Instance Identifier and data into NormalizedNode representatoin.
42       *
43       * @param path Binding Instance Identifier pointing to data
44       * @param data Data object representing data
45       * @return NormalizedNode representation
46       */
47      <T extends DataObject> Entry<YangInstanceIdentifier,NormalizedNode<?,?>> toNormalizedNode(final InstanceIdentifier<T> path, final T data);
48
49      /**
50       * Translates supplied YANG Instance Identifier and NormalizedNode into Binding data.
51       *
52       * @param path Binding Instance Identifier
53       * @param data NormalizedNode representing data
54       * @return DOM Instance Identifier
55       */
56      Entry<InstanceIdentifier<?>,DataObject> fromNormalizedNode(final YangInstanceIdentifier path, NormalizedNode<?, ?> data);
57
58      /**
59       * Returns map view which contains translated set of entries to normalized nodes.
60       * Returned set will not contain representation of leaf nodes.
61       *
62       * @param dom Map of YANG Instance Identifier to Data
63       * @return Map of Binding Instance Identifier to data.
64       */
65      Map<InstanceIdentifier<?>,DataObject> fromNormalizedNodes(Map<YangInstanceIdentifier,NormalizedNode<?,?>> dom);
66
67 }