X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-binding-broker%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Fbinding%2Fdom%2Fserializer%2Fimpl%2FCodecMapping.java;h=fa2d32a1387d95aa6a65c251279465ca3aaf27f6;hp=172fb05292043e49612a8bee700750c6ca68810f;hb=2d9dc00aaaa1a059dcca7861484698a95de0644e;hpb=af7ad35c9f574ca6ecbf18c505d3112aea2f58ac diff --git a/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/sal/binding/dom/serializer/impl/CodecMapping.java b/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/sal/binding/dom/serializer/impl/CodecMapping.java index 172fb05292..fa2d32a138 100644 --- a/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/sal/binding/dom/serializer/impl/CodecMapping.java +++ b/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/sal/binding/dom/serializer/impl/CodecMapping.java @@ -3,6 +3,7 @@ package org.opendaylight.controller.sal.binding.dom.serializer.impl; import java.lang.reflect.Field; import java.util.Map; +import org.opendaylight.controller.sal.binding.dom.serializer.api.IdentitityCodec; import org.opendaylight.controller.sal.binding.dom.serializer.api.InstanceIdentifierCodec; import org.opendaylight.yangtools.yang.binding.BindingCodec; import org.opendaylight.yangtools.yang.common.QName; @@ -15,6 +16,8 @@ public class CodecMapping { private static final Logger LOG = LoggerFactory.getLogger(CodecMapping.class); public static final String INSTANCE_IDENTIFIER_CODEC = "INSTANCE_IDENTIFIER_CODEC"; + public static final String IDENTITYREF_CODEC = "IDENTITYREF_CODEC"; + public static final String CLASS_TO_CASE_MAP = "CLASS_TO_CASE"; public static final String COMPOSITE_TO_CASE = "COMPOSITE_TO_CASE"; public static final String AUGMENTATION_CODEC = "AUGMENTATION_CODEC"; @@ -27,7 +30,22 @@ public class CodecMapping { instanceIdField.set(null, codec); } } catch (NoSuchFieldException e) { - LOG.debug("Instance identifier codec is not needed for {}",obj.getName(),e); + LOG.trace("Instance identifier codec is not needed for {}",obj.getName(),e); + } catch (SecurityException | IllegalAccessException e) { + LOG.error("Instance identifier could not be set for {}",obj.getName(),e); + } + } + + + public static void setIdentityRefCodec(Class obj,IdentitityCodec codec) { + Field instanceIdField; + try { + instanceIdField = obj.getField(IDENTITYREF_CODEC); + if(obj != null) { + instanceIdField.set(null, codec); + } + } catch (NoSuchFieldException e) { + LOG.trace("Instance identifier codec is not needed for {}",obj.getName(),e); } catch (SecurityException | IllegalAccessException e) { LOG.error("Instance identifier could not be set for {}",obj.getName(),e); } @@ -71,4 +89,18 @@ public class CodecMapping { LOG.error("Augmentation codec could not be set for {}",dataCodec.getName(),e); } } + + + public static BindingCodec getAugmentationCodec(Class> dataCodec) { + Field instanceIdField; + try { + instanceIdField = dataCodec.getField(AUGMENTATION_CODEC); + return (BindingCodec) instanceIdField.get(null); + } catch (NoSuchFieldException e) { + LOG.debug("BUG: Augmentation codec is not needed for {}",dataCodec.getName(),e); + } catch (SecurityException | IllegalAccessException e) { + LOG.error("Augmentation codec could not be set for {}",dataCodec.getName(),e); + } + return null; + } }