diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2016-11-15 09:13:43 +0100 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2016-11-15 09:13:43 +0100 |
commit | bcf55fa792372d59784f3b352dde429fe7cfe55d (patch) | |
tree | 109d99a6d8d4a5286ccc92982a362fc58d7aa16b /document | |
parent | 2126b575120e3d8166ce668341886abde62fde07 (diff) |
Optimize setFieldValue too
Diffstat (limited to 'document')
-rw-r--r-- | document/src/main/java/com/yahoo/document/ExtendedField.java | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/document/src/main/java/com/yahoo/document/ExtendedField.java b/document/src/main/java/com/yahoo/document/ExtendedField.java index 672a824bcf4..6ecf2e62efc 100644 --- a/document/src/main/java/com/yahoo/document/ExtendedField.java +++ b/document/src/main/java/com/yahoo/document/ExtendedField.java @@ -1,21 +1,28 @@ package com.yahoo.document; import com.yahoo.document.datatypes.FieldValue; +import com.yahoo.document.datatypes.StructuredFieldValue; /** * Created by balder on 14/11/2016. */ -class ExtendedField extends Field { - static interface Extract { - Object get(Document doc); +public class ExtendedField extends Field { + public static interface Extract { + Object get(StructuredFieldValue doc); + void set(StructuredFieldValue doc, Object value); } private final Extract extract; - ExtendedField(String name, DataType type, Extract extract) { + public ExtendedField(String name, DataType type, Extract extract) { super(name, type); this.extract = extract; } - FieldValue getFieldValue(Document doc) { + public FieldValue getFieldValue(StructuredFieldValue doc) { Object raw = extract.get(doc); return raw == null ? null : getDataType().createFieldValue(raw); } + public FieldValue setFieldValue(StructuredFieldValue doc, FieldValue fv) { + FieldValue old = getFieldValue(doc); + extract.set(doc, fv.getWrappedValue()); + return old; + } } |