aboutsummaryrefslogtreecommitdiffstats
path: root/docproc/src/main/java/com/yahoo/docproc/DocumentProcessor.java
diff options
context:
space:
mode:
Diffstat (limited to 'docproc/src/main/java/com/yahoo/docproc/DocumentProcessor.java')
-rw-r--r--docproc/src/main/java/com/yahoo/docproc/DocumentProcessor.java67
1 files changed, 37 insertions, 30 deletions
diff --git a/docproc/src/main/java/com/yahoo/docproc/DocumentProcessor.java b/docproc/src/main/java/com/yahoo/docproc/DocumentProcessor.java
index 934e1a281e5..877ecf52789 100644
--- a/docproc/src/main/java/com/yahoo/docproc/DocumentProcessor.java
+++ b/docproc/src/main/java/com/yahoo/docproc/DocumentProcessor.java
@@ -48,10 +48,10 @@ public abstract class DocumentProcessor extends ChainedComponent {
private Map<Pair<String,String>, String> fieldMap = new HashMap<>();
/** For a doc type, the actual field name mapping to do */
- // TODO how to flush this when reconfig of schemamapping? Must solve
- private Map<String, Map<String, String>> docMapCache = new HashMap<>();
+ // TODO: How to flush this when reconfig of schemamapping?
+ private final Map<String, Map<String, String>> docMapCache = new HashMap<>();
- final boolean hasAnnotations;
+ private final boolean hasAnnotations;
public DocumentProcessor() {
hasAnnotations = getClass().getAnnotation(Accesses.class) != null;
@@ -70,6 +70,34 @@ public abstract class DocumentProcessor extends ChainedComponent {
*/
public abstract Progress process(Processing processing);
+ /** Sets the schema map for field names */
+ public void setFieldMap(Map<Pair<String, String>, String> fieldMap) {
+ this.fieldMap = fieldMap;
+
+ }
+
+ /** Schema map for field names (doctype,from)→to */
+ public Map<Pair<String, String>, String> getFieldMap() {
+ return fieldMap;
+ }
+
+ public Map<String, String> getDocMap(String docType) {
+ Map<String, String> cached = docMapCache.get(docType);
+ if (cached!=null) {
+ return cached;
+ }
+ Map<String, String> ret = new HashMap<>();
+ for (Entry<Pair<String, String>, String> e : fieldMap.entrySet()) {
+ // Remember to include tuple if doctype is unset in mapping
+ if (docType.equals(e.getKey().getFirst()) || e.getKey().getFirst()==null || "".equals(e.getKey().getFirst())) {
+ ret.put(e.getKey().getSecond(), e.getValue());
+ }
+ }
+ docMapCache.put(docType, ret);
+ return ret;
+ }
+
+ @Override
public String toString() {
return "processor " + getId().stringValue();
}
@@ -99,7 +127,7 @@ public abstract class DocumentProcessor extends ChainedComponent {
*/
public static final Progress PERMANENT_FAILURE = new Progress("permanent_failure");
- private String name;
+ private final String name;
private Optional<String> reason = Optional.empty();
@@ -120,6 +148,7 @@ public abstract class DocumentProcessor extends ChainedComponent {
return new Progress(this.name, reason);
}
+ @Override
public String toString() {
return name;
}
@@ -128,16 +157,20 @@ public abstract class DocumentProcessor extends ChainedComponent {
return reason;
}
+ @Override
public boolean equals(Object object) {
return object instanceof Progress && ((Progress) object).name.equals(this.name);
}
+ @Override
public int hashCode() {
return name.hashCode();
}
+
}
public static final class LaterProgress extends Progress {
+
private final long delay;
public static final long DEFAULT_LATER_DELAY = 20; //ms
@@ -153,33 +186,7 @@ public abstract class DocumentProcessor extends ChainedComponent {
public long getDelay() {
return delay;
}
- }
-
- /** Sets the schema map for field names */
- public void setFieldMap(Map<Pair<String, String>, String> fieldMap) {
- this.fieldMap = fieldMap;
-
- }
- /** Schema map for field names (doctype,from)→to */
- public Map<Pair<String, String>, String> getFieldMap() {
- return fieldMap;
- }
-
- public Map<String, String> getDocMap(String docType) {
- Map<String, String> cached = docMapCache.get(docType);
- if (cached!=null) {
- return cached;
- }
- Map<String, String> ret = new HashMap<>();
- for (Entry<Pair<String, String>, String> e : fieldMap.entrySet()) {
- // Remember to include tuple if doctype is unset in mapping
- if (docType.equals(e.getKey().getFirst()) || e.getKey().getFirst()==null || "".equals(e.getKey().getFirst())) {
- ret.put(e.getKey().getSecond(), e.getValue());
- }
- }
- docMapCache.put(docType, ret);
- return ret;
}
}