Merge "Fix for Bug 3"
[controller.git] / opendaylight / md-sal / sal-binding-broker / src / main / java / org / opendaylight / controller / sal / binding / dom / serializer / api / CodecRegistry.java
1 package org.opendaylight.controller.sal.binding.dom.serializer.api;
2
3 import org.opendaylight.yangtools.concepts.Identifiable;
4 import org.opendaylight.yangtools.yang.binding.Augmentation;
5 import org.opendaylight.yangtools.yang.binding.BaseIdentity;
6 import org.opendaylight.yangtools.yang.binding.DataContainer;
7 import org.opendaylight.yangtools.yang.binding.Identifier;
8
9 import java.util.List;
10
11 import org.opendaylight.yangtools.yang.common.QName;
12 import org.opendaylight.controller.sal.binding.dom.serializer.api.IdentifierCodec;
13 import org.opendaylight.yangtools.yang.binding.DataObject;
14
15
16 public interface CodecRegistry {
17
18     InstanceIdentifierCodec getInstanceIdentifierCodec();
19     
20     IdentitityCodec<?> getIdentityCodec();
21
22     <T extends DataContainer> DataContainerCodec<T> getCodecForDataObject(Class<T> object);
23
24     <T extends Identifiable<?>> IdentifierCodec<?> getIdentifierCodecForIdentifiable(Class<T> object);
25
26     <T extends Identifier<?>> IdentifierCodec<T> getCodecForIdentifier(Class<T> object);
27
28     <T extends Augmentation<?>> AugmentationCodec<T> getCodecForAugmentation(Class<T> object);
29     
30     <T extends BaseIdentity> IdentitityCodec<T> getCodecForIdentity(Class<T> codec);
31
32     Class<?> getClassForPath(List<QName> names);
33
34     IdentifierCodec<?> getKeyCodecForPath(List<QName> names);
35     
36     
37     void bindingClassEncountered(Class<?> cls);
38
39     void putPathToClass(List<QName> names, Class<?> cls);
40
41     public abstract QName getQNameForAugmentation(Class<?> cls);
42 }