diff options
| author | 2021-03-05 13:47:13 -0800 | |
|---|---|---|
| committer | 2021-03-08 20:29:06 +0000 | |
| commit | cfba1031c146f932fd71def592ae1e4af56ad234 (patch) | |
| tree | fb4ca4b9610aa061c7a3716a10686b152c255ace | |
| parent | b28ad521cfb9b40126f11dc58207a18d0c2b764e (diff) | |
Delete depracated method in AppSearchManager.
Test: presubmit
Bug: 162450968
Change-Id: I423e3a25bb986ca6cc0a87c74ce97becb59ed25b
| -rw-r--r-- | apex/appsearch/framework/java/android/app/appsearch/AppSearchManager.java | 349 |
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); - } - } } |