How can I have JAXB call a method after it has completed unmarshalling an XML file into an object?

StackOverflow https://stackoverflow.com/questions/976378

  •  13-09-2019
  •  | 
  •  

Question

I am using JAXB to unmarshall an XML file into a Java object -- standard stuff. Once JAXB has completed this, I'd like a method to be called on the newly created object.

Is there a mechanism to do this? I'd prefer the object, not an external entity, do this to keep construction in one place.

Thanks.

Was it helpful?

Solution

To be able to execute code after unmarshalling took place, you need an Unmarshaller-Listener

However, I'm not sure, if the listener is invoked after the properties are set or before.

NOTE: The listener is available since JAXB-2.0 (JDK-6)

OTHER TIPS

You can simple add the following method to your object definition:

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

It will be called once the current object has been completely deserialized. See also the documentation about unmarshalling callbacks

In addition to the Unmarshaller.Listener you can add the following methods to your domain model classes themselves.

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

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

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top