.class public Lcom/alibaba/fastjson/support/spring/FastJsonHttpMessageConverter; .super Lorg/springframework/http/converter/AbstractHttpMessageConverter; .source "FastJsonHttpMessageConverter.java" # annotations .annotation system Ldalvik/annotation/Signature; value = { "Lorg/springframework/http/converter/AbstractHttpMessageConverter<", "Ljava/lang/Object;", ">;" } .end annotation # static fields .field public static final UTF8:Ljava/nio/charset/Charset; # instance fields .field private charset:Ljava/nio/charset/Charset; .field protected dateFormat:Ljava/lang/String; .field private features:[Lcom/alibaba/fastjson/serializer/SerializerFeature; .field protected serialzeFilters:[Lcom/alibaba/fastjson/serializer/SerializeFilter; # direct methods .method static constructor ()V .locals 1 const-string v0, "UTF-8" .line 24 invoke-static {v0}, Ljava/nio/charset/Charset;->forName(Ljava/lang/String;)Ljava/nio/charset/Charset; move-result-object v0 sput-object v0, Lcom/alibaba/fastjson/support/spring/FastJsonHttpMessageConverter;->UTF8:Ljava/nio/charset/Charset; return-void .end method .method public constructor ()V .locals 6 const/4 v0, 0x2 .line 35 new-array v0, v0, [Lorg/springframework/http/MediaType; new-instance v1, Lorg/springframework/http/MediaType; const-string v2, "application" const-string v3, "json" sget-object v4, Lcom/alibaba/fastjson/support/spring/FastJsonHttpMessageConverter;->UTF8:Ljava/nio/charset/Charset; invoke-direct {v1, v2, v3, v4}, Lorg/springframework/http/MediaType;->(Ljava/lang/String;Ljava/lang/String;Ljava/nio/charset/Charset;)V const/4 v2, 0x0 aput-object v1, v0, v2 new-instance v1, Lorg/springframework/http/MediaType; const-string v3, "application" const-string v4, "*+json" sget-object v5, Lcom/alibaba/fastjson/support/spring/FastJsonHttpMessageConverter;->UTF8:Ljava/nio/charset/Charset; invoke-direct {v1, v3, v4, v5}, Lorg/springframework/http/MediaType;->(Ljava/lang/String;Ljava/lang/String;Ljava/nio/charset/Charset;)V const/4 v3, 0x1 aput-object v1, v0, v3 invoke-direct {p0, v0}, Lorg/springframework/http/converter/AbstractHttpMessageConverter;->([Lorg/springframework/http/MediaType;)V .line 26 sget-object v0, Lcom/alibaba/fastjson/support/spring/FastJsonHttpMessageConverter;->UTF8:Ljava/nio/charset/Charset; iput-object v0, p0, Lcom/alibaba/fastjson/support/spring/FastJsonHttpMessageConverter;->charset:Ljava/nio/charset/Charset; .line 28 new-array v0, v2, [Lcom/alibaba/fastjson/serializer/SerializerFeature; iput-object v0, p0, Lcom/alibaba/fastjson/support/spring/FastJsonHttpMessageConverter;->features:[Lcom/alibaba/fastjson/serializer/SerializerFeature; .line 30 new-array v0, v2, [Lcom/alibaba/fastjson/serializer/SerializeFilter; iput-object v0, p0, Lcom/alibaba/fastjson/support/spring/FastJsonHttpMessageConverter;->serialzeFilters:[Lcom/alibaba/fastjson/serializer/SerializeFilter; return-void .end method # virtual methods .method public addSerializeFilter(Lcom/alibaba/fastjson/serializer/SerializeFilter;)V .locals 4 if-nez p1, :cond_0 return-void .line 112 :cond_0 iget-object v0, p0, Lcom/alibaba/fastjson/support/spring/FastJsonHttpMessageConverter;->serialzeFilters:[Lcom/alibaba/fastjson/serializer/SerializeFilter; array-length v0, v0 add-int/lit8 v0, v0, 0x1 new-array v0, v0, [Lcom/alibaba/fastjson/serializer/SerializeFilter; .line 113 iget-object v1, p0, Lcom/alibaba/fastjson/support/spring/FastJsonHttpMessageConverter;->serialzeFilters:[Lcom/alibaba/fastjson/serializer/SerializeFilter; iget-object v2, p0, Lcom/alibaba/fastjson/support/spring/FastJsonHttpMessageConverter;->serialzeFilters:[Lcom/alibaba/fastjson/serializer/SerializeFilter; array-length v2, v2 const/4 v3, 0x0 invoke-static {v1, v3, p1, v3, v2}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V .line 114 array-length v1, v0 add-int/lit8 v1, v1, -0x1 aput-object p1, v0, v1 .line 115 iput-object v0, p0, Lcom/alibaba/fastjson/support/spring/FastJsonHttpMessageConverter;->serialzeFilters:[Lcom/alibaba/fastjson/serializer/SerializeFilter; return-void .end method .method public getCharset()Ljava/nio/charset/Charset; .locals 1 .line 44 iget-object v0, p0, Lcom/alibaba/fastjson/support/spring/FastJsonHttpMessageConverter;->charset:Ljava/nio/charset/Charset; return-object v0 .end method .method public getDateFormat()Ljava/lang/String; .locals 1 .line 52 iget-object v0, p0, Lcom/alibaba/fastjson/support/spring/FastJsonHttpMessageConverter;->dateFormat:Ljava/lang/String; return-object v0 .end method .method public getFeatures()[Lcom/alibaba/fastjson/serializer/SerializerFeature; .locals 1 .line 60 iget-object v0, p0, Lcom/alibaba/fastjson/support/spring/FastJsonHttpMessageConverter;->features:[Lcom/alibaba/fastjson/serializer/SerializerFeature; return-object v0 .end method .method protected readInternal(Ljava/lang/Class;Lorg/springframework/http/HttpInputMessage;)Ljava/lang/Object; .locals 11 .annotation system Ldalvik/annotation/Signature; value = { "(", "Ljava/lang/Class<", "+", "Ljava/lang/Object;", ">;", "Lorg/springframework/http/HttpInputMessage;", ")", "Ljava/lang/Object;" } .end annotation .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException;, Lorg/springframework/http/converter/HttpMessageNotReadableException; } .end annotation .line 71 new-instance v0, Ljava/io/ByteArrayOutputStream; invoke-direct {v0}, Ljava/io/ByteArrayOutputStream;->()V .line 73 invoke-interface {p2}, Lorg/springframework/http/HttpInputMessage;->getBody()Ljava/io/InputStream; move-result-object p2 const/16 v1, 0x400 .line 75 new-array v1, v1, [B .line 77 :cond_0 :goto_0 invoke-virtual {p2, v1}, Ljava/io/InputStream;->read([B)I move-result v2 const/4 v3, -0x1 const/4 v4, 0x0 if-ne v2, v3, :cond_1 .line 87 invoke-virtual {v0}, Ljava/io/ByteArrayOutputStream;->toByteArray()[B move-result-object v5 const/4 v6, 0x0 .line 88 array-length v7, v5 iget-object p2, p0, Lcom/alibaba/fastjson/support/spring/FastJsonHttpMessageConverter;->charset:Ljava/nio/charset/Charset; invoke-virtual {p2}, Ljava/nio/charset/Charset;->newDecoder()Ljava/nio/charset/CharsetDecoder; move-result-object v8 new-array v10, v4, [Lcom/alibaba/fastjson/parser/Feature; move-object v9, p1 invoke-static/range {v5 .. v10}, Lcom/alibaba/fastjson/JSON;->parseObject([BIILjava/nio/charset/CharsetDecoder;Ljava/lang/reflect/Type;[Lcom/alibaba/fastjson/parser/Feature;)Ljava/lang/Object; move-result-object p1 return-object p1 :cond_1 if-lez v2, :cond_0 .line 83 invoke-virtual {v0, v1, v4, v2}, Ljava/io/ByteArrayOutputStream;->write([BII)V goto :goto_0 .end method .method public setCharset(Ljava/nio/charset/Charset;)V .locals 0 .line 48 iput-object p1, p0, Lcom/alibaba/fastjson/support/spring/FastJsonHttpMessageConverter;->charset:Ljava/nio/charset/Charset; return-void .end method .method public setDateFormat(Ljava/lang/String;)V .locals 0 .line 56 iput-object p1, p0, Lcom/alibaba/fastjson/support/spring/FastJsonHttpMessageConverter;->dateFormat:Ljava/lang/String; return-void .end method .method public varargs setFeatures([Lcom/alibaba/fastjson/serializer/SerializerFeature;)V .locals 0 .line 64 iput-object p1, p0, Lcom/alibaba/fastjson/support/spring/FastJsonHttpMessageConverter;->features:[Lcom/alibaba/fastjson/serializer/SerializerFeature; return-void .end method .method protected supports(Ljava/lang/Class;)Z .locals 0 .annotation system Ldalvik/annotation/Signature; value = { "(", "Ljava/lang/Class<", "*>;)Z" } .end annotation const/4 p1, 0x1 return p1 .end method .method protected writeInternal(Ljava/lang/Object;Lorg/springframework/http/HttpOutputMessage;)V .locals 7 .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException;, Lorg/springframework/http/converter/HttpMessageNotWritableException; } .end annotation .line 94 invoke-interface {p2}, Lorg/springframework/http/HttpOutputMessage;->getHeaders()Lorg/springframework/http/HttpHeaders; move-result-object v0 .line 95 sget-object v2, Lcom/alibaba/fastjson/serializer/SerializeConfig;->globalInstance:Lcom/alibaba/fastjson/serializer/SerializeConfig; iget-object v3, p0, Lcom/alibaba/fastjson/support/spring/FastJsonHttpMessageConverter;->serialzeFilters:[Lcom/alibaba/fastjson/serializer/SerializeFilter; iget-object v4, p0, Lcom/alibaba/fastjson/support/spring/FastJsonHttpMessageConverter;->dateFormat:Ljava/lang/String; sget v5, Lcom/alibaba/fastjson/JSON;->DEFAULT_GENERATE_FEATURE:I iget-object v6, p0, Lcom/alibaba/fastjson/support/spring/FastJsonHttpMessageConverter;->features:[Lcom/alibaba/fastjson/serializer/SerializerFeature; move-object v1, p1 invoke-static/range {v1 .. v6}, Lcom/alibaba/fastjson/JSON;->toJSONString(Ljava/lang/Object;Lcom/alibaba/fastjson/serializer/SerializeConfig;[Lcom/alibaba/fastjson/serializer/SerializeFilter;Ljava/lang/String;I[Lcom/alibaba/fastjson/serializer/SerializerFeature;)Ljava/lang/String; move-result-object p1 .line 101 iget-object v1, p0, Lcom/alibaba/fastjson/support/spring/FastJsonHttpMessageConverter;->charset:Ljava/nio/charset/Charset; invoke-virtual {p1, v1}, Ljava/lang/String;->getBytes(Ljava/nio/charset/Charset;)[B move-result-object p1 .line 102 array-length v1, p1 int-to-long v1, v1 invoke-virtual {v0, v1, v2}, Lorg/springframework/http/HttpHeaders;->setContentLength(J)V .line 103 invoke-interface {p2}, Lorg/springframework/http/HttpOutputMessage;->getBody()Ljava/io/OutputStream; move-result-object p2 .line 104 invoke-virtual {p2, p1}, Ljava/io/OutputStream;->write([B)V return-void .end method