JsonGenerator.smali

.class public abstract Lcom/google/api/client/json/JsonGenerator;
.super Ljava/lang/Object;

# interfaces
.implements Ljava/io/Closeable;
.implements Ljava/io/Flushable;


# direct methods
.method public constructor <init>()V
    .registers 1

    invoke-direct {p0}, Ljava/lang/Object;-><init>()V

    return-void
.end method

.method private d(ZLjava/lang/Object;)V
    .registers 11
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Ljava/io/IOException;
        }
    .end annotation

    if-nez p2, :cond_3

    return-void

    :cond_3
    invoke-virtual {p2}, Ljava/lang/Object;->getClass()Ljava/lang/Class;

    move-result-object v0

    invoke-static {p2}, Lcom/google/api/client/util/Data;->d(Ljava/lang/Object;)Z

    move-result v1

    if-eqz v1, :cond_12

    invoke-virtual {p0}, Lcom/google/api/client/json/JsonGenerator;->k()V

    goto/16 :goto_168

    :cond_12
    instance-of v1, p2, Ljava/lang/String;

    if-eqz v1, :cond_1d

    check-cast p2, Ljava/lang/String;

    invoke-virtual {p0, p2}, Lcom/google/api/client/json/JsonGenerator;->x(Ljava/lang/String;)V

    goto/16 :goto_168

    :cond_1d
    instance-of v1, p2, Ljava/lang/Number;

    const/4 v2, 0x1

    const/4 v3, 0x0

    if-eqz v1, :cond_a7

    if-eqz p1, :cond_2e

    invoke-virtual {p2}, Ljava/lang/Object;->toString()Ljava/lang/String;

    move-result-object p1

    invoke-virtual {p0, p1}, Lcom/google/api/client/json/JsonGenerator;->x(Ljava/lang/String;)V

    goto/16 :goto_168

    :cond_2e
    instance-of p1, p2, Ljava/math/BigDecimal;

    if-eqz p1, :cond_39

    check-cast p2, Ljava/math/BigDecimal;

    invoke-virtual {p0, p2}, Lcom/google/api/client/json/JsonGenerator;->s(Ljava/math/BigDecimal;)V

    goto/16 :goto_168

    :cond_39
    instance-of p1, p2, Ljava/math/BigInteger;

    if-eqz p1, :cond_44

    check-cast p2, Ljava/math/BigInteger;

    invoke-virtual {p0, p2}, Lcom/google/api/client/json/JsonGenerator;->t(Ljava/math/BigInteger;)V

    goto/16 :goto_168

    :cond_44
    instance-of p1, p2, Ljava/lang/Long;

    if-eqz p1, :cond_53

    check-cast p2, Ljava/lang/Long;

    invoke-virtual {p2}, Ljava/lang/Long;->longValue()J

    move-result-wide p1

    invoke-virtual {p0, p1, p2}, Lcom/google/api/client/json/JsonGenerator;->r(J)V

    goto/16 :goto_168

    :cond_53
    instance-of p1, p2, Ljava/lang/Float;

    if-eqz p1, :cond_73

    check-cast p2, Ljava/lang/Number;

    invoke-virtual {p2}, Ljava/lang/Number;->floatValue()F

    move-result p1

    invoke-static {p1}, Ljava/lang/Float;->isInfinite(F)Z

    move-result p2

    if-nez p2, :cond_6a

    invoke-static {p1}, Ljava/lang/Float;->isNaN(F)Z

    move-result p2

    if-nez p2, :cond_6a

    goto :goto_6b

    :cond_6a
    const/4 v2, 0x0

    :goto_6b
    invoke-static {v2}, Lcom/google/api/client/util/Preconditions;->a(Z)V

    invoke-virtual {p0, p1}, Lcom/google/api/client/json/JsonGenerator;->o(F)V

    goto/16 :goto_168

    :cond_73
    instance-of p1, p2, Ljava/lang/Integer;

    if-nez p1, :cond_9c

    instance-of p1, p2, Ljava/lang/Short;

    if-nez p1, :cond_9c

    instance-of p1, p2, Ljava/lang/Byte;

    if-eqz p1, :cond_80

    goto :goto_9c

    :cond_80
    check-cast p2, Ljava/lang/Number;

    invoke-virtual {p2}, Ljava/lang/Number;->doubleValue()D

    move-result-wide p1

    invoke-static {p1, p2}, Ljava/lang/Double;->isInfinite(D)Z

    move-result v0

    if-nez v0, :cond_93

    invoke-static {p1, p2}, Ljava/lang/Double;->isNaN(D)Z

    move-result v0

    if-nez v0, :cond_93

    goto :goto_94

    :cond_93
    const/4 v2, 0x0

    :goto_94
    invoke-static {v2}, Lcom/google/api/client/util/Preconditions;->a(Z)V

    invoke-virtual {p0, p1, p2}, Lcom/google/api/client/json/JsonGenerator;->n(D)V

    goto/16 :goto_168

    :cond_9c
    :goto_9c
    check-cast p2, Ljava/lang/Number;

    invoke-virtual {p2}, Ljava/lang/Number;->intValue()I

    move-result p1

    invoke-virtual {p0, p1}, Lcom/google/api/client/json/JsonGenerator;->p(I)V

    goto/16 :goto_168

    :cond_a7
    instance-of v1, p2, Ljava/lang/Boolean;

    if-eqz v1, :cond_b6

    check-cast p2, Ljava/lang/Boolean;

    invoke-virtual {p2}, Ljava/lang/Boolean;->booleanValue()Z

    move-result p1

    invoke-virtual {p0, p1}, Lcom/google/api/client/json/JsonGenerator;->e(Z)V

    goto/16 :goto_168

    :cond_b6
    instance-of v1, p2, Lcom/google/api/client/util/DateTime;

    if-eqz v1, :cond_c5

    check-cast p2, Lcom/google/api/client/util/DateTime;

    invoke-virtual {p2}, Lcom/google/api/client/util/DateTime;->d()Ljava/lang/String;

    move-result-object p1

    invoke-virtual {p0, p1}, Lcom/google/api/client/json/JsonGenerator;->x(Ljava/lang/String;)V

    goto/16 :goto_168

    :cond_c5
    instance-of v1, p2, Ljava/lang/Iterable;

    if-nez v1, :cond_cf

    invoke-virtual {v0}, Ljava/lang/Class;->isArray()Z

    move-result v1

    if-eqz v1, :cond_f5

    :cond_cf
    instance-of v1, p2, Ljava/util/Map;

    if-nez v1, :cond_f5

    instance-of v1, p2, Lcom/google/api/client/util/GenericData;

    if-nez v1, :cond_f5

    invoke-virtual {p0}, Lcom/google/api/client/json/JsonGenerator;->u()V

    invoke-static {p2}, Lcom/google/api/client/util/Types;->l(Ljava/lang/Object;)Ljava/lang/Iterable;

    move-result-object p2

    invoke-interface {p2}, Ljava/lang/Iterable;->iterator()Ljava/util/Iterator;

    move-result-object p2

    :goto_e2
    invoke-interface {p2}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_f0

    invoke-interface {p2}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    invoke-direct {p0, p1, v0}, Lcom/google/api/client/json/JsonGenerator;->d(ZLjava/lang/Object;)V

    goto :goto_e2

    :cond_f0
    invoke-virtual {p0}, Lcom/google/api/client/json/JsonGenerator;->f()V

    goto/16 :goto_168

    :cond_f5
    invoke-virtual {v0}, Ljava/lang/Class;->isEnum()Z

    move-result v1

    if-eqz v1, :cond_10f

    check-cast p2, Ljava/lang/Enum;

    invoke-static {p2}, Lcom/google/api/client/util/FieldInfo;->j(Ljava/lang/Enum;)Lcom/google/api/client/util/FieldInfo;

    move-result-object p1

    invoke-virtual {p1}, Lcom/google/api/client/util/FieldInfo;->e()Ljava/lang/String;

    move-result-object p1

    if-nez p1, :cond_10b

    invoke-virtual {p0}, Lcom/google/api/client/json/JsonGenerator;->k()V

    goto :goto_168

    :cond_10b
    invoke-virtual {p0, p1}, Lcom/google/api/client/json/JsonGenerator;->x(Ljava/lang/String;)V

    goto :goto_168

    :cond_10f
    invoke-virtual {p0}, Lcom/google/api/client/json/JsonGenerator;->v()V

    instance-of v1, p2, Ljava/util/Map;

    if-eqz v1, :cond_11c

    instance-of v1, p2, Lcom/google/api/client/util/GenericData;

    if-nez v1, :cond_11c

    const/4 v1, 0x1

    goto :goto_11d

    :cond_11c
    const/4 v1, 0x0

    :goto_11d
    if-eqz v1, :cond_121

    const/4 v0, 0x0

    goto :goto_125

    :cond_121
    invoke-static {v0}, Lcom/google/api/client/util/ClassInfo;->e(Ljava/lang/Class;)Lcom/google/api/client/util/ClassInfo;

    move-result-object v0

    :goto_125
    invoke-static {p2}, Lcom/google/api/client/util/Data;->g(Ljava/lang/Object;)Ljava/util/Map;

    move-result-object p2

    invoke-interface {p2}, Ljava/util/Map;->entrySet()Ljava/util/Set;

    move-result-object p2

    invoke-interface {p2}, Ljava/util/Set;->iterator()Ljava/util/Iterator;

    move-result-object p2

    :cond_131
    :goto_131
    invoke-interface {p2}, Ljava/util/Iterator;->hasNext()Z

    move-result v4

    if-eqz v4, :cond_165

    invoke-interface {p2}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v4

    check-cast v4, Ljava/util/Map$Entry;

    invoke-interface {v4}, Ljava/util/Map$Entry;->getValue()Ljava/lang/Object;

    move-result-object v5

    if-eqz v5, :cond_131

    invoke-interface {v4}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object;

    move-result-object v4

    check-cast v4, Ljava/lang/String;

    if-eqz v1, :cond_14d

    move v6, p1

    goto :goto_15e

    :cond_14d
    invoke-virtual {v0, v4}, Lcom/google/api/client/util/ClassInfo;->a(Ljava/lang/String;)Ljava/lang/reflect/Field;

    move-result-object v6

    if-eqz v6, :cond_15d

    const-class v7, Lcom/google/api/client/json/JsonString;

    invoke-virtual {v6, v7}, Ljava/lang/reflect/Field;->getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;

    move-result-object v6

    if-eqz v6, :cond_15d

    const/4 v6, 0x1

    goto :goto_15e

    :cond_15d
    const/4 v6, 0x0

    :goto_15e
    invoke-virtual {p0, v4}, Lcom/google/api/client/json/JsonGenerator;->j(Ljava/lang/String;)V

    invoke-direct {p0, v6, v5}, Lcom/google/api/client/json/JsonGenerator;->d(ZLjava/lang/Object;)V

    goto :goto_131

    :cond_165
    invoke-virtual {p0}, Lcom/google/api/client/json/JsonGenerator;->g()V

    :goto_168
    return-void
