2 * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved.
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
8 package org.opendaylight.yangtools.yang.data.impl.codec;
10 import java.util.Map.Entry;
13 import org.opendaylight.yangtools.yang.binding.DataContainer;
14 import org.opendaylight.yangtools.yang.binding.DataObject;
15 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
16 import org.opendaylight.yangtools.yang.binding.RpcService;
17 import org.opendaylight.yangtools.yang.common.QName;
18 import org.opendaylight.yangtools.yang.data.api.CompositeNode;
20 import com.google.common.base.Optional;
22 public interface BindingIndependentMappingService {
27 * @return codec registry
29 CodecRegistry getCodecRegistry();
32 * Convert given DataObject data to DOM-like node.
36 * @return CompositeNode created from DataObject instance
38 CompositeNode toDataDom(DataObject data);
41 * Create map entry representing node data (key = data schema node
42 * identifier, value = value is node data representation as Composite node)
43 * from entry representing node class (key = class object identifier, value
47 * map entry, where key is class object identifier and value
49 * @return data schema node identifier
51 Entry<org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier, CompositeNode> toDataDom(
52 Entry<InstanceIdentifier<? extends DataObject>, DataObject> entry);
55 * Create data schema node identifier from class object identifier.
58 * class object identifier
59 * @return data schema node identifier
61 org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier toDataDom(InstanceIdentifier<? extends DataObject> path);
64 * Create DataObject instance from CompositeNode data based on given path.
70 * @return inputClass instance created from composite node input
72 DataObject dataObjectFromDataDom(InstanceIdentifier<? extends DataObject> path, CompositeNode result)
73 throws DeserializationException;
76 * Create class object identifier from data schema node identifier.
79 * data schema node identifier
80 * @return class object identifier
82 InstanceIdentifier<?> fromDataDom(org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier entry)
83 throws DeserializationException;
86 * Returns the list of currently-known QNames for instances of a service.
90 * @return List of QNames. The user may not modify this list.
92 Set<QName> getRpcQNamesFor(Class<? extends RpcService> service);
95 * Get RpcService by namespace and revision.
98 * rpc service namespace
100 * rpc service revision
101 * @return Optional reference on RpcServices based on given namespace and
104 Optional<Class<? extends RpcService>> getRpcServiceClassFor(String namespace, String revision);
107 * Create inputClass instance from CompositeNode data.
110 * expected type of resulting object
113 * @return inputClass instance created from composite node input
115 DataContainer dataObjectFromDataDom(Class<? extends DataContainer> inputClass, CompositeNode domInput);