Make Data#toByteArray() an instance method.
* This is based on API council feedback.
Test: Updated unit tests.
Fixes: b/138990025
Change-Id: I5dc3fde0ade4810ce0c20800b5011e0b71c09dd7
diff --git a/work/workmanager/api/2.3.0-alpha01.txt b/work/workmanager/api/2.3.0-alpha01.txt
index 0e3b058..d007563 100644
--- a/work/workmanager/api/2.3.0-alpha01.txt
+++ b/work/workmanager/api/2.3.0-alpha01.txt
@@ -80,7 +80,7 @@
method public long[]? getLongArray(String);
method public String? getString(String);
method public String![]? getStringArray(String);
- method public static byte[] toByteArray(androidx.work.Data);
+ method public byte[] toByteArray();
field public static final androidx.work.Data! EMPTY;
field public static final int MAX_DATA_BYTES = 10240; // 0x2800
}
diff --git a/work/workmanager/api/current.txt b/work/workmanager/api/current.txt
index 0e3b058..d007563 100644
--- a/work/workmanager/api/current.txt
+++ b/work/workmanager/api/current.txt
@@ -80,7 +80,7 @@
method public long[]? getLongArray(String);
method public String? getString(String);
method public String![]? getStringArray(String);
- method public static byte[] toByteArray(androidx.work.Data);
+ method public byte[] toByteArray();
field public static final androidx.work.Data! EMPTY;
field public static final int MAX_DATA_BYTES = 10240; // 0x2800
}
diff --git a/work/workmanager/src/androidTest/java/androidx/work/WorkDatabaseMigrationTest.java b/work/workmanager/src/androidTest/java/androidx/work/WorkDatabaseMigrationTest.java
index d44bdf5..780ee56 100644
--- a/work/workmanager/src/androidTest/java/androidx/work/WorkDatabaseMigrationTest.java
+++ b/work/workmanager/src/androidTest/java/androidx/work/WorkDatabaseMigrationTest.java
@@ -307,8 +307,8 @@
contentValues.put("state", WorkTypeConverters.StateIds.ENQUEUED);
contentValues.put("worker_class_name", TestWorker.class.getName());
contentValues.put("input_merger_class_name", OverwritingInputMerger.class.getName());
- contentValues.put("input", Data.toByteArray(Data.EMPTY));
- contentValues.put("output", Data.toByteArray(Data.EMPTY));
+ contentValues.put("input", Data.EMPTY.toByteArray());
+ contentValues.put("output", Data.EMPTY.toByteArray());
contentValues.put("initial_delay", 0L);
contentValues.put("interval_duration", 0L);
contentValues.put("flex_duration", 0L);
diff --git a/work/workmanager/src/main/java/androidx/work/Data.java b/work/workmanager/src/main/java/androidx/work/Data.java
index 8febaf8..4fafd31 100644
--- a/work/workmanager/src/main/java/androidx/work/Data.java
+++ b/work/workmanager/src/main/java/androidx/work/Data.java
@@ -330,6 +330,20 @@
}
/**
+ * Converts this Data to a byte array suitable for sending to other processes in your
+ * application. There are no versioning guarantees with this byte array, so you should not
+ * use this for IPCs between applications or persistence.
+ *
+ * @return The byte array representation of the input
+ * @throws IllegalStateException if the serialized payload is bigger than
+ * {@link #MAX_DATA_BYTES}
+ */
+ @NonNull
+ public byte[] toByteArray() {
+ return Data.toByteArray(this);
+ }
+
+ /**
* @return The number of elements in this Data object.
* @hide
*/
@@ -345,8 +359,10 @@
* @param data The {@link Data} object to convert
* @return The byte array representation of the input
* @throws IllegalStateException if the serialized payload is bigger than
- * {@link #MAX_DATA_BYTES}
+ * {@link #MAX_DATA_BYTES}
+ * @hide
*/
+ @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
@TypeConverter
public static @NonNull byte[] toByteArray(@NonNull Data data) {
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
diff --git a/work/workmanager/src/test/java/androidx/work/DataTest.java b/work/workmanager/src/test/java/androidx/work/DataTest.java
index 9bb2466..80740e8 100644
--- a/work/workmanager/src/test/java/androidx/work/DataTest.java
+++ b/work/workmanager/src/test/java/androidx/work/DataTest.java
@@ -47,7 +47,7 @@
public void testSerializeEmpty() {
Data data = Data.EMPTY;
- byte[] byteArray = Data.toByteArray(data);
+ byte[] byteArray = data.toByteArray();
Data restoredData = Data.fromByteArray(byteArray);
assertThat(restoredData, is(data));
@@ -62,7 +62,7 @@
.putString(KEY2, expectedValue2)
.build();
- byte[] byteArray = Data.toByteArray(data);
+ byte[] byteArray = data.toByteArray();
Data restoredData = Data.fromByteArray(byteArray);
assertThat(restoredData, is(data));