summaryrefslogtreecommitdiffstats
path: root/document
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2016-11-15 09:13:43 +0100
committerHenning Baldersheim <balder@yahoo-inc.com>2016-11-15 09:13:43 +0100
commitbcf55fa792372d59784f3b352dde429fe7cfe55d (patch)
tree109d99a6d8d4a5286ccc92982a362fc58d7aa16b /document
parent2126b575120e3d8166ce668341886abde62fde07 (diff)
Optimize setFieldValue too
Diffstat (limited to 'document')
-rw-r--r--document/src/main/java/com/yahoo/document/ExtendedField.java17
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;
+ }
}