Loading apex/appsearch/framework/api/current.txt +32 −44 Original line number Diff line number Diff line Loading @@ -79,15 +79,14 @@ package android.app.appsearch { public static final class AppSearchSchema.DocumentPropertyConfig extends android.app.appsearch.AppSearchSchema.PropertyConfig { method @NonNull public String getSchemaType(); method public boolean isIndexNestedProperties(); method public boolean shouldIndexNestedProperties(); } public static final class AppSearchSchema.DocumentPropertyConfig.Builder { ctor public AppSearchSchema.DocumentPropertyConfig.Builder(@NonNull String); ctor public AppSearchSchema.DocumentPropertyConfig.Builder(@NonNull String, @NonNull String); method @NonNull public android.app.appsearch.AppSearchSchema.DocumentPropertyConfig build(); method @NonNull public android.app.appsearch.AppSearchSchema.DocumentPropertyConfig.Builder setCardinality(int); method @NonNull public android.app.appsearch.AppSearchSchema.DocumentPropertyConfig.Builder setIndexNestedProperties(boolean); method @NonNull public android.app.appsearch.AppSearchSchema.DocumentPropertyConfig.Builder setSchemaType(@NonNull String); method @NonNull public android.app.appsearch.AppSearchSchema.DocumentPropertyConfig.Builder setShouldIndexNestedProperties(boolean); } public static final class AppSearchSchema.DoublePropertyConfig extends android.app.appsearch.AppSearchSchema.PropertyConfig { Loading Loading @@ -136,12 +135,12 @@ package android.app.appsearch { public final class AppSearchSession implements java.io.Closeable { method public void close(); method public void getByUri(@NonNull android.app.appsearch.GetByUriRequest, @NonNull java.util.concurrent.Executor, @NonNull android.app.appsearch.BatchResultCallback<java.lang.String,android.app.appsearch.GenericDocument>); method public void getByDocumentId(@NonNull android.app.appsearch.GetByDocumentIdRequest, @NonNull java.util.concurrent.Executor, @NonNull android.app.appsearch.BatchResultCallback<java.lang.String,android.app.appsearch.GenericDocument>); method public void getNamespaces(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<android.app.appsearch.AppSearchResult<java.util.Set<java.lang.String>>>); method public void getSchema(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<android.app.appsearch.AppSearchResult<android.app.appsearch.GetSchemaResponse>>); method public void getStorageInfo(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<android.app.appsearch.AppSearchResult<android.app.appsearch.StorageInfo>>); method public void put(@NonNull android.app.appsearch.PutDocumentsRequest, @NonNull java.util.concurrent.Executor, @NonNull android.app.appsearch.BatchResultCallback<java.lang.String,java.lang.Void>); method public void remove(@NonNull android.app.appsearch.RemoveByUriRequest, @NonNull java.util.concurrent.Executor, @NonNull android.app.appsearch.BatchResultCallback<java.lang.String,java.lang.Void>); method public void remove(@NonNull android.app.appsearch.RemoveByDocumentIdRequest, @NonNull java.util.concurrent.Executor, @NonNull android.app.appsearch.BatchResultCallback<java.lang.String,java.lang.Void>); method public void remove(@NonNull String, @NonNull android.app.appsearch.SearchSpec, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<android.app.appsearch.AppSearchResult<java.lang.Void>>); method public void reportUsage(@NonNull android.app.appsearch.ReportUsageRequest, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<android.app.appsearch.AppSearchResult<java.lang.Void>>); method @NonNull public android.app.appsearch.SearchResults search(@NonNull String, @NonNull android.app.appsearch.SearchSpec); Loading @@ -156,6 +155,7 @@ package android.app.appsearch { public class GenericDocument { ctor protected GenericDocument(@NonNull android.app.appsearch.GenericDocument); method public long getCreationTimestampMillis(); method @NonNull public String getId(); method public static int getMaxIndexedProperties(); method @NonNull public String getNamespace(); method @Nullable public Object getProperty(@NonNull String); Loading @@ -175,7 +175,6 @@ package android.app.appsearch { method @NonNull public String getSchemaType(); method public int getScore(); method public long getTtlMillis(); method @NonNull public String getUri(); } public static class GenericDocument.Builder<BuilderType extends android.app.appsearch.GenericDocument.Builder> { Loading @@ -192,19 +191,19 @@ package android.app.appsearch { method @NonNull public BuilderType setTtlMillis(long); } public final class GetByUriRequest { public final class GetByDocumentIdRequest { method @NonNull public java.util.Set<java.lang.String> getIds(); method @NonNull public String getNamespace(); method @NonNull public java.util.Map<java.lang.String,java.util.List<java.lang.String>> getProjections(); method @NonNull public java.util.Set<java.lang.String> getUris(); field public static final String PROJECTION_SCHEMA_TYPE_WILDCARD = "*"; } public static final class GetByUriRequest.Builder { ctor public GetByUriRequest.Builder(@NonNull String); method @NonNull public android.app.appsearch.GetByUriRequest.Builder addProjection(@NonNull String, @NonNull java.util.Collection<java.lang.String>); method @NonNull public android.app.appsearch.GetByUriRequest.Builder addUris(@NonNull java.lang.String...); method @NonNull public android.app.appsearch.GetByUriRequest.Builder addUris(@NonNull java.util.Collection<java.lang.String>); method @NonNull public android.app.appsearch.GetByUriRequest build(); public static final class GetByDocumentIdRequest.Builder { ctor public GetByDocumentIdRequest.Builder(@NonNull String); method @NonNull public android.app.appsearch.GetByDocumentIdRequest.Builder addIds(@NonNull java.lang.String...); method @NonNull public android.app.appsearch.GetByDocumentIdRequest.Builder addIds(@NonNull java.util.Collection<java.lang.String>); method @NonNull public android.app.appsearch.GetByDocumentIdRequest.Builder addProjection(@NonNull String, @NonNull java.util.Collection<java.lang.String>); method @NonNull public android.app.appsearch.GetByDocumentIdRequest build(); } public class GetSchemaResponse { Loading Loading @@ -249,44 +248,42 @@ package android.app.appsearch { method @NonNull public android.app.appsearch.PutDocumentsRequest build(); } public final class RemoveByUriRequest { public final class RemoveByDocumentIdRequest { method @NonNull public java.util.Set<java.lang.String> getIds(); method @NonNull public String getNamespace(); method @NonNull public java.util.Set<java.lang.String> getUris(); } public static final class RemoveByUriRequest.Builder { ctor public RemoveByUriRequest.Builder(@NonNull String); method @NonNull public android.app.appsearch.RemoveByUriRequest.Builder addUris(@NonNull java.lang.String...); method @NonNull public android.app.appsearch.RemoveByUriRequest.Builder addUris(@NonNull java.util.Collection<java.lang.String>); method @NonNull public android.app.appsearch.RemoveByUriRequest build(); public static final class RemoveByDocumentIdRequest.Builder { ctor public RemoveByDocumentIdRequest.Builder(@NonNull String); method @NonNull public android.app.appsearch.RemoveByDocumentIdRequest.Builder addIds(@NonNull java.lang.String...); method @NonNull public android.app.appsearch.RemoveByDocumentIdRequest.Builder addIds(@NonNull java.util.Collection<java.lang.String>); method @NonNull public android.app.appsearch.RemoveByDocumentIdRequest build(); } public final class ReportSystemUsageRequest { method @NonNull public String getDatabaseName(); method @NonNull public String getDocumentId(); method @NonNull public String getNamespace(); method @NonNull public String getPackageName(); method @NonNull public String getUri(); method public long getUsageTimeMillis(); method public long getUsageTimestampMillis(); } public static final class ReportSystemUsageRequest.Builder { ctor public ReportSystemUsageRequest.Builder(@NonNull String, @NonNull String, @NonNull String); ctor public ReportSystemUsageRequest.Builder(@NonNull String, @NonNull String, @NonNull String, @NonNull String); method @NonNull public android.app.appsearch.ReportSystemUsageRequest build(); method @NonNull public android.app.appsearch.ReportSystemUsageRequest.Builder setUri(@NonNull String); method @NonNull public android.app.appsearch.ReportSystemUsageRequest.Builder setUsageTimeMillis(long); method @NonNull public android.app.appsearch.ReportSystemUsageRequest.Builder setUsageTimestampMillis(long); } public final class ReportUsageRequest { method @NonNull public String getDocumentId(); method @NonNull public String getNamespace(); method @NonNull public String getUri(); method public long getUsageTimeMillis(); method public long getUsageTimestampMillis(); } public static final class ReportUsageRequest.Builder { ctor public ReportUsageRequest.Builder(@NonNull String); ctor public ReportUsageRequest.Builder(@NonNull String, @NonNull String); method @NonNull public android.app.appsearch.ReportUsageRequest build(); method @NonNull public android.app.appsearch.ReportUsageRequest.Builder setUri(@NonNull String); method @NonNull public android.app.appsearch.ReportUsageRequest.Builder setUsageTimeMillis(long); method @NonNull public android.app.appsearch.ReportUsageRequest.Builder setUsageTimestampMillis(long); } public final class SearchResult { Loading Loading @@ -315,10 +312,9 @@ package android.app.appsearch { } public static final class SearchResult.MatchInfo.Builder { ctor public SearchResult.MatchInfo.Builder(); ctor public SearchResult.MatchInfo.Builder(@NonNull String); method @NonNull public android.app.appsearch.SearchResult.MatchInfo build(); method @NonNull public android.app.appsearch.SearchResult.MatchInfo.Builder setExactMatchRange(@NonNull android.app.appsearch.SearchResult.MatchRange); method @NonNull public android.app.appsearch.SearchResult.MatchInfo.Builder setPropertyPath(@NonNull String); method @NonNull public android.app.appsearch.SearchResult.MatchInfo.Builder setSnippetRange(@NonNull android.app.appsearch.SearchResult.MatchRange); } Loading Loading @@ -427,19 +423,11 @@ package android.app.appsearch { } public static class SetSchemaResponse.MigrationFailure { ctor public SetSchemaResponse.MigrationFailure(@NonNull String, @NonNull String, @NonNull String, @NonNull android.app.appsearch.AppSearchResult<?>); method @NonNull public android.app.appsearch.AppSearchResult<java.lang.Void> getAppSearchResult(); method @NonNull public String getDocumentId(); method @NonNull public String getNamespace(); method @NonNull public String getSchemaType(); method @NonNull public String getUri(); } public static final class SetSchemaResponse.MigrationFailure.Builder { ctor public SetSchemaResponse.MigrationFailure.Builder(); method @NonNull public android.app.appsearch.SetSchemaResponse.MigrationFailure build(); method @NonNull public android.app.appsearch.SetSchemaResponse.MigrationFailure.Builder setAppSearchResult(@NonNull android.app.appsearch.AppSearchResult<java.lang.Void>); method @NonNull public android.app.appsearch.SetSchemaResponse.MigrationFailure.Builder setNamespace(@NonNull String); method @NonNull public android.app.appsearch.SetSchemaResponse.MigrationFailure.Builder setSchemaType(@NonNull String); method @NonNull public android.app.appsearch.SetSchemaResponse.MigrationFailure.Builder setUri(@NonNull String); } public class StorageInfo { Loading apex/appsearch/framework/java/android/app/appsearch/AppSearchBatchResult.java +4 −3 Original line number Diff line number Diff line Loading @@ -40,7 +40,7 @@ import java.util.Objects; * both successes and failures. * * @see AppSearchSession#put * @see AppSearchSession#getByUri * @see AppSearchSession#getByDocumentId * @see AppSearchSession#remove */ public final class AppSearchBatchResult<KeyType, ValueType> implements Parcelable { Loading Loading @@ -87,8 +87,9 @@ public final class AppSearchBatchResult<KeyType, ValueType> implements Parcelabl * Returns a {@link Map} of keys mapped to instances of the value type for all successful * individual results. * * <p>Example: {@link AppSearchSession#getByUri} returns an {@link AppSearchBatchResult}. Each * key (a URI of {@code String} type) will map to a {@link GenericDocument} object. * <p>Example: {@link AppSearchSession#getByDocumentId} returns an {@link AppSearchBatchResult}. * Each key (the document ID, of {@code String} type) will map to a {@link GenericDocument} * object. * * <p>The values of the {@link Map} will not be {@code null}. */ Loading apex/appsearch/framework/java/android/app/appsearch/AppSearchManager.java +9 −10 Original line number Diff line number Diff line Loading @@ -78,10 +78,10 @@ import java.util.function.Consumer; * });</pre> * * <p>The basic unit of data in AppSearch is represented as a {@link GenericDocument} object, * containing a URI, namespace, time-to-live, score, and properties. A namespace organizes a logical * containing an ID, namespace, time-to-live, score, and properties. A namespace organizes a logical * group of documents. For example, a namespace can be created to group documents on a per-account * basis. A URI identifies a single document within a namespace. The combination of URI and * namespace uniquely identifies a {@link GenericDocument} in the database. * basis. An ID identifies a single document within a namespace. The combination of namespace and ID * uniquely identifies a {@link GenericDocument} in the database. * * <p>Once the schema has been set, {@link GenericDocument} objects can be put into the database and * indexed by calling {@link AppSearchSession#put}. Loading @@ -91,8 +91,7 @@ import java.util.function.Consumer; * <pre> * // Although for this example we use GenericDocument directly, we recommend extending * // GenericDocument to create specific types (i.e. Email) with specific setters/getters. * GenericDocument email = new GenericDocument.Builder<>(URI, EMAIL_SCHEMA_TYPE) * .setNamespace(NAMESPACE) * GenericDocument email = new GenericDocument.Builder<>(NAMESPACE, ID, EMAIL_SCHEMA_TYPE) * .setPropertyString(“subject”, EMAIL_SUBJECT) * .setScore(EMAIL_SCORE) * .build(); Loading @@ -108,13 +107,13 @@ import java.util.function.Consumer; * <p>Searching within the database is done by calling {@link AppSearchSession#search} and providing * the query string to search for, as well as a {@link SearchSpec}. * * <p>Alternatively, {@link AppSearchSession#getByUri} can be called to retrieve documents by URI * and namespace. * <p>Alternatively, {@link AppSearchSession#getByDocumentId} can be called to retrieve documents by * namespace and ID. * * <p>Document removal is done either by time-to-live expiration, or explicitly calling a remove * operation. Remove operations can be done by URI and namespace via {@link * AppSearchSession#remove(RemoveByUriRequest, Executor, BatchResultCallback)}, or by query via * {@link AppSearchSession#remove(String, SearchSpec, Executor, Consumer)}. * operation. Remove operations can be done by namespace and ID via {@link * AppSearchSession#remove(RemoveByDocumentIdRequest, Executor, BatchResultCallback)}, or by query * via {@link AppSearchSession#remove(String, SearchSpec, Executor, Consumer)}. */ @SystemService(Context.APP_SEARCH_SERVICE) public class AppSearchManager { Loading apex/appsearch/framework/java/android/app/appsearch/AppSearchSession.java +48 −45 Original line number Diff line number Diff line Loading @@ -41,10 +41,14 @@ import java.util.concurrent.Executor; import java.util.function.Consumer; /** * Represents a connection to an AppSearch storage system where {@link GenericDocument}s can be * placed and queried. * Provides a connection to a single AppSearch database. * * <p>An {@link AppSearchSession} instance provides access to database operations such as * setting a schema, adding documents, and searching. * * <p>This class is thread safe. * * @see GlobalSearchSession */ public final class AppSearchSession implements Closeable { private static final String TAG = "AppSearchSession"; Loading Loading @@ -250,12 +254,12 @@ public final class AppSearchSession implements Closeable { * @param request containing documents to be indexed. * @param executor Executor on which to invoke the callback. * @param callback Callback to receive pending result of performing this operation. The keys * of the returned {@link AppSearchBatchResult} are the URIs of the input * of the returned {@link AppSearchBatchResult} are the IDs of the input * documents. The values are {@code null} if they were successfully indexed, * or a failed {@link AppSearchResult} otherwise. * Or {@link BatchResultCallback#onSystemError} will be invoked with a * {@link Throwable} if an unexpected internal error occurred in AppSearch * service. * or a failed {@link AppSearchResult} otherwise. If an unexpected internal * error occurs in the AppSearch service, * {@link BatchResultCallback#onSystemError} will be invoked with a * {@link Throwable}. */ public void put( @NonNull PutDocumentsRequest request, Loading Loading @@ -291,23 +295,22 @@ public final class AppSearchSession implements Closeable { } /** * Gets {@link GenericDocument} objects by URIs and namespace from the {@link AppSearchSession} * database. * Gets {@link GenericDocument} objects by document IDs in a namespace from the {@link * AppSearchSession} database. * * @param request a request containing URIs and namespace to get documents for. * @param request a request containing a namespace and IDs to get documents for. * @param executor Executor on which to invoke the callback. * @param callback Callback to receive the pending result of performing this operation. The keys * of the returned {@link AppSearchBatchResult} are the input URIs. The values * of the returned {@link AppSearchBatchResult} are the input IDs. The values * are the returned {@link GenericDocument}s on success, or a failed * {@link AppSearchResult} otherwise. URIs that are not found will return a * {@link AppSearchResult} otherwise. IDs that are not found will return a * failed {@link AppSearchResult} with a result code of * {@link AppSearchResult#RESULT_NOT_FOUND}. * Or {@link BatchResultCallback#onSystemError} will be invoked with a * {@link Throwable} if an unexpected internal error occurred in AppSearch * service. * {@link AppSearchResult#RESULT_NOT_FOUND}. If an unexpected internal error * occurs in the AppSearch service, {@link BatchResultCallback#onSystemError} * will be invoked with a {@link Throwable}. */ public void getByUri( @NonNull GetByUriRequest request, public void getByDocumentId( @NonNull GetByDocumentIdRequest request, @NonNull @CallbackExecutor Executor executor, @NonNull BatchResultCallback<String, GenericDocument> callback) { Objects.requireNonNull(request); Loading @@ -319,7 +322,7 @@ public final class AppSearchSession implements Closeable { mPackageName, mDatabaseName, request.getNamespace(), new ArrayList<>(request.getUris()), new ArrayList<>(request.getIds()), request.getProjectionsInternal(), mUserId, new IAppSearchBatchResultCallback.Stub() { Loading Loading @@ -373,8 +376,8 @@ public final class AppSearchSession implements Closeable { } /** * Retrieves documents from the open {@link AppSearchSession} that match a given query string * and type of search provided. * Retrieves documents from the open {@link AppSearchSession} that match a given query * string and type of search provided. * * <p>Query strings can be empty, contain one term with no operators, or contain multiple terms * and operators. Loading Loading @@ -441,7 +444,7 @@ public final class AppSearchSession implements Closeable { } /** * Reports usage of a particular document by URI and namespace. * Reports usage of a particular document by namespace and ID. * * <p>A usage report represents an event in which a user interacted with or viewed a document. * Loading Loading @@ -470,8 +473,8 @@ public final class AppSearchSession implements Closeable { mPackageName, mDatabaseName, request.getNamespace(), request.getUri(), request.getUsageTimeMillis(), request.getDocumentId(), request.getUsageTimestampMillis(), /*systemUsage=*/ false, mUserId, new IAppSearchResultCallback.Stub() { Loading @@ -486,29 +489,29 @@ public final class AppSearchSession implements Closeable { } /** * Removes {@link GenericDocument} objects by URIs and namespace from the {@link * Removes {@link GenericDocument} objects by document IDs in a namespace from the {@link * AppSearchSession} database. * * <p>Removed documents will no longer be surfaced by {@link #search} or {@link #getByUri} * calls. * <p>Removed documents will no longer be surfaced by {@link #search} or {@link * #getByDocumentId} calls. * * <p><b>NOTE:</b>By default, documents are removed via a soft delete operation. Once the * document crosses the count threshold or byte usage threshold, the documents will be removed * from disk. * <p>Once the database crosses the document count or byte usage threshold, removed documents * will be deleted from disk. * * @param request {@link RemoveByUriRequest} with URIs and namespace to remove from the index. * @param request {@link RemoveByDocumentIdRequest} with IDs in a namespace to remove from the * index. * @param executor Executor on which to invoke the callback. * @param callback Callback to receive the pending result of performing this operation. The keys * of the returned {@link AppSearchBatchResult} are the input URIs. The values * are {@code null} on success, or a failed {@link AppSearchResult} otherwise. * URIs that are not found will return a failed {@link AppSearchResult} with a * result code of {@link AppSearchResult#RESULT_NOT_FOUND}. * Or {@link BatchResultCallback#onSystemError} will be invoked with a * {@link Throwable} if an unexpected internal error occurred in AppSearch * service. * of the returned {@link AppSearchBatchResult} are the input document IDs. The * values are {@code null} on success, or a failed {@link AppSearchResult} * otherwise. IDs that are not found will return a failed * {@link AppSearchResult} with a result code of * {@link AppSearchResult#RESULT_NOT_FOUND}. If an unexpected internal error * occurs in the AppSearch service, {@link BatchResultCallback#onSystemError} * will be invoked with a {@link Throwable}. */ public void remove( @NonNull RemoveByUriRequest request, @NonNull RemoveByDocumentIdRequest request, @NonNull @CallbackExecutor Executor executor, @NonNull BatchResultCallback<String, Void> callback) { Objects.requireNonNull(request); Loading @@ -516,8 +519,8 @@ public final class AppSearchSession implements Closeable { Objects.requireNonNull(callback); Preconditions.checkState(!mIsClosed, "AppSearchSession has already been closed"); try { mService.removeByUri(mPackageName, mDatabaseName, request.getNamespace(), new ArrayList<>(request.getUris()), mUserId, mService.removeByDocumentId(mPackageName, mDatabaseName, request.getNamespace(), new ArrayList<>(request.getIds()), mUserId, new IAppSearchBatchResultCallback.Stub() { @Override public void onResult(AppSearchBatchResult result) { Loading Loading @@ -581,8 +584,8 @@ public final class AppSearchSession implements Closeable { /** * Gets the storage info for this {@link AppSearchSession} database. * * <p>This may take time proportional to the number of documents and may be inefficient to * call repeatedly. * <p>This may take time proportional to the number of documents and may be inefficient to call * repeatedly. * * @param executor Executor on which to invoke the callback. * @param callback Callback to receive the storage info. Loading Loading @@ -618,8 +621,8 @@ public final class AppSearchSession implements Closeable { } /** * Closes the {@link AppSearchSession} to persist all schema and document updates, additions, * and deletes to disk. * Closes the {@link AppSearchSession} to persist all schema and document updates, * additions, and deletes to disk. */ @Override public void close() { Loading apex/appsearch/framework/java/android/app/appsearch/GlobalSearchSession.java +7 −4 Original line number Diff line number Diff line Loading @@ -31,9 +31,12 @@ import java.util.concurrent.Executor; import java.util.function.Consumer; /** * This class provides global access to the centralized AppSearch index maintained by the system. * Provides a connection to all AppSearch databases the querying application has been granted access * to. * * <p>Apps can retrieve indexed documents through the {@link #search} API. * <p>This class is thread safe. * * @see AppSearchSession */ public class GlobalSearchSession implements Closeable { private static final String TAG = "AppSearchGlobalSearchSe"; Loading Loading @@ -151,8 +154,8 @@ public class GlobalSearchSession implements Closeable { request.getPackageName(), request.getDatabaseName(), request.getNamespace(), request.getUri(), request.getUsageTimeMillis(), request.getDocumentId(), request.getUsageTimestampMillis(), /*systemUsage=*/ true, mUserId, new IAppSearchResultCallback.Stub() { Loading Loading
apex/appsearch/framework/api/current.txt +32 −44 Original line number Diff line number Diff line Loading @@ -79,15 +79,14 @@ package android.app.appsearch { public static final class AppSearchSchema.DocumentPropertyConfig extends android.app.appsearch.AppSearchSchema.PropertyConfig { method @NonNull public String getSchemaType(); method public boolean isIndexNestedProperties(); method public boolean shouldIndexNestedProperties(); } public static final class AppSearchSchema.DocumentPropertyConfig.Builder { ctor public AppSearchSchema.DocumentPropertyConfig.Builder(@NonNull String); ctor public AppSearchSchema.DocumentPropertyConfig.Builder(@NonNull String, @NonNull String); method @NonNull public android.app.appsearch.AppSearchSchema.DocumentPropertyConfig build(); method @NonNull public android.app.appsearch.AppSearchSchema.DocumentPropertyConfig.Builder setCardinality(int); method @NonNull public android.app.appsearch.AppSearchSchema.DocumentPropertyConfig.Builder setIndexNestedProperties(boolean); method @NonNull public android.app.appsearch.AppSearchSchema.DocumentPropertyConfig.Builder setSchemaType(@NonNull String); method @NonNull public android.app.appsearch.AppSearchSchema.DocumentPropertyConfig.Builder setShouldIndexNestedProperties(boolean); } public static final class AppSearchSchema.DoublePropertyConfig extends android.app.appsearch.AppSearchSchema.PropertyConfig { Loading Loading @@ -136,12 +135,12 @@ package android.app.appsearch { public final class AppSearchSession implements java.io.Closeable { method public void close(); method public void getByUri(@NonNull android.app.appsearch.GetByUriRequest, @NonNull java.util.concurrent.Executor, @NonNull android.app.appsearch.BatchResultCallback<java.lang.String,android.app.appsearch.GenericDocument>); method public void getByDocumentId(@NonNull android.app.appsearch.GetByDocumentIdRequest, @NonNull java.util.concurrent.Executor, @NonNull android.app.appsearch.BatchResultCallback<java.lang.String,android.app.appsearch.GenericDocument>); method public void getNamespaces(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<android.app.appsearch.AppSearchResult<java.util.Set<java.lang.String>>>); method public void getSchema(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<android.app.appsearch.AppSearchResult<android.app.appsearch.GetSchemaResponse>>); method public void getStorageInfo(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<android.app.appsearch.AppSearchResult<android.app.appsearch.StorageInfo>>); method public void put(@NonNull android.app.appsearch.PutDocumentsRequest, @NonNull java.util.concurrent.Executor, @NonNull android.app.appsearch.BatchResultCallback<java.lang.String,java.lang.Void>); method public void remove(@NonNull android.app.appsearch.RemoveByUriRequest, @NonNull java.util.concurrent.Executor, @NonNull android.app.appsearch.BatchResultCallback<java.lang.String,java.lang.Void>); method public void remove(@NonNull android.app.appsearch.RemoveByDocumentIdRequest, @NonNull java.util.concurrent.Executor, @NonNull android.app.appsearch.BatchResultCallback<java.lang.String,java.lang.Void>); method public void remove(@NonNull String, @NonNull android.app.appsearch.SearchSpec, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<android.app.appsearch.AppSearchResult<java.lang.Void>>); method public void reportUsage(@NonNull android.app.appsearch.ReportUsageRequest, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<android.app.appsearch.AppSearchResult<java.lang.Void>>); method @NonNull public android.app.appsearch.SearchResults search(@NonNull String, @NonNull android.app.appsearch.SearchSpec); Loading @@ -156,6 +155,7 @@ package android.app.appsearch { public class GenericDocument { ctor protected GenericDocument(@NonNull android.app.appsearch.GenericDocument); method public long getCreationTimestampMillis(); method @NonNull public String getId(); method public static int getMaxIndexedProperties(); method @NonNull public String getNamespace(); method @Nullable public Object getProperty(@NonNull String); Loading @@ -175,7 +175,6 @@ package android.app.appsearch { method @NonNull public String getSchemaType(); method public int getScore(); method public long getTtlMillis(); method @NonNull public String getUri(); } public static class GenericDocument.Builder<BuilderType extends android.app.appsearch.GenericDocument.Builder> { Loading @@ -192,19 +191,19 @@ package android.app.appsearch { method @NonNull public BuilderType setTtlMillis(long); } public final class GetByUriRequest { public final class GetByDocumentIdRequest { method @NonNull public java.util.Set<java.lang.String> getIds(); method @NonNull public String getNamespace(); method @NonNull public java.util.Map<java.lang.String,java.util.List<java.lang.String>> getProjections(); method @NonNull public java.util.Set<java.lang.String> getUris(); field public static final String PROJECTION_SCHEMA_TYPE_WILDCARD = "*"; } public static final class GetByUriRequest.Builder { ctor public GetByUriRequest.Builder(@NonNull String); method @NonNull public android.app.appsearch.GetByUriRequest.Builder addProjection(@NonNull String, @NonNull java.util.Collection<java.lang.String>); method @NonNull public android.app.appsearch.GetByUriRequest.Builder addUris(@NonNull java.lang.String...); method @NonNull public android.app.appsearch.GetByUriRequest.Builder addUris(@NonNull java.util.Collection<java.lang.String>); method @NonNull public android.app.appsearch.GetByUriRequest build(); public static final class GetByDocumentIdRequest.Builder { ctor public GetByDocumentIdRequest.Builder(@NonNull String); method @NonNull public android.app.appsearch.GetByDocumentIdRequest.Builder addIds(@NonNull java.lang.String...); method @NonNull public android.app.appsearch.GetByDocumentIdRequest.Builder addIds(@NonNull java.util.Collection<java.lang.String>); method @NonNull public android.app.appsearch.GetByDocumentIdRequest.Builder addProjection(@NonNull String, @NonNull java.util.Collection<java.lang.String>); method @NonNull public android.app.appsearch.GetByDocumentIdRequest build(); } public class GetSchemaResponse { Loading Loading @@ -249,44 +248,42 @@ package android.app.appsearch { method @NonNull public android.app.appsearch.PutDocumentsRequest build(); } public final class RemoveByUriRequest { public final class RemoveByDocumentIdRequest { method @NonNull public java.util.Set<java.lang.String> getIds(); method @NonNull public String getNamespace(); method @NonNull public java.util.Set<java.lang.String> getUris(); } public static final class RemoveByUriRequest.Builder { ctor public RemoveByUriRequest.Builder(@NonNull String); method @NonNull public android.app.appsearch.RemoveByUriRequest.Builder addUris(@NonNull java.lang.String...); method @NonNull public android.app.appsearch.RemoveByUriRequest.Builder addUris(@NonNull java.util.Collection<java.lang.String>); method @NonNull public android.app.appsearch.RemoveByUriRequest build(); public static final class RemoveByDocumentIdRequest.Builder { ctor public RemoveByDocumentIdRequest.Builder(@NonNull String); method @NonNull public android.app.appsearch.RemoveByDocumentIdRequest.Builder addIds(@NonNull java.lang.String...); method @NonNull public android.app.appsearch.RemoveByDocumentIdRequest.Builder addIds(@NonNull java.util.Collection<java.lang.String>); method @NonNull public android.app.appsearch.RemoveByDocumentIdRequest build(); } public final class ReportSystemUsageRequest { method @NonNull public String getDatabaseName(); method @NonNull public String getDocumentId(); method @NonNull public String getNamespace(); method @NonNull public String getPackageName(); method @NonNull public String getUri(); method public long getUsageTimeMillis(); method public long getUsageTimestampMillis(); } public static final class ReportSystemUsageRequest.Builder { ctor public ReportSystemUsageRequest.Builder(@NonNull String, @NonNull String, @NonNull String); ctor public ReportSystemUsageRequest.Builder(@NonNull String, @NonNull String, @NonNull String, @NonNull String); method @NonNull public android.app.appsearch.ReportSystemUsageRequest build(); method @NonNull public android.app.appsearch.ReportSystemUsageRequest.Builder setUri(@NonNull String); method @NonNull public android.app.appsearch.ReportSystemUsageRequest.Builder setUsageTimeMillis(long); method @NonNull public android.app.appsearch.ReportSystemUsageRequest.Builder setUsageTimestampMillis(long); } public final class ReportUsageRequest { method @NonNull public String getDocumentId(); method @NonNull public String getNamespace(); method @NonNull public String getUri(); method public long getUsageTimeMillis(); method public long getUsageTimestampMillis(); } public static final class ReportUsageRequest.Builder { ctor public ReportUsageRequest.Builder(@NonNull String); ctor public ReportUsageRequest.Builder(@NonNull String, @NonNull String); method @NonNull public android.app.appsearch.ReportUsageRequest build(); method @NonNull public android.app.appsearch.ReportUsageRequest.Builder setUri(@NonNull String); method @NonNull public android.app.appsearch.ReportUsageRequest.Builder setUsageTimeMillis(long); method @NonNull public android.app.appsearch.ReportUsageRequest.Builder setUsageTimestampMillis(long); } public final class SearchResult { Loading Loading @@ -315,10 +312,9 @@ package android.app.appsearch { } public static final class SearchResult.MatchInfo.Builder { ctor public SearchResult.MatchInfo.Builder(); ctor public SearchResult.MatchInfo.Builder(@NonNull String); method @NonNull public android.app.appsearch.SearchResult.MatchInfo build(); method @NonNull public android.app.appsearch.SearchResult.MatchInfo.Builder setExactMatchRange(@NonNull android.app.appsearch.SearchResult.MatchRange); method @NonNull public android.app.appsearch.SearchResult.MatchInfo.Builder setPropertyPath(@NonNull String); method @NonNull public android.app.appsearch.SearchResult.MatchInfo.Builder setSnippetRange(@NonNull android.app.appsearch.SearchResult.MatchRange); } Loading Loading @@ -427,19 +423,11 @@ package android.app.appsearch { } public static class SetSchemaResponse.MigrationFailure { ctor public SetSchemaResponse.MigrationFailure(@NonNull String, @NonNull String, @NonNull String, @NonNull android.app.appsearch.AppSearchResult<?>); method @NonNull public android.app.appsearch.AppSearchResult<java.lang.Void> getAppSearchResult(); method @NonNull public String getDocumentId(); method @NonNull public String getNamespace(); method @NonNull public String getSchemaType(); method @NonNull public String getUri(); } public static final class SetSchemaResponse.MigrationFailure.Builder { ctor public SetSchemaResponse.MigrationFailure.Builder(); method @NonNull public android.app.appsearch.SetSchemaResponse.MigrationFailure build(); method @NonNull public android.app.appsearch.SetSchemaResponse.MigrationFailure.Builder setAppSearchResult(@NonNull android.app.appsearch.AppSearchResult<java.lang.Void>); method @NonNull public android.app.appsearch.SetSchemaResponse.MigrationFailure.Builder setNamespace(@NonNull String); method @NonNull public android.app.appsearch.SetSchemaResponse.MigrationFailure.Builder setSchemaType(@NonNull String); method @NonNull public android.app.appsearch.SetSchemaResponse.MigrationFailure.Builder setUri(@NonNull String); } public class StorageInfo { Loading
apex/appsearch/framework/java/android/app/appsearch/AppSearchBatchResult.java +4 −3 Original line number Diff line number Diff line Loading @@ -40,7 +40,7 @@ import java.util.Objects; * both successes and failures. * * @see AppSearchSession#put * @see AppSearchSession#getByUri * @see AppSearchSession#getByDocumentId * @see AppSearchSession#remove */ public final class AppSearchBatchResult<KeyType, ValueType> implements Parcelable { Loading Loading @@ -87,8 +87,9 @@ public final class AppSearchBatchResult<KeyType, ValueType> implements Parcelabl * Returns a {@link Map} of keys mapped to instances of the value type for all successful * individual results. * * <p>Example: {@link AppSearchSession#getByUri} returns an {@link AppSearchBatchResult}. Each * key (a URI of {@code String} type) will map to a {@link GenericDocument} object. * <p>Example: {@link AppSearchSession#getByDocumentId} returns an {@link AppSearchBatchResult}. * Each key (the document ID, of {@code String} type) will map to a {@link GenericDocument} * object. * * <p>The values of the {@link Map} will not be {@code null}. */ Loading
apex/appsearch/framework/java/android/app/appsearch/AppSearchManager.java +9 −10 Original line number Diff line number Diff line Loading @@ -78,10 +78,10 @@ import java.util.function.Consumer; * });</pre> * * <p>The basic unit of data in AppSearch is represented as a {@link GenericDocument} object, * containing a URI, namespace, time-to-live, score, and properties. A namespace organizes a logical * containing an ID, namespace, time-to-live, score, and properties. A namespace organizes a logical * group of documents. For example, a namespace can be created to group documents on a per-account * basis. A URI identifies a single document within a namespace. The combination of URI and * namespace uniquely identifies a {@link GenericDocument} in the database. * basis. An ID identifies a single document within a namespace. The combination of namespace and ID * uniquely identifies a {@link GenericDocument} in the database. * * <p>Once the schema has been set, {@link GenericDocument} objects can be put into the database and * indexed by calling {@link AppSearchSession#put}. Loading @@ -91,8 +91,7 @@ import java.util.function.Consumer; * <pre> * // Although for this example we use GenericDocument directly, we recommend extending * // GenericDocument to create specific types (i.e. Email) with specific setters/getters. * GenericDocument email = new GenericDocument.Builder<>(URI, EMAIL_SCHEMA_TYPE) * .setNamespace(NAMESPACE) * GenericDocument email = new GenericDocument.Builder<>(NAMESPACE, ID, EMAIL_SCHEMA_TYPE) * .setPropertyString(“subject”, EMAIL_SUBJECT) * .setScore(EMAIL_SCORE) * .build(); Loading @@ -108,13 +107,13 @@ import java.util.function.Consumer; * <p>Searching within the database is done by calling {@link AppSearchSession#search} and providing * the query string to search for, as well as a {@link SearchSpec}. * * <p>Alternatively, {@link AppSearchSession#getByUri} can be called to retrieve documents by URI * and namespace. * <p>Alternatively, {@link AppSearchSession#getByDocumentId} can be called to retrieve documents by * namespace and ID. * * <p>Document removal is done either by time-to-live expiration, or explicitly calling a remove * operation. Remove operations can be done by URI and namespace via {@link * AppSearchSession#remove(RemoveByUriRequest, Executor, BatchResultCallback)}, or by query via * {@link AppSearchSession#remove(String, SearchSpec, Executor, Consumer)}. * operation. Remove operations can be done by namespace and ID via {@link * AppSearchSession#remove(RemoveByDocumentIdRequest, Executor, BatchResultCallback)}, or by query * via {@link AppSearchSession#remove(String, SearchSpec, Executor, Consumer)}. */ @SystemService(Context.APP_SEARCH_SERVICE) public class AppSearchManager { Loading
apex/appsearch/framework/java/android/app/appsearch/AppSearchSession.java +48 −45 Original line number Diff line number Diff line Loading @@ -41,10 +41,14 @@ import java.util.concurrent.Executor; import java.util.function.Consumer; /** * Represents a connection to an AppSearch storage system where {@link GenericDocument}s can be * placed and queried. * Provides a connection to a single AppSearch database. * * <p>An {@link AppSearchSession} instance provides access to database operations such as * setting a schema, adding documents, and searching. * * <p>This class is thread safe. * * @see GlobalSearchSession */ public final class AppSearchSession implements Closeable { private static final String TAG = "AppSearchSession"; Loading Loading @@ -250,12 +254,12 @@ public final class AppSearchSession implements Closeable { * @param request containing documents to be indexed. * @param executor Executor on which to invoke the callback. * @param callback Callback to receive pending result of performing this operation. The keys * of the returned {@link AppSearchBatchResult} are the URIs of the input * of the returned {@link AppSearchBatchResult} are the IDs of the input * documents. The values are {@code null} if they were successfully indexed, * or a failed {@link AppSearchResult} otherwise. * Or {@link BatchResultCallback#onSystemError} will be invoked with a * {@link Throwable} if an unexpected internal error occurred in AppSearch * service. * or a failed {@link AppSearchResult} otherwise. If an unexpected internal * error occurs in the AppSearch service, * {@link BatchResultCallback#onSystemError} will be invoked with a * {@link Throwable}. */ public void put( @NonNull PutDocumentsRequest request, Loading Loading @@ -291,23 +295,22 @@ public final class AppSearchSession implements Closeable { } /** * Gets {@link GenericDocument} objects by URIs and namespace from the {@link AppSearchSession} * database. * Gets {@link GenericDocument} objects by document IDs in a namespace from the {@link * AppSearchSession} database. * * @param request a request containing URIs and namespace to get documents for. * @param request a request containing a namespace and IDs to get documents for. * @param executor Executor on which to invoke the callback. * @param callback Callback to receive the pending result of performing this operation. The keys * of the returned {@link AppSearchBatchResult} are the input URIs. The values * of the returned {@link AppSearchBatchResult} are the input IDs. The values * are the returned {@link GenericDocument}s on success, or a failed * {@link AppSearchResult} otherwise. URIs that are not found will return a * {@link AppSearchResult} otherwise. IDs that are not found will return a * failed {@link AppSearchResult} with a result code of * {@link AppSearchResult#RESULT_NOT_FOUND}. * Or {@link BatchResultCallback#onSystemError} will be invoked with a * {@link Throwable} if an unexpected internal error occurred in AppSearch * service. * {@link AppSearchResult#RESULT_NOT_FOUND}. If an unexpected internal error * occurs in the AppSearch service, {@link BatchResultCallback#onSystemError} * will be invoked with a {@link Throwable}. */ public void getByUri( @NonNull GetByUriRequest request, public void getByDocumentId( @NonNull GetByDocumentIdRequest request, @NonNull @CallbackExecutor Executor executor, @NonNull BatchResultCallback<String, GenericDocument> callback) { Objects.requireNonNull(request); Loading @@ -319,7 +322,7 @@ public final class AppSearchSession implements Closeable { mPackageName, mDatabaseName, request.getNamespace(), new ArrayList<>(request.getUris()), new ArrayList<>(request.getIds()), request.getProjectionsInternal(), mUserId, new IAppSearchBatchResultCallback.Stub() { Loading Loading @@ -373,8 +376,8 @@ public final class AppSearchSession implements Closeable { } /** * Retrieves documents from the open {@link AppSearchSession} that match a given query string * and type of search provided. * Retrieves documents from the open {@link AppSearchSession} that match a given query * string and type of search provided. * * <p>Query strings can be empty, contain one term with no operators, or contain multiple terms * and operators. Loading Loading @@ -441,7 +444,7 @@ public final class AppSearchSession implements Closeable { } /** * Reports usage of a particular document by URI and namespace. * Reports usage of a particular document by namespace and ID. * * <p>A usage report represents an event in which a user interacted with or viewed a document. * Loading Loading @@ -470,8 +473,8 @@ public final class AppSearchSession implements Closeable { mPackageName, mDatabaseName, request.getNamespace(), request.getUri(), request.getUsageTimeMillis(), request.getDocumentId(), request.getUsageTimestampMillis(), /*systemUsage=*/ false, mUserId, new IAppSearchResultCallback.Stub() { Loading @@ -486,29 +489,29 @@ public final class AppSearchSession implements Closeable { } /** * Removes {@link GenericDocument} objects by URIs and namespace from the {@link * Removes {@link GenericDocument} objects by document IDs in a namespace from the {@link * AppSearchSession} database. * * <p>Removed documents will no longer be surfaced by {@link #search} or {@link #getByUri} * calls. * <p>Removed documents will no longer be surfaced by {@link #search} or {@link * #getByDocumentId} calls. * * <p><b>NOTE:</b>By default, documents are removed via a soft delete operation. Once the * document crosses the count threshold or byte usage threshold, the documents will be removed * from disk. * <p>Once the database crosses the document count or byte usage threshold, removed documents * will be deleted from disk. * * @param request {@link RemoveByUriRequest} with URIs and namespace to remove from the index. * @param request {@link RemoveByDocumentIdRequest} with IDs in a namespace to remove from the * index. * @param executor Executor on which to invoke the callback. * @param callback Callback to receive the pending result of performing this operation. The keys * of the returned {@link AppSearchBatchResult} are the input URIs. The values * are {@code null} on success, or a failed {@link AppSearchResult} otherwise. * URIs that are not found will return a failed {@link AppSearchResult} with a * result code of {@link AppSearchResult#RESULT_NOT_FOUND}. * Or {@link BatchResultCallback#onSystemError} will be invoked with a * {@link Throwable} if an unexpected internal error occurred in AppSearch * service. * of the returned {@link AppSearchBatchResult} are the input document IDs. The * values are {@code null} on success, or a failed {@link AppSearchResult} * otherwise. IDs that are not found will return a failed * {@link AppSearchResult} with a result code of * {@link AppSearchResult#RESULT_NOT_FOUND}. If an unexpected internal error * occurs in the AppSearch service, {@link BatchResultCallback#onSystemError} * will be invoked with a {@link Throwable}. */ public void remove( @NonNull RemoveByUriRequest request, @NonNull RemoveByDocumentIdRequest request, @NonNull @CallbackExecutor Executor executor, @NonNull BatchResultCallback<String, Void> callback) { Objects.requireNonNull(request); Loading @@ -516,8 +519,8 @@ public final class AppSearchSession implements Closeable { Objects.requireNonNull(callback); Preconditions.checkState(!mIsClosed, "AppSearchSession has already been closed"); try { mService.removeByUri(mPackageName, mDatabaseName, request.getNamespace(), new ArrayList<>(request.getUris()), mUserId, mService.removeByDocumentId(mPackageName, mDatabaseName, request.getNamespace(), new ArrayList<>(request.getIds()), mUserId, new IAppSearchBatchResultCallback.Stub() { @Override public void onResult(AppSearchBatchResult result) { Loading Loading @@ -581,8 +584,8 @@ public final class AppSearchSession implements Closeable { /** * Gets the storage info for this {@link AppSearchSession} database. * * <p>This may take time proportional to the number of documents and may be inefficient to * call repeatedly. * <p>This may take time proportional to the number of documents and may be inefficient to call * repeatedly. * * @param executor Executor on which to invoke the callback. * @param callback Callback to receive the storage info. Loading Loading @@ -618,8 +621,8 @@ public final class AppSearchSession implements Closeable { } /** * Closes the {@link AppSearchSession} to persist all schema and document updates, additions, * and deletes to disk. * Closes the {@link AppSearchSession} to persist all schema and document updates, * additions, and deletes to disk. */ @Override public void close() { Loading
apex/appsearch/framework/java/android/app/appsearch/GlobalSearchSession.java +7 −4 Original line number Diff line number Diff line Loading @@ -31,9 +31,12 @@ import java.util.concurrent.Executor; import java.util.function.Consumer; /** * This class provides global access to the centralized AppSearch index maintained by the system. * Provides a connection to all AppSearch databases the querying application has been granted access * to. * * <p>Apps can retrieve indexed documents through the {@link #search} API. * <p>This class is thread safe. * * @see AppSearchSession */ public class GlobalSearchSession implements Closeable { private static final String TAG = "AppSearchGlobalSearchSe"; Loading Loading @@ -151,8 +154,8 @@ public class GlobalSearchSession implements Closeable { request.getPackageName(), request.getDatabaseName(), request.getNamespace(), request.getUri(), request.getUsageTimeMillis(), request.getDocumentId(), request.getUsageTimestampMillis(), /*systemUsage=*/ true, mUserId, new IAppSearchResultCallback.Stub() { Loading