Skip to content

Commit

Permalink
Use try-with-resources for some streams
Browse files Browse the repository at this point in the history
  • Loading branch information
TacoTheDank committed Mar 5, 2024
1 parent 40da13e commit 40beb01
Show file tree
Hide file tree
Showing 15 changed files with 94 additions and 168 deletions.
Expand Up @@ -85,12 +85,12 @@ public void setUp() throws Exception {
assertTrue(cacheDir.canWrite());
assertTrue(cacheDir.canRead());
if (!dest.exists()) {
InputStream i = getInstrumentation().getContext().getAssets().open("3sec.mp3");
OutputStream o = new FileOutputStream(new File(cacheDir, PLAYABLE_DEST_URL));
IOUtils.copy(i, o);
o.flush();
o.close();
i.close();
try (final InputStream i = getInstrumentation().getContext().getAssets().open("3sec.mp3");
final OutputStream o = new FileOutputStream(new File(cacheDir, PLAYABLE_DEST_URL))
) {
IOUtils.copy(i, o);
o.flush();
}
}
PLAYABLE_LOCAL_URL = dest.getAbsolutePath();
assertEquals(0, httpServer.serveFile(dest));
Expand Down
14 changes: 7 additions & 7 deletions app/src/androidTest/java/de/test/antennapod/ui/UITestUtils.java
Expand Up @@ -80,10 +80,10 @@ public void tearDown() throws IOException {

public String hostFeed(Feed feed) throws IOException {
File feedFile = new File(hostedFeedDir, feed.getTitle());
FileOutputStream out = new FileOutputStream(feedFile);
Rss2Generator generator = new Rss2Generator();
generator.writeFeed(feed, out, "UTF-8", 0);
out.close();
try (final FileOutputStream out = new FileOutputStream(feedFile)) {
Rss2Generator generator = new Rss2Generator();
generator.writeFeed(feed, out, "UTF-8", 0);
}
int id = server.serveFile(feedFile);
Assert.assertTrue(id != -1);
return String.format(Locale.US, "%s/files/%d", server.getBaseUrl(), id);
Expand All @@ -106,9 +106,9 @@ private File newMediaFile(String name) throws IOException {
.getAssets().open(testFileName);
Assert.assertNotNull(in);

FileOutputStream out = new FileOutputStream(mediaFile);
IOUtils.copy(in, out);
out.close();
try (final FileOutputStream out = new FileOutputStream(mediaFile)) {
IOUtils.copy(in, out);
}

return mediaFile;
}
Expand Down
Expand Up @@ -276,9 +276,9 @@ private Response getGzippedResponse(int size) throws IOException {
random.nextBytes(buffer);

ByteArrayOutputStream compressed = new ByteArrayOutputStream(buffer.length);
GZIPOutputStream gzipOutputStream = new GZIPOutputStream(compressed);
gzipOutputStream.write(buffer);
gzipOutputStream.close();
try (final GZIPOutputStream gzipOutputStream = new GZIPOutputStream(compressed)) {
gzipOutputStream.write(buffer);
}

InputStream inputStream = new ByteArrayInputStream(compressed.toByteArray());
Response response = new Response(Response.Status.OK, MIME_PLAIN, inputStream);
Expand Down
Expand Up @@ -220,11 +220,9 @@ private void startImport() {
BOMInputStream bomInputStream = new BOMInputStream(opmlFileStream);
ByteOrderMark bom = bomInputStream.getBOM();
String charsetName = (bom == null) ? "UTF-8" : bom.getCharsetName();
Reader reader = new InputStreamReader(bomInputStream, charsetName);
OpmlReader opmlReader = new OpmlReader();
ArrayList<OpmlElement> result = opmlReader.readDocument(reader);
reader.close();
return result;
try (final Reader reader = new InputStreamReader(bomInputStream, charsetName)) {
return new OpmlReader().readDocument(reader);
}
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
Expand Down
Expand Up @@ -8,7 +8,7 @@
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;

import de.danoeh.antennapod.core.export.ExportWriter;
import de.danoeh.antennapod.core.storage.DBReader;
Expand All @@ -32,34 +32,18 @@ public DocumentFileExportWorker(@NonNull ExportWriter exportWriter, @NonNull Con
public Observable<DocumentFile> exportObservable() {
DocumentFile output = DocumentFile.fromSingleUri(context, outputFileUri);
return Observable.create(subscriber -> {
OutputStream outputStream = null;
OutputStreamWriter writer = null;
try {
Uri uri = output.getUri();
outputStream = context.getContentResolver().openOutputStream(uri, "wt");
final Uri uri = output.getUri();
try (final OutputStream outputStream = context.getContentResolver().openOutputStream(uri, "wt");
final OutputStreamWriter writer = new OutputStreamWriter(outputStream, StandardCharsets.UTF_8)
) {
if (outputStream == null) {
throw new IOException();
}
writer = new OutputStreamWriter(outputStream, Charset.forName("UTF-8"));
exportWriter.writeDocument(DBReader.getFeedList(), writer, context);
subscriber.onNext(output);
} catch (IOException e) {
subscriber.onError(e);
} finally {
if (writer != null) {
try {
writer.close();
} catch (IOException e) {
subscriber.onError(e);
}
}
if (outputStream != null) {
try {
outputStream.close();
} catch (IOException e) {
subscriber.onError(e);
}
}
subscriber.onComplete();
}
});
Expand Down
15 changes: 4 additions & 11 deletions app/src/main/java/de/danoeh/antennapod/asynctask/ExportWorker.java
Expand Up @@ -8,7 +8,7 @@
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;

import de.danoeh.antennapod.core.export.ExportWriter;
import de.danoeh.antennapod.storage.preferences.UserPreferences;
Expand Down Expand Up @@ -45,21 +45,14 @@ public Observable<File> exportObservable() {
Log.w(TAG, "Overwriting previously exported file: " + success);
}
return Observable.create(subscriber -> {
OutputStreamWriter writer = null;
try {
writer = new OutputStreamWriter(new FileOutputStream(output), Charset.forName("UTF-8"));
try (final OutputStreamWriter writer = new OutputStreamWriter(
new FileOutputStream(output), StandardCharsets.UTF_8)
) {
exportWriter.writeDocument(DBReader.getFeedList(), writer, context);
subscriber.onNext(output);
} catch (IOException e) {
subscriber.onError(e);
} finally {
if (writer != null) {
try {
writer.close();
} catch (IOException e) {
subscriber.onError(e);
}
}
subscriber.onComplete();
}
});
Expand Down
Expand Up @@ -4,7 +4,6 @@
import android.util.Log;

import de.danoeh.antennapod.BuildConfig;
import org.apache.commons.io.IOUtils;

import java.io.File;
import java.io.IOException;
Expand Down Expand Up @@ -37,9 +36,7 @@ public void uncaughtException(Thread thread, Throwable ex) {

public static void write(Throwable exception) {
File path = getFile();
PrintWriter out = null;
try {
out = new PrintWriter(path, "UTF-8");
try (final PrintWriter out = new PrintWriter(path, "UTF-8")) {
out.println("## Crash info");
out.println("Time: " + new SimpleDateFormat("dd-MM-yyyy HH:mm:ss", Locale.getDefault()).format(new Date()));
out.println("AntennaPod version: " + BuildConfig.VERSION_NAME);
Expand All @@ -50,8 +47,6 @@ public static void write(Throwable exception) {
out.println("```");
} catch (IOException e) {
Log.e(TAG, Log.getStackTraceString(e));
} finally {
IOUtils.closeQuietly(out);
}
}

Expand Down
Expand Up @@ -23,6 +23,7 @@
import java.io.Writer;
import java.math.BigInteger;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.security.DigestInputStream;
import java.security.DigestOutputStream;
import java.security.MessageDigest;
Expand Down Expand Up @@ -73,10 +74,9 @@ public void performBackup(ParcelFileDescriptor oldState, BackupDataOutput data,

try {
digester = MessageDigest.getInstance("MD5");
writer = new OutputStreamWriter(new DigestOutputStream(byteStream, digester),
Charset.forName("UTF-8"));
writer = new OutputStreamWriter(new DigestOutputStream(byteStream, digester), StandardCharsets.UTF_8);
} catch (NoSuchAlgorithmException e) {
writer = new OutputStreamWriter(byteStream, Charset.forName("UTF-8"));
writer = new OutputStreamWriter(byteStream, StandardCharsets.UTF_8);
}

try {
Expand Down Expand Up @@ -173,12 +173,10 @@ private void writeNewStateDescription(ParcelFileDescriptor newState, byte[] chec
return;
}

try {
FileOutputStream outState = new FileOutputStream(newState.getFileDescriptor());
try (final FileOutputStream outState = new FileOutputStream(newState.getFileDescriptor())) {
outState.write(checksum.length);
outState.write(checksum);
outState.flush();
outState.close();
} catch (IOException e) {
Log.e(TAG, "Failed to write new state description", e);
}
Expand Down
22 changes: 7 additions & 15 deletions core/src/main/java/de/danoeh/antennapod/core/storage/DBReader.java
Expand Up @@ -357,27 +357,19 @@ public static List<FeedItem> getPlaybackHistory(int offset, int limit) {
PodDBAdapter adapter = PodDBAdapter.getInstance();
adapter.open();

Cursor mediaCursor = null;
Cursor itemCursor = null;
try {
mediaCursor = adapter.getCompletedMediaCursor(offset, limit);
try (final Cursor mediaCursor = adapter.getCompletedMediaCursor(offset, limit)) {
String[] itemIds = new String[mediaCursor.getCount()];
for (int i = 0; i < itemIds.length && mediaCursor.moveToPosition(i); i++) {
int index = mediaCursor.getColumnIndex(PodDBAdapter.KEY_FEEDITEM);
itemIds[i] = Long.toString(mediaCursor.getLong(index));
}
itemCursor = adapter.getFeedItemCursor(itemIds);
List<FeedItem> items = extractItemlistFromCursor(adapter, itemCursor);
loadAdditionalFeedItemListData(items);
Collections.sort(items, new PlaybackCompletionDateComparator());
return items;
} finally {
if (mediaCursor != null) {
mediaCursor.close();
}
if (itemCursor != null) {
itemCursor.close();
try (final Cursor itemCursor = adapter.getFeedItemCursor(itemIds)) {
List<FeedItem> items = extractItemlistFromCursor(adapter, itemCursor);
loadAdditionalFeedItemListData(items);
Collections.sort(items, new PlaybackCompletionDateComparator());
return items;
}
} finally {
adapter.close();
}
}
Expand Down
42 changes: 21 additions & 21 deletions core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java
Expand Up @@ -68,16 +68,16 @@ private DBTasks() {
public static void removeFeedWithDownloadUrl(Context context, String downloadUrl) {
PodDBAdapter adapter = PodDBAdapter.getInstance();
adapter.open();
Cursor cursor = adapter.getFeedCursorDownloadUrls();
long feedID = 0;
if (cursor.moveToFirst()) {
do {
if (cursor.getString(1).equals(downloadUrl)) {
feedID = cursor.getLong(0);
}
} while (cursor.moveToNext());
try (final Cursor cursor = adapter.getFeedCursorDownloadUrls()) {
if (cursor.moveToFirst()) {
do {
if (cursor.getString(1).equals(downloadUrl)) {
feedID = cursor.getLong(0);
}
} while (cursor.moveToNext());
}
}
cursor.close();
adapter.close();

if (feedID != 0) {
Expand Down Expand Up @@ -384,11 +384,11 @@ public static FutureTask<List<FeedItem>> searchFeedItems(final long feedID, fina
return new FutureTask<>(new QueryTask<List<FeedItem>>() {
@Override
public void execute(PodDBAdapter adapter) {
Cursor searchResult = adapter.searchItems(feedID, query);
List<FeedItem> items = DBReader.extractItemlistFromCursor(searchResult);
DBReader.loadAdditionalFeedItemListData(items);
setResult(items);
searchResult.close();
try (final Cursor searchResult = adapter.searchItems(feedID, query)) {
List<FeedItem> items = DBReader.extractItemlistFromCursor(searchResult);
DBReader.loadAdditionalFeedItemListData(items);
setResult(items);
}
}
});
}
Expand All @@ -397,15 +397,15 @@ public static FutureTask<List<Feed>> searchFeeds(final String query) {
return new FutureTask<>(new QueryTask<List<Feed>>() {
@Override
public void execute(PodDBAdapter adapter) {
Cursor cursor = adapter.searchFeeds(query);
List<Feed> items = new ArrayList<>();
if (cursor.moveToFirst()) {
do {
items.add(FeedCursorMapper.convert(cursor));
} while (cursor.moveToNext());
try (final Cursor cursor = adapter.searchFeeds(query)) {
List<Feed> items = new ArrayList<>();
if (cursor.moveToFirst()) {
do {
items.add(FeedCursorMapper.convert(cursor));
} while (cursor.moveToNext());
}
setResult(items);
}
setResult(items);
cursor.close();
}
});
}
Expand Down

0 comments on commit 40beb01

Please sign in to comment.