Migrate PruneWorkRunnable to kotlin
Test: refactoring
Change-Id: I9ef465b0893e6c719354679a81cf321df23aa9db
diff --git a/work/work-runtime/src/main/java/androidx/work/impl/WorkManagerImpl.java b/work/work-runtime/src/main/java/androidx/work/impl/WorkManagerImpl.java
index aa02965..2b69d59 100644
--- a/work/work-runtime/src/main/java/androidx/work/impl/WorkManagerImpl.java
+++ b/work/work-runtime/src/main/java/androidx/work/impl/WorkManagerImpl.java
@@ -64,7 +64,7 @@
import androidx.work.impl.utils.ForceStopRunnable;
import androidx.work.impl.utils.LiveDataUtils;
import androidx.work.impl.utils.PreferenceUtils;
-import androidx.work.impl.utils.PruneWorkRunnable;
+import androidx.work.impl.utils.PruneWorkRunnableKt;
import androidx.work.impl.utils.RawQueries;
import androidx.work.impl.utils.StatusRunnable;
import androidx.work.impl.utils.StopWorkRunnable;
@@ -466,9 +466,7 @@
@Override
public @NonNull Operation pruneWork() {
- PruneWorkRunnable runnable = new PruneWorkRunnable(this);
- mWorkTaskExecutor.executeOnTaskThread(runnable);
- return runnable.getOperation();
+ return PruneWorkRunnableKt.pruneWork(mWorkDatabase, mWorkTaskExecutor);
}
@Override
diff --git a/work/work-runtime/src/main/java/androidx/work/impl/utils/PruneWorkRunnable.kt b/work/work-runtime/src/main/java/androidx/work/impl/utils/PruneWorkRunnable.kt
index 2b1ffcd..3bc346c 100644
--- a/work/work-runtime/src/main/java/androidx/work/impl/utils/PruneWorkRunnable.kt
+++ b/work/work-runtime/src/main/java/androidx/work/impl/utils/PruneWorkRunnable.kt
@@ -13,52 +13,27 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+package androidx.work.impl.utils
-package androidx.work.impl.utils;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.RestrictTo;
-import androidx.work.Operation;
-import androidx.work.impl.OperationImpl;
-import androidx.work.impl.WorkDatabase;
-import androidx.work.impl.WorkManagerImpl;
-import androidx.work.impl.model.WorkSpecDao;
+import androidx.work.Operation
+import androidx.work.impl.OperationImpl
+import androidx.work.impl.WorkDatabase
+import androidx.work.impl.utils.taskexecutor.TaskExecutor
/**
- * A Runnable that prunes work in the background. Pruned work meets the following criteria:
+ * Prunes work in the background. Pruned work meets the following criteria:
* - Is finished (succeeded, failed, or cancelled)
* - Has zero unfinished dependents
- *
*/
-@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
-public class PruneWorkRunnable implements Runnable {
-
- private final WorkManagerImpl mWorkManagerImpl;
- private final OperationImpl mOperation;
-
- public PruneWorkRunnable(@NonNull WorkManagerImpl workManagerImpl) {
- mWorkManagerImpl = workManagerImpl;
- mOperation = new OperationImpl();
- }
-
- /**
- * @return The {@link Operation} that encapsulates the state of the {@link PruneWorkRunnable}.
- */
- @NonNull
- public Operation getOperation() {
- return mOperation;
- }
-
-
- @Override
- public void run() {
+internal fun WorkDatabase.pruneWork(executor: TaskExecutor): Operation {
+ val operation = OperationImpl()
+ executor.executeOnTaskThread {
try {
- WorkDatabase workDatabase = mWorkManagerImpl.getWorkDatabase();
- WorkSpecDao workSpecDao = workDatabase.workSpecDao();
- workSpecDao.pruneFinishedWorkWithZeroDependentsIgnoringKeepForAtLeast();
- mOperation.markState(Operation.SUCCESS);
- } catch (Throwable exception) {
- mOperation.markState(new Operation.State.FAILURE(exception));
+ workSpecDao().pruneFinishedWorkWithZeroDependentsIgnoringKeepForAtLeast()
+ operation.markState(Operation.SUCCESS)
+ } catch (exception: Throwable) {
+ operation.markState(Operation.State.FAILURE(exception))
}
}
+ return operation
}