2009-06-10 7 views
17

Sto usando JAXB per decomprimere un file XML in un oggetto Java - roba standard. Una volta che JAXB ha completato questo, mi piacerebbe che un metodo venisse chiamato sull'oggetto appena creato.Come posso chiamare JAXB un metodo dopo aver completato l'eliminazione di un file XML in un oggetto?

Esiste un meccanismo per farlo? Preferirei che l'oggetto, non un'entità esterna, faccia questo per mantenere la costruzione in un posto.

Grazie.

+0

Non capisco, si desidera che venga chiamato un metodo dopo il processo di annullamento della memoria? –

+0

Sì; Esattamente. Qualcosa come @BeforeClass di JUnit dove viene chiamato un metodo dopo la costruzione e vengono chiamati i mutatori. – Elliot

risposta

7

Per essere in grado di eseguire codice dopo deserializzazione ha avuto luogo, è necessario un Unmarshaller-Listener

Tuttavia, non sono sicuro, se l'ascoltatore viene richiamato dopo che i proprietà sono impostate o prima.

NOTA: L'ascoltatore è disponibile dal JAXB- 2.0 (JDK-)

+0

Ivan, per favore rileggi la domanda. Voglio qualche codice eseguito dopo che il costruttore e i mutatori sono stati chiamati. – Elliot

+0

Ho modificato la mia domanda –

+0

Grazie, Ivan. Non avevo trovato un riferimento a Unmarshaller.Listener prima - grazie per la risposta. – Elliot

12

Oltre al Unmarshaller.Listener è possibile aggiungere i seguenti metodi per le classi del modello di dominio stessi.

  • public void beforeUnmarshal(Unmarshaller unmarshaller, Object parent)
  • public void afterUnmarshal(Unmarshaller unmarshaller, Object parent)

Da: http://java.sun.com/javase/6/docs/api/javax/xml/bind/Unmarshaller.Listener.html

+0

Le firme del metodo sono errate e quindi non funziona. Il primo oggetto deve essere di tipo "Unmarshaller". – Robert

+0

@Robert - Le firme del metodo sono state corrette. –

26

È possibile semplice aggiungere il seguente metodo alla definizione di oggetto:

void afterUnmarshal(Unmarshaller u, Object parent) { 
    ... 
} 

Si chiamerà ONC L'oggetto attuale è stato completamente deserializzato. Vedere anche la documentazione su unmarshalling callbacks

Problemi correlati