Create InputMerger.
InputMerger is an abstract class that lets you specify how multiple
inputs to a Worker will be merged. You specify an InputMerger in the
Work.Builder as a class name; the default is ClobberingInputMerger.
As part of this CL, I have created two reasonable implementations:
- ClobberingInputMerger
- ArrayCreatingInputMerger
Test: added tests
Change-Id: I4f9e8246246d3bcdcb22c92fd5f38fd473f018b6
diff --git a/background/workmanager/src/main/java/android/arch/background/workmanager/model/WorkSpec.java b/background/workmanager/src/main/java/android/arch/background/workmanager/model/WorkSpec.java
index 79ef7d8..14a22c7 100644
--- a/background/workmanager/src/main/java/android/arch/background/workmanager/model/WorkSpec.java
+++ b/background/workmanager/src/main/java/android/arch/background/workmanager/model/WorkSpec.java
@@ -42,6 +42,9 @@
@ColumnInfo(name = "worker_class_name")
String mWorkerClassName;
+ @ColumnInfo(name = "input_merger_class_name")
+ String mInputMergerClassName = OverwritingInputMerger.class.getName();
+
@ColumnInfo(name = "initial_delay")
long mInitialDelay;
@@ -94,6 +97,14 @@
mWorkerClassName = workerClassName;
}
+ public String getInputMergerClassName() {
+ return mInputMergerClassName;
+ }
+
+ public void setInputMergerClassName(String inputMergerClassName) {
+ mInputMergerClassName = inputMergerClassName;
+ }
+
public Constraints getConstraints() {
return mConstraints;
}
@@ -217,6 +228,9 @@
&& (mWorkerClassName != null
? mWorkerClassName.equals(other.mWorkerClassName)
: other.mWorkerClassName == null)
+ && (mInputMergerClassName != null
+ ? mInputMergerClassName.equals(other.mInputMergerClassName)
+ : other.mInputMergerClassName == null)
&& (mConstraints != null
? mConstraints.equals(other.mConstraints)
: other.mConstraints == null);
@@ -227,6 +241,8 @@
int result = mId.hashCode();
result = 31 * result + mStatus;
result = 31 * result + (mWorkerClassName != null ? mWorkerClassName.hashCode() : 0);
+ result = 31 * result
+ + (mInputMergerClassName != null ? mInputMergerClassName.hashCode() : 0);
result = 31 * result + (int) (mInitialDelay ^ (mInitialDelay >>> 32));
result = 31 * result + (int) (mIntervalDuration ^ (mIntervalDuration >>> 32));
result = 31 * result + (int) (mFlexDuration ^ (mFlexDuration >>> 32));