diff options
Diffstat (limited to 'container-search/src/main/java/com/yahoo/prelude/fastsearch/FeatureDataField.java')
-rw-r--r-- | container-search/src/main/java/com/yahoo/prelude/fastsearch/FeatureDataField.java | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/FeatureDataField.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/FeatureDataField.java new file mode 100644 index 00000000000..b622f5c62c5 --- /dev/null +++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/FeatureDataField.java @@ -0,0 +1,45 @@ +// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +package com.yahoo.prelude.fastsearch; + +import com.yahoo.data.access.Inspector; +import com.yahoo.data.access.Type; +import com.yahoo.container.search.LegacyEmulationConfig; +import com.yahoo.search.result.FeatureData; + +/** + * Class representing a "feature data" field. This was historically + * just a string containing JSON; now it's a structure of + * data (that will be rendered as JSON by default). + */ +public class FeatureDataField extends LongstringField { + + public FeatureDataField (String name) { + super(name); + } + + @Override + public String toString() { + return "field " + getName() + " type FeatureDataField"; + } + + public Object convert(Inspector value) { + if (! value.valid()) { + if (getEmulConfig().stringBackedFeatureData()) { + return ""; + } else if (getEmulConfig().forceFillEmptyFields()) { + return new FeatureData(com.yahoo.data.access.simple.Value.empty()); + } else { + return null; + } + } + if (value.type() == Type.STRING) { + return value.asString(); + } + FeatureData obj = new FeatureData(value); + if (getEmulConfig().stringBackedFeatureData()) { + return obj.toJson(); + } else { + return obj; + } + } +} |