提交 e3e0027c 编写于 作者: E Eric Denman

Lazily construct RxSupport stuff

上级 30039820
......@@ -85,7 +85,7 @@ public final class MockRestAdapter {
}
private final RestAdapter restAdapter;
private final MockRxSupport mockRxSupport;
private MockRxSupport mockRxSupport;
final Random random = new Random();
private ValueChangeListener listener = ValueChangeListener.EMPTY;
......@@ -95,12 +95,6 @@ public final class MockRestAdapter {
private MockRestAdapter(RestAdapter restAdapter) {
this.restAdapter = restAdapter;
if (Platform.HAS_RX_JAVA) {
mockRxSupport = new MockRxSupport(restAdapter);
} else {
mockRxSupport = null;
}
}
/** Set a listener to be notified when any mock value changes. */
......@@ -261,6 +255,13 @@ public final class MockRestAdapter {
restAdapter.requestInterceptor.intercept(interceptorTape);
if (methodInfo.isObservable) {
if (mockRxSupport == null) {
if (Platform.HAS_RX_JAVA) {
mockRxSupport = new MockRxSupport(restAdapter);
} else {
throw new IllegalStateException("Observable method found but no RxJava on classpath");
}
}
return mockRxSupport.createMockObservable(this, methodInfo, interceptorTape, args);
}
......
......@@ -160,7 +160,7 @@ public class RestAdapter {
private final Client.Provider clientProvider;
private final Profiler profiler;
private final RxSupport rxSupport;
private RxSupport rxSupport;
volatile LogLevel logLevel;
......@@ -177,11 +177,6 @@ public class RestAdapter {
this.errorHandler = errorHandler;
this.log = log;
this.logLevel = logLevel;
if (Platform.HAS_RX_JAVA && httpExecutor != null) {
this.rxSupport = new RxSupport(httpExecutor, errorHandler);
} else {
this.rxSupport = null;
}
}
/** Change the level of logging. */
......@@ -302,6 +297,13 @@ public class RestAdapter {
requestInterceptor.intercept(interceptorTape);
if (methodInfo.isObservable) {
if (rxSupport == null) {
if (Platform.HAS_RX_JAVA) {
rxSupport = new RxSupport(httpExecutor, errorHandler);
} else {
throw new IllegalStateException("Observable method found but no RxJava on classpath");
}
}
return rxSupport.createRequestObservable(new Callable<ResponseWrapper>() {
@Override public ResponseWrapper call() throws Exception {
return (ResponseWrapper) invokeRequest(interceptorTape, methodInfo, args);
......@@ -324,8 +326,8 @@ public class RestAdapter {
* @return HTTP response object of specified {@code type} or {@code null}.
* @throws RetrofitError if any error occurs during the HTTP request.
*/
private Object invokeRequest(RequestInterceptor requestInterceptor,
RestMethodInfo methodInfo, Object[] args) {
private Object invokeRequest(RequestInterceptor requestInterceptor, RestMethodInfo methodInfo,
Object[] args) {
methodInfo.init(); // Ensure all relevant method information has been loaded.
String serverUrl = server.getUrl();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册