1 package org.opendaylight.controller.sal.binding.dom.serializer.impl;
3 import java.lang.reflect.Field;
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;
12 public class CodecMapping {
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";
19 public static void setIdentifierCodec(Class obj,InstanceIdentifierCodec codec) {
20 Field instanceIdField;
22 instanceIdField = obj.getField(INSTANCE_IDENTIFIER_CODEC);
23 instanceIdField.set(null, codec);
24 } catch (NoSuchFieldException e) {
26 } catch (SecurityException e) {
28 } catch (IllegalAccessException e) {
33 public static void setClassToCaseMap(Class<? extends BindingCodec<?,?>> codec,
34 Map<Class<?>,BindingCodec<?,?>> classToCaseRawCodec) {
35 Field instanceIdField;
37 instanceIdField = codec.getField(CLASS_TO_CASE_MAP);
38 instanceIdField.set(null, classToCaseRawCodec);
39 } catch (NoSuchFieldException e) {
41 } catch (SecurityException e) {
43 } catch (IllegalAccessException e) {
50 public static void setCompositeNodeToCaseMap(Class<? extends BindingCodec<?,?>> codec,
51 Map<CompositeNode,BindingCodec<?,?>> compositeToCase) {
52 Field instanceIdField;
54 instanceIdField = codec.getField(COMPOSITE_TO_CASE);
55 instanceIdField.set(null, compositeToCase);
56 } catch (NoSuchFieldException e) {
58 } catch (SecurityException e) {
60 } catch (IllegalAccessException e) {
65 public static void setAugmentationCodec(Class<? extends BindingCodec<Map<QName, Object>, Object>> dataCodec,
66 BindingCodec<?,?> augmentableCodec) {
67 Field instanceIdField;
69 instanceIdField = dataCodec.getField(AUGMENTATION_CODEC);
70 instanceIdField.set(null, augmentableCodec);
71 } catch (NoSuchFieldException e) {
73 } catch (SecurityException e) {
75 } catch (IllegalAccessException e) {