X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=yang%2Fyang-data-codec-gson%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fyang%2Fdata%2Fcodec%2Fgson%2FJSONStringIdentityrefCodec.java;h=7b00dc5dd2c132c3987cfd833d7a1bf0240c6213;hb=746a859fcc4538e7ad2fcc8b51e8ff126206c829;hp=fcbe473cca8dc6b414814a2e05ed3f92d9e3673e;hpb=7b7f2cc40e4470f823e503b9fbd821e38546f294;p=yangtools.git diff --git a/yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JSONStringIdentityrefCodec.java b/yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JSONStringIdentityrefCodec.java index fcbe473cca..7b00dc5dd2 100644 --- a/yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JSONStringIdentityrefCodec.java +++ b/yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JSONStringIdentityrefCodec.java @@ -8,24 +8,33 @@ package org.opendaylight.yangtools.yang.data.codec.gson; import com.google.common.base.Preconditions; - +import com.google.gson.stream.JsonWriter; +import java.io.IOException; import java.net.URI; import org.opendaylight.yangtools.yang.common.QName; +import org.opendaylight.yangtools.yang.common.QNameModule; import org.opendaylight.yangtools.yang.data.util.AbstractModuleStringIdentityrefCodec; import org.opendaylight.yangtools.yang.model.api.Module; import org.opendaylight.yangtools.yang.model.api.SchemaContext; final class JSONStringIdentityrefCodec extends AbstractModuleStringIdentityrefCodec implements JSONCodec { private final SchemaContext context; + private final QNameModule parentModuleQname; - JSONStringIdentityrefCodec(final SchemaContext context) { + JSONStringIdentityrefCodec(final SchemaContext context, final QNameModule parentModule) { this.context = Preconditions.checkNotNull(context); + this.parentModuleQname = Preconditions.checkNotNull(parentModule); } @Override protected Module moduleForPrefix(final String prefix) { - return context.findModuleByName(prefix, null); + if (prefix.isEmpty()) { + return context.findModuleByNamespaceAndRevision(parentModuleQname.getNamespace(), + parentModuleQname.getRevision()); + } else { + return context.findModuleByName(prefix, null); + } } @Override @@ -38,4 +47,15 @@ final class JSONStringIdentityrefCodec extends AbstractModuleStringIdentityrefCo public boolean needQuotes() { return true; } + + /** + * Serialize QName with specified JsonWriter. + * + * @param writer JsonWriter + * @param value QName + */ + @Override + public void serializeToWriter(JsonWriter writer, QName value) throws IOException { + writer.value(serialize(value)); + } }