Changes getProperty methods to return primitive type
Bug: 143789408
Test: atest FrameworksCoreTests:android.app.appsearch
Change-Id: I2ae6d37c266211f8c6742d08ee2c778b48c67f54
diff --git a/apex/appsearch/framework/java/android/app/appsearch/AppSearchDocument.java b/apex/appsearch/framework/java/android/app/appsearch/AppSearchDocument.java
index ff0f0dd..6ac0956 100644
--- a/apex/appsearch/framework/java/android/app/appsearch/AppSearchDocument.java
+++ b/apex/appsearch/framework/java/android/app/appsearch/AppSearchDocument.java
@@ -71,7 +71,7 @@
private final Map<String, Object> mProperties;
/**
- * Create a new {@link AppSearchDocument}.
+ * Creates a new {@link AppSearchDocument}.
* @param proto Contains {@link AppSearchDocument} basic information (uri, schemaType etc) and
* properties ordered by keys.
* @param propertiesMap Contains all properties in {@link #mProto} to support get properties
@@ -84,7 +84,7 @@
}
/**
- * Create a new {@link AppSearchDocument} from an existing instance.
+ * Creates a new {@link AppSearchDocument} from an existing instance.
*
* <p>This method should be only used by constructor of a subclass.
*/
@@ -142,7 +142,7 @@
}
/**
- * Get the {@link DocumentProto} of the {@link AppSearchDocument}.
+ * Returns the {@link DocumentProto} of the {@link AppSearchDocument}.
*
* <p>The {@link DocumentProto} contains {@link AppSearchDocument}'s basic information and all
* properties ordered by keys.
@@ -154,30 +154,21 @@
return mProto;
}
- /**
- * Get the uri of the {@link AppSearchDocument}.
- *
- * @hide
- */
+ /** Returns the URI of the {@link AppSearchDocument}. */
@NonNull
public String getUri() {
return mProto.getUri();
}
- /**
- * Get the schema type of the {@link AppSearchDocument}.
- * @hide
- */
+ /** Returns the schema type of the {@link AppSearchDocument}. */
@NonNull
public String getSchemaType() {
return mProto.getSchema();
}
/**
- * Get the creation timestamp in milliseconds of the {@link AppSearchDocument}. Value will be in
- * the {@link System#currentTimeMillis()} time base.
- *
- * @hide
+ * Returns the creation timestamp in milliseconds of the {@link AppSearchDocument}. Value will
+ * be in the {@link System#currentTimeMillis()} time base.
*/
@CurrentTimeMillisLong
public long getCreationTimestampMillis() {
@@ -189,8 +180,6 @@
*
* <p>The default value is 0, which means the document is permanent and won't be auto-deleted
* until the app is uninstalled.
- *
- * @hide
*/
@DurationMillisLong
public long getTtlMillis() {
@@ -204,8 +193,6 @@
* {@link AppSearchDocument}s of the same type.
*
* <p>The default value is 0.
- *
- * @hide
*/
public int getScore() {
return mProto.getScore();
@@ -217,7 +204,6 @@
* @param key The key to look for.
* @return The first {@link String} associated with the given key or {@code null} if there
* is no such key or the value is of a different type.
- * @hide
*/
@Nullable
public String getPropertyString(@NonNull String key) {
@@ -230,55 +216,49 @@
}
/**
- * Retrieve a {@link Long} value by key.
+ * Retrieve a {@code long} value by key.
*
* @param key The key to look for.
- * @return The first {@link Long} associated with the given key or {@code null} if there
- * is no such key or the value is of a different type.
- * @hide
+ * @return The first {@code long} associated with the given key or default value {@code 0} if
+ * there is no such key or the value is of a different type.
*/
- @Nullable
- public Long getPropertyLong(@NonNull String key) {
+ public long getPropertyLong(@NonNull String key) {
long[] propertyArray = getPropertyLongArray(key);
if (ArrayUtils.isEmpty(propertyArray)) {
- return null;
+ return 0;
}
warnIfSinglePropertyTooLong("Long", key, propertyArray.length);
return propertyArray[0];
}
/**
- * Retrieve a {@link Double} value by key.
+ * Retrieve a {@code double} value by key.
*
* @param key The key to look for.
- * @return The first {@link Double} associated with the given key or {@code null} if there
- * is no such key or the value is of a different type.
- * @hide
+ * @return The first {@code double} associated with the given key or default value {@code 0.0}
+ * if there is no such key or the value is of a different type.
*/
- @Nullable
- public Double getPropertyDouble(@NonNull String key) {
+ public double getPropertyDouble(@NonNull String key) {
double[] propertyArray = getPropertyDoubleArray(key);
// TODO(tytytyww): Add support double array to ArraysUtils.isEmpty().
if (propertyArray == null || propertyArray.length == 0) {
- return null;
+ return 0.0;
}
warnIfSinglePropertyTooLong("Double", key, propertyArray.length);
return propertyArray[0];
}
/**
- * Retrieve a {@link Boolean} value by key.
+ * Retrieve a {@code boolean} value by key.
*
* @param key The key to look for.
- * @return The first {@link Boolean} associated with the given key or {@code null} if there
- * is no such key or the value is of a different type.
- * @hide
+ * @return The first {@code boolean} associated with the given key or default value
+ * {@code false} if there is no such key or the value is of a different type.
*/
- @Nullable
- public Boolean getPropertyBoolean(@NonNull String key) {
+ public boolean getPropertyBoolean(@NonNull String key) {
boolean[] propertyArray = getPropertyBooleanArray(key);
if (ArrayUtils.isEmpty(propertyArray)) {
- return null;
+ return false;
}
warnIfSinglePropertyTooLong("Boolean", key, propertyArray.length);
return propertyArray[0];
@@ -330,12 +310,11 @@
}
/**
- * Retrieve a repeated {@code String} property by key.
+ * Retrieve a repeated {@link String} property by key.
*
* @param key The key to look for.
* @return The {@code String[]} associated with the given key, or {@code null} if no value
* is set or the value is of a different type.
- * @hide
*/
@Nullable
public String[] getPropertyStringArray(@NonNull String key) {
@@ -348,7 +327,6 @@
* @param key The key to look for.
* @return The {@code long[]} associated with the given key, or {@code null} if no value is
* set or the value is of a different type.
- * @hide
*/
@Nullable
public long[] getPropertyLongArray(@NonNull String key) {
@@ -361,7 +339,6 @@
* @param key The key to look for.
* @return The {@code double[]} associated with the given key, or {@code null} if no value
* is set or the value is of a different type.
- * @hide
*/
@Nullable
public double[] getPropertyDoubleArray(@NonNull String key) {
@@ -374,7 +351,6 @@
* @param key The key to look for.
* @return The {@code boolean[]} associated with the given key, or {@code null} if no value
* is set or the value is of a different type.
- * @hide
*/
@Nullable
public boolean[] getPropertyBooleanArray(@NonNull String key) {
@@ -453,7 +429,6 @@
* The builder class for {@link AppSearchDocument}.
*
* @param <BuilderType> Type of subclass who extend this.
- * @hide
*/
public static class Builder<BuilderType extends Builder> {
@@ -462,7 +437,9 @@
private final BuilderType mBuilderTypeInstance;
/**
- * Create a new {@link AppSearchDocument.Builder}.
+ * Creates a new {@link AppSearchDocument.Builder}.
+ *
+ * <p>The URI is a unique string opaque to AppSearch.
*
* @param uri The uri of {@link AppSearchDocument}.
* @param schemaType The schema type of the {@link AppSearchDocument}. The passed-in
@@ -470,7 +447,6 @@
* to inserting a document of this {@code schemaType} into the AppSearch index using
* {@link AppSearchManager#putDocuments(List)}. Otherwise, the document will be
* rejected by {@link AppSearchManager#putDocuments(List)}.
- * @hide
*/
public Builder(@NonNull String uri, @NonNull String schemaType) {
mBuilderTypeInstance = (BuilderType) this;
@@ -486,7 +462,6 @@
* other {@link AppSearchDocument}s of the same type.
*
* @throws IllegalArgumentException If the provided value is negative.
- * @hide
*/
@NonNull
public BuilderType setScore(@IntRange(from = 0, to = Integer.MAX_VALUE) int score) {
@@ -500,8 +475,6 @@
/**
* Set the creation timestamp in milliseconds of the {@link AppSearchDocument}. Should be
* set using a value obtained from the {@link System#currentTimeMillis()} time base.
- *
- * @hide
*/
@NonNull
public BuilderType setCreationTimestampMillis(
@@ -533,7 +506,6 @@
*
* @param key The key associated with the {@code values}.
* @param values The {@code String} values of the property.
- * @hide
*/
@NonNull
public BuilderType setProperty(@NonNull String key, @NonNull String... values) {
@@ -673,10 +645,8 @@
}
}
- /**
- * Builds the {@link AppSearchDocument} object.
- * @hide
- */
+ /** Builds the {@link AppSearchDocument} object. */
+ @NonNull
public AppSearchDocument build() {
// Build proto by sorting the keys in mProperties to exclude the influence of
// order. Therefore documents will generate same proto as long as the contents are
diff --git a/apex/appsearch/framework/java/android/app/appsearch/AppSearchEmail.java b/apex/appsearch/framework/java/android/app/appsearch/AppSearchEmail.java
index 5b9457b..4931282 100644
--- a/apex/appsearch/framework/java/android/app/appsearch/AppSearchEmail.java
+++ b/apex/appsearch/framework/java/android/app/appsearch/AppSearchEmail.java
@@ -90,6 +90,7 @@
* {@link AppSearchDocument}.
*
* @param document The {@link AppSearchDocument} containing the email content.
+ * @hide
*/
public AppSearchEmail(@NonNull AppSearchDocument document) {
super(document);
diff --git a/core/tests/coretests/src/android/app/appsearch/AppSearchDocumentTest.java b/core/tests/coretests/src/android/app/appsearch/AppSearchDocumentTest.java
index 4a4f1367..a56f0ab 100644
--- a/core/tests/coretests/src/android/app/appsearch/AppSearchDocumentTest.java
+++ b/core/tests/coretests/src/android/app/appsearch/AppSearchDocumentTest.java
@@ -134,6 +134,7 @@
.setCreationTimestampMillis(5L)
.setScore(1)
.setTtlMillis(1L)
+ .setScore(1)
.setProperty("longKey1", 1L)
.setProperty("doubleKey1", 1.0)
.setProperty("booleanKey1", true)
@@ -192,7 +193,7 @@
.build();
// Get a value for a key that doesn't exist
- assertThat(document.getPropertyDouble("doubleKey1")).isNull();
+ assertThat(document.getPropertyDouble("doubleKey1")).isEqualTo(0.0);
assertThat(document.getPropertyDoubleArray("doubleKey1")).isNull();
// Get a value with a single element as an array and as a single value
@@ -205,7 +206,7 @@
.containsExactly("test-value1", "test-value2", "test-value3");
// Get a value of the wrong type
- assertThat(document.getPropertyDouble("longKey1")).isNull();
+ assertThat(document.getPropertyDouble("longKey1")).isEqualTo(0.0);
assertThat(document.getPropertyDoubleArray("longKey1")).isNull();
}
@@ -254,8 +255,8 @@
.addDocumentValues(sDocumentProperties1.getProto()));
List<String> sortedKey = new ArrayList<>(propertyProtoMap.keySet());
Collections.sort(sortedKey);
- for (String key : sortedKey) {
- documentProtoBuilder.addProperties(propertyProtoMap.get(key));
+ for (int i = 0; i < sortedKey.size(); i++) {
+ documentProtoBuilder.addProperties(propertyProtoMap.get(sortedKey.get(i)));
}
assertThat(document.getProto()).isEqualTo(documentProtoBuilder.build());
}