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%2FInstanceIdentifierCodecImpl.xtend;h=d9103727b2debc5e066a34380b7caef2d9f2e8a4;hp=150d0f199f83f5615a9a5a8b7bda07347e6be309;hb=4142ab5dce3021e6f6551aada26c7523cd134844;hpb=f7ba165cc8c8118cabd051da77a3b1efd6d5a935 diff --git a/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/sal/binding/dom/serializer/impl/InstanceIdentifierCodecImpl.xtend b/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/sal/binding/dom/serializer/impl/InstanceIdentifierCodecImpl.xtend index 150d0f199f..d9103727b2 100644 --- a/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/sal/binding/dom/serializer/impl/InstanceIdentifierCodecImpl.xtend +++ b/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/sal/binding/dom/serializer/impl/InstanceIdentifierCodecImpl.xtend @@ -26,13 +26,13 @@ import org.opendaylight.yangtools.yang.binding.Augmentable import com.google.common.collect.ImmutableList import org.opendaylight.yangtools.yang.binding.Augmentation import java.util.concurrent.ConcurrentHashMap +import org.opendaylight.yangtools.yang.binding.util.BindingReflections class InstanceIdentifierCodecImpl implements InstanceIdentifierCodec { private static val LOG = LoggerFactory.getLogger(InstanceIdentifierCodecImpl); val CodecRegistry codecRegistry; - val Map,QName> classToQName = new WeakHashMap; val Map, Map, Class>> classToPreviousAugment = new WeakHashMap; public new(CodecRegistry registry) { @@ -59,6 +59,7 @@ class InstanceIdentifierCodecImpl implements InstanceIdentifierCodec { baArgs.add(baArg) } val ret = new InstanceIdentifier(baArgs,baType as Class); + LOG.debug("DOM Instance Identifier {} deserialized to {}",input,ret); return ret; } @@ -106,11 +107,13 @@ class InstanceIdentifierCodecImpl implements InstanceIdentifierCodec { previousAugmentation = null; } else { - previousQName = resolveQname(baArg.type); + previousQName = codecRegistry.getQNameForAugmentation(baArg.type as Class); previousAugmentation = baArg.type; } } - return new org.opendaylight.yangtools.yang.data.api.InstanceIdentifier(components); + val ret = new org.opendaylight.yangtools.yang.data.api.InstanceIdentifier(components); + LOG.debug("Binding Instance Identifier {} serialized to DOM InstanceIdentifier {}",input,ret); + return ret; } def updateAugmentationInjection(Class class1, ImmutableList list, Class augmentation) { @@ -122,7 +125,7 @@ class InstanceIdentifierCodecImpl implements InstanceIdentifierCodec { private def dispatch PathArgument serializePathArgument(Item argument, QName previousQname) { val type = argument.type; - val qname = resolveQname(type); + val qname = BindingReflections.findQName(type); if(previousQname == null) { return new NodeIdentifier(qname); } @@ -134,7 +137,7 @@ class InstanceIdentifierCodecImpl implements InstanceIdentifierCodec { val Map predicates = new HashMap(); val type = argument.type; val keyCodec = codecRegistry.getIdentifierCodecForIdentifiable(type); - val qname = resolveQname(type); + val qname = BindingReflections.findQName(type); val combinedInput = new ValueWithQName(previousQname,argument.key) val compositeOutput = keyCodec.serialize(combinedInput as ValueWithQName); for(outputValue :compositeOutput.value) { @@ -145,15 +148,4 @@ class InstanceIdentifierCodecImpl implements InstanceIdentifierCodec { } return new NodeIdentifierWithPredicates(QName.create(previousQname,qname.localName),predicates); } - - def resolveQname(Class class1) { - val qname = classToQName.get(class1); - if(qname !== null) { - return qname; - } - val qnameField = class1.getField("QNAME"); - val qnameValue = qnameField.get(null) as QName; - classToQName.put(class1,qnameValue); - return qnameValue; - } } \ No newline at end of file