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=f7fe89b85f540dbe7d1fc051f2082f2ce571321a;hp=66d55237a567c813d31b1d77d7e3505731ac17b8;hpb=b1f4e95dbefd402a3b9bc9804184006229cfc30d;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 66d55237a5..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,23 +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 { +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 @@ -33,4 +43,19 @@ final class JSONStringIdentityrefCodec extends AbstractModuleStringIdentityrefCo return module == null ? null : module.getName(); } + @Override + 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)); + } }