d05967c2c8ccdde885d595a26331f01be3127ff3
[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
11 public class CodecMapping {
12
13     public static final String INSTANCE_IDENTIFIER_CODEC = "INSTANCE_IDENTIFIER_CODEC";
14     public static final String CLASS_TO_CASE_MAP = "CLASS_TO_CASE";
15     public static final String COMPOSITE_TO_CASE = "COMPOSITE_TO_CASE";
16     public static final String AUGMENTATION_CODEC = "AUGMENTATION_CODEC";
17     
18     public static void setIdentifierCodec(Class<?> obj,InstanceIdentifierCodec codec) {
19         Field instanceIdField;
20         try {
21             instanceIdField = obj.getField(INSTANCE_IDENTIFIER_CODEC);
22             instanceIdField.set(null, codec);
23         } catch (NoSuchFieldException e) {
24            // NOOP
25         } catch (SecurityException e) {
26             // NOOP
27         } catch (IllegalAccessException e) {
28             // NOOp
29         }
30     }
31
32     public static void setClassToCaseMap(Class<? extends BindingCodec<?,?>> codec,
33             Map<Class<?>,BindingCodec<?,?>> classToCaseRawCodec) {
34         Field instanceIdField;
35         try {
36             instanceIdField = codec.getField(CLASS_TO_CASE_MAP);
37             instanceIdField.set(null, classToCaseRawCodec);
38         } catch (NoSuchFieldException e) {
39            // NOOP
40         } catch (SecurityException e) {
41             // NOOP
42         } catch (IllegalAccessException e) {
43             // NOOp
44         }
45         
46         
47     }
48
49     public static void setCompositeNodeToCaseMap(Class<? extends BindingCodec<?,?>> codec,
50             Map<CompositeNode,BindingCodec<?,?>> compositeToCase) {
51         Field instanceIdField;
52         try {
53             instanceIdField = codec.getField(COMPOSITE_TO_CASE);
54             instanceIdField.set(null, compositeToCase);
55         } catch (NoSuchFieldException e) {
56            // NOOP
57         } catch (SecurityException e) {
58             // NOOP
59         } catch (IllegalAccessException e) {
60             // NOOp
61         }
62     }
63
64     public static void setAugmentationCodec(Class<? extends BindingCodec<Map<QName, Object>, Object>> dataCodec,
65             BindingCodec<?,?> augmentableCodec) {
66             Field instanceIdField;
67             try {
68                 instanceIdField = dataCodec.getField(AUGMENTATION_CODEC);
69                 instanceIdField.set(null, augmentableCodec);
70             } catch (NoSuchFieldException e) {
71                // NOOP
72             } catch (SecurityException e) {
73                 // NOOP
74             } catch (IllegalAccessException e) {
75                 // NOOp
76             }
77     }
78 }