Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
wd1105040417
retrofit
提交
1e6581f2
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,发现更多精彩内容 >>
提交
1e6581f2
编写于
1月 10, 2016
作者:
P
Prateek Srivastava
提交者:
Jake Wharton
1月 29, 2016
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Supply method annotations to factory when invoking requestBodyConverter method.
上级
1c995b22
变更
21
隐藏空白更改
内联
并排
Showing
21 changed file
with
82 addition
and
67 deletion
+82
-67
retrofit-adapters/guava/src/test/java/retrofit2/adapter/guava/StringConverterFactory.java
.../java/retrofit2/adapter/guava/StringConverterFactory.java
+2
-3
retrofit-adapters/java8/src/test/java/retrofit2/adapter/java8/StringConverterFactory.java
.../java/retrofit2/adapter/java8/StringConverterFactory.java
+2
-3
retrofit-adapters/rxjava/src/test/java/retrofit2/adapter/rxjava/StringConverterFactory.java
...java/retrofit2/adapter/rxjava/StringConverterFactory.java
+1
-1
retrofit-converters/gson/src/main/java/retrofit2/converter/gson/GsonConverterFactory.java
...n/java/retrofit2/converter/gson/GsonConverterFactory.java
+2
-2
retrofit-converters/jackson/src/main/java/retrofit2/converter/jackson/JacksonConverterFactory.java
.../retrofit2/converter/jackson/JacksonConverterFactory.java
+2
-2
retrofit-converters/moshi/src/main/java/retrofit2/converter/moshi/MoshiConverterFactory.java
...java/retrofit2/converter/moshi/MoshiConverterFactory.java
+2
-2
retrofit-converters/protobuf/src/main/java/retrofit2/converter/protobuf/ProtoConverterFactory.java
...a/retrofit2/converter/protobuf/ProtoConverterFactory.java
+2
-2
retrofit-converters/scalars/src/main/java/retrofit2/converter/scalars/ScalarsConverterFactory.java
.../retrofit2/converter/scalars/ScalarsConverterFactory.java
+2
-3
retrofit-converters/simplexml/src/main/java/retrofit2/converter/simplexml/SimpleXmlConverterFactory.java
...rofit2/converter/simplexml/SimpleXmlConverterFactory.java
+2
-2
retrofit-converters/wire/src/main/java/retrofit2/converter/wire/WireConverterFactory.java
...n/java/retrofit2/converter/wire/WireConverterFactory.java
+2
-2
retrofit/src/main/java/retrofit2/BuiltInConverters.java
retrofit/src/main/java/retrofit2/BuiltInConverters.java
+2
-2
retrofit/src/main/java/retrofit2/Converter.java
retrofit/src/main/java/retrofit2/Converter.java
+2
-2
retrofit/src/main/java/retrofit2/RequestFactoryParser.java
retrofit/src/main/java/retrofit2/RequestFactoryParser.java
+11
-5
retrofit/src/main/java/retrofit2/Retrofit.java
retrofit/src/main/java/retrofit2/Retrofit.java
+8
-5
retrofit/src/test/java/retrofit2/CallTest.java
retrofit/src/test/java/retrofit2/CallTest.java
+4
-2
retrofit/src/test/java/retrofit2/RetrofitTest.java
retrofit/src/test/java/retrofit2/RetrofitTest.java
+21
-14
retrofit/src/test/java/retrofit2/helpers/NonMatchingConverterFactory.java
...t/java/retrofit2/helpers/NonMatchingConverterFactory.java
+2
-3
retrofit/src/test/java/retrofit2/helpers/ToStringConverterFactory.java
...test/java/retrofit2/helpers/ToStringConverterFactory.java
+1
-1
samples/src/main/java/com/example/retrofit/ChunkingConverter.java
...src/main/java/com/example/retrofit/ChunkingConverter.java
+4
-4
samples/src/main/java/com/example/retrofit/JsonAndXmlConverters.java
.../main/java/com/example/retrofit/JsonAndXmlConverters.java
+7
-6
samples/src/main/java/com/example/retrofit/JsonQueryParameters.java
...c/main/java/com/example/retrofit/JsonQueryParameters.java
+1
-1
未找到文件。
retrofit-adapters/guava/src/test/java/retrofit2/adapter/guava/StringConverterFactory.java
浏览文件 @
1e6581f2
...
...
@@ -35,9 +35,8 @@ final class StringConverterFactory extends Converter.Factory {
};
}
@Override
public
Converter
<?,
RequestBody
>
requestBodyConverter
(
Type
type
,
Annotation
[]
annotations
,
Retrofit
retrofit
)
{
@Override
public
Converter
<?,
RequestBody
>
requestBodyConverter
(
Type
type
,
Annotation
[]
parameterAnnotations
,
Annotation
[]
methodAnnotations
,
Retrofit
retrofit
)
{
return
new
Converter
<
String
,
RequestBody
>()
{
@Override
public
RequestBody
convert
(
String
value
)
throws
IOException
{
return
RequestBody
.
create
(
MediaType
.
parse
(
"text/plain"
),
value
);
...
...
retrofit-adapters/java8/src/test/java/retrofit2/adapter/java8/StringConverterFactory.java
浏览文件 @
1e6581f2
...
...
@@ -35,9 +35,8 @@ final class StringConverterFactory extends Converter.Factory {
};
}
@Override
public
Converter
<?,
RequestBody
>
requestBodyConverter
(
Type
type
,
Annotation
[]
annotations
,
Retrofit
retrofit
)
{
@Override
public
Converter
<?,
RequestBody
>
requestBodyConverter
(
Type
type
,
Annotation
[]
parameterAnnotations
,
Annotation
[]
methodAnnotations
,
Retrofit
retrofit
)
{
return
new
Converter
<
String
,
RequestBody
>()
{
@Override
public
RequestBody
convert
(
String
value
)
throws
IOException
{
return
RequestBody
.
create
(
MediaType
.
parse
(
"text/plain"
),
value
);
...
...
retrofit-adapters/rxjava/src/test/java/retrofit2/adapter/rxjava/StringConverterFactory.java
浏览文件 @
1e6581f2
...
...
@@ -36,7 +36,7 @@ final class StringConverterFactory extends Converter.Factory {
}
@Override
public
Converter
<?,
RequestBody
>
requestBodyConverter
(
Type
type
,
Annotation
[]
a
nnotations
,
Retrofit
retrofit
)
{
Annotation
[]
parameterAnnotations
,
Annotation
[]
methodA
nnotations
,
Retrofit
retrofit
)
{
return
new
Converter
<
String
,
RequestBody
>()
{
@Override
public
RequestBody
convert
(
String
value
)
throws
IOException
{
return
RequestBody
.
create
(
MediaType
.
parse
(
"text/plain"
),
value
);
...
...
retrofit-converters/gson/src/main/java/retrofit2/converter/gson/GsonConverterFactory.java
浏览文件 @
1e6581f2
...
...
@@ -65,8 +65,8 @@ public final class GsonConverterFactory extends Converter.Factory {
}
@Override
public
Converter
<?,
RequestBody
>
requestBodyConverter
(
Type
type
,
Annotation
[]
annotations
,
Retrofit
retrofit
)
{
public
Converter
<?,
RequestBody
>
requestBodyConverter
(
Type
type
,
Annotation
[]
parameterAnnotations
,
Annotation
[]
methodAnnotations
,
Retrofit
retrofit
)
{
TypeAdapter
<?>
adapter
=
gson
.
getAdapter
(
TypeToken
.
get
(
type
));
return
new
GsonRequestBodyConverter
<>(
gson
,
adapter
);
}
...
...
retrofit-converters/jackson/src/main/java/retrofit2/converter/jackson/JacksonConverterFactory.java
浏览文件 @
1e6581f2
...
...
@@ -61,8 +61,8 @@ public final class JacksonConverterFactory extends Converter.Factory {
}
@Override
public
Converter
<?,
RequestBody
>
requestBodyConverter
(
Type
type
,
Annotation
[]
annotations
,
Retrofit
retrofit
)
{
public
Converter
<?,
RequestBody
>
requestBodyConverter
(
Type
type
,
Annotation
[]
parameterAnnotations
,
Annotation
[]
methodAnnotations
,
Retrofit
retrofit
)
{
JavaType
javaType
=
mapper
.
getTypeFactory
().
constructType
(
type
);
ObjectWriter
writer
=
mapper
.
writerWithType
(
javaType
);
return
new
JacksonRequestBodyConverter
<>(
writer
);
...
...
retrofit-converters/moshi/src/main/java/retrofit2/converter/moshi/MoshiConverterFactory.java
浏览文件 @
1e6581f2
...
...
@@ -58,8 +58,8 @@ public final class MoshiConverterFactory extends Converter.Factory {
}
@Override
public
Converter
<?,
RequestBody
>
requestBodyConverter
(
Type
type
,
Annotation
[]
annotations
,
Retrofit
retrofit
)
{
public
Converter
<?,
RequestBody
>
requestBodyConverter
(
Type
type
,
Annotation
[]
parameterAnnotations
,
Annotation
[]
methodAnnotations
,
Retrofit
retrofit
)
{
JsonAdapter
<?>
adapter
=
moshi
.
adapter
(
type
);
return
new
MoshiRequestBodyConverter
<>(
adapter
);
}
...
...
retrofit-converters/protobuf/src/main/java/retrofit2/converter/protobuf/ProtoConverterFactory.java
浏览文件 @
1e6581f2
...
...
@@ -60,8 +60,8 @@ public final class ProtoConverterFactory extends Converter.Factory {
}
@Override
public
Converter
<?,
RequestBody
>
requestBodyConverter
(
Type
type
,
Annotation
[]
annotations
,
Retrofit
retrofit
)
{
public
Converter
<?,
RequestBody
>
requestBodyConverter
(
Type
type
,
Annotation
[]
parameterAnnotations
,
Annotation
[]
methodAnnotations
,
Retrofit
retrofit
)
{
if
(!(
type
instanceof
Class
<?>))
{
return
null
;
}
...
...
retrofit-converters/scalars/src/main/java/retrofit2/converter/scalars/ScalarsConverterFactory.java
浏览文件 @
1e6581f2
...
...
@@ -43,9 +43,8 @@ public final class ScalarsConverterFactory extends Converter.Factory {
private
ScalarsConverterFactory
()
{
}
@Override
public
Converter
<?,
RequestBody
>
requestBodyConverter
(
Type
type
,
Annotation
[]
annotations
,
Retrofit
retrofit
)
{
@Override
public
Converter
<?,
RequestBody
>
requestBodyConverter
(
Type
type
,
Annotation
[]
parameterAnnotations
,
Annotation
[]
methodAnnotations
,
Retrofit
retrofit
)
{
if
(
type
==
String
.
class
||
type
==
boolean
.
class
||
type
==
Boolean
.
class
...
...
retrofit-converters/simplexml/src/main/java/retrofit2/converter/simplexml/SimpleXmlConverterFactory.java
浏览文件 @
1e6581f2
...
...
@@ -75,8 +75,8 @@ public final class SimpleXmlConverterFactory extends Converter.Factory {
}
@Override
public
Converter
<?,
RequestBody
>
requestBodyConverter
(
Type
type
,
Annotation
[]
annotations
,
Retrofit
retrofit
)
{
public
Converter
<?,
RequestBody
>
requestBodyConverter
(
Type
type
,
Annotation
[]
parameterAnnotations
,
Annotation
[]
methodAnnotations
,
Retrofit
retrofit
)
{
if
(!(
type
instanceof
Class
))
{
return
null
;
}
...
...
retrofit-converters/wire/src/main/java/retrofit2/converter/wire/WireConverterFactory.java
浏览文件 @
1e6581f2
...
...
@@ -53,8 +53,8 @@ public final class WireConverterFactory extends Converter.Factory {
}
@Override
public
Converter
<?,
RequestBody
>
requestBodyConverter
(
Type
type
,
Annotation
[]
annotations
,
Retrofit
retrofit
)
{
public
Converter
<?,
RequestBody
>
requestBodyConverter
(
Type
type
,
Annotation
[]
parameterAnnotations
,
Annotation
[]
methodAnnotations
,
Retrofit
retrofit
)
{
if
(!(
type
instanceof
Class
<?>))
{
return
null
;
}
...
...
retrofit/src/main/java/retrofit2/BuiltInConverters.java
浏览文件 @
1e6581f2
...
...
@@ -39,8 +39,8 @@ final class BuiltInConverters extends Converter.Factory {
}
@Override
public
Converter
<?,
RequestBody
>
requestBodyConverter
(
Type
type
,
Annotation
[]
annotations
,
Retrofit
retrofit
)
{
public
Converter
<?,
RequestBody
>
requestBodyConverter
(
Type
type
,
Annotation
[]
parameterAnnotations
,
Annotation
[]
methodAnnotations
,
Retrofit
retrofit
)
{
if
(
RequestBody
.
class
.
isAssignableFrom
(
Types
.
getRawType
(
type
)))
{
return
RequestBodyConverter
.
INSTANCE
;
}
...
...
retrofit/src/main/java/retrofit2/Converter.java
浏览文件 @
1e6581f2
...
...
@@ -57,8 +57,8 @@ public interface Converter<F, T> {
* specified by {@link Body @Body}, {@link Part @Part}, and {@link PartMap @PartMap}
* values.
*/
public
Converter
<?,
RequestBody
>
requestBodyConverter
(
Type
type
,
Annotation
[]
annotations
,
Retrofit
retrofit
)
{
public
Converter
<?,
RequestBody
>
requestBodyConverter
(
Type
type
,
Annotation
[]
parameterAnnotations
,
Annotation
[]
methodAnnotations
,
Retrofit
retrofit
)
{
return
null
;
}
...
...
retrofit/src/main/java/retrofit2/RequestFactoryParser.java
浏览文件 @
1e6581f2
...
...
@@ -201,6 +201,7 @@ final class RequestFactoryParser {
private
void
parseParameters
(
Retrofit
retrofit
)
{
Type
[]
methodParameterTypes
=
method
.
getGenericParameterTypes
();
Annotation
[]
methodAnnotations
=
method
.
getAnnotations
();
Annotation
[][]
methodParameterAnnotationArrays
=
method
.
getParameterAnnotations
();
boolean
gotField
=
false
;
...
...
@@ -429,16 +430,19 @@ final class RequestFactoryParser {
ParameterizedType
parameterizedType
=
(
ParameterizedType
)
methodParameterType
;
Type
iterableType
=
Utils
.
getParameterUpperBound
(
0
,
parameterizedType
);
Converter
<?,
RequestBody
>
valueConverter
=
retrofit
.
requestBodyConverter
(
iterableType
,
methodParameterAnnotations
);
retrofit
.
requestBodyConverter
(
iterableType
,
methodParameterAnnotations
,
methodAnnotations
);
action
=
new
RequestAction
.
Part
<>(
headers
,
valueConverter
).
iterable
();
}
else
if
(
rawParameterType
.
isArray
())
{
Class
<?>
arrayComponentType
=
boxIfPrimitive
(
rawParameterType
.
getComponentType
());
Converter
<?,
RequestBody
>
valueConverter
=
retrofit
.
requestBodyConverter
(
arrayComponentType
,
methodParameterAnnotations
);
retrofit
.
requestBodyConverter
(
arrayComponentType
,
methodParameterAnnotations
,
methodAnnotations
);
action
=
new
RequestAction
.
Part
<>(
headers
,
valueConverter
).
array
();
}
else
{
Converter
<?,
RequestBody
>
valueConverter
=
retrofit
.
requestBodyConverter
(
methodParameterType
,
methodParameterAnnotations
);
retrofit
.
requestBodyConverter
(
methodParameterType
,
methodParameterAnnotations
,
methodAnnotations
);
action
=
new
RequestAction
.
Part
<>(
headers
,
valueConverter
);
}
...
...
@@ -464,7 +468,8 @@ final class RequestFactoryParser {
}
Type
valueType
=
Utils
.
getParameterUpperBound
(
1
,
parameterizedType
);
Converter
<?,
RequestBody
>
valueConverter
=
retrofit
.
requestBodyConverter
(
valueType
,
methodParameterAnnotations
);
retrofit
.
requestBodyConverter
(
valueType
,
methodParameterAnnotations
,
methodAnnotations
);
PartMap
partMap
=
(
PartMap
)
methodParameterAnnotation
;
action
=
new
RequestAction
.
PartMap
<>(
valueConverter
,
partMap
.
encoding
());
...
...
@@ -482,7 +487,8 @@ final class RequestFactoryParser {
Converter
<?,
RequestBody
>
converter
;
try
{
converter
=
retrofit
.
requestBodyConverter
(
methodParameterType
,
methodParameterAnnotations
);
retrofit
.
requestBodyConverter
(
methodParameterType
,
methodParameterAnnotations
,
methodAnnotations
);
}
catch
(
RuntimeException
e
)
{
// Wide exception range because factories are user code.
throw
parameterError
(
e
,
i
,
"Unable to create @Body converter for %s"
,
methodParameterType
);
...
...
retrofit/src/main/java/retrofit2/Retrofit.java
浏览文件 @
1e6581f2
...
...
@@ -243,8 +243,9 @@ public final class Retrofit {
*
* @throws IllegalArgumentException if no converter available for {@code type}.
*/
public
<
T
>
Converter
<
T
,
RequestBody
>
requestBodyConverter
(
Type
type
,
Annotation
[]
annotations
)
{
return
nextRequestBodyConverter
(
null
,
type
,
annotations
);
public
<
T
>
Converter
<
T
,
RequestBody
>
requestBodyConverter
(
Type
type
,
Annotation
[]
parameterAnnotations
,
Annotation
[]
methodAnnotations
)
{
return
nextRequestBodyConverter
(
null
,
type
,
parameterAnnotations
,
methodAnnotations
);
}
/**
...
...
@@ -254,14 +255,16 @@ public final class Retrofit {
* @throws IllegalArgumentException if no converter available for {@code type}.
*/
public
<
T
>
Converter
<
T
,
RequestBody
>
nextRequestBodyConverter
(
Converter
.
Factory
skipPast
,
Type
type
,
Annotation
[]
a
nnotations
)
{
Type
type
,
Annotation
[]
parameterAnnotations
,
Annotation
[]
methodA
nnotations
)
{
checkNotNull
(
type
,
"type == null"
);
checkNotNull
(
annotations
,
"annotations == null"
);
checkNotNull
(
parameterAnnotations
,
"parameterAnnotations == null"
);
checkNotNull
(
methodAnnotations
,
"methodAnnotations == null"
);
int
start
=
converterFactories
.
indexOf
(
skipPast
)
+
1
;
for
(
int
i
=
start
,
count
=
converterFactories
.
size
();
i
<
count
;
i
++)
{
Converter
.
Factory
factory
=
converterFactories
.
get
(
i
);
Converter
<?,
RequestBody
>
converter
=
converterFactories
.
get
(
i
).
requestBodyConverter
(
type
,
a
nnotations
,
this
);
factory
.
requestBodyConverter
(
type
,
parameterAnnotations
,
methodA
nnotations
,
this
);
if
(
converter
!=
null
)
{
//noinspection unchecked
return
(
Converter
<
T
,
RequestBody
>)
converter
;
...
...
retrofit/src/test/java/retrofit2/CallTest.java
浏览文件 @
1e6581f2
...
...
@@ -195,7 +195,8 @@ public final class CallTest {
.
baseUrl
(
server
.
url
(
"/"
))
.
addConverterFactory
(
new
ToStringConverterFactory
()
{
@Override
public
Converter
<?,
RequestBody
>
requestBodyConverter
(
Type
type
,
Annotation
[]
annotations
,
public
Converter
<?,
RequestBody
>
requestBodyConverter
(
Type
type
,
Annotation
[]
parameterAnnotations
,
Annotation
[]
methodAnnotations
,
Retrofit
retrofit
)
{
return
new
Converter
<
String
,
RequestBody
>()
{
@Override
public
RequestBody
convert
(
String
value
)
throws
IOException
{
...
...
@@ -221,7 +222,8 @@ public final class CallTest {
.
baseUrl
(
server
.
url
(
"/"
))
.
addConverterFactory
(
new
ToStringConverterFactory
()
{
@Override
public
Converter
<?,
RequestBody
>
requestBodyConverter
(
Type
type
,
Annotation
[]
annotations
,
public
Converter
<?,
RequestBody
>
requestBodyConverter
(
Type
type
,
Annotation
[]
parameterAnnotations
,
Annotation
[]
methodAnnotations
,
Retrofit
retrofit
)
{
return
new
Converter
<
String
,
RequestBody
>()
{
@Override
public
RequestBody
convert
(
String
value
)
throws
IOException
{
...
...
retrofit/src/test/java/retrofit2/RetrofitTest.java
浏览文件 @
1e6581f2
...
...
@@ -330,14 +330,18 @@ public final class RetrofitTest {
assertThat
(
annotations
).
hasAtLeastOneElementOfType
(
Annotated
.
Foo
.
class
);
}
@Test
public
void
parameterAnnotationsPassedToRequestBodyConverter
()
{
final
AtomicReference
<
Annotation
[]>
annotationsRef
=
new
AtomicReference
<>();
@Test
public
void
methodAndParameterAnnotationsPassedToRequestBodyConverter
()
{
final
AtomicReference
<
Annotation
[]>
parameterAnnotationsRef
=
new
AtomicReference
<>();
final
AtomicReference
<
Annotation
[]>
methodAnnotationsRef
=
new
AtomicReference
<>();
class
MyConverterFactory
extends
Converter
.
Factory
{
@Override
public
Converter
<?,
RequestBody
>
requestBodyConverter
(
Type
type
,
Annotation
[]
annotations
,
Retrofit
retrofit
)
{
annotationsRef
.
set
(
annotations
);
return
new
ToStringConverterFactory
().
requestBodyConverter
(
type
,
annotations
,
retrofit
);
public
Converter
<?,
RequestBody
>
requestBodyConverter
(
Type
type
,
Annotation
[]
parameterAnnotations
,
Annotation
[]
methodAnnotations
,
Retrofit
retrofit
)
{
parameterAnnotationsRef
.
set
(
parameterAnnotations
);
methodAnnotationsRef
.
set
(
methodAnnotations
);
return
new
ToStringConverterFactory
().
requestBodyConverter
(
type
,
parameterAnnotations
,
methodAnnotations
,
retrofit
);
}
}
Retrofit
retrofit
=
new
Retrofit
.
Builder
()
...
...
@@ -347,8 +351,8 @@ public final class RetrofitTest {
Annotated
annotated
=
retrofit
.
create
(
Annotated
.
class
);
annotated
.
bodyParameter
(
null
);
// Trigger internal setup.
Annotation
[]
annotations
=
annotationsRef
.
get
(
);
assertThat
(
annotations
).
hasAtLeastOneElementOfType
(
Annotated
.
Foo
.
class
);
assertThat
(
parameterAnnotationsRef
.
get
()).
hasAtLeastOneElementOfType
(
Annotated
.
Foo
.
class
);
assertThat
(
methodAnnotationsRef
.
get
()).
hasAtLeastOneElementOfType
(
POST
.
class
);
}
@Test
public
void
parameterAnnotationsPassedToStringConverter
()
{
...
...
@@ -786,7 +790,8 @@ public final class RetrofitTest {
@Test
public
void
requestConverterFactoryQueried
()
{
Type
type
=
String
.
class
;
Annotation
[]
annotations
=
new
Annotation
[
0
];
Annotation
[]
parameterAnnotations
=
new
Annotation
[
0
];
Annotation
[]
methodAnnotations
=
new
Annotation
[
1
];
Converter
<?,
RequestBody
>
expectedAdapter
=
mock
(
Converter
.
class
);
Converter
.
Factory
factory
=
mock
(
Converter
.
Factory
.
class
);
...
...
@@ -796,12 +801,14 @@ public final class RetrofitTest {
.
addConverterFactory
(
factory
)
.
build
();
doReturn
(
expectedAdapter
).
when
(
factory
).
requestBodyConverter
(
type
,
annotations
,
retrofit
);
doReturn
(
expectedAdapter
).
when
(
factory
).
requestBodyConverter
(
type
,
parameterAnnotations
,
methodAnnotations
,
retrofit
);
Converter
<?,
RequestBody
>
actualAdapter
=
retrofit
.
requestBodyConverter
(
type
,
annotations
);
Converter
<?,
RequestBody
>
actualAdapter
=
retrofit
.
requestBodyConverter
(
type
,
parameterAnnotations
,
methodAnnotations
);
assertThat
(
actualAdapter
).
isSameAs
(
expectedAdapter
);
verify
(
factory
).
requestBodyConverter
(
type
,
a
nnotations
,
retrofit
);
verify
(
factory
).
requestBodyConverter
(
type
,
parameterAnnotations
,
methodA
nnotations
,
retrofit
);
verifyNoMoreInteractions
(
factory
);
}
...
...
@@ -817,7 +824,7 @@ public final class RetrofitTest {
.
build
();
try
{
retrofit
.
requestBodyConverter
(
type
,
annotations
);
retrofit
.
requestBodyConverter
(
type
,
annotations
,
annotations
);
fail
();
}
catch
(
IllegalArgumentException
e
)
{
assertThat
(
e
).
hasMessage
(
""
...
...
@@ -844,7 +851,7 @@ public final class RetrofitTest {
.
build
();
try
{
retrofit
.
nextRequestBodyConverter
(
nonMatchingFactory1
,
type
,
annotations
);
retrofit
.
nextRequestBodyConverter
(
nonMatchingFactory1
,
type
,
annotations
,
annotations
);
fail
();
}
catch
(
IllegalArgumentException
e
)
{
assertThat
(
e
).
hasMessage
(
""
...
...
retrofit/src/test/java/retrofit2/helpers/NonMatchingConverterFactory.java
浏览文件 @
1e6581f2
...
...
@@ -32,9 +32,8 @@ public final class NonMatchingConverterFactory extends Converter.Factory {
return
null
;
}
@Override
public
Converter
<?,
RequestBody
>
requestBodyConverter
(
Type
type
,
Annotation
[]
annotations
,
Retrofit
retrofit
)
{
@Override
public
Converter
<?,
RequestBody
>
requestBodyConverter
(
Type
type
,
Annotation
[]
parameterAnnotations
,
Annotation
[]
methodAnnotations
,
Retrofit
retrofit
)
{
called
=
true
;
return
null
;
}
...
...
retrofit/src/test/java/retrofit2/helpers/ToStringConverterFactory.java
浏览文件 @
1e6581f2
...
...
@@ -41,7 +41,7 @@ public class ToStringConverterFactory extends Converter.Factory {
}
@Override
public
Converter
<?,
RequestBody
>
requestBodyConverter
(
Type
type
,
Annotation
[]
a
nnotations
,
Retrofit
retrofit
)
{
Annotation
[]
parameterAnnotations
,
Annotation
[]
methodA
nnotations
,
Retrofit
retrofit
)
{
if
(
String
.
class
.
equals
(
type
))
{
return
new
Converter
<
String
,
RequestBody
>()
{
@Override
public
RequestBody
convert
(
String
value
)
throws
IOException
{
...
...
samples/src/main/java/com/example/retrofit/ChunkingConverter.java
浏览文件 @
1e6581f2
...
...
@@ -49,11 +49,11 @@ public final class ChunkingConverter {
*/
static
class
ChunkingConverterFactory
extends
Converter
.
Factory
{
@Override
public
Converter
<?,
RequestBody
>
requestBodyConverter
(
Type
type
,
Annotation
[]
annotations
,
Retrofit
retrofit
)
{
public
Converter
<?,
RequestBody
>
requestBodyConverter
(
Type
type
,
Annotation
[]
parameterAnnotations
,
Annotation
[]
methodAnnotations
,
Retrofit
retrofit
)
{
boolean
isBody
=
false
;
boolean
isChunked
=
false
;
for
(
Annotation
annotation
:
a
nnotations
)
{
for
(
Annotation
annotation
:
parameterA
nnotations
)
{
isBody
|=
annotation
instanceof
Body
;
isChunked
|=
annotation
instanceof
Chunked
;
}
...
...
@@ -63,7 +63,7 @@ public final class ChunkingConverter {
// Look up the real converter to delegate to.
final
Converter
<
Object
,
RequestBody
>
delegate
=
retrofit
.
nextRequestBodyConverter
(
this
,
type
,
a
nnotations
);
retrofit
.
nextRequestBodyConverter
(
this
,
type
,
parameterAnnotations
,
methodA
nnotations
);
// Wrap it in a Converter which removes the content length from the delegate's body.
return
new
Converter
<
Object
,
RequestBody
>()
{
@Override
public
RequestBody
convert
(
Object
value
)
throws
IOException
{
...
...
samples/src/main/java/com/example/retrofit/JsonAndXmlConverters.java
浏览文件 @
1e6581f2
...
...
@@ -74,15 +74,16 @@ public final class JsonAndXmlConverters {
return
null
;
}
@Override
public
Converter
<?,
RequestBody
>
requestBodyConverter
(
Type
type
,
Annotation
[]
annotations
,
Retrofit
retrofit
)
{
for
(
Annotation
annotation
:
annotations
)
{
@Override
public
Converter
<?,
RequestBody
>
requestBodyConverter
(
Type
type
,
Annotation
[]
parameterAnnotations
,
Annotation
[]
methodAnnotations
,
Retrofit
retrofit
)
{
for
(
Annotation
annotation
:
parameterAnnotations
)
{
if
(
annotation
instanceof
Json
)
{
return
jsonFactory
.
requestBodyConverter
(
type
,
annotations
,
retrofit
);
return
jsonFactory
.
requestBodyConverter
(
type
,
parameterAnnotations
,
methodAnnotations
,
retrofit
);
}
if
(
annotation
instanceof
Xml
)
{
return
jsonFactory
.
requestBodyConverter
(
type
,
annotations
,
retrofit
);
return
xmlFactory
.
requestBodyConverter
(
type
,
parameterAnnotations
,
methodAnnotations
,
retrofit
);
}
}
return
null
;
...
...
samples/src/main/java/com/example/retrofit/JsonQueryParameters.java
浏览文件 @
1e6581f2
...
...
@@ -55,7 +55,7 @@ public final class JsonQueryParameters {
// you can call retrofit.requestBodyConverter(type, annotations) instead of having a
// reference to it explicitly as a field.
Converter
<?,
RequestBody
>
delegate
=
delegateFactory
.
requestBodyConverter
(
type
,
annotations
,
retrofit
);
delegateFactory
.
requestBodyConverter
(
type
,
annotations
,
new
Annotation
[
0
],
retrofit
);
return
new
DelegateToStringConverter
<>(
delegate
);
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录