.class public Lcom/thoughtworks/xstream/converters/reflection/ExternalizableConverter; .super Ljava/lang/Object; .source "ExternalizableConverter.java" # interfaces .implements Lcom/thoughtworks/xstream/converters/Converter; # instance fields .field private final classLoaderReference:Lcom/thoughtworks/xstream/core/ClassLoaderReference; .field private mapper:Lcom/thoughtworks/xstream/mapper/Mapper; # direct methods .method public constructor (Lcom/thoughtworks/xstream/mapper/Mapper;)V .locals 1 .line 5 const-class v0, Lcom/thoughtworks/xstream/converters/reflection/ExternalizableConverter; invoke-virtual {v0}, Ljava/lang/Class;->getClassLoader()Ljava/lang/ClassLoader; move-result-object v0 invoke-direct {p0, p1, v0}, Lcom/thoughtworks/xstream/converters/reflection/ExternalizableConverter;->(Lcom/thoughtworks/xstream/mapper/Mapper;Ljava/lang/ClassLoader;)V return-void .end method .method public constructor (Lcom/thoughtworks/xstream/mapper/Mapper;Lcom/thoughtworks/xstream/core/ClassLoaderReference;)V .locals 0 .line 1 invoke-direct {p0}, Ljava/lang/Object;->()V .line 2 iput-object p1, p0, Lcom/thoughtworks/xstream/converters/reflection/ExternalizableConverter;->mapper:Lcom/thoughtworks/xstream/mapper/Mapper; .line 3 iput-object p2, p0, Lcom/thoughtworks/xstream/converters/reflection/ExternalizableConverter;->classLoaderReference:Lcom/thoughtworks/xstream/core/ClassLoaderReference; return-void .end method .method public constructor (Lcom/thoughtworks/xstream/mapper/Mapper;Ljava/lang/ClassLoader;)V .locals 1 .line 4 new-instance v0, Lcom/thoughtworks/xstream/core/ClassLoaderReference; invoke-direct {v0, p2}, Lcom/thoughtworks/xstream/core/ClassLoaderReference;->(Ljava/lang/ClassLoader;)V invoke-direct {p0, p1, v0}, Lcom/thoughtworks/xstream/converters/reflection/ExternalizableConverter;->(Lcom/thoughtworks/xstream/mapper/Mapper;Lcom/thoughtworks/xstream/core/ClassLoaderReference;)V return-void .end method .method public static synthetic access$000(Lcom/thoughtworks/xstream/converters/reflection/ExternalizableConverter;)Lcom/thoughtworks/xstream/mapper/Mapper; .locals 0 .line 1 iget-object p0, p0, Lcom/thoughtworks/xstream/converters/reflection/ExternalizableConverter;->mapper:Lcom/thoughtworks/xstream/mapper/Mapper; return-object p0 .end method # virtual methods .method public canConvert(Ljava/lang/Class;)Z .locals 1 .line 1 const-class v0, Ljava/io/Externalizable; invoke-virtual {v0, p1}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z move-result p1 return p1 .end method .method public marshal(Ljava/lang/Object;Lcom/thoughtworks/xstream/io/HierarchicalStreamWriter;Lcom/thoughtworks/xstream/converters/MarshallingContext;)V .locals 2 .line 1 :try_start_0 move-object v0, p1 check-cast v0, Ljava/io/Externalizable; .line 2 new-instance v1, Lcom/thoughtworks/xstream/converters/reflection/ExternalizableConverter$1; invoke-direct {v1, p0, p2, p3}, Lcom/thoughtworks/xstream/converters/reflection/ExternalizableConverter$1;->(Lcom/thoughtworks/xstream/converters/reflection/ExternalizableConverter;Lcom/thoughtworks/xstream/io/HierarchicalStreamWriter;Lcom/thoughtworks/xstream/converters/MarshallingContext;)V .line 3 invoke-static {p3, v1}, Lcom/thoughtworks/xstream/core/util/CustomObjectOutputStream;->getInstance(Lcom/thoughtworks/xstream/converters/DataHolder;Lcom/thoughtworks/xstream/core/util/CustomObjectOutputStream$StreamCallback;)Lcom/thoughtworks/xstream/core/util/CustomObjectOutputStream; move-result-object p2 .line 4 invoke-interface {v0, p2}, Ljava/io/Externalizable;->writeExternal(Ljava/io/ObjectOutput;)V .line 5 invoke-virtual {p2}, Lcom/thoughtworks/xstream/core/util/CustomObjectOutputStream;->popCallback()Lcom/thoughtworks/xstream/core/util/CustomObjectOutputStream$StreamCallback; :try_end_0 .catch Ljava/io/IOException; {:try_start_0 .. :try_end_0} :catch_0 return-void :catch_0 move-exception p2 .line 6 new-instance p3, Lcom/thoughtworks/xstream/converters/ConversionException; const-string v0, "Cannot serialize " invoke-static {v0}, Landroid/support/v4/media/d;->a(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v0 const-string v1, " using Externalization" invoke-static {p1, v0, v1}, Landroidx/navigation/m0;->a(Ljava/lang/Object;Ljava/lang/StringBuilder;Ljava/lang/String;)Ljava/lang/String; move-result-object p1 invoke-direct {p3, p1, p2}, Lcom/thoughtworks/xstream/converters/ConversionException;->(Ljava/lang/String;Ljava/lang/Throwable;)V throw p3 .end method .method public unmarshal(Lcom/thoughtworks/xstream/io/HierarchicalStreamReader;Lcom/thoughtworks/xstream/converters/UnmarshallingContext;)Ljava/lang/Object; .locals 6 const-string v0, "Cannot externalize " const-string v1, "Cannot construct " .line 1 invoke-interface {p2}, Lcom/thoughtworks/xstream/converters/UnmarshallingContext;->getRequiredType()Ljava/lang/Class; move-result-object v2 const/4 v3, 0x0 .line 2 :try_start_0 invoke-virtual {v2, v3}, Ljava/lang/Class;->getDeclaredConstructor([Ljava/lang/Class;)Ljava/lang/reflect/Constructor; move-result-object v4 .line 3 invoke-virtual {v4}, Ljava/lang/reflect/Constructor;->isAccessible()Z move-result v5 if-nez v5, :cond_0 const/4 v5, 0x1 .line 4 invoke-virtual {v4, v5}, Ljava/lang/reflect/Constructor;->setAccessible(Z)V .line 5 :cond_0 invoke-virtual {v4, v3}, Ljava/lang/reflect/Constructor;->newInstance([Ljava/lang/Object;)Ljava/lang/Object; move-result-object v3 check-cast v3, Ljava/io/Externalizable; .line 6 new-instance v4, Lcom/thoughtworks/xstream/converters/reflection/ExternalizableConverter$2; invoke-direct {v4, p0, p1, p2, v3}, Lcom/thoughtworks/xstream/converters/reflection/ExternalizableConverter$2;->(Lcom/thoughtworks/xstream/converters/reflection/ExternalizableConverter;Lcom/thoughtworks/xstream/io/HierarchicalStreamReader;Lcom/thoughtworks/xstream/converters/UnmarshallingContext;Ljava/io/Externalizable;)V .line 7 iget-object p1, p0, Lcom/thoughtworks/xstream/converters/reflection/ExternalizableConverter;->classLoaderReference:Lcom/thoughtworks/xstream/core/ClassLoaderReference; invoke-static {p2, v4, p1}, Lcom/thoughtworks/xstream/core/util/CustomObjectInputStream;->getInstance(Lcom/thoughtworks/xstream/converters/DataHolder;Lcom/thoughtworks/xstream/core/util/CustomObjectInputStream$StreamCallback;Lcom/thoughtworks/xstream/core/ClassLoaderReference;)Lcom/thoughtworks/xstream/core/util/CustomObjectInputStream; move-result-object p1 .line 8 invoke-interface {v3, p1}, Ljava/io/Externalizable;->readExternal(Ljava/io/ObjectInput;)V .line 9 invoke-virtual {p1}, Lcom/thoughtworks/xstream/core/util/CustomObjectInputStream;->popCallback()Lcom/thoughtworks/xstream/core/util/CustomObjectInputStream$StreamCallback; :try_end_0 .catch Ljava/lang/NoSuchMethodException; {:try_start_0 .. :try_end_0} :catch_5 .catch Ljava/lang/reflect/InvocationTargetException; {:try_start_0 .. :try_end_0} :catch_4 .catch Ljava/lang/InstantiationException; {:try_start_0 .. :try_end_0} :catch_3 .catch Ljava/lang/IllegalAccessException; {:try_start_0 .. :try_end_0} :catch_2 .catch Ljava/io/IOException; {:try_start_0 .. :try_end_0} :catch_1 .catch Ljava/lang/ClassNotFoundException; {:try_start_0 .. :try_end_0} :catch_0 return-object v3 :catch_0 move-exception p1 .line 10 new-instance p2, Lcom/thoughtworks/xstream/converters/ConversionException; invoke-static {v0}, Landroid/support/v4/media/d;->a(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v0 invoke-virtual {v2}, Ljava/lang/Object;->getClass()Ljava/lang/Class; move-result-object v1 invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v0 invoke-direct {p2, v0, p1}, Lcom/thoughtworks/xstream/converters/ConversionException;->(Ljava/lang/String;Ljava/lang/Throwable;)V throw p2 :catch_1 move-exception p1 .line 11 new-instance p2, Lcom/thoughtworks/xstream/converters/ConversionException; invoke-static {v0}, Landroid/support/v4/media/d;->a(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v0 invoke-virtual {v2}, Ljava/lang/Object;->getClass()Ljava/lang/Class; move-result-object v1 invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v0 invoke-direct {p2, v0, p1}, Lcom/thoughtworks/xstream/converters/ConversionException;->(Ljava/lang/String;Ljava/lang/Throwable;)V throw p2 :catch_2 move-exception p1 .line 12 new-instance p2, Lcom/thoughtworks/xstream/converters/ConversionException; invoke-static {v1}, Landroid/support/v4/media/d;->a(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v0 invoke-virtual {v2}, Ljava/lang/Object;->getClass()Ljava/lang/Class; move-result-object v1 invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v0 invoke-direct {p2, v0, p1}, Lcom/thoughtworks/xstream/converters/ConversionException;->(Ljava/lang/String;Ljava/lang/Throwable;)V throw p2 :catch_3 move-exception p1 .line 13 new-instance p2, Lcom/thoughtworks/xstream/converters/ConversionException; invoke-static {v1}, Landroid/support/v4/media/d;->a(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v0 invoke-virtual {v2}, Ljava/lang/Object;->getClass()Ljava/lang/Class; move-result-object v1 invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v0 invoke-direct {p2, v0, p1}, Lcom/thoughtworks/xstream/converters/ConversionException;->(Ljava/lang/String;Ljava/lang/Throwable;)V throw p2 :catch_4 move-exception p1 .line 14 new-instance p2, Lcom/thoughtworks/xstream/converters/ConversionException; invoke-static {v1}, Landroid/support/v4/media/d;->a(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v0 invoke-virtual {v2}, Ljava/lang/Object;->getClass()Ljava/lang/Class; move-result-object v1 invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v0 invoke-direct {p2, v0, p1}, Lcom/thoughtworks/xstream/converters/ConversionException;->(Ljava/lang/String;Ljava/lang/Throwable;)V throw p2 :catch_5 move-exception p1 .line 15 new-instance p2, Lcom/thoughtworks/xstream/converters/ConversionException; invoke-static {v1}, Landroid/support/v4/media/d;->a(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v0 invoke-virtual {v2}, Ljava/lang/Object;->getClass()Ljava/lang/Class; move-result-object v1 invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; const-string v1, ", missing default constructor" invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v0 invoke-direct {p2, v0, p1}, Lcom/thoughtworks/xstream/converters/ConversionException;->(Ljava/lang/String;Ljava/lang/Throwable;)V throw p2 .end method