All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.robolectric.shadows.ShadowAsyncQueryHandler Maven / Gradle / Ivy

There is a newer version: 4.14.1
Show newest version
package org.robolectric.shadows;

import android.content.AsyncQueryHandler;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.database.Cursor;
import android.net.Uri;
import org.robolectric.annotation.Implementation;
import org.robolectric.annotation.Implements;
import org.robolectric.annotation.RealObject;
import org.robolectric.util.ReflectionHelpers;
import org.robolectric.util.ReflectionHelpers.ClassParameter;

/** Shadow of {@link android.content.AsyncQueryHandler}, which calls methods synchronously. */
@Implements(AsyncQueryHandler.class)
public class ShadowAsyncQueryHandler {

  @RealObject private AsyncQueryHandler asyncQueryHandler;

  private ContentResolver contentResolver;

  @Implementation
  protected void __constructor__(ContentResolver contentResolver) {
    this.contentResolver = contentResolver;
  }

  @Implementation
  protected void startDelete(
      int token, Object cookie, Uri uri, String selection, String[] selectionArgs) {
    int rows = contentResolver.delete(uri, selection, selectionArgs);
    ReflectionHelpers.callInstanceMethod(
        asyncQueryHandler,
        "onDeleteComplete",
        new ClassParameter<>(int.class, token),
        new ClassParameter<>(Object.class, cookie),
        new ClassParameter<>(int.class, rows));
  }

  @Implementation
  protected void startInsert(int token, Object cookie, Uri uri, ContentValues initialValues) {
    Uri resultUri = contentResolver.insert(uri, initialValues);
    ReflectionHelpers.callInstanceMethod(
        asyncQueryHandler,
        "onInsertComplete",
        new ClassParameter<>(int.class, token),
        new ClassParameter<>(Object.class, cookie),
        new ClassParameter<>(Uri.class, resultUri));
  }

  @Implementation
  protected void startQuery(
      int token,
      Object cookie,
      Uri uri,
      String[] projection,
      String selection,
      String[] selectionArgs,
      String orderBy) {
    Cursor cursor = contentResolver.query(uri, projection, selection, selectionArgs, orderBy);
    ReflectionHelpers.callInstanceMethod(
        asyncQueryHandler,
        "onQueryComplete",
        new ClassParameter<>(int.class, token),
        new ClassParameter<>(Object.class, cookie),
        new ClassParameter<>(Cursor.class, cursor));
  }

  @Implementation
  protected void startUpdate(
      int token,
      Object cookie,
      Uri uri,
      ContentValues values,
      String selection,
      String[] selectionArgs) {
    int rows = contentResolver.update(uri, values, selection, selectionArgs);
    ReflectionHelpers.callInstanceMethod(
        asyncQueryHandler,
        "onUpdateComplete",
        new ClassParameter<>(int.class, token),
        new ClassParameter<>(Object.class, cookie),
        new ClassParameter<>(int.class, rows));
  }

  @Implementation
  protected final void cancelOperation(int token) {}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy