Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
wd1105040417
retrofit
提交
5609867a
R
retrofit
项目概览
wd1105040417
/
retrofit
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
retrofit
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
5609867a
编写于
11月 23, 2015
作者:
J
Jesse Wilson
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #1313 from square/jw/call-is-executed
Add isExecuted method to Call.
上级
8284088f
c8ae065d
变更
7
显示空白变更内容
内联
并排
Showing
7 changed file
with
65 addition
and
0 deletion
+65
-0
retrofit-mock/src/main/java/retrofit/mock/BehaviorCall.java
retrofit-mock/src/main/java/retrofit/mock/BehaviorCall.java
+4
-0
retrofit-mock/src/main/java/retrofit/mock/Calls.java
retrofit-mock/src/main/java/retrofit/mock/Calls.java
+8
-0
retrofit/src/main/java/retrofit/Call.java
retrofit/src/main/java/retrofit/Call.java
+6
-0
retrofit/src/main/java/retrofit/ExecutorCallAdapterFactory.java
...it/src/main/java/retrofit/ExecutorCallAdapterFactory.java
+4
-0
retrofit/src/main/java/retrofit/OkHttpCall.java
retrofit/src/main/java/retrofit/OkHttpCall.java
+4
-0
retrofit/src/test/java/retrofit/CallTest.java
retrofit/src/test/java/retrofit/CallTest.java
+35
-0
retrofit/src/test/java/retrofit/ExecutorCallAdapterFactoryTest.java
...rc/test/java/retrofit/ExecutorCallAdapterFactoryTest.java
+4
-0
未找到文件。
retrofit-mock/src/main/java/retrofit/mock/BehaviorCall.java
浏览文件 @
5609867a
...
@@ -119,6 +119,10 @@ final class BehaviorCall<T> implements Call<T> {
...
@@ -119,6 +119,10 @@ final class BehaviorCall<T> implements Call<T> {
});
});
}
}
@Override
public
synchronized
boolean
isExecuted
()
{
return
executed
;
}
@Override
public
Response
<
T
>
execute
()
throws
IOException
{
@Override
public
Response
<
T
>
execute
()
throws
IOException
{
final
AtomicReference
<
Response
<
T
>>
responseRef
=
new
AtomicReference
<>();
final
AtomicReference
<
Response
<
T
>>
responseRef
=
new
AtomicReference
<>();
final
AtomicReference
<
Throwable
>
failureRef
=
new
AtomicReference
<>();
final
AtomicReference
<
Throwable
>
failureRef
=
new
AtomicReference
<>();
...
...
retrofit-mock/src/main/java/retrofit/mock/Calls.java
浏览文件 @
5609867a
...
@@ -36,6 +36,10 @@ public final class Calls {
...
@@ -36,6 +36,10 @@ public final class Calls {
callback
.
onResponse
(
response
);
callback
.
onResponse
(
response
);
}
}
@Override
public
boolean
isExecuted
()
{
return
false
;
}
@Override
public
void
cancel
()
{
@Override
public
void
cancel
()
{
}
}
...
@@ -60,6 +64,10 @@ public final class Calls {
...
@@ -60,6 +64,10 @@ public final class Calls {
callback
.
onFailure
(
failure
);
callback
.
onFailure
(
failure
);
}
}
@Override
public
boolean
isExecuted
()
{
return
false
;
}
@Override
public
void
cancel
()
{
@Override
public
void
cancel
()
{
}
}
...
...
retrofit/src/main/java/retrofit/Call.java
浏览文件 @
5609867a
...
@@ -46,6 +46,12 @@ public interface Call<T> extends Cloneable {
...
@@ -46,6 +46,12 @@ public interface Call<T> extends Cloneable {
*/
*/
void
enqueue
(
Callback
<
T
>
callback
);
void
enqueue
(
Callback
<
T
>
callback
);
/**
* Returns true if this call has been either {@linkplain #execute() executed} or {@linkplain
* #enqueue(Callback) enqueued}. It is an error to execute or enqueue a call more than once.
*/
boolean
isExecuted
();
/**
/**
* Cancel this call. An attempt will be made to cancel in-flight calls, and if the call has not
* Cancel this call. An attempt will be made to cancel in-flight calls, and if the call has not
* yet been executed it never will be.
* yet been executed it never will be.
...
...
retrofit/src/main/java/retrofit/ExecutorCallAdapterFactory.java
浏览文件 @
5609867a
...
@@ -78,6 +78,10 @@ final class ExecutorCallAdapterFactory implements CallAdapter.Factory {
...
@@ -78,6 +78,10 @@ final class ExecutorCallAdapterFactory implements CallAdapter.Factory {
});
});
}
}
@Override
public
boolean
isExecuted
()
{
return
delegate
.
isExecuted
();
}
@Override
public
Response
<
T
>
execute
()
throws
IOException
{
@Override
public
Response
<
T
>
execute
()
throws
IOException
{
return
delegate
.
execute
();
return
delegate
.
execute
();
}
}
...
...
retrofit/src/main/java/retrofit/OkHttpCall.java
浏览文件 @
5609867a
...
@@ -102,6 +102,10 @@ final class OkHttpCall<T> implements Call<T> {
...
@@ -102,6 +102,10 @@ final class OkHttpCall<T> implements Call<T> {
});
});
}
}
@Override
public
synchronized
boolean
isExecuted
()
{
return
executed
;
}
public
Response
<
T
>
execute
()
throws
IOException
{
public
Response
<
T
>
execute
()
throws
IOException
{
synchronized
(
this
)
{
synchronized
(
this
)
{
if
(
executed
)
throw
new
IllegalStateException
(
"Already executed"
);
if
(
executed
)
throw
new
IllegalStateException
(
"Already executed"
);
...
...
retrofit/src/test/java/retrofit/CallTest.java
浏览文件 @
5609867a
...
@@ -515,6 +515,41 @@ public final class CallTest {
...
@@ -515,6 +515,41 @@ public final class CallTest {
assertThat
(
rawBody
.
contentType
().
toString
()).
isEqualTo
(
"text/stringy"
);
assertThat
(
rawBody
.
contentType
().
toString
()).
isEqualTo
(
"text/stringy"
);
}
}
@Test
public
void
reportsExecutedSync
()
throws
IOException
{
Retrofit
retrofit
=
new
Retrofit
.
Builder
()
.
baseUrl
(
server
.
url
(
"/"
))
.
addConverterFactory
(
new
ToStringConverterFactory
())
.
build
();
Service
example
=
retrofit
.
create
(
Service
.
class
);
server
.
enqueue
(
new
MockResponse
().
setBody
(
"Hi"
));
Call
<
String
>
call
=
example
.
getString
();
assertThat
(
call
.
isExecuted
()).
isFalse
();
call
.
execute
();
assertThat
(
call
.
isExecuted
()).
isTrue
();
}
@Test
public
void
reportsExecutedAsync
()
throws
InterruptedException
{
Retrofit
retrofit
=
new
Retrofit
.
Builder
()
.
baseUrl
(
server
.
url
(
"/"
))
.
addConverterFactory
(
new
ToStringConverterFactory
())
.
build
();
Service
example
=
retrofit
.
create
(
Service
.
class
);
server
.
enqueue
(
new
MockResponse
().
setBody
(
"Hi"
));
Call
<
String
>
call
=
example
.
getString
();
assertThat
(
call
.
isExecuted
()).
isFalse
();
call
.
enqueue
(
new
Callback
<
String
>()
{
@Override
public
void
onResponse
(
Response
<
String
>
response
)
{}
@Override
public
void
onFailure
(
Throwable
t
)
{}
});
assertThat
(
call
.
isExecuted
()).
isTrue
();
}
@Test
public
void
cancelBeforeExecute
()
{
@Test
public
void
cancelBeforeExecute
()
{
Retrofit
retrofit
=
new
Retrofit
.
Builder
()
Retrofit
retrofit
=
new
Retrofit
.
Builder
()
.
baseUrl
(
server
.
url
(
"/"
))
.
baseUrl
(
server
.
url
(
"/"
))
...
...
retrofit/src/test/java/retrofit/ExecutorCallAdapterFactoryTest.java
浏览文件 @
5609867a
...
@@ -151,6 +151,10 @@ public final class ExecutorCallAdapterFactoryTest {
...
@@ -151,6 +151,10 @@ public final class ExecutorCallAdapterFactoryTest {
throw
new
UnsupportedOperationException
();
throw
new
UnsupportedOperationException
();
}
}
@Override
public
boolean
isExecuted
()
{
return
false
;
}
@Override
public
Response
<
String
>
execute
()
throws
IOException
{
@Override
public
Response
<
String
>
execute
()
throws
IOException
{
throw
new
UnsupportedOperationException
();
throw
new
UnsupportedOperationException
();
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录