diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2016-11-15 00:07:46 +0100 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2016-11-15 00:07:46 +0100 |
commit | 2126b575120e3d8166ce668341886abde62fde07 (patch) | |
tree | 5ec5662a8d555a2c2c6cd479aa219e30aaf3e053 /document | |
parent | 43ef97313b369a484ec983b814e397720bb80a13 (diff) |
Use constant time hash lookups for non-struct and non-string fields for getFieldValue() and getField().
Diffstat (limited to 'document')
-rw-r--r-- | document/src/main/java/com/yahoo/document/ExtendedField.java | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/document/src/main/java/com/yahoo/document/ExtendedField.java b/document/src/main/java/com/yahoo/document/ExtendedField.java new file mode 100644 index 00000000000..672a824bcf4 --- /dev/null +++ b/document/src/main/java/com/yahoo/document/ExtendedField.java @@ -0,0 +1,21 @@ +package com.yahoo.document; + +import com.yahoo.document.datatypes.FieldValue; + +/** + * Created by balder on 14/11/2016. + */ +class ExtendedField extends Field { + static interface Extract { + Object get(Document doc); + } + private final Extract extract; + ExtendedField(String name, DataType type, Extract extract) { + super(name, type); + this.extract = extract; + } + FieldValue getFieldValue(Document doc) { + Object raw = extract.get(doc); + return raw == null ? null : getDataType().createFieldValue(raw); + } +} |