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=f84503bea4d6e720fe3f16578a01e23116b2e72b;hp=150d0f199f83f5615a9a5a8b7bda07347e6be309;hb=9edc56d3e129b0e80ff8efbf4c8d43b9aac217af;hpb=428c5b93a8f6c99cc81eab5bcb6809f1b809cb38 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..f84503bea4 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) { @@ -106,7 +106,7 @@ class InstanceIdentifierCodecImpl implements InstanceIdentifierCodec { previousAugmentation = null; } else { - previousQName = resolveQname(baArg.type); + previousQName = codecRegistry.getQNameForAugmentation(baArg.type as Class); previousAugmentation = baArg.type; } } @@ -122,7 +122,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 +134,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 +145,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