Merge changes I0f752636,Idd154499,Ic35fa3e8
[controller.git] / opendaylight / md-sal / sal-binding-broker / src / main / java / org / opendaylight / controller / sal / binding / dom / serializer / impl / CodecMapping.java
1 package org.opendaylight.controller.sal.binding.dom.serializer.impl;
2
3 import java.lang.reflect.Field;
4 import java.util.Map;
5
6 import org.opendaylight.controller.sal.binding.dom.serializer.api.InstanceIdentifierCodec;
7 import org.opendaylight.yangtools.yang.binding.BindingCodec;
8 import org.opendaylight.yangtools.yang.common.QName;
9 import org.opendaylight.yangtools.yang.data.api.CompositeNode;
10 import org.opendaylight.yangtools.yang.data.api.Node;
11
12 public class CodecMapping {
13
14     public static final String INSTANCE_IDENTIFIER_CODEC = "INSTANCE_IDENTIFIER_CODEC";
15     public static final String CLASS_TO_CASE_MAP = "CLASS_TO_CASE";
16     public static final String COMPOSITE_TO_CASE = "COMPOSITE_TO_CASE";
17     public static final String AUGMENTATION_CODEC = "AUGMENTATION_CODEC";
18     
19     public static void setIdentifierCodec(Class obj,InstanceIdentifierCodec codec) {
20         Field instanceIdField;
21         try {
22             instanceIdField = obj.getField(INSTANCE_IDENTIFIER_CODEC);
23             instanceIdField.set(null, codec);
24         } catch (NoSuchFieldException e) {
25            // NOOP
26         } catch (SecurityException e) {
27             // NOOP
28         } catch (IllegalAccessException e) {
29             // NOOp
30         }
31     }
32
33     public static void setClassToCaseMap(Class<? extends BindingCodec<?,?>> codec,
34             Map<Class<?>,BindingCodec<?,?>> classToCaseRawCodec) {
35         Field instanceIdField;
36         try {
37             instanceIdField = codec.getField(CLASS_TO_CASE_MAP);
38             instanceIdField.set(null, classToCaseRawCodec);
39         } catch (NoSuchFieldException e) {
40            // NOOP
41         } catch (SecurityException e) {
42             // NOOP
43         } catch (IllegalAccessException e) {
44             // NOOp
45         }
46         
47         
48     }
49
50     public static void setCompositeNodeToCaseMap(Class<? extends BindingCodec<?,?>> codec,
51             Map<CompositeNode,BindingCodec<?,?>> compositeToCase) {
52         Field instanceIdField;
53         try {
54             instanceIdField = codec.getField(COMPOSITE_TO_CASE);
55             instanceIdField.set(null, compositeToCase);
56         } catch (NoSuchFieldException e) {
57            // NOOP
58         } catch (SecurityException e) {
59             // NOOP
60         } catch (IllegalAccessException e) {
61             // NOOp
62         }
63     }
64
65     public static void setAugmentationCodec(Class<? extends BindingCodec<Map<QName, Object>, Object>> dataCodec,
66             BindingCodec<?,?> augmentableCodec) {
67             Field instanceIdField;
68             try {
69                 instanceIdField = dataCodec.getField(AUGMENTATION_CODEC);
70                 instanceIdField.set(null, augmentableCodec);
71             } catch (NoSuchFieldException e) {
72                // NOOP
73             } catch (SecurityException e) {
74                 // NOOP
75             } catch (IllegalAccessException e) {
76                 // NOOp
77             }
78     }
79 }