diff options
Diffstat (limited to 'core/java/android/content/ContentResolver.java')
-rw-r--r-- | core/java/android/content/ContentResolver.java | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/core/java/android/content/ContentResolver.java b/core/java/android/content/ContentResolver.java index 6f3b1b6..f9bed59 100644 --- a/core/java/android/content/ContentResolver.java +++ b/core/java/android/content/ContentResolver.java @@ -166,6 +166,53 @@ public abstract class ContentResolver { } } + class EntityIteratorWrapper implements EntityIterator { + private final EntityIterator mInner; + private final ContentProviderClient mClient; + + EntityIteratorWrapper(EntityIterator inner, ContentProviderClient client) { + mInner = inner; + mClient = client; + } + + public boolean hasNext() throws RemoteException { + return mInner.hasNext(); + } + + public Entity next() throws RemoteException { + return mInner.next(); + } + + public void close() { + mClient.release(); + mInner.close(); + } + + protected void finalize() throws Throwable { + close(); + super.finalize(); + } + } + + public final EntityIterator queryEntity(Uri uri, + String selection, String[] selectionArgs, String sortOrder) throws RemoteException { + ContentProviderClient provider = acquireContentProviderClient(uri); + if (provider == null) { + throw new IllegalArgumentException("Unknown URL " + uri); + } + try { + EntityIterator entityIterator = + provider.queryEntities(uri, selection, selectionArgs, sortOrder); + return new EntityIteratorWrapper(entityIterator, provider); + } catch(RuntimeException e) { + provider.release(); + throw e; + } catch(RemoteException e) { + provider.release(); + throw e; + } + } + /** * Open a stream on to the content associated with a content URI. If there * is no data associated with the URI, FileNotFoundException is thrown. @@ -485,6 +532,56 @@ public abstract class ContentResolver { } } + public final Uri insertEntity(Uri uri, Entity entity) throws RemoteException { + ContentProviderClient provider = acquireContentProviderClient(uri); + if (provider == null) { + throw new IllegalArgumentException("Unknown URL " + uri); + } + try { + return provider.insertEntity(uri, entity); + } finally { + provider.release(); + } + } + + public final int updateEntity(Uri uri, Entity entity) throws RemoteException { + ContentProviderClient provider = acquireContentProviderClient(uri); + if (provider == null) { + throw new IllegalArgumentException("Unknown URL " + uri); + } + try { + return provider.updateEntity(uri, entity); + } finally { + provider.release(); + } + } + + public final Uri[] bulkInsertEntities(Uri uri, Entity[] entities) + throws RemoteException { + ContentProviderClient provider = acquireContentProviderClient(uri); + if (provider == null) { + throw new IllegalArgumentException("Unknown URL " + uri); + } + try { + return provider.bulkInsertEntities(uri, entities); + } finally { + provider.release(); + } + } + + public final int[] bulkUpdateEntities(Uri uri, Entity[] entities) + throws RemoteException { + ContentProviderClient provider = acquireContentProviderClient(uri); + if (provider == null) { + throw new IllegalArgumentException("Unknown URL " + uri); + } + try { + return provider.bulkUpdateEntities(uri, entities); + } finally { + provider.release(); + } + } + /** * Inserts multiple rows into a table at the given URL. * |