Loading k9mail/src/main/java/com/fsck/k9/mailstore/LocalStore.java +10 −2 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.net.Uri; import android.support.annotation.Nullable; import android.text.TextUtils; import android.util.Log; Loading Loading @@ -681,6 +682,7 @@ public class LocalStore extends Store implements Serializable { }); } @Nullable public InputStream getAttachmentInputStream(final String attachmentId) throws MessagingException { return database.execute(false, new DbCallback<InputStream>() { @Override Loading @@ -707,6 +709,7 @@ public class LocalStore extends Store implements Serializable { }); } @Nullable private InputStream getRawAttachmentInputStream(Cursor cursor, int location, String attachmentId) { switch (location) { case DataLocation.IN_DATABASE: { Loading @@ -718,7 +721,7 @@ public class LocalStore extends Store implements Serializable { try { return new FileInputStream(file); } catch (FileNotFoundException e) { throw new WrappedException(e); return null; } } default: { Loading @@ -727,7 +730,12 @@ public class LocalStore extends Store implements Serializable { } } InputStream getDecodingInputStream(final InputStream rawInputStream, String encoding) { @Nullable InputStream getDecodingInputStream(@Nullable final InputStream rawInputStream, @Nullable String encoding) { if (rawInputStream == null) { return null; } if (MimeUtil.ENC_BASE64.equals(encoding)) { return new Base64InputStream(rawInputStream) { @Override Loading k9mail/src/main/java/com/fsck/k9/provider/AttachmentProvider.java +22 −10 Original line number Diff line number Diff line Loading @@ -12,6 +12,8 @@ import android.database.Cursor; import android.database.MatrixCursor; import android.net.Uri; import android.os.ParcelFileDescriptor; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.util.Log; import com.fsck.k9.Account; Loading Loading @@ -58,7 +60,7 @@ public class AttachmentProvider extends ContentProvider { } @Override public String getType(Uri uri) { public String getType(@NonNull Uri uri) { List<String> segments = uri.getPathSegments(); String accountUuid = segments.get(0); String id = segments.get(1); Loading @@ -68,16 +70,20 @@ public class AttachmentProvider extends ContentProvider { } @Override public ParcelFileDescriptor openFile(Uri uri, String mode) throws FileNotFoundException { public ParcelFileDescriptor openFile(@NonNull Uri uri, @NonNull String mode) throws FileNotFoundException { List<String> segments = uri.getPathSegments(); String accountUuid = segments.get(0); String attachmentId = segments.get(1); return openAttachment(accountUuid, attachmentId); ParcelFileDescriptor parcelFileDescriptor = openAttachment(accountUuid, attachmentId); if (parcelFileDescriptor == null) { throw new FileNotFoundException("Attachment missing or cannot be opened!"); } return parcelFileDescriptor; } @Override public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) { public Cursor query(@NonNull Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) { String[] columnNames = (projection == null) ? DEFAULT_PROJECTION : projection; Loading Loading @@ -120,18 +126,18 @@ public class AttachmentProvider extends ContentProvider { } @Override public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) { return 0; public int update(@NonNull Uri uri, ContentValues values, String selection, String[] selectionArgs) { throw new UnsupportedOperationException(); } @Override public int delete(Uri uri, String arg1, String[] arg2) { return 0; public int delete(@NonNull Uri uri, String arg1, String[] arg2) { throw new UnsupportedOperationException(); } @Override public Uri insert(Uri uri, ContentValues values) { return null; public Uri insert(@NonNull Uri uri, ContentValues values) { throw new UnsupportedOperationException(); } private String getType(String accountUuid, String id, String mimeType) { Loading @@ -155,9 +161,14 @@ public class AttachmentProvider extends ContentProvider { return type; } @Nullable private ParcelFileDescriptor openAttachment(String accountUuid, String attachmentId) { try { InputStream inputStream = getAttachmentInputStream(accountUuid, attachmentId); if (inputStream == null) { Log.e(K9.LOG_TAG, "Error getting InputStream for attachment (part doesn't exist?)"); return null; } return ParcelFileDescriptorUtil.pipeFrom(inputStream); } catch (MessagingException e) { Log.e(K9.LOG_TAG, "Error getting InputStream for attachment", e); Loading @@ -168,6 +179,7 @@ public class AttachmentProvider extends ContentProvider { } } @Nullable private InputStream getAttachmentInputStream(String accountUuid, String attachmentId) throws MessagingException { final Account account = Preferences.getPreferences(getContext()).getAccount(accountUuid); LocalStore localStore = LocalStore.getInstance(account, getContext()); Loading Loading
k9mail/src/main/java/com/fsck/k9/mailstore/LocalStore.java +10 −2 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.net.Uri; import android.support.annotation.Nullable; import android.text.TextUtils; import android.util.Log; Loading Loading @@ -681,6 +682,7 @@ public class LocalStore extends Store implements Serializable { }); } @Nullable public InputStream getAttachmentInputStream(final String attachmentId) throws MessagingException { return database.execute(false, new DbCallback<InputStream>() { @Override Loading @@ -707,6 +709,7 @@ public class LocalStore extends Store implements Serializable { }); } @Nullable private InputStream getRawAttachmentInputStream(Cursor cursor, int location, String attachmentId) { switch (location) { case DataLocation.IN_DATABASE: { Loading @@ -718,7 +721,7 @@ public class LocalStore extends Store implements Serializable { try { return new FileInputStream(file); } catch (FileNotFoundException e) { throw new WrappedException(e); return null; } } default: { Loading @@ -727,7 +730,12 @@ public class LocalStore extends Store implements Serializable { } } InputStream getDecodingInputStream(final InputStream rawInputStream, String encoding) { @Nullable InputStream getDecodingInputStream(@Nullable final InputStream rawInputStream, @Nullable String encoding) { if (rawInputStream == null) { return null; } if (MimeUtil.ENC_BASE64.equals(encoding)) { return new Base64InputStream(rawInputStream) { @Override Loading
k9mail/src/main/java/com/fsck/k9/provider/AttachmentProvider.java +22 −10 Original line number Diff line number Diff line Loading @@ -12,6 +12,8 @@ import android.database.Cursor; import android.database.MatrixCursor; import android.net.Uri; import android.os.ParcelFileDescriptor; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.util.Log; import com.fsck.k9.Account; Loading Loading @@ -58,7 +60,7 @@ public class AttachmentProvider extends ContentProvider { } @Override public String getType(Uri uri) { public String getType(@NonNull Uri uri) { List<String> segments = uri.getPathSegments(); String accountUuid = segments.get(0); String id = segments.get(1); Loading @@ -68,16 +70,20 @@ public class AttachmentProvider extends ContentProvider { } @Override public ParcelFileDescriptor openFile(Uri uri, String mode) throws FileNotFoundException { public ParcelFileDescriptor openFile(@NonNull Uri uri, @NonNull String mode) throws FileNotFoundException { List<String> segments = uri.getPathSegments(); String accountUuid = segments.get(0); String attachmentId = segments.get(1); return openAttachment(accountUuid, attachmentId); ParcelFileDescriptor parcelFileDescriptor = openAttachment(accountUuid, attachmentId); if (parcelFileDescriptor == null) { throw new FileNotFoundException("Attachment missing or cannot be opened!"); } return parcelFileDescriptor; } @Override public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) { public Cursor query(@NonNull Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) { String[] columnNames = (projection == null) ? DEFAULT_PROJECTION : projection; Loading Loading @@ -120,18 +126,18 @@ public class AttachmentProvider extends ContentProvider { } @Override public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) { return 0; public int update(@NonNull Uri uri, ContentValues values, String selection, String[] selectionArgs) { throw new UnsupportedOperationException(); } @Override public int delete(Uri uri, String arg1, String[] arg2) { return 0; public int delete(@NonNull Uri uri, String arg1, String[] arg2) { throw new UnsupportedOperationException(); } @Override public Uri insert(Uri uri, ContentValues values) { return null; public Uri insert(@NonNull Uri uri, ContentValues values) { throw new UnsupportedOperationException(); } private String getType(String accountUuid, String id, String mimeType) { Loading @@ -155,9 +161,14 @@ public class AttachmentProvider extends ContentProvider { return type; } @Nullable private ParcelFileDescriptor openAttachment(String accountUuid, String attachmentId) { try { InputStream inputStream = getAttachmentInputStream(accountUuid, attachmentId); if (inputStream == null) { Log.e(K9.LOG_TAG, "Error getting InputStream for attachment (part doesn't exist?)"); return null; } return ParcelFileDescriptorUtil.pipeFrom(inputStream); } catch (MessagingException e) { Log.e(K9.LOG_TAG, "Error getting InputStream for attachment", e); Loading @@ -168,6 +179,7 @@ public class AttachmentProvider extends ContentProvider { } } @Nullable private InputStream getAttachmentInputStream(String accountUuid, String attachmentId) throws MessagingException { final Account account = Preferences.getPreferences(getContext()).getAccount(accountUuid); LocalStore localStore = LocalStore.getInstance(account, getContext()); Loading