com.yahoo.slime.Utf8Value Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of vespajlib Show documentation
Show all versions of vespajlib Show documentation
Library for use in Java components of Vespa. Shared code which do
not fit anywhere else.
// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.slime;
/**
* A value type encapsulating a String in its UTF-8 representation.
* Useful for lazy decoding; if the data is just passed through in
* UTF-8 it will never be converted at all.
*
* @author havardpe
*/
final class Utf8Value extends Value {
private final byte[] value;
private String string;
private Utf8Value(byte[] value) { this.value = value; }
public static Value create(byte[] value) {
if (value == null) {
return NixValue.instance();
} else {
return new Utf8Value(value);
}
}
public Type type() { return Type.STRING; }
public String asString() {
if (string == null) {
string = Utf8Codec.decode(value, 0, value.length);
}
return string;
}
public byte[] asUtf8() { return value; }
public void accept(Visitor v) { v.visitString(value); }
}