@Override public void connectTrialEnd(@NonNull DownloadTask task, int responseCode, @NonNull Map<String, List<String>> responseHeaderFields) { final DownloadListener[] listeners = getThreadSafeArray(task, realListenerMap); if (listeners == null) return; for (final DownloadListener realOne : listeners) { if (realOne == null) continue; realOne.connectTrialEnd(task, responseCode, responseHeaderFields); } }
@Override public void connectTrialEnd(@NonNull DownloadTask task, int responseCode, @NonNull Map<String, List<String>> responseHeaderFields) { for (DownloadListener listener : listenerList) { listener.connectTrialEnd(task, responseCode, responseHeaderFields); } }
@Override public void run() { task.getListener() .connectTrialEnd(task, responseCode, headerFields); } });
@Override public void connectTrialEnd(@NonNull final DownloadTask task, final int responseCode, @NonNull final Map<String, List<String>> headerFields) { Util.d(TAG, "<----- finish trial task(" + task.getId() + ") code[" + responseCode + "]" + headerFields); if (task.isAutoCallbackToUIThread()) { uiHandler.post(new Runnable() { @Override public void run() { task.getListener() .connectTrialEnd(task, responseCode, headerFields); } }); } else { task.getListener() .connectTrialEnd(task, responseCode, headerFields); } }
@Test public void connectTrialEnd() throws Exception { listenerBunch.connectTrialEnd(task, 200, headerFields); verify(listener1).connectTrialEnd(eq(task), eq(200), eq(headerFields)); verify(listener2).connectTrialEnd(eq(task), eq(200), eq(headerFields)); }
@Test public void trialHeadMethodForInstanceLength() throws IOException { final DownloadConnection.Factory factory = OkDownload.with().connectionFactory(); final DownloadConnection connection = mock(DownloadConnection.class); when(factory.create(anyString())).thenReturn(connection); final DownloadConnection.Connected connected = mock(DownloadConnection.Connected.class); when(connection.execute()).thenReturn(connected); when(connected.getResponseHeaderField(CONTENT_LENGTH)).thenReturn("10"); final CallbackDispatcher callbackDispatcher = OkDownload.with().callbackDispatcher(); final DownloadListener listener = mock(DownloadListener.class); when(callbackDispatcher.dispatch()).thenReturn(listener); connectTrial.trialHeadMethodForInstanceLength(); verify(connection).setRequestMethod(eq(METHOD_HEAD)); verify(listener).connectTrialStart(eq(task), nullable(Map.class)); verify(listener).connectTrialEnd(eq(task), anyInt(), nullable(Map.class)); assertThat(connectTrial.getInstanceLength()).isEqualTo(10L); }
verify(listener).connectTrialStart(eq(task), eq(headerFields)); dispatcher.dispatch().connectTrialEnd(task, 200, headerFields); verify(listener).connectTrialEnd(eq(task), eq(200), eq(headerFields));
verify(listener).connectTrialStart(eq(task), eq(headerFields)); dispatcher.dispatch().connectTrialEnd(task, 200, headerFields); verify(listener).connectTrialEnd(eq(task), eq(200), eq(headerFields));
listener.connectTrialEnd(task, 200, headerFields); listener.connectTrialEnd(noAttachTask, 200, headerFields); verify(listener1).connectTrialEnd(eq(task), eq(200), eq(headerFields)); verify(listener2).connectTrialEnd(eq(task), eq(200), eq(headerFields));
void trialHeadMethodForInstanceLength() throws IOException { final DownloadConnection connection = OkDownload.with().connectionFactory() .create(task.getUrl()); final DownloadListener listener = OkDownload.with().callbackDispatcher().dispatch(); try { connection.setRequestMethod(METHOD_HEAD); final Map<String, List<String>> userHeader = task.getHeaderMapFields(); if (userHeader != null) Util.addUserRequestHeaderField(userHeader, connection); listener.connectTrialStart(task, connection.getRequestProperties()); final DownloadConnection.Connected connectedForContentLength = connection.execute(); listener.connectTrialEnd(task, connectedForContentLength.getResponseCode(), connectedForContentLength.getResponseHeaderFields()); this.instanceLength = Util.parseContentLength( connectedForContentLength.getResponseHeaderField(CONTENT_LENGTH)); } finally { connection.release(); } }
Map<String, List<String>> responseHeader = connected.getResponseHeaderFields(); if (responseHeader == null) responseHeader = new HashMap<>(); listener.connectTrialEnd(task, responseCode, responseHeader);