Properly mark some WorkSpec/Work fields as @NonNull.

Test: Updated and ran tests.
Change-Id: I2bdc14ee362862218de3ed9d08bd11a064b31de4
diff --git a/work/workmanager/src/main/java/androidx/work/impl/model/WorkSpec.java b/work/workmanager/src/main/java/androidx/work/impl/model/WorkSpec.java
index 456bf81..13a3080 100644
--- a/work/workmanager/src/main/java/androidx/work/impl/model/WorkSpec.java
+++ b/work/workmanager/src/main/java/androidx/work/impl/model/WorkSpec.java
@@ -48,9 +48,11 @@
     String mId;
 
     @ColumnInfo(name = "state")
+    @NonNull
     State mState = ENQUEUED;
 
     @ColumnInfo(name = "worker_class_name")
+    @NonNull
     String mWorkerClassName;
 
     @ColumnInfo(name = "input_merger_class_name")
@@ -74,6 +76,7 @@
     long mFlexDuration;
 
     @Embedded
+    @NonNull
     Constraints mConstraints = Constraints.NONE;
 
     @ColumnInfo(name = "run_attempt_count")
@@ -81,6 +84,7 @@
 
     // TODO(sumir): Should Backoff be disabled by default?
     @ColumnInfo(name = "backoff_policy")
+    @NonNull
     BackoffPolicy mBackoffPolicy = BackoffPolicy.EXPONENTIAL;
 
     @ColumnInfo(name = "backoff_delay_duration")
@@ -102,19 +106,19 @@
         mId = id;
     }
 
-    public State getState() {
+    public @NonNull State getState() {
         return mState;
     }
 
-    public void setState(State state) {
+    public void setState(@NonNull State state) {
         mState = state;
     }
 
-    public String getWorkerClassName() {
+    public @NonNull String getWorkerClassName() {
         return mWorkerClassName;
     }
 
-    public void setWorkerClassName(String workerClassName) {
+    public void setWorkerClassName(@NonNull String workerClassName) {
         mWorkerClassName = workerClassName;
     }
 
@@ -142,19 +146,19 @@
         mOutput = output;
     }
 
-    public Constraints getConstraints() {
+    public @NonNull Constraints getConstraints() {
         return mConstraints;
     }
 
-    public void setConstraints(Constraints constraints) {
+    public void setConstraints(@NonNull Constraints constraints) {
         mConstraints = constraints;
     }
 
-    public BackoffPolicy getBackoffPolicy() {
+    public @NonNull BackoffPolicy getBackoffPolicy() {
         return mBackoffPolicy;
     }
 
-    public void setBackoffPolicy(BackoffPolicy backoffPolicy) {
+    public void setBackoffPolicy(@NonNull BackoffPolicy backoffPolicy) {
         mBackoffPolicy = backoffPolicy;
     }
 
@@ -316,50 +320,47 @@
 
     @Override
     public boolean equals(Object o) {
-        if (this == o) {
-            return true;
-        }
-        if (o == null || getClass() != o.getClass()) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        WorkSpec workSpec = (WorkSpec) o;
+
+        if (mInitialDelay != workSpec.mInitialDelay) return false;
+        if (mIntervalDuration != workSpec.mIntervalDuration) return false;
+        if (mFlexDuration != workSpec.mFlexDuration) return false;
+        if (mRunAttemptCount != workSpec.mRunAttemptCount) return false;
+        if (mBackoffDelayDuration != workSpec.mBackoffDelayDuration) return false;
+        if (mPeriodStartTime != workSpec.mPeriodStartTime) return false;
+        if (!mId.equals(workSpec.mId)) return false;
+        if (mState != workSpec.mState) return false;
+        if (!mWorkerClassName.equals(workSpec.mWorkerClassName)) return false;
+        if (mInputMergerClassName != null ? !mInputMergerClassName.equals(
+                workSpec.mInputMergerClassName) : workSpec.mInputMergerClassName != null) {
             return false;
         }
-        WorkSpec other = (WorkSpec) o;
-        return mId.equals(other.mId)
-                && mState == other.mState
-                && mInitialDelay == other.mInitialDelay
-                && mIntervalDuration == other.mIntervalDuration
-                && mFlexDuration == other.mFlexDuration
-                && mRunAttemptCount == other.mRunAttemptCount
-                && mBackoffPolicy == other.mBackoffPolicy
-                && mBackoffDelayDuration == other.mBackoffDelayDuration
-                && mArguments.equals(other.mArguments)
-                && mOutput.equals(other.mOutput)
-                && (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);
+        if (!mArguments.equals(workSpec.mArguments)) return false;
+        if (!mOutput.equals(workSpec.mOutput)) return false;
+        if (!mConstraints.equals(workSpec.mConstraints)) return false;
+        return mBackoffPolicy == workSpec.mBackoffPolicy;
     }
 
     @Override
     public int hashCode() {
         int result = mId.hashCode();
         result = 31 * result + mState.hashCode();
-        result = 31 * result + (mWorkerClassName != null ? mWorkerClassName.hashCode() : 0);
-        result = 31 * result
-                + (mInputMergerClassName != null ? mInputMergerClassName.hashCode() : 0);
+        result = 31 * result + mWorkerClassName.hashCode();
+        result = 31 * result + (mInputMergerClassName != null ? mInputMergerClassName.hashCode()
+                : 0);
         result = 31 * result + mArguments.hashCode();
         result = 31 * result + mOutput.hashCode();
         result = 31 * result + (int) (mInitialDelay ^ (mInitialDelay >>> 32));
         result = 31 * result + (int) (mIntervalDuration ^ (mIntervalDuration >>> 32));
         result = 31 * result + (int) (mFlexDuration ^ (mFlexDuration >>> 32));
-        result = 31 * result + (mConstraints != null ? mConstraints.hashCode() : 0);
+        result = 31 * result + mConstraints.hashCode();
         result = 31 * result + mRunAttemptCount;
         result = 31 * result + mBackoffPolicy.hashCode();
         result = 31 * result + (int) (mBackoffDelayDuration ^ (mBackoffDelayDuration >>> 32));
+        result = 31 * result + (int) (mPeriodStartTime ^ (mPeriodStartTime >>> 32));
         return result;
     }