Allow GenericDocument accept a String property longer than 20_000.
This limit was removed from the AppSearch Jetpack API meaning that a client could construct a GenericDocument successfully, but then have a PutDocuments call fail when converting from androidx.appsearch.GenericDocument to android.appsearch.GenericDocument. Icing still has a total document size limit which is 16 MiB. The put call will fail if it trying to write such document. Bug: 192909904 Test: GenericDocumentTest Change-Id: I86f97acc3a8e0f1c25fadf597aed9f42a2c493eb
This commit is contained in:
@@ -51,9 +51,6 @@ import java.util.Set;
|
||||
public class GenericDocument {
|
||||
private static final String TAG = "AppSearchGenericDocumen";
|
||||
|
||||
/** The maximum {@link String#length} of a {@link String} field. */
|
||||
private static final int MAX_STRING_LENGTH = 20_000;
|
||||
|
||||
/** The maximum number of indexed properties a document can have. */
|
||||
private static final int MAX_INDEXED_PROPERTIES = 16;
|
||||
|
||||
@@ -1286,15 +1283,6 @@ public class GenericDocument {
|
||||
for (int i = 0; i < values.length; i++) {
|
||||
if (values[i] == null) {
|
||||
throw new IllegalArgumentException("The String at " + i + " is null.");
|
||||
} else if (values[i].length() > MAX_STRING_LENGTH) {
|
||||
throw new IllegalArgumentException(
|
||||
"The String at "
|
||||
+ i
|
||||
+ " length is: "
|
||||
+ values[i].length()
|
||||
+ ", which exceeds length limit: "
|
||||
+ MAX_STRING_LENGTH
|
||||
+ ".");
|
||||
}
|
||||
}
|
||||
mProperties.putStringArray(name, values);
|
||||
|
||||
@@ -62,4 +62,18 @@ public class GenericDocumentTest {
|
||||
assertThat(outDoc.getPropertyDocument("propDocument").getPropertyBytesArray("propBytes"))
|
||||
.isEqualTo(new byte[][] {{3, 4}});
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testPutLargeDocument_exceedLimit() throws Exception {
|
||||
// Create a String property that has a very large property.
|
||||
char[] chars = new char[10_000_000];
|
||||
String property = new StringBuilder().append(chars).append("the end.").toString();
|
||||
|
||||
GenericDocument doc =
|
||||
new GenericDocument.Builder<>("namespace", "id1", "schema1")
|
||||
.setPropertyString("propString", property)
|
||||
.build();
|
||||
|
||||
assertThat(doc.getPropertyString("propString")).isEqualTo(property);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user