summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Terry Wang <tytytyww@google.com> 2021-03-05 13:47:13 -0800
committer Terry Wang <tytytyww@google.com> 2021-03-08 20:29:06 +0000
commitcfba1031c146f932fd71def592ae1e4af56ad234 (patch)
treefb4ca4b9610aa061c7a3716a10686b152c255ace
parentb28ad521cfb9b40126f11dc58207a18d0c2b764e (diff)
Delete depracated method in AppSearchManager.
Test: presubmit Bug: 162450968 Change-Id: I423e3a25bb986ca6cc0a87c74ce97becb59ed25b
-rw-r--r--apex/appsearch/framework/java/android/app/appsearch/AppSearchManager.java349
1 files changed, 0 insertions, 349 deletions
diff --git a/apex/appsearch/framework/java/android/app/appsearch/AppSearchManager.java b/apex/appsearch/framework/java/android/app/appsearch/AppSearchManager.java
index da446bf1e7c6..a62bb504debc 100644
--- a/apex/appsearch/framework/java/android/app/appsearch/AppSearchManager.java
+++ b/apex/appsearch/framework/java/android/app/appsearch/AppSearchManager.java
@@ -19,19 +19,10 @@ import android.annotation.CallbackExecutor;
import android.annotation.NonNull;
import android.annotation.SystemService;
import android.content.Context;
-import android.os.Bundle;
-import android.os.ParcelableException;
-import android.os.RemoteException;
-import com.android.internal.infra.AndroidFuture;
import com.android.internal.util.Preconditions;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
import java.util.Objects;
-import java.util.concurrent.ExecutionException;
import java.util.concurrent.Executor;
import java.util.function.Consumer;
@@ -246,349 +237,9 @@ public class AppSearchManager {
mService, mContext.getUserId(), getPackageName(), executor, callback);
}
- /**
- * Sets the schema being used by documents provided to the {@link #putDocuments} method.
- *
- * <p>The schema provided here is compared to the stored copy of the schema previously supplied
- * to {@link #setSchema}, if any, to determine how to treat existing documents. The following
- * types of schema modifications are always safe and are made without deleting any existing
- * documents:
- *
- * <ul>
- * <li>Addition of new types
- * <li>Addition of new {@link
- * android.app.appsearch.AppSearchSchema.PropertyConfig#CARDINALITY_OPTIONAL OPTIONAL} or
- * {@link android.app.appsearch.AppSearchSchema.PropertyConfig#CARDINALITY_REPEATED
- * REPEATED} properties to a type
- * <li>Changing the cardinality of a data type to be less restrictive (e.g. changing an {@link
- * android.app.appsearch.AppSearchSchema.PropertyConfig#CARDINALITY_OPTIONAL OPTIONAL}
- * property into a {@link
- * android.app.appsearch.AppSearchSchema.PropertyConfig#CARDINALITY_REPEATED REPEATED}
- * property.
- * </ul>
- *
- * <p>The following types of schema changes are not backwards-compatible:
- *
- * <ul>
- * <li>Removal of an existing type
- * <li>Removal of a property from a type
- * <li>Changing the data type ({@code boolean}, {@code long}, etc.) of an existing property
- * <li>For properties of {@code GenericDocument} type, changing the schema type of {@code
- * GenericDocument}s of that property
- * <li>Changing the cardinality of a data type to be more restrictive (e.g. changing an {@link
- * android.app.appsearch.AppSearchSchema.PropertyConfig#CARDINALITY_OPTIONAL OPTIONAL}
- * property into a {@link
- * android.app.appsearch.AppSearchSchema.PropertyConfig#CARDINALITY_REQUIRED REQUIRED}
- * property).
- * <li>Adding a {@link
- * android.app.appsearch.AppSearchSchema.PropertyConfig#CARDINALITY_REQUIRED REQUIRED}
- * property.
- * </ul>
- *
- * <p>Supplying a schema with such changes will result in this call returning an {@link
- * AppSearchResult} with a code of {@link AppSearchResult#RESULT_INVALID_SCHEMA} and an error
- * message describing the incompatibility. In this case the previously set schema will remain
- * active.
- *
- * <p>If you need to make non-backwards-compatible changes as described above, instead use the
- * {@link #setSchema(List, boolean)} method with the {@code forceOverride} parameter set to
- * {@code true}.
- *
- * <p>It is a no-op to set the same schema as has been previously set; this is handled
- * efficiently.
- *
- * @param request The schema update request.
- * @return the result of performing this operation.
- * @hide
- * @deprecated use {@link AppSearchSession#setSchema} instead.
- */
- @NonNull
- public AppSearchResult<Void> setSchema(@NonNull SetSchemaRequest request) {
- Preconditions.checkNotNull(request);
- // TODO: This should use com.android.internal.infra.RemoteStream or another mechanism to
- // avoid binder limits.
- List<Bundle> schemaBundles = new ArrayList<>(request.getSchemas().size());
- for (AppSearchSchema schema : request.getSchemas()) {
- schemaBundles.add(schema.getBundle());
- }
- AndroidFuture<AppSearchResult> future = new AndroidFuture<>();
- try {
- mService.setSchema(
- getPackageName(),
- DEFAULT_DATABASE_NAME,
- schemaBundles,
- new ArrayList<>(request.getSchemasNotDisplayedBySystem()),
- /*schemasPackageAccessible=*/ Collections.emptyMap(),
- request.isForceOverride(),
- mContext.getUserId(),
- new IAppSearchResultCallback.Stub() {
- public void onResult(AppSearchResult result) {
- future.complete(result);
- }
- });
- } catch (RemoteException e) {
- throw e.rethrowFromSystemServer();
- }
- return getFutureOrThrow(future);
- }
-
- /**
- * Index {@link GenericDocument}s into AppSearch.
- *
- * <p>You should not call this method directly; instead, use the {@code
- * AppSearch#putDocuments()} API provided by JetPack.
- *
- * <p>Each {@link GenericDocument}'s {@code schemaType} field must be set to the name of a
- * schema type previously registered via the {@link #setSchema} method.
- *
- * @param request {@link PutDocumentsRequest} containing documents to be indexed
- * @return The pending result of performing this operation. The keys of the returned {@link
- * AppSearchBatchResult} are the URIs of the input documents. The values are {@code null} if
- * they were successfully indexed, or a failed {@link AppSearchResult} otherwise.
- * @throws RuntimeException If an error occurred during the execution.
- * @hide
- * @deprecated use {@link AppSearchSession#put} instead.
- */
- public AppSearchBatchResult<String, Void> putDocuments(@NonNull PutDocumentsRequest request) {
- // TODO(b/146386470): Transmit these documents as a RemoteStream instead of sending them in
- // one big list.
- List<GenericDocument> documents = request.getGenericDocuments();
- List<Bundle> documentBundles = new ArrayList<>(documents.size());
- for (int i = 0; i < documents.size(); i++) {
- documentBundles.add(documents.get(i).getBundle());
- }
- AndroidFuture<AppSearchBatchResult> future = new AndroidFuture<>();
- try {
- mService.putDocuments(
- getPackageName(),
- DEFAULT_DATABASE_NAME,
- documentBundles,
- mContext.getUserId(),
- new IAppSearchBatchResultCallback.Stub() {
- public void onResult(AppSearchBatchResult result) {
- future.complete(result);
- }
-
- public void onSystemError(ParcelableException exception) {
- future.completeExceptionally(exception);
- }
- });
- } catch (RemoteException e) {
- future.completeExceptionally(e);
- }
- return getFutureOrThrow(future);
- }
-
- /**
- * Retrieves {@link GenericDocument}s by URI.
- *
- * <p>You should not call this method directly; instead, use the {@code
- * AppSearch#getDocuments()} API provided by JetPack.
- *
- * @param request {@link GetByUriRequest} containing URIs to be retrieved.
- * @return The pending result of performing this operation. The keys of the returned {@link
- * AppSearchBatchResult} are the input URIs. The values are the returned {@link
- * GenericDocument}s 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}.
- * @throws RuntimeException If an error occurred during the execution.
- * @hide
- * @deprecated use {@link AppSearchSession#getByUri} instead.
- */
- public AppSearchBatchResult<String, GenericDocument> getByUri(
- @NonNull GetByUriRequest request) {
- // TODO(b/146386470): Transmit the result documents as a RemoteStream instead of sending
- // them in one big list.
- List<String> uris = new ArrayList<>(request.getUris());
- AndroidFuture<AppSearchBatchResult> future = new AndroidFuture<>();
- try {
- mService.getDocuments(
- getPackageName(),
- DEFAULT_DATABASE_NAME,
- request.getNamespace(),
- uris,
- request.getProjectionsInternal(),
- mContext.getUserId(),
- new IAppSearchBatchResultCallback.Stub() {
- public void onResult(AppSearchBatchResult result) {
- future.complete(result);
- }
-
- public void onSystemError(ParcelableException exception) {
- future.completeExceptionally(exception);
- }
- });
- } catch (RemoteException e) {
- future.completeExceptionally(e);
- }
-
- // Translate from document bundles to GenericDocument instances
- AppSearchBatchResult<String, Bundle> bundleResult = getFutureOrThrow(future);
- AppSearchBatchResult.Builder<String, GenericDocument> documentResultBuilder =
- new AppSearchBatchResult.Builder<>();
-
- // Translate successful results
- for (Map.Entry<String, Bundle> bundleEntry : bundleResult.getSuccesses().entrySet()) {
- GenericDocument document;
- try {
- document = new GenericDocument(bundleEntry.getValue());
- } catch (Throwable t) {
- // These documents went through validation, so how could this fail? We must have
- // done something wrong.
- documentResultBuilder.setFailure(
- bundleEntry.getKey(),
- AppSearchResult.RESULT_INTERNAL_ERROR,
- t.getMessage());
- continue;
- }
- documentResultBuilder.setSuccess(bundleEntry.getKey(), document);
- }
-
- // Translate failed results
- for (Map.Entry<String, AppSearchResult<Bundle>> bundleEntry :
- bundleResult.getFailures().entrySet()) {
- documentResultBuilder.setFailure(
- bundleEntry.getKey(),
- bundleEntry.getValue().getResultCode(),
- bundleEntry.getValue().getErrorMessage());
- }
-
- return documentResultBuilder.build();
- }
-
- /**
- * Searches a document based on a given query string.
- *
- * <p>You should not call this method directly; instead, use the {@code AppSearch#query()} API
- * provided by JetPack.
- *
- * <p>Currently we support following features in the raw query format:
- *
- * <ul>
- * <li>AND
- * <p>AND joins (e.g. “match documents that have both the terms ‘dog’ and ‘cat’”).
- * Example: hello world matches documents that have both ‘hello’ and ‘world’
- * <li>OR
- * <p>OR joins (e.g. “match documents that have either the term ‘dog’ or ‘cat’”). Example:
- * dog OR puppy
- * <li>Exclusion
- * <p>Exclude a term (e.g. “match documents that do not have the term ‘dog’”). Example:
- * -dog excludes the term ‘dog’
- * <li>Grouping terms
- * <p>Allow for conceptual grouping of subqueries to enable hierarchical structures (e.g.
- * “match documents that have either ‘dog’ or ‘puppy’, and either ‘cat’ or ‘kitten’”).
- * Example: (dog puppy) (cat kitten) two one group containing two terms.
- * <li>Property restricts
- * <p>Specifies which properties of a document to specifically match terms in (e.g. “match
- * documents where the ‘subject’ property contains ‘important’”). Example:
- * subject:important matches documents with the term ‘important’ in the ‘subject’ property
- * <li>Schema type restricts
- * <p>This is similar to property restricts, but allows for restricts on top-level
- * document fields, such as schema_type. Clients should be able to limit their query to
- * documents of a certain schema_type (e.g. “match documents that are of the ‘Email’
- * schema_type”). Example: { schema_type_filters: “Email”, “Video”,query: “dog” } will
- * match documents that contain the query term ‘dog’ and are of either the ‘Email’ schema
- * type or the ‘Video’ schema type.
- * </ul>
- *
- * @param queryExpression Query String to search.
- * @param searchSpec Spec for setting filters, raw query etc.
- * @throws RuntimeException If an error occurred during the execution.
- * @hide
- * @deprecated use AppSearchSession#query instead.
- */
- @NonNull
- public AppSearchResult<List<SearchResult>> query(
- @NonNull String queryExpression, @NonNull SearchSpec searchSpec) {
- // TODO(b/146386470): Transmit the result documents as a RemoteStream instead of sending
- // them in one big list.
- AndroidFuture<AppSearchResult> future = new AndroidFuture<>();
- try {
- mService.query(
- getPackageName(),
- DEFAULT_DATABASE_NAME,
- queryExpression,
- searchSpec.getBundle(),
- mContext.getUserId(),
- new IAppSearchResultCallback.Stub() {
- public void onResult(AppSearchResult result) {
- future.complete(result);
- }
- });
- AppSearchResult<Bundle> bundleResult = getFutureOrThrow(future);
- if (!bundleResult.isSuccess()) {
- return AppSearchResult.newFailedResult(
- bundleResult.getResultCode(), bundleResult.getErrorMessage());
- }
- SearchResultPage searchResultPage = new SearchResultPage(bundleResult.getResultValue());
- return AppSearchResult.newSuccessfulResult(searchResultPage.getResults());
- } catch (RemoteException e) {
- throw e.rethrowFromSystemServer();
- } catch (Throwable t) {
- return AppSearchResult.throwableToFailedResult(t);
- }
- }
-
- /**
- * Removes {@link GenericDocument}s by URI.
- *
- * <p>You should not call this method directly; instead, use the {@code AppSearch#delete()} API
- * provided by JetPack.
- *
- * @param request Request containing URIs to be removed.
- * @return 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}.
- * @throws RuntimeException If an error occurred during the execution.
- * @hide
- * @deprecated use {@link AppSearchSession#remove} instead.
- */
- public AppSearchBatchResult<String, Void> removeByUri(@NonNull RemoveByUriRequest request) {
- List<String> uris = new ArrayList<>(request.getUris());
- AndroidFuture<AppSearchBatchResult> future = new AndroidFuture<>();
- try {
- mService.removeByUri(
- getPackageName(),
- DEFAULT_DATABASE_NAME,
- request.getNamespace(),
- uris,
- mContext.getUserId(),
- new IAppSearchBatchResultCallback.Stub() {
- public void onResult(AppSearchBatchResult result) {
- future.complete(result);
- }
-
- public void onSystemError(ParcelableException exception) {
- future.completeExceptionally(exception);
- }
- });
- } catch (RemoteException e) {
- future.completeExceptionally(e);
- }
- return getFutureOrThrow(future);
- }
-
/** Returns the package name that should be used for uid verification. */
@NonNull
private String getPackageName() {
return mContext.getOpPackageName();
}
-
- private static <T> T getFutureOrThrow(@NonNull AndroidFuture<T> future) {
- try {
- return future.get();
- } catch (Throwable e) {
- if (e instanceof ExecutionException) {
- e = e.getCause();
- }
- if (e instanceof RuntimeException) {
- throw (RuntimeException) e;
- }
- if (e instanceof Error) {
- throw (Error) e;
- }
- throw new RuntimeException(e);
- }
- }
}