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

Lazily construct RxSupport stuff

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