.end method


# virtual methods
.method public abstract a()V
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Ljava/io/IOException;
        }
    .end annotation
.end method

.method public final b(Ljava/lang/Object;)V
    .registers 3
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Ljava/io/IOException;
        }
    .end annotation

    const/4 v0, 0x0

    invoke-direct {p0, v0, p1}, Lcom/google/api/client/json/JsonGenerator;->d(ZLjava/lang/Object;)V

    return-void
.end method

.method public abstract e(Z)V
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Ljava/io/IOException;
        }
    .end annotation
.end method

.method public abstract f()V
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Ljava/io/IOException;
        }
    .end annotation
.end method

.method public abstract flush()V
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Ljava/io/IOException;
        }
    .end annotation
.end method

.method public abstract g()V
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Ljava/io/IOException;
        }
    .end annotation
.end method

.method public abstract j(Ljava/lang/String;)V
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Ljava/io/IOException;
        }
    .end annotation
.end method

.method public abstract k()V
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Ljava/io/IOException;
        }
    .end annotation
.end method

.method public abstract n(D)V
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Ljava/io/IOException;
        }
    .end annotation
.end method

.method public abstract o(F)V
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Ljava/io/IOException;
        }
    .end annotation
.end method

.method public abstract p(I)V
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Ljava/io/IOException;
        }
    .end annotation
.end method

.method public abstract r(J)V
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Ljava/io/IOException;
        }
    .end annotation
.end method

.method public abstract s(Ljava/math/BigDecimal;)V
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Ljava/io/IOException;
        }
    .end annotation
.end method

.method public abstract t(Ljava/math/BigInteger;)V
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Ljava/io/IOException;
        }
    .end annotation
.end method

.method public abstract u()V
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Ljava/io/IOException;
        }
    .end annotation
.end method

.method public abstract v()V
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Ljava/io/IOException;
        }
    .end annotation
.end method

.method public abstract x(Ljava/lang/String;)V
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Ljava/io/IOException;
        }
    .end annotation
.end method