Newsgroup: it.comp.java
Titolo: Anomalia JDOM?

mi succede questa cosa strana, qualcuno sa da che può dipendere?
Cur è di tipo element, il metodo getValue() restituisce String.
------------------
Attribute attr = cur.getAttribute("LEWISSPLIT");
System.out.println("attributo trovato " + attr.getValue() );
corrente.lewissplit = attr.getValue();
------------------
in questo codice chiamo due volte il metodo getValue(), quando lo chiamo
come parametro di println funziona perfettamente, la seconda volta solleva
eccezione.
ogni volta che lo chiamo dentro println funziona.
proprio strano isn't it?
Giulio

> corrente.lewissplit = attr.getValue();
ho dimenticato di dire che ovviamente lewissplit č di tipo String

Puoi riportate l'eccezione? Sarebbe molto utile...

> Puoi riportate l'eccezione? Sarebbe molto utile...
ecco un'altra cosa strana... l'eccezione sollevata è null
addirittura il metodo in cui avviene l'errore non throwa niente
(è dichiarata
private testo getData(Document doc){ )
.. per puro caso viene chiamata all'interno di una try (volevo mantenere
unito il blocco di codice).
ho fatto anche un po di sessioni di debug e ho visto che l'attributo viene
trovato tranquillamente la stringa viene restituita correttamente da tutte
le sotto chiamate e al momento di assegnare la stringa al suo posto passa il
controllo al gestore dell'eccezione.
forse ieri sono stato un po parco di codice.. ne aggiungo un poco
lo spezzone di codice che genera l'errore è un po cambiato rispetto
all'esempio di ieri sera,  il risultato è lo stesso identico
questa è la try catch in cui chiamo la funzione  (getData())
--------------------------------------------------------
    for (int i = 0; i <files.size(); i++ ) {
      try {
        Document cur = getJDOM( (String) files.get(i));
        System.out.println("file caricato");
        testo dati = getData(cur);
        System.out.println("testo rilevato");
        insertDB(dati);
        System.out.println("testo aggiunto al DB");
      }
      catch (Exception ex1) {
        System.out.println("Errore :"+ex1.getMessage());
        System.exit(1);
      }
    }
QUESTA è LA PARTE INCRIMINATA DEL METODO GETDATA()
--------------------------------------------------------
//----------debug
      List attrs = cur.getAttributes();
      for (int j=0; j < attrs.size();j++) {
        Attribute att = (Attribute)attrs.get(j);
        System.out.println( "ns "+ att.getValue() );
      }
      //----------debug
      Attribute attr = cur.getAttribute("LEWISSPLIT");
      System.out.println("attributo trovato " + attr.getValue());
      if
(cur.getAttribute("LEWISSPLIT").getValue().equalsIgnoreCase("train"))  //SI
BLOCCA QUI
        corrente.setLewissplit("TRAIN");
      else if
(cur.getAttribute("LEWISSPLIT").getValue().equalsIgnoreCase("TEST"))
        corrente.setLewissplit("TRAIN");
      else corrente.setLewissplit("NOT-USED");
      System.out.println(i+": lewissplit="+corrente.lewissplit);
QUESTO è L'OUTPUT DI QUELLA PARTE DEL PROGRAMMA
---------------------------------------------------------------
ns NO
ns TRAIN
ns TRAINING-SET
ns 16321
ns 1001
attributo trovato TRAIN
Errore :null

L'errore non riguarda il JDOM, ma l'assegnamento della stringa, non so per
quale motivo ma si blocca anche cosě:
----------------------
System.out.println("attributo trovato " + attr.getValue());
corrente.lewissplit = "TRAIN";
 System.out.println(corrente.lewissplit);
----------------------
attributo trovato TRAIN
Errore :null
-----------------------------
class testo{
  public String lewissplit;
  public String titolo;
  public String corpo;
  public List cats;
}
----------------------------
la class testo (di cui corrente č un'istanza) č dichiarata nello stesso file
alla fine.

scusate per il disturbo... era l'errore più fesso di questo mondo: avevo
inizializzato corrente a null.
ho risolto ora.
grazie
Giulio