Skip to content

Commit 731e841

Browse files
committed
Added a boolean value to keep track of when a value for this future is set.
1 parent a0a2804 commit 731e841

File tree

1 file changed

+8
-7
lines changed

1 file changed

+8
-7
lines changed

client-runtime/src/main/java/com/microsoft/rest/ServiceFuture.java

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ public class ServiceFuture<T> extends AbstractFuture<T> {
2525
* The Retrofit method invocation.
2626
*/
2727
private Subscription subscription;
28+
private boolean valueSet = false;
2829

2930
protected ServiceFuture() {
3031
}
@@ -43,7 +44,7 @@ public static <T> ServiceFuture<T> fromResponse(final Observable<ServiceResponse
4344
.subscribe(new Action1<ServiceResponse<T>>() {
4445
@Override
4546
public void call(ServiceResponse<T> t) {
46-
serviceFuture.set(t.body());
47+
serviceFuture.valueSet = serviceFuture.set(t.body());
4748
}
4849
}, new Action1<Throwable>() {
4950
@Override
@@ -72,7 +73,7 @@ public void call(ServiceResponse<T> t) {
7273
if (callback != null) {
7374
callback.success(t.body());
7475
}
75-
serviceFuture.set(t.body());
76+
serviceFuture.valueSet = serviceFuture.set(t.body());
7677
}
7778
}, new Action1<Throwable>() {
7879
@Override
@@ -104,7 +105,7 @@ public void call(T t) {
104105
if (callback != null) {
105106
callback.success(t);
106107
}
107-
serviceFuture.set(t);
108+
serviceFuture.valueSet = serviceFuture.set(t);
108109
}
109110
}, new Action1<Throwable>() {
110111
@Override
@@ -134,7 +135,7 @@ public void call() {
134135
if (callback != null) {
135136
callback.success(value);
136137
}
137-
serviceFuture.set(value);
138+
serviceFuture.valueSet = serviceFuture.set(value);
138139
}
139140
}, new Action1<Throwable>() {
140141
@Override
@@ -167,7 +168,7 @@ public void call(ServiceResponse<T> t) {
167168
if (callback != null) {
168169
callback.success(t.body());
169170
}
170-
serviceFuture.set(t.body());
171+
serviceFuture.valueSet = serviceFuture.set(t.body());
171172
}
172173
}, new Action1<Throwable>() {
173174
@Override
@@ -200,7 +201,7 @@ protected void setSubscription(Subscription subscription) {
200201
* @return true if successfully reported; false otherwise.
201202
*/
202203
public boolean success(T result) {
203-
return set(result);
204+
return valueSet = set(result);
204205
}
205206

206207
@Override
@@ -211,6 +212,6 @@ public boolean cancel(boolean mayInterruptIfRunning) {
211212

212213
@Override
213214
public boolean isCancelled() {
214-
return subscription.isUnsubscribed();
215+
return !valueSet && subscription.isUnsubscribed();
215216
}
216217
}

0 commit comments

Comments
 (0)