Skip to content

Commit ce8554b

Browse files
author
krishna
committed
bug fix: iterator on null requestListener list.
1 parent b2d6de7 commit ce8554b

File tree

1 file changed

+18
-12
lines changed

1 file changed

+18
-12
lines changed

fileloader/src/main/java/com/krishna/fileloader/FileLoader.java

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -176,14 +176,17 @@ private void addRequestListenerToQueue() {
176176
private void callFailureMethodsOfListeners(Throwable t) {
177177
if (!requestListenersMap.isEmpty()) {
178178
synchronized (REQUEST_LISTENER_QUEUE_LOCK) {
179-
for (FileRequestListener listener : requestListenersMap.get(fileLoadRequest)) {
180-
try {
181-
listener.onError(fileLoadRequest, t);
182-
} catch (Exception e) {
183-
//ignore
179+
List<FileRequestListener> listenerList = requestListenersMap.get(fileLoadRequest);
180+
if (listenerList != null) {
181+
for (FileRequestListener listener : listenerList) {
182+
try {
183+
listener.onError(fileLoadRequest, t);
184+
} catch (Exception e) {
185+
//ignore
186+
}
184187
}
188+
requestListenersMap.remove(fileLoadRequest);
185189
}
186-
requestListenersMap.remove(fileLoadRequest);
187190
}
188191
synchronized (REQUEST_QUEUE_LOCK) {
189192
fileLoadRequestSet.remove(fileLoadRequest);
@@ -210,14 +213,17 @@ private void sendFileResponseToListeners(File loadedFile) {
210213
if (!requestListenersMap.isEmpty()) {
211214
FileResponse fileResponse = createFileResponse(loadedFile);
212215
synchronized (REQUEST_LISTENER_QUEUE_LOCK) {
213-
for (FileRequestListener listener : requestListenersMap.get(fileLoadRequest)) {
214-
try {
215-
listener.onLoad(fileLoadRequest, fileResponse);
216-
} catch (Exception e) {
217-
callFailureMethodsOfListeners(e);
216+
List<FileRequestListener> listenerList = requestListenersMap.get(fileLoadRequest);
217+
if (listenerList != null) {
218+
for (FileRequestListener listener : listenerList) {
219+
try {
220+
listener.onLoad(fileLoadRequest, fileResponse);
221+
} catch (Exception e) {
222+
callFailureMethodsOfListeners(e);
223+
}
218224
}
225+
requestListenersMap.remove(fileLoadRequest);
219226
}
220-
requestListenersMap.remove(fileLoadRequest);
221227
}
222228
synchronized (REQUEST_QUEUE_LOCK) {
223229
fileLoadRequestSet.remove(fileLoadRequest);

0 commit comments

Comments
 (0)