44
44
*
45
45
* @since 5.3
46
46
*/
47
- public class ContentTypeDelegatingDataMarshaller < T > implements DataMarshaller <byte [], T , String > {
47
+ public class ContentTypeDelegatingDataMarshaller implements DataMarshaller <byte [], Object , String > {
48
48
49
49
private final DataBufferFactory dataBufferFactory = new DefaultDataBufferFactory ();
50
50
51
51
private final List <Encoder <?>> encoders = new ArrayList <>();
52
52
53
- @ SafeVarargs
54
- public ContentTypeDelegatingDataMarshaller (Encoder <T >... encoders ) {
53
+ public ContentTypeDelegatingDataMarshaller (Encoder <?>... encoders ) {
55
54
this .encoders .add (CharSequenceEncoder .allMimeTypes ());
56
55
setEncoders (encoders );
57
56
}
58
57
59
- @ SafeVarargs
60
- public final void setEncoders (Encoder <T >... encoders ) {
58
+ public final void setEncoders (Encoder <?>... encoders ) {
61
59
Assert .notNull (encoders , "'encoders' must not be null" );
62
60
Assert .noNullElements (encoders , "'encoders' must not contain null elements" );
63
61
this .encoders .addAll (Arrays .asList (encoders ));
64
62
}
65
63
66
64
@ Override
67
65
@ SuppressWarnings ({ "unchecked" , "rawtypes" })
68
- public byte [] marshal (T data , Map <String , String > headers ) throws RuntimeException {
66
+ public byte [] marshal (Object data , Map <String , String > headers ) throws RuntimeException {
69
67
String contentType = headers .get (MessageHeaders .CONTENT_TYPE );
70
68
if (contentType == null ) { // Assume JSON by default
71
69
return Json .binaryMarshal (data , headers );
72
70
}
73
71
else {
74
72
ResolvableType elementType = ResolvableType .forClass (data .getClass ());
75
73
MimeType mimeType = MimeType .valueOf (contentType );
76
- Encoder <T > encoder = encoder (elementType , mimeType );
74
+ Encoder <Object > encoder = encoder (elementType , mimeType );
77
75
DataBuffer dataBuffer =
78
76
encoder .encodeValue (data , this .dataBufferFactory , elementType ,
79
77
mimeType , (Map <String , Object >) (Map ) headers );
@@ -86,10 +84,10 @@ public byte[] marshal(T data, Map<String, String> headers) throws RuntimeExcepti
86
84
}
87
85
88
86
@ SuppressWarnings ("unchecked" )
89
- private Encoder <T > encoder (ResolvableType elementType , MimeType mimeType ) {
87
+ private Encoder <Object > encoder (ResolvableType elementType , MimeType mimeType ) {
90
88
for (Encoder <?> encoder : this .encoders ) {
91
89
if (encoder .canEncode (elementType , mimeType )) {
92
- return (Encoder <T >) encoder ;
90
+ return (Encoder <Object >) encoder ;
93
91
}
94
92
}
95
93
throw new IllegalArgumentException ("No encoder for " + elementType );
0 commit comments