Weather/smali/com/alibaba/fastjson/support/jaxrs/FastJsonProvider.smali
2021-05-10 10:13:34 +02:00

546 lines
14 KiB
Smali

.class public Lcom/alibaba/fastjson/support/jaxrs/FastJsonProvider;
.super Ljava/lang/Object;
.source "FastJsonProvider.java"
# interfaces
.implements Ljavax/ws/rs/ext/MessageBodyReader;
.implements Ljavax/ws/rs/ext/MessageBodyWriter;
# annotations
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/lang/Object;",
"Ljavax/ws/rs/ext/MessageBodyReader<",
"Ljava/lang/Object;",
">;",
"Ljavax/ws/rs/ext/MessageBodyWriter<",
"Ljava/lang/Object;",
">;"
}
.end annotation
.annotation runtime Ljavax/ws/rs/ext/Provider;
.end annotation
# instance fields
.field private clazzes:[Ljava/lang/Class;
.annotation system Ldalvik/annotation/Signature;
value = {
"[",
"Ljava/lang/Class<",
"*>;"
}
.end annotation
.end field
.field public features:[Lcom/alibaba/fastjson/parser/Feature;
.field public parserConfig:Lcom/alibaba/fastjson/parser/ParserConfig;
.field public serializeConfig:Lcom/alibaba/fastjson/serializer/SerializeConfig;
.field public serializeFilters:Ljava/util/Map;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/Map<",
"Ljava/lang/Class<",
"*>;",
"Lcom/alibaba/fastjson/serializer/SerializeFilter;",
">;"
}
.end annotation
.end field
.field public serializerFeatures:[Lcom/alibaba/fastjson/serializer/SerializerFeature;
.field uriInfo:Ljavax/ws/rs/core/UriInfo;
.annotation runtime Ljavax/ws/rs/core/Context;
.end annotation
.end field
# direct methods
.method public constructor <init>()V
.locals 2
.line 51
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
const/4 v0, 0x0
.line 35
iput-object v0, p0, Lcom/alibaba/fastjson/support/jaxrs/FastJsonProvider;->clazzes:[Ljava/lang/Class;
.line 37
invoke-static {}, Lcom/alibaba/fastjson/serializer/SerializeConfig;->getGlobalInstance()Lcom/alibaba/fastjson/serializer/SerializeConfig;
move-result-object v0
iput-object v0, p0, Lcom/alibaba/fastjson/support/jaxrs/FastJsonProvider;->serializeConfig:Lcom/alibaba/fastjson/serializer/SerializeConfig;
.line 38
invoke-static {}, Lcom/alibaba/fastjson/parser/ParserConfig;->getGlobalInstance()Lcom/alibaba/fastjson/parser/ParserConfig;
move-result-object v0
iput-object v0, p0, Lcom/alibaba/fastjson/support/jaxrs/FastJsonProvider;->parserConfig:Lcom/alibaba/fastjson/parser/ParserConfig;
const/4 v0, 0x0
.line 39
new-array v1, v0, [Lcom/alibaba/fastjson/serializer/SerializerFeature;
iput-object v1, p0, Lcom/alibaba/fastjson/support/jaxrs/FastJsonProvider;->serializerFeatures:[Lcom/alibaba/fastjson/serializer/SerializerFeature;
.line 40
new-array v0, v0, [Lcom/alibaba/fastjson/parser/Feature;
iput-object v0, p0, Lcom/alibaba/fastjson/support/jaxrs/FastJsonProvider;->features:[Lcom/alibaba/fastjson/parser/Feature;
return-void
.end method
.method public constructor <init>([Ljava/lang/Class;)V
.locals 2
.annotation system Ldalvik/annotation/Signature;
value = {
"([",
"Ljava/lang/Class<",
"*>;)V"
}
.end annotation
.line 59
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
const/4 v0, 0x0
.line 35
iput-object v0, p0, Lcom/alibaba/fastjson/support/jaxrs/FastJsonProvider;->clazzes:[Ljava/lang/Class;
.line 37
invoke-static {}, Lcom/alibaba/fastjson/serializer/SerializeConfig;->getGlobalInstance()Lcom/alibaba/fastjson/serializer/SerializeConfig;
move-result-object v0
iput-object v0, p0, Lcom/alibaba/fastjson/support/jaxrs/FastJsonProvider;->serializeConfig:Lcom/alibaba/fastjson/serializer/SerializeConfig;
.line 38
invoke-static {}, Lcom/alibaba/fastjson/parser/ParserConfig;->getGlobalInstance()Lcom/alibaba/fastjson/parser/ParserConfig;
move-result-object v0
iput-object v0, p0, Lcom/alibaba/fastjson/support/jaxrs/FastJsonProvider;->parserConfig:Lcom/alibaba/fastjson/parser/ParserConfig;
const/4 v0, 0x0
.line 39
new-array v1, v0, [Lcom/alibaba/fastjson/serializer/SerializerFeature;
iput-object v1, p0, Lcom/alibaba/fastjson/support/jaxrs/FastJsonProvider;->serializerFeatures:[Lcom/alibaba/fastjson/serializer/SerializerFeature;
.line 40
new-array v0, v0, [Lcom/alibaba/fastjson/parser/Feature;
iput-object v0, p0, Lcom/alibaba/fastjson/support/jaxrs/FastJsonProvider;->features:[Lcom/alibaba/fastjson/parser/Feature;
.line 60
iput-object p1, p0, Lcom/alibaba/fastjson/support/jaxrs/FastJsonProvider;->clazzes:[Ljava/lang/Class;
return-void
.end method
# virtual methods
.method public getSize(Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/reflect/Type;[Ljava/lang/annotation/Annotation;Ljavax/ws/rs/core/MediaType;)J
.locals 0
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/Object;",
"Ljava/lang/Class<",
"*>;",
"Ljava/lang/reflect/Type;",
"[",
"Ljava/lang/annotation/Annotation;",
"Ljavax/ws/rs/core/MediaType;",
")J"
}
.end annotation
const-wide/16 p1, -0x1
return-wide p1
.end method
.method protected hasMatchingMediaType(Ljavax/ws/rs/core/MediaType;)Z
.locals 2
const/4 v0, 0x1
if-eqz p1, :cond_2
.line 96
invoke-virtual {p1}, Ljavax/ws/rs/core/MediaType;->getSubtype()Ljava/lang/String;
move-result-object p1
const-string v1, "json"
.line 97
invoke-virtual {v1, p1}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z
move-result v1
if-nez v1, :cond_1
const-string v1, "+json"
invoke-virtual {p1, v1}, Ljava/lang/String;->endsWith(Ljava/lang/String;)Z
move-result v1
if-nez v1, :cond_1
const-string v1, "javascript"
invoke-virtual {v1, p1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v1
if-nez v1, :cond_1
const-string v1, "x-javascript"
invoke-virtual {v1, p1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result p1
if-eqz p1, :cond_0
goto :goto_0
:cond_0
const/4 v0, 0x0
:cond_1
:goto_0
return v0
:cond_2
return v0
.end method
.method public isReadable(Ljava/lang/Class;Ljava/lang/reflect/Type;[Ljava/lang/annotation/Annotation;Ljavax/ws/rs/core/MediaType;)Z
.locals 0
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/Class<",
"*>;",
"Ljava/lang/reflect/Type;",
"[",
"Ljava/lang/annotation/Annotation;",
"Ljavax/ws/rs/core/MediaType;",
")Z"
}
.end annotation
.line 167
invoke-virtual {p0, p4}, Lcom/alibaba/fastjson/support/jaxrs/FastJsonProvider;->hasMatchingMediaType(Ljavax/ws/rs/core/MediaType;)Z
move-result p2
if-nez p2, :cond_0
const/4 p1, 0x0
return p1
.line 171
:cond_0
invoke-virtual {p0, p1, p3}, Lcom/alibaba/fastjson/support/jaxrs/FastJsonProvider;->isValidType(Ljava/lang/Class;[Ljava/lang/annotation/Annotation;)Z
move-result p1
return p1
.end method
.method protected isValidType(Ljava/lang/Class;[Ljava/lang/annotation/Annotation;)Z
.locals 5
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/Class<",
"*>;[",
"Ljava/lang/annotation/Annotation;",
")Z"
}
.end annotation
const/4 p2, 0x0
if-nez p1, :cond_0
return p2
.line 74
:cond_0
iget-object v0, p0, Lcom/alibaba/fastjson/support/jaxrs/FastJsonProvider;->clazzes:[Ljava/lang/Class;
const/4 v1, 0x1
if-eqz v0, :cond_3
.line 75
iget-object v0, p0, Lcom/alibaba/fastjson/support/jaxrs/FastJsonProvider;->clazzes:[Ljava/lang/Class;
array-length v2, v0
const/4 v3, 0x0
:goto_0
if-ge v3, v2, :cond_2
aget-object v4, v0, v3
if-ne v4, p1, :cond_1
return v1
:cond_1
add-int/lit8 v3, v3, 0x1
goto :goto_0
:cond_2
return p2
:cond_3
return v1
.end method
.method public isWriteable(Ljava/lang/Class;Ljava/lang/reflect/Type;[Ljava/lang/annotation/Annotation;Ljavax/ws/rs/core/MediaType;)Z
.locals 0
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/Class<",
"*>;",
"Ljava/lang/reflect/Type;",
"[",
"Ljava/lang/annotation/Annotation;",
"Ljavax/ws/rs/core/MediaType;",
")Z"
}
.end annotation
.line 113
invoke-virtual {p0, p4}, Lcom/alibaba/fastjson/support/jaxrs/FastJsonProvider;->hasMatchingMediaType(Ljavax/ws/rs/core/MediaType;)Z
move-result p2
if-nez p2, :cond_0
const/4 p1, 0x0
return p1
.line 117
:cond_0
invoke-virtual {p0, p1, p3}, Lcom/alibaba/fastjson/support/jaxrs/FastJsonProvider;->isValidType(Ljava/lang/Class;[Ljava/lang/annotation/Annotation;)Z
move-result p1
return p1
.end method
.method public readFrom(Ljava/lang/Class;Ljava/lang/reflect/Type;[Ljava/lang/annotation/Annotation;Ljavax/ws/rs/core/MediaType;Ljavax/ws/rs/core/MultivaluedMap;Ljava/io/InputStream;)Ljava/lang/Object;
.locals 0
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/Class<",
"Ljava/lang/Object;",
">;",
"Ljava/lang/reflect/Type;",
"[",
"Ljava/lang/annotation/Annotation;",
"Ljavax/ws/rs/core/MediaType;",
"Ljavax/ws/rs/core/MultivaluedMap<",
"Ljava/lang/String;",
"Ljava/lang/String;",
">;",
"Ljava/io/InputStream;",
")",
"Ljava/lang/Object;"
}
.end annotation
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;,
Ljavax/ws/rs/WebApplicationException;
}
.end annotation
const/4 p2, 0x0
.line 181
:try_start_0
invoke-static {p6}, Lcom/alibaba/fastjson/util/IOUtils;->toString(Ljava/io/InputStream;)Ljava/lang/String;
move-result-object p3
:try_end_0
.catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0
goto :goto_0
:catch_0
move-object p3, p2
:goto_0
if-nez p3, :cond_0
return-object p2
.line 190
:cond_0
iget-object p2, p0, Lcom/alibaba/fastjson/support/jaxrs/FastJsonProvider;->parserConfig:Lcom/alibaba/fastjson/parser/ParserConfig;
sget p4, Lcom/alibaba/fastjson/JSON;->DEFAULT_PARSER_FEATURE:I
iget-object p5, p0, Lcom/alibaba/fastjson/support/jaxrs/FastJsonProvider;->features:[Lcom/alibaba/fastjson/parser/Feature;
invoke-static {p3, p1, p2, p4, p5}, Lcom/alibaba/fastjson/JSON;->parseObject(Ljava/lang/String;Ljava/lang/reflect/Type;Lcom/alibaba/fastjson/parser/ParserConfig;I[Lcom/alibaba/fastjson/parser/Feature;)Ljava/lang/Object;
move-result-object p1
return-object p1
.end method
.method public writeTo(Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/reflect/Type;[Ljava/lang/annotation/Annotation;Ljavax/ws/rs/core/MediaType;Ljavax/ws/rs/core/MultivaluedMap;Ljava/io/OutputStream;)V
.locals 0
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/Object;",
"Ljava/lang/Class<",
"*>;",
"Ljava/lang/reflect/Type;",
"[",
"Ljava/lang/annotation/Annotation;",
"Ljavax/ws/rs/core/MediaType;",
"Ljavax/ws/rs/core/MultivaluedMap<",
"Ljava/lang/String;",
"Ljava/lang/Object;",
">;",
"Ljava/io/OutputStream;",
")V"
}
.end annotation
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;,
Ljavax/ws/rs/WebApplicationException;
}
.end annotation
.line 135
iget-object p3, p0, Lcom/alibaba/fastjson/support/jaxrs/FastJsonProvider;->serializerFeatures:[Lcom/alibaba/fastjson/serializer/SerializerFeature;
.line 136
iget-object p4, p0, Lcom/alibaba/fastjson/support/jaxrs/FastJsonProvider;->uriInfo:Ljavax/ws/rs/core/UriInfo;
if-eqz p4, :cond_1
iget-object p4, p0, Lcom/alibaba/fastjson/support/jaxrs/FastJsonProvider;->uriInfo:Ljavax/ws/rs/core/UriInfo;
invoke-interface {p4}, Ljavax/ws/rs/core/UriInfo;->getQueryParameters()Ljavax/ws/rs/core/MultivaluedMap;
move-result-object p4
const-string p5, "pretty"
invoke-interface {p4, p5}, Ljavax/ws/rs/core/MultivaluedMap;->containsKey(Ljava/lang/Object;)Z
move-result p4
if-eqz p4, :cond_1
if-nez p3, :cond_0
const/4 p3, 0x1
.line 138
new-array p3, p3, [Lcom/alibaba/fastjson/serializer/SerializerFeature;
const/4 p4, 0x0
sget-object p5, Lcom/alibaba/fastjson/serializer/SerializerFeature;->PrettyFormat:Lcom/alibaba/fastjson/serializer/SerializerFeature;
aput-object p5, p3, p4
goto :goto_0
.line 140
:cond_0
invoke-static {p3}, Ljava/util/Arrays;->asList([Ljava/lang/Object;)Ljava/util/List;
move-result-object p4
.line 141
sget-object p5, Lcom/alibaba/fastjson/serializer/SerializerFeature;->PrettyFormat:Lcom/alibaba/fastjson/serializer/SerializerFeature;
invoke-interface {p4, p5}, Ljava/util/List;->add(Ljava/lang/Object;)Z
.line 142
invoke-interface {p4, p3}, Ljava/util/List;->toArray([Ljava/lang/Object;)[Ljava/lang/Object;
move-result-object p3
check-cast p3, [Lcom/alibaba/fastjson/serializer/SerializerFeature;
.line 146
:cond_1
:goto_0
iget-object p4, p0, Lcom/alibaba/fastjson/support/jaxrs/FastJsonProvider;->serializeFilters:Ljava/util/Map;
if-eqz p4, :cond_2
.line 147
iget-object p4, p0, Lcom/alibaba/fastjson/support/jaxrs/FastJsonProvider;->serializeFilters:Ljava/util/Map;
invoke-interface {p4, p2}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object p2
check-cast p2, Lcom/alibaba/fastjson/serializer/SerializeFilter;
goto :goto_1
:cond_2
const/4 p2, 0x0
.line 150
:goto_1
invoke-static {p1, p2, p3}, Lcom/alibaba/fastjson/JSON;->toJSONString(Ljava/lang/Object;Lcom/alibaba/fastjson/serializer/SerializeFilter;[Lcom/alibaba/fastjson/serializer/SerializerFeature;)Ljava/lang/String;
move-result-object p1
if-eqz p1, :cond_3
.line 152
invoke-virtual {p1}, Ljava/lang/String;->getBytes()[B
move-result-object p1
invoke-virtual {p7, p1}, Ljava/io/OutputStream;->write([B)V
:cond_3
return-void
.end method