2017-10-06 1 views
0

J'ai un problème avec la configuration d'apache. Est-il possible d'ajouter des objets et non la représentation de la chaîne de ceux-ci?Apache Configuration ajouter un objet au lieu de String

Par exemple, je voudrais enregistrer le tout « SiteNode » et non le « toString() » variante:

public void persistSiteTree(Context context, Configuration config) { 
    List<SiteNode> nodes = Model.getSingleton().getSession().getNodesInContextFromSiteTree(context); 
    config.addProperty(CONFIG_PROPERTY_AUTHORISATION, nodes); 
} 

public void loadSiteTree(Context context, Configuration config) { 
    List<Object> nodes = new ArrayList<>(); 
    nodes = config.getList(CONFIG_PROPERTY_AUTHORISATION, nodes); 
    if(nodes != null && !nodes.isEmpty()) { 
     // Load in sites tree 
     SiteNode node = (SiteNode) nodes.get(0); // Gives error as String cannot be cast to "SiteNode" 
    } 
} 

Mais quand je l'appelle « loadSiteTree » il me donne chaîne ne peut pas être le cas à SiteNode . Est-il possible pour Apache de sauvegarder l'objet?

Répondre

0

Il existe des versions surchargées de getList() prenant en charge une conversion de type de données vers une classe cible spécifique.

Regardez le documentation.

<T> List<T> getList(Class<T> cls, String key, List<T> defaultValue)

obtenir une liste des objets typés associés à la configuration donnée clé renvoyant la valeur par défaut spécifiée si la clé ne correspond pas à un objet existant.

Quelque chose comme cela devrait fonctionner pour vous:

List<SiteNode> nodes = config.getList(SiteNode.class,CONFIG_PROPERTY_AUTHORISATION, nodes);

+0

Nous vous remercions de la recherche dans ce. Je ne sais pas pourquoi, mais cette méthode n'existe pas dans mon apache.commons.Configuration. Il y a 2 variantes: Les getList (clé de chaîne) et getList (clé de chaîne, liste <> par défaut) – CookieAndPizza

+0

Quelle version utilisez-vous? – Diyarbakir

+0

1.9. Mais je développe un plugin et par conséquent ne peut pas changer cela. Le forum du plugin n'a pas une section comme celle-ci, c'est pourquoi je demande ici (: – CookieAndPizza