Fix didnt work, new fix and tests
This commit is contained in:
@@ -73,14 +73,14 @@ public class ApgProvider extends ContentProvider {
|
||||
|
||||
private static final int DATA_STREAM = 301;
|
||||
|
||||
protected static boolean sInternalProvider;
|
||||
protected static UriMatcher sUriMatcher;
|
||||
protected boolean mInternalProvider;
|
||||
protected UriMatcher mUriMatcher;
|
||||
|
||||
/**
|
||||
* Build and return a {@link UriMatcher} that catches all {@link Uri} variations supported by
|
||||
* this {@link ContentProvider}.
|
||||
*/
|
||||
protected static UriMatcher buildUriMatcher(boolean internalProvider) {
|
||||
protected UriMatcher buildUriMatcher(boolean internalProvider) {
|
||||
final UriMatcher matcher = new UriMatcher(UriMatcher.NO_MATCH);
|
||||
|
||||
String authority;
|
||||
@@ -205,6 +205,8 @@ public class ApgProvider extends ContentProvider {
|
||||
/** {@inheritDoc} */
|
||||
@Override
|
||||
public boolean onCreate() {
|
||||
mUriMatcher = buildUriMatcher(mInternalProvider);
|
||||
|
||||
mApgDatabase = new ApgDatabase(getContext());
|
||||
return true;
|
||||
}
|
||||
@@ -212,7 +214,7 @@ public class ApgProvider extends ContentProvider {
|
||||
/** {@inheritDoc} */
|
||||
@Override
|
||||
public String getType(Uri uri) {
|
||||
final int match = sUriMatcher.match(uri);
|
||||
final int match = mUriMatcher.match(uri);
|
||||
switch (match) {
|
||||
case PUBLIC_KEY_RING:
|
||||
case PUBLIC_KEY_RING_BY_EMAILS:
|
||||
@@ -302,7 +304,7 @@ public class ApgProvider extends ContentProvider {
|
||||
projectionMap.put(KeyRingsColumns.MASTER_KEY_ID, Tables.KEY_RINGS + "."
|
||||
+ KeyRingsColumns.MASTER_KEY_ID);
|
||||
// only give out keyRing blob when we are using the internal content provider
|
||||
if (sInternalProvider) {
|
||||
if (mInternalProvider) {
|
||||
projectionMap.put(KeyRingsColumns.KEY_RING_DATA, Tables.KEY_RINGS + "."
|
||||
+ KeyRingsColumns.KEY_RING_DATA);
|
||||
}
|
||||
@@ -331,7 +333,7 @@ public class ApgProvider extends ContentProvider {
|
||||
projectionMap.put(KeysColumns.EXPIRY, KeysColumns.EXPIRY);
|
||||
projectionMap.put(KeysColumns.KEY_RING_ROW_ID, KeysColumns.KEY_RING_ROW_ID);
|
||||
// only give out keyRing blob when we are using the internal content provider
|
||||
if (sInternalProvider) {
|
||||
if (mInternalProvider) {
|
||||
projectionMap.put(KeysColumns.KEY_DATA, KeysColumns.KEY_DATA);
|
||||
}
|
||||
projectionMap.put(KeysColumns.RANK, KeysColumns.RANK);
|
||||
@@ -399,7 +401,7 @@ public class ApgProvider extends ContentProvider {
|
||||
SQLiteQueryBuilder qb = new SQLiteQueryBuilder();
|
||||
SQLiteDatabase db = mApgDatabase.getReadableDatabase();
|
||||
|
||||
int match = sUriMatcher.match(uri);
|
||||
int match = mUriMatcher.match(uri);
|
||||
|
||||
switch (match) {
|
||||
case PUBLIC_KEY_RING:
|
||||
@@ -579,7 +581,7 @@ public class ApgProvider extends ContentProvider {
|
||||
Uri rowUri = null;
|
||||
long rowId = -1;
|
||||
try {
|
||||
final int match = sUriMatcher.match(uri);
|
||||
final int match = mUriMatcher.match(uri);
|
||||
|
||||
switch (match) {
|
||||
case PUBLIC_KEY_RING:
|
||||
@@ -641,7 +643,7 @@ public class ApgProvider extends ContentProvider {
|
||||
final SQLiteDatabase db = mApgDatabase.getWritableDatabase();
|
||||
|
||||
int count;
|
||||
final int match = sUriMatcher.match(uri);
|
||||
final int match = mUriMatcher.match(uri);
|
||||
|
||||
String defaultSelection = null;
|
||||
switch (match) {
|
||||
@@ -691,7 +693,7 @@ public class ApgProvider extends ContentProvider {
|
||||
String defaultSelection = null;
|
||||
int count = 0;
|
||||
try {
|
||||
final int match = sUriMatcher.match(uri);
|
||||
final int match = mUriMatcher.match(uri);
|
||||
switch (match) {
|
||||
case PUBLIC_KEY_RING_BY_ROW_ID:
|
||||
case SECRET_KEY_RING_BY_ROW_ID:
|
||||
@@ -814,7 +816,7 @@ public class ApgProvider extends ContentProvider {
|
||||
|
||||
@Override
|
||||
public ParcelFileDescriptor openFile(Uri uri, String mode) throws FileNotFoundException {
|
||||
int match = sUriMatcher.match(uri);
|
||||
int match = mUriMatcher.match(uri);
|
||||
if (match != DATA_STREAM) {
|
||||
throw new FileNotFoundException();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user