BUG-509: reorganize data tree abstractions.
[controller.git] / opendaylight / md-sal / sal-binding-spi / src / main / java / org / opendaylight / controller / sal / binding / spi / MappingProvider.java
1 /*
2  * Copyright (c) 2013 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.controller.sal.binding.spi;
9
10 import org.opendaylight.yangtools.yang.binding.DataObject;
11 import org.opendaylight.yangtools.yang.binding.RpcService;
12 import org.opendaylight.yangtools.yang.common.QName;
13 import org.opendaylight.yangtools.yang.data.api.CompositeNode;
14
15 public interface MappingProvider {
16
17     <T extends DataObject> Mapper<T> mapperForClass(Class<T> type);
18     Mapper<DataObject> mapperForQName(QName name);
19     
20     /**
21      * Returns {@link RpcMapper} associated to class
22      * 
23      * @param type Class for which RpcMapper should provide mapping
24      * @return
25      */
26     <T extends RpcService> RpcMapper<T> rpcMapperForClass(Class<T> type);
27     
28     /**
29      * Returns {@link RpcMapper} associated to the {@link RpcService} proxy.
30      * 
31      * @param proxy
32      * @return
33      */
34     RpcMapper<? extends RpcService> rpcMapperForProxy(RpcService proxy);
35     
36     /**
37      * 
38      * 
39      * @param rpc
40      * @param inputNode
41      * @return
42      */
43     RpcMapper<? extends RpcService> rpcMapperForData(QName rpc,
44             CompositeNode inputNode);
45
46     <T extends MappingExtension> MappingExtensionFactory<T> getExtensionFactory(Class<T> cls);
47
48     public interface MappingExtension {
49
50     }
51     
52     public interface MappingExtensionFactory<T> {
53         T forClass(Class<?> obj);
54     }
55
56
57
58 }