.class public Lcom/thoughtworks/xstream/converters/collections/PropertiesConverter; .super Ljava/lang/Object; .source "PropertiesConverter.java" # interfaces .implements Lcom/thoughtworks/xstream/converters/Converter; # static fields .field private static final defaultsField:Ljava/lang/reflect/Field; # instance fields .field private final sort:Z # direct methods .method public static constructor ()V .locals 3 .line 1 const-class v0, Ljava/util/Properties; const-class v1, Ljava/util/Properties; const/4 v2, 0x0 invoke-static {v0, v1, v2}, Lcom/thoughtworks/xstream/core/util/Fields;->locate(Ljava/lang/Class;Ljava/lang/Class;Z)Ljava/lang/reflect/Field; move-result-object v0 sput-object v0, Lcom/thoughtworks/xstream/converters/collections/PropertiesConverter;->defaultsField:Ljava/lang/reflect/Field; return-void .end method .method public constructor ()V .locals 1 const/4 v0, 0x0 .line 1 invoke-direct {p0, v0}, Lcom/thoughtworks/xstream/converters/collections/PropertiesConverter;->(Z)V return-void .end method .method public constructor (Z)V .locals 0 .line 2 invoke-direct {p0}, Ljava/lang/Object;->()V .line 3 iput-boolean p1, p0, Lcom/thoughtworks/xstream/converters/collections/PropertiesConverter;->sort:Z return-void .end method # virtual methods .method public canConvert(Ljava/lang/Class;)Z .locals 1 .line 1 const-class v0, Ljava/util/Properties; if-ne v0, p1, :cond_0 const/4 p1, 0x1 goto :goto_0 :cond_0 const/4 p1, 0x0 :goto_0 return p1 .end method .method public marshal(Ljava/lang/Object;Lcom/thoughtworks/xstream/io/HierarchicalStreamWriter;Lcom/thoughtworks/xstream/converters/MarshallingContext;)V .locals 4 .line 1 check-cast p1, Ljava/util/Properties; .line 2 iget-boolean v0, p0, Lcom/thoughtworks/xstream/converters/collections/PropertiesConverter;->sort:Z if-eqz v0, :cond_0 new-instance v0, Ljava/util/TreeMap; invoke-direct {v0, p1}, Ljava/util/TreeMap;->(Ljava/util/Map;)V goto :goto_0 :cond_0 move-object v0, p1 .line 3 :goto_0 invoke-interface {v0}, Ljava/util/Map;->entrySet()Ljava/util/Set; move-result-object v0 invoke-interface {v0}, Ljava/util/Set;->iterator()Ljava/util/Iterator; move-result-object v0 :goto_1 invoke-interface {v0}, Ljava/util/Iterator;->hasNext()Z move-result v1 if-eqz v1, :cond_1 .line 4 invoke-interface {v0}, Ljava/util/Iterator;->next()Ljava/lang/Object; move-result-object v1 check-cast v1, Ljava/util/Map$Entry; const-string v2, "property" .line 5 invoke-interface {p2, v2}, Lcom/thoughtworks/xstream/io/HierarchicalStreamWriter;->startNode(Ljava/lang/String;)V .line 6 invoke-interface {v1}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object; move-result-object v2 invoke-virtual {v2}, Ljava/lang/Object;->toString()Ljava/lang/String; move-result-object v2 const-string v3, "name" invoke-interface {p2, v3, v2}, Lcom/thoughtworks/xstream/io/HierarchicalStreamWriter;->addAttribute(Ljava/lang/String;Ljava/lang/String;)V .line 7 invoke-interface {v1}, Ljava/util/Map$Entry;->getValue()Ljava/lang/Object; move-result-object v1 invoke-virtual {v1}, Ljava/lang/Object;->toString()Ljava/lang/String; move-result-object v1 const-string/jumbo v2, "value" invoke-interface {p2, v2, v1}, Lcom/thoughtworks/xstream/io/HierarchicalStreamWriter;->addAttribute(Ljava/lang/String;Ljava/lang/String;)V .line 8 invoke-interface {p2}, Lcom/thoughtworks/xstream/io/HierarchicalStreamWriter;->endNode()V goto :goto_1 .line 9 :cond_1 sget-object v0, Lcom/thoughtworks/xstream/converters/collections/PropertiesConverter;->defaultsField:Ljava/lang/reflect/Field; if-eqz v0, :cond_2 .line 10 invoke-static {v0, p1}, Lcom/thoughtworks/xstream/core/util/Fields;->read(Ljava/lang/reflect/Field;Ljava/lang/Object;)Ljava/lang/Object; move-result-object p1 check-cast p1, Ljava/util/Properties; if-eqz p1, :cond_2 const-string v0, "defaults" .line 11 invoke-interface {p2, v0}, Lcom/thoughtworks/xstream/io/HierarchicalStreamWriter;->startNode(Ljava/lang/String;)V .line 12 invoke-virtual {p0, p1, p2, p3}, Lcom/thoughtworks/xstream/converters/collections/PropertiesConverter;->marshal(Ljava/lang/Object;Lcom/thoughtworks/xstream/io/HierarchicalStreamWriter;Lcom/thoughtworks/xstream/converters/MarshallingContext;)V .line 13 invoke-interface {p2}, Lcom/thoughtworks/xstream/io/HierarchicalStreamWriter;->endNode()V :cond_2 return-void .end method .method public unmarshal(Lcom/thoughtworks/xstream/io/HierarchicalStreamReader;Lcom/thoughtworks/xstream/converters/UnmarshallingContext;)Ljava/lang/Object; .locals 4 .line 1 new-instance v0, Ljava/util/Properties; invoke-direct {v0}, Ljava/util/Properties;->()V const/4 v1, 0x0 .line 2 :goto_0 invoke-interface {p1}, Lcom/thoughtworks/xstream/io/HierarchicalStreamReader;->hasMoreChildren()Z move-result v2 if-eqz v2, :cond_1 .line 3 invoke-interface {p1}, Lcom/thoughtworks/xstream/io/HierarchicalStreamReader;->moveDown()V .line 4 invoke-interface {p1}, Lcom/thoughtworks/xstream/io/HierarchicalStreamReader;->getNodeName()Ljava/lang/String; move-result-object v2 const-string v3, "defaults" invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z move-result v2 if-eqz v2, :cond_0 .line 5 invoke-virtual {p0, p1, p2}, Lcom/thoughtworks/xstream/converters/collections/PropertiesConverter;->unmarshal(Lcom/thoughtworks/xstream/io/HierarchicalStreamReader;Lcom/thoughtworks/xstream/converters/UnmarshallingContext;)Ljava/lang/Object; move-result-object v1 check-cast v1, Ljava/util/Properties; goto :goto_1 :cond_0 const-string v2, "name" .line 6 invoke-interface {p1, v2}, Lcom/thoughtworks/xstream/io/HierarchicalStreamReader;->getAttribute(Ljava/lang/String;)Ljava/lang/String; move-result-object v2 const-string/jumbo v3, "value" .line 7 invoke-interface {p1, v3}, Lcom/thoughtworks/xstream/io/HierarchicalStreamReader;->getAttribute(Ljava/lang/String;)Ljava/lang/String; move-result-object v3 .line 8 invoke-virtual {v0, v2, v3}, Ljava/util/Properties;->setProperty(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object; .line 9 :goto_1 invoke-interface {p1}, Lcom/thoughtworks/xstream/io/HierarchicalStreamReader;->moveUp()V goto :goto_0 :cond_1 if-nez v1, :cond_2 return-object v0 .line 10 :cond_2 new-instance p1, Ljava/util/Properties; invoke-direct {p1, v1}, Ljava/util/Properties;->(Ljava/util/Properties;)V .line 11 invoke-virtual {p1, v0}, Ljava/util/Properties;->putAll(Ljava/util/Map;)V return-object p1 .end method