JSONPath$PropertySegment.smali
.class Lcom/alibaba/fastjson/JSONPath$PropertySegment;
.super Ljava/lang/Object;
.source "JSONPath.java"
# interfaces
.implements Lcom/alibaba/fastjson/JSONPath$Segment;
# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
value = Lcom/alibaba/fastjson/JSONPath;
.end annotation
.annotation system Ldalvik/annotation/InnerClass;
accessFlags = 0x8
name = "PropertySegment"
.end annotation
# instance fields
.field private final deep:Z
.field private final propertyName:Ljava/lang/String;
.field private final propertyNameHash:J
# direct methods
.method public constructor <init>(Ljava/lang/String;Z)V
.registers 5
.line 2341
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 2342
iput-object p1, p0, Lcom/alibaba/fastjson/JSONPath$PropertySegment;->propertyName:Ljava/lang/String;
.line 2343
invoke-static {p1}, Lcom/alibaba/fastjson/util/TypeUtils;->fnv1a_64(Ljava/lang/String;)J
move-result-wide v0
iput-wide v0, p0, Lcom/alibaba/fastjson/JSONPath$PropertySegment;->propertyNameHash:J
.line 2344
iput-boolean p2, p0, Lcom/alibaba/fastjson/JSONPath$PropertySegment;->deep:Z
return-void
.end method
.method static synthetic access$100(Lcom/alibaba/fastjson/JSONPath$PropertySegment;)Z
.registers 1
.line 2335
iget-boolean p0, p0, Lcom/alibaba/fastjson/JSONPath$PropertySegment;->deep:Z
return p0
.end method
.method static synthetic access$400(Lcom/alibaba/fastjson/JSONPath$PropertySegment;)Ljava/lang/String;
.registers 1
.line 2335
iget-object p0, p0, Lcom/alibaba/fastjson/JSONPath$PropertySegment;->propertyName:Ljava/lang/String;
return-object p0
.end method
# virtual methods
.method public eval(Lcom/alibaba/fastjson/JSONPath;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.registers 6
.line 2348
iget-boolean p2, p0, Lcom/alibaba/fastjson/JSONPath$PropertySegment;->deep:Z
if-eqz p2, :cond_f
.line 2349
new-instance p2, Ljava/util/ArrayList;
invoke-direct {p2}, Ljava/util/ArrayList;-><init>()V
.line 2350
iget-object v0, p0, Lcom/alibaba/fastjson/JSONPath$PropertySegment;->propertyName:Ljava/lang/String;
invoke-virtual {p1, p3, v0, p2}, Lcom/alibaba/fastjson/JSONPath;->deepScan(Ljava/lang/Object;Ljava/lang/String;Ljava/util/List;)V
return-object p2
.line 2354
:cond_f
iget-object p2, p0, Lcom/alibaba/fastjson/JSONPath$PropertySegment;->propertyName:Ljava/lang/String;
iget-wide v0, p0, Lcom/alibaba/fastjson/JSONPath$PropertySegment;->propertyNameHash:J
invoke-virtual {p1, p3, p2, v0, v1}, Lcom/alibaba/fastjson/JSONPath;->getPropertyValue(Ljava/lang/Object;Ljava/lang/String;J)Ljava/lang/Object;
move-result-object p1
return-object p1
.end method
.method public extract(Lcom/alibaba/fastjson/JSONPath;Lcom/alibaba/fastjson/parser/DefaultJSONParser;Lcom/alibaba/fastjson/JSONPath$Context;)V
.registers 20
move-object/from16 v0, p0
move-object/from16 v1, p2
move-object/from16 v2, p3
.line 2359
iget-object v3, v1, Lcom/alibaba/fastjson/parser/DefaultJSONParser;->lexer:Lcom/alibaba/fastjson/parser/JSONLexer;
check-cast v3, Lcom/alibaba/fastjson/parser/JSONLexerBase;
.line 2361
iget-boolean v4, v0, Lcom/alibaba/fastjson/JSONPath$PropertySegment;->deep:Z
if-eqz v4, :cond_19
iget-object v4, v2, Lcom/alibaba/fastjson/JSONPath$Context;->object:Ljava/lang/Object;
if-nez v4, :cond_19
.line 2362
new-instance v4, Lcom/alibaba/fastjson/JSONArray;
invoke-direct {v4}, Lcom/alibaba/fastjson/JSONArray;-><init>()V
iput-object v4, v2, Lcom/alibaba/fastjson/JSONPath$Context;->object:Ljava/lang/Object;
.line 2365
:cond_19
invoke-virtual {v3}, Lcom/alibaba/fastjson/parser/JSONLexerBase;->token()I
move-result v4
const/4 v5, -0x1
const/16 v6, 0xe
const/4 v7, 0x4
const/4 v8, 0x2
const/4 v9, 0x3
const/16 v10, 0x10
if-ne v4, v6, :cond_f3
.line 2366
iget-object v4, v0, Lcom/alibaba/fastjson/JSONPath$PropertySegment;->propertyName:Ljava/lang/String;
const-string v11, "*"
invoke-virtual {v11, v4}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v4
if-eqz v4, :cond_32
return-void
.line 2370
:cond_32
invoke-virtual {v3}, Lcom/alibaba/fastjson/parser/JSONLexerBase;->nextToken()V
.line 2373
iget-boolean v4, v0, Lcom/alibaba/fastjson/JSONPath$PropertySegment;->deep:Z
if-eqz v4, :cond_3e
.line 2374
iget-object v4, v2, Lcom/alibaba/fastjson/JSONPath$Context;->object:Ljava/lang/Object;
check-cast v4, Lcom/alibaba/fastjson/JSONArray;
goto :goto_43
.line 2376
:cond_3e
new-instance v4, Lcom/alibaba/fastjson/JSONArray;
invoke-direct {v4}, Lcom/alibaba/fastjson/JSONArray;-><init>()V
.line 2379
:goto_43
invoke-virtual {v3}, Lcom/alibaba/fastjson/parser/JSONLexerBase;->token()I
move-result v11
const/16 v12, 0xc
const/4 v13, 0x0
if-eq v11, v12, :cond_62
if-eq v11, v6, :cond_56
packed-switch v11, :pswitch_data_192
goto :goto_ab
.line 2434
:pswitch_52
invoke-virtual {v3}, Lcom/alibaba/fastjson/parser/JSONLexerBase;->nextToken()V
goto :goto_ab
.line 2421
:cond_56
iget-boolean v11, v0, Lcom/alibaba/fastjson/JSONPath$PropertySegment;->deep:Z
if-eqz v11, :cond_5e
.line 2422
invoke-virtual/range {p0 .. p3}, Lcom/alibaba/fastjson/JSONPath$PropertySegment;->extract(Lcom/alibaba/fastjson/JSONPath;Lcom/alibaba/fastjson/parser/DefaultJSONParser;Lcom/alibaba/fastjson/JSONPath$Context;)V
goto :goto_ab
.line 2424
:cond_5e
invoke-virtual {v3, v13}, Lcom/alibaba/fastjson/parser/JSONLexerBase;->skipObject(Z)V
goto :goto_ab
.line 2381
:cond_62
iget-boolean v11, v0, Lcom/alibaba/fastjson/JSONPath$PropertySegment;->deep:Z
if-eqz v11, :cond_6a
.line 2382
invoke-virtual/range {p0 .. p3}, Lcom/alibaba/fastjson/JSONPath$PropertySegment;->extract(Lcom/alibaba/fastjson/JSONPath;Lcom/alibaba/fastjson/parser/DefaultJSONParser;Lcom/alibaba/fastjson/JSONPath$Context;)V
goto :goto_ab
.line 2385
:cond_6a
iget-wide v14, v0, Lcom/alibaba/fastjson/JSONPath$PropertySegment;->propertyNameHash:J
invoke-virtual {v3, v14, v15, v11}, Lcom/alibaba/fastjson/parser/JSONLexerBase;->seekObjectToField(JZ)I
move-result v11
if-ne v11, v9, :cond_a1
.line 2388
invoke-virtual {v3}, Lcom/alibaba/fastjson/parser/JSONLexerBase;->token()I
move-result v11
if-eq v11, v8, :cond_87
if-eq v11, v7, :cond_7f
.line 2398
invoke-virtual/range {p2 .. p2}, Lcom/alibaba/fastjson/parser/DefaultJSONParser;->parse()Ljava/lang/Object;
move-result-object v11
goto :goto_8e
.line 2394
:cond_7f
invoke-virtual {v3}, Lcom/alibaba/fastjson/parser/JSONLexerBase;->stringVal()Ljava/lang/String;
move-result-object v11
.line 2395
invoke-virtual {v3}, Lcom/alibaba/fastjson/parser/JSONLexerBase;->nextToken()V
goto :goto_8e
.line 2390
:cond_87
invoke-virtual {v3}, Lcom/alibaba/fastjson/parser/JSONLexerBase;->integerValue()Ljava/lang/Number;
move-result-object v11
.line 2391
invoke-virtual {v3}, Lcom/alibaba/fastjson/parser/JSONLexerBase;->nextToken()V
.line 2402
:goto_8e
invoke-virtual {v4, v11}, Lcom/alibaba/fastjson/JSONArray;->add(Ljava/lang/Object;)Z
.line 2403
invoke-virtual {v3}, Lcom/alibaba/fastjson/parser/JSONLexerBase;->token()I
move-result v11
const/16 v12, 0xd
if-ne v11, v12, :cond_9d
.line 2404
invoke-virtual {v3}, Lcom/alibaba/fastjson/parser/JSONLexerBase;->nextToken()V
goto :goto_43
.line 2407
:cond_9d
invoke-virtual {v3, v13}, Lcom/alibaba/fastjson/parser/JSONLexerBase;->skipObject(Z)V
goto :goto_ab
:cond_a1
if-ne v11, v5, :cond_a4
goto :goto_43
.line 2412
:cond_a4
iget-boolean v11, v0, Lcom/alibaba/fastjson/JSONPath$PropertySegment;->deep:Z
if-nez v11, :cond_e9
.line 2415
invoke-virtual {v3, v13}, Lcom/alibaba/fastjson/parser/JSONLexerBase;->skipObject(Z)V
.line 2440
:goto_ab
invoke-virtual {v3}, Lcom/alibaba/fastjson/parser/JSONLexerBase;->token()I
move-result v11
const/16 v12, 0xf
if-ne v11, v12, :cond_c3
.line 2441
invoke-virtual {v3}, Lcom/alibaba/fastjson/parser/JSONLexerBase;->nextToken()V
.line 2451
iget-boolean v1, v0, Lcom/alibaba/fastjson/JSONPath$PropertySegment;->deep:Z
if-nez v1, :cond_c2
.line 2452
invoke-virtual {v4}, Lcom/alibaba/fastjson/JSONArray;->size()I
move-result v1
if-lez v1, :cond_c2
.line 2453
iput-object v4, v2, Lcom/alibaba/fastjson/JSONPath$Context;->object:Ljava/lang/Object;
:cond_c2
return-void
.line 2443
:cond_c3
invoke-virtual {v3}, Lcom/alibaba/fastjson/parser/JSONLexerBase;->token()I
move-result v11
if-ne v11, v10, :cond_ce
.line 2444
invoke-virtual {v3}, Lcom/alibaba/fastjson/parser/JSONLexerBase;->nextToken()V
goto/16 :goto_43
.line 2447
:cond_ce
new-instance v1, Lcom/alibaba/fastjson/JSONException;
new-instance v2, Ljava/lang/StringBuilder;
invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
const-string v4, "illegal json : "
invoke-virtual {v2, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v3}, Lcom/alibaba/fastjson/parser/JSONLexerBase;->info()Ljava/lang/String;
move-result-object v3
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v2
invoke-direct {v1, v2}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;)V
throw v1
.line 2413
:cond_e9
new-instance v1, Ljava/lang/UnsupportedOperationException;
invoke-virtual {v3}, Lcom/alibaba/fastjson/parser/JSONLexerBase;->info()Ljava/lang/String;
move-result-object v2
invoke-direct {v1, v2}, Ljava/lang/UnsupportedOperationException;-><init>(Ljava/lang/String;)V
throw v1
.line 2459
:cond_f3
iget-boolean v4, v0, Lcom/alibaba/fastjson/JSONPath$PropertySegment;->deep:Z
if-nez v4, :cond_130
.line 2460
iget-wide v5, v0, Lcom/alibaba/fastjson/JSONPath$PropertySegment;->propertyNameHash:J
invoke-virtual {v3, v5, v6, v4}, Lcom/alibaba/fastjson/parser/JSONLexerBase;->seekObjectToField(JZ)I
move-result v4
if-ne v4, v9, :cond_12f
.line 2462
iget-boolean v4, v2, Lcom/alibaba/fastjson/JSONPath$Context;->eval:Z
if-eqz v4, :cond_12f
.line 2464
invoke-virtual {v3}, Lcom/alibaba/fastjson/parser/JSONLexerBase;->token()I
move-result v4
if-eq v4, v8, :cond_122
if-eq v4, v9, :cond_11a
if-eq v4, v7, :cond_112
.line 2478
invoke-virtual/range {p2 .. p2}, Lcom/alibaba/fastjson/parser/DefaultJSONParser;->parse()Ljava/lang/Object;
move-result-object v1
goto :goto_129
.line 2474
:cond_112
invoke-virtual {v3}, Lcom/alibaba/fastjson/parser/JSONLexerBase;->stringVal()Ljava/lang/String;
move-result-object v1
.line 2475
invoke-virtual {v3, v10}, Lcom/alibaba/fastjson/parser/JSONLexerBase;->nextToken(I)V
goto :goto_129
.line 2470
:cond_11a
invoke-virtual {v3}, Lcom/alibaba/fastjson/parser/JSONLexerBase;->decimalValue()Ljava/math/BigDecimal;
move-result-object v1
.line 2471
invoke-virtual {v3, v10}, Lcom/alibaba/fastjson/parser/JSONLexerBase;->nextToken(I)V
goto :goto_129
.line 2466
:cond_122
invoke-virtual {v3}, Lcom/alibaba/fastjson/parser/JSONLexerBase;->integerValue()Ljava/lang/Number;
move-result-object v1
.line 2467
invoke-virtual {v3, v10}, Lcom/alibaba/fastjson/parser/JSONLexerBase;->nextToken(I)V
.line 2482
:goto_129
iget-boolean v3, v2, Lcom/alibaba/fastjson/JSONPath$Context;->eval:Z
if-eqz v3, :cond_12f
.line 2483
iput-object v1, v2, Lcom/alibaba/fastjson/JSONPath$Context;->object:Ljava/lang/Object;
:cond_12f
return-void
.line 2492
:cond_130
:goto_130
iget-wide v11, v0, Lcom/alibaba/fastjson/JSONPath$PropertySegment;->propertyNameHash:J
iget-boolean v4, v0, Lcom/alibaba/fastjson/JSONPath$PropertySegment;->deep:Z
invoke-virtual {v3, v11, v12, v4}, Lcom/alibaba/fastjson/parser/JSONLexerBase;->seekObjectToField(JZ)I
move-result v4
if-ne v4, v5, :cond_13b
return-void
:cond_13b
if-ne v4, v9, :cond_189
.line 2498
iget-boolean v4, v2, Lcom/alibaba/fastjson/JSONPath$Context;->eval:Z
if-eqz v4, :cond_130
.line 2500
invoke-virtual {v3}, Lcom/alibaba/fastjson/parser/JSONLexerBase;->token()I
move-result v4
if-eq v4, v8, :cond_160
if-eq v4, v9, :cond_158
if-eq v4, v7, :cond_150
.line 2514
invoke-virtual/range {p2 .. p2}, Lcom/alibaba/fastjson/parser/DefaultJSONParser;->parse()Ljava/lang/Object;
move-result-object v4
goto :goto_167
.line 2510
:cond_150
invoke-virtual {v3}, Lcom/alibaba/fastjson/parser/JSONLexerBase;->stringVal()Ljava/lang/String;
move-result-object v4
.line 2511
invoke-virtual {v3, v10}, Lcom/alibaba/fastjson/parser/JSONLexerBase;->nextToken(I)V
goto :goto_167
.line 2506
:cond_158
invoke-virtual {v3}, Lcom/alibaba/fastjson/parser/JSONLexerBase;->decimalValue()Ljava/math/BigDecimal;
move-result-object v4
.line 2507
invoke-virtual {v3, v10}, Lcom/alibaba/fastjson/parser/JSONLexerBase;->nextToken(I)V
goto :goto_167
.line 2502
:cond_160
invoke-virtual {v3}, Lcom/alibaba/fastjson/parser/JSONLexerBase;->integerValue()Ljava/lang/Number;
move-result-object v4
.line 2503
invoke-virtual {v3, v10}, Lcom/alibaba/fastjson/parser/JSONLexerBase;->nextToken(I)V
.line 2518
:goto_167
iget-boolean v6, v2, Lcom/alibaba/fastjson/JSONPath$Context;->eval:Z
if-eqz v6, :cond_130
.line 2519
iget-object v6, v2, Lcom/alibaba/fastjson/JSONPath$Context;->object:Ljava/lang/Object;
instance-of v6, v6, Ljava/util/List;
if-eqz v6, :cond_186
.line 2520
iget-object v6, v2, Lcom/alibaba/fastjson/JSONPath$Context;->object:Ljava/lang/Object;
check-cast v6, Ljava/util/List;
.line 2521
invoke-interface {v6}, Ljava/util/List;->size()I
move-result v11
if-nez v11, :cond_182
instance-of v11, v4, Ljava/util/List;
if-eqz v11, :cond_182
.line 2522
iput-object v4, v2, Lcom/alibaba/fastjson/JSONPath$Context;->object:Ljava/lang/Object;
goto :goto_130
.line 2524
:cond_182
invoke-interface {v6, v4}, Ljava/util/List;->add(Ljava/lang/Object;)Z
goto :goto_130
.line 2527
:cond_186
iput-object v4, v2, Lcom/alibaba/fastjson/JSONPath$Context;->object:Ljava/lang/Object;
goto :goto_130
:cond_189
const/4 v6, 0x1
if-eq v4, v6, :cond_18e
if-ne v4, v8, :cond_130
.line 2532
:cond_18e
invoke-virtual/range {p0 .. p3}, Lcom/alibaba/fastjson/JSONPath$PropertySegment;->extract(Lcom/alibaba/fastjson/JSONPath;Lcom/alibaba/fastjson/parser/DefaultJSONParser;Lcom/alibaba/fastjson/JSONPath$Context;)V
goto :goto_130
:pswitch_data_192
.packed-switch 0x2
:pswitch_52
:pswitch_52
:pswitch_52
:pswitch_52
:pswitch_52
:pswitch_52
:pswitch_52
.end packed-switch
.end method
.method public remove(Lcom/alibaba/fastjson/JSONPath;Ljava/lang/Object;)Z
.registers 5
.line 2546
iget-object v0, p0, Lcom/alibaba/fastjson/JSONPath$PropertySegment;->propertyName:Ljava/lang/String;
iget-boolean v1, p0, Lcom/alibaba/fastjson/JSONPath$PropertySegment;->deep:Z
invoke-virtual {p1, p2, v0, v1}, Lcom/alibaba/fastjson/JSONPath;->removePropertyValue(Ljava/lang/Object;Ljava/lang/String;Z)Z
move-result p1
return p1
.end method
.method public setValue(Lcom/alibaba/fastjson/JSONPath;Ljava/lang/Object;Ljava/lang/Object;)V
.registers 16
.line 2538
iget-boolean v0, p0, Lcom/alibaba/fastjson/JSONPath$PropertySegment;->deep:Z
if-eqz v0, :cond_f
.line 2539
iget-object v3, p0, Lcom/alibaba/fastjson/JSONPath$PropertySegment;->propertyName:Ljava/lang/String;
iget-wide v4, p0, Lcom/alibaba/fastjson/JSONPath$PropertySegment;->propertyNameHash:J
move-object v1, p1
move-object v2, p2
move-object v6, p3
invoke-virtual/range {v1 .. v6}, Lcom/alibaba/fastjson/JSONPath;->deepSet(Ljava/lang/Object;Ljava/lang/String;JLjava/lang/Object;)V
goto :goto_19
.line 2541
:cond_f
iget-object v8, p0, Lcom/alibaba/fastjson/JSONPath$PropertySegment;->propertyName:Ljava/lang/String;
iget-wide v9, p0, Lcom/alibaba/fastjson/JSONPath$PropertySegment;->propertyNameHash:J
move-object v6, p1
move-object v7, p2
move-object v11, p3
invoke-virtual/range {v6 .. v11}, Lcom/alibaba/fastjson/JSONPath;->setPropertyValue(Ljava/lang/Object;Ljava/lang/String;JLjava/lang/Object;)Z
:goto_19
return-void
.end method