Skip to content

Commit 8d8a00d

Browse files
committed
ci failing : fixed spotless violations
1 parent d5c50f4 commit 8d8a00d

File tree

2 files changed

+105
-99
lines changed

2 files changed

+105
-99
lines changed

parse/src/main/java/com/parse/ParseFileController.java

+72-72
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ class ParseFileController {
2525
private final File cachePath;
2626
private final List<String> currentlyDownloadedFilesNames = new ArrayList<>();
2727

28-
2928
private ParseHttpClient fileClient;
3029

3130
public ParseFileController(ParseHttpClient restClient, File cachePath) {
@@ -172,79 +171,80 @@ public Task<File> fetchAsync(
172171
if (cancellationToken != null && cancellationToken.isCancelled()) {
173172
return Task.cancelled();
174173
}
175-
return Task.call(() -> {
176-
final File cacheFile = getCacheFile(state);
174+
return Task.call(
175+
() -> {
176+
final File cacheFile = getCacheFile(state);
177+
178+
synchronized (lock) {
179+
if (currentlyDownloadedFilesNames.contains(state.name())) {
180+
while (currentlyDownloadedFilesNames.contains(state.name())) {
181+
lock.wait();
182+
}
183+
}
177184

178-
synchronized (lock) {
179-
if (currentlyDownloadedFilesNames.contains(state.name())) {
180-
while (currentlyDownloadedFilesNames.contains(state.name())) {
181-
lock.wait();
185+
if (cacheFile.exists()) {
186+
return cacheFile;
187+
} else {
188+
currentlyDownloadedFilesNames.add(state.name());
189+
}
182190
}
183-
}
184-
185-
if (cacheFile.exists()) {
186-
return cacheFile;
187-
} else {
188-
currentlyDownloadedFilesNames.add(state.name());
189-
}
190-
}
191191

192-
try {
193-
if (cancellationToken != null && cancellationToken.isCancelled()) {
194-
throw new CancellationException();
195-
}
196-
197-
// Generate the temp file path for caching ParseFile content based on
198-
// ParseFile's url
199-
// The reason we do not write to the cacheFile directly is because there
200-
// is no way we can
201-
// verify if a cacheFile is complete or not. If download is interrupted
202-
// in the middle, next
203-
// time when we download the ParseFile, since cacheFile has already
204-
// existed, we will return
205-
// this incomplete cacheFile
206-
final File tempFile = getTempFile(state);
207-
208-
// network
209-
final ParseFileRequest request =
210-
new ParseFileRequest(
211-
ParseHttpRequest.Method.GET, state.url(), tempFile);
212-
213-
// We do not need to delete the temp file since we always try to
214-
// overwrite it
215-
Task<Void> downloadTask = request.executeAsync(
216-
fileClient(),
217-
null,
218-
downloadProgressCallback,
219-
cancellationToken
220-
);
221-
ParseTaskUtils.wait(downloadTask);
222-
223-
// If the top-level task was cancelled, don't
224-
// actually set the data -- just move on.
225-
if (cancellationToken != null && cancellationToken.isCancelled()) {
226-
throw new CancellationException();
227-
}
228-
if (downloadTask.isFaulted()) {
229-
ParseFileUtils.deleteQuietly(tempFile);
230-
throw new RuntimeException(downloadTask.getError());
231-
}
232-
233-
// Since we give the cacheFile pointer to
234-
// developers, it is not safe to guarantee
235-
// cacheFile always does not exist here, so it is
236-
// better to delete it manually,
237-
// otherwise moveFile may throw an exception.
238-
ParseFileUtils.deleteQuietly(cacheFile);
239-
ParseFileUtils.moveFile(tempFile, cacheFile);
240-
return cacheFile;
241-
} finally {
242-
synchronized (lock) {
243-
currentlyDownloadedFilesNames.remove(state.name());
244-
lock.notifyAll();
245-
}
246-
}
247-
248-
}, ParseExecutors.io());
192+
try {
193+
if (cancellationToken != null && cancellationToken.isCancelled()) {
194+
throw new CancellationException();
195+
}
196+
197+
// Generate the temp file path for caching ParseFile content based on
198+
// ParseFile's url
199+
// The reason we do not write to the cacheFile directly is because there
200+
// is no way we can
201+
// verify if a cacheFile is complete or not. If download is interrupted
202+
// in the middle, next
203+
// time when we download the ParseFile, since cacheFile has already
204+
// existed, we will return
205+
// this incomplete cacheFile
206+
final File tempFile = getTempFile(state);
207+
208+
// network
209+
final ParseFileRequest request =
210+
new ParseFileRequest(
211+
ParseHttpRequest.Method.GET, state.url(), tempFile);
212+
213+
// We do not need to delete the temp file since we always try to
214+
// overwrite it
215+
Task<Void> downloadTask =
216+
request.executeAsync(
217+
fileClient(),
218+
null,
219+
downloadProgressCallback,
220+
cancellationToken);
221+
ParseTaskUtils.wait(downloadTask);
222+
223+
// If the top-level task was cancelled, don't
224+
// actually set the data -- just move on.
225+
if (cancellationToken != null && cancellationToken.isCancelled()) {
226+
throw new CancellationException();
227+
}
228+
if (downloadTask.isFaulted()) {
229+
ParseFileUtils.deleteQuietly(tempFile);
230+
throw new RuntimeException(downloadTask.getError());
231+
}
232+
233+
// Since we give the cacheFile pointer to
234+
// developers, it is not safe to guarantee
235+
// cacheFile always does not exist here, so it is
236+
// better to delete it manually,
237+
// otherwise moveFile may throw an exception.
238+
ParseFileUtils.deleteQuietly(cacheFile);
239+
ParseFileUtils.moveFile(tempFile, cacheFile);
240+
return cacheFile;
241+
} finally {
242+
synchronized (lock) {
243+
currentlyDownloadedFilesNames.remove(state.name());
244+
lock.notifyAll();
245+
}
246+
}
247+
},
248+
ParseExecutors.io());
249249
}
250250
}

parse/src/test/java/com/parse/ParseFileControllerTest.java

+33-27
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@
3030
import java.net.URL;
3131
import java.util.concurrent.CountDownLatch;
3232
import java.util.concurrent.atomic.AtomicReference;
33-
3433
import org.json.JSONObject;
3534
import org.junit.After;
3635
import org.junit.Before;
@@ -344,16 +343,15 @@ public void testFetchAsyncFailure() throws Exception {
344343
assertFalse(controller.getTempFile(state).exists());
345344
}
346345

347-
348346
@Test
349347
public void testFetchAsyncConcurrentCallsSuccess() throws Exception {
350348
byte[] data = "hello".getBytes();
351349
ParseHttpResponse mockResponse =
352-
new ParseHttpResponse.Builder()
353-
.setStatusCode(200)
354-
.setTotalSize((long) data.length)
355-
.setContent(new ByteArrayInputStream(data))
356-
.build();
350+
new ParseHttpResponse.Builder()
351+
.setStatusCode(200)
352+
.setTotalSize((long) data.length)
353+
.setContent(new ByteArrayInputStream(data))
354+
.build();
357355

358356
ParseHttpClient fileClient = mock(ParseHttpClient.class);
359357
when(fileClient.execute(any(ParseHttpRequest.class))).thenReturn(mockResponse);
@@ -366,31 +364,39 @@ public void testFetchAsyncConcurrentCallsSuccess() throws Exception {
366364
AtomicReference<File> file1Ref = new AtomicReference<>();
367365
AtomicReference<File> file2Ref = new AtomicReference<>();
368366

369-
new Thread(() -> {
370-
try {
371-
file1Ref.set(ParseTaskUtils.wait(controller.fetchAsync(state, null, null, null)));
372-
} catch (ParseException e) {
373-
throw new RuntimeException(e);
374-
} finally {
375-
countDownLatch.countDown();
376-
}
377-
}).start();
378-
379-
new Thread(() -> {
380-
try {
381-
file2Ref.set(ParseTaskUtils.wait(controller.fetchAsync(state, null, null, null)));
382-
} catch (ParseException e) {
383-
throw new RuntimeException(e);
384-
} finally {
385-
countDownLatch.countDown();
386-
}
387-
}).start();
367+
new Thread(
368+
() -> {
369+
try {
370+
file1Ref.set(
371+
ParseTaskUtils.wait(
372+
controller.fetchAsync(state, null, null, null)));
373+
} catch (ParseException e) {
374+
throw new RuntimeException(e);
375+
} finally {
376+
countDownLatch.countDown();
377+
}
378+
})
379+
.start();
380+
381+
new Thread(
382+
() -> {
383+
try {
384+
file2Ref.set(
385+
ParseTaskUtils.wait(
386+
controller.fetchAsync(state, null, null, null)));
387+
} catch (ParseException e) {
388+
throw new RuntimeException(e);
389+
} finally {
390+
countDownLatch.countDown();
391+
}
392+
})
393+
.start();
388394

389395
countDownLatch.await();
390396

391397
File result1 = file1Ref.get();
392398
File result2 = file2Ref.get();
393-
399+
394400
assertTrue(result1.exists());
395401
assertEquals("hello", ParseFileUtils.readFileToString(result1, "UTF-8"));
396402
assertTrue(result2.exists());

0 commit comments

Comments
 (0)