Prev Class | Next Class | Frames | No Frames |
Summary: Nested | Field | Method | Constr | Detail: Nested | Field | Method | Constr |
java.lang.Object
org.apache.ws.jaxme.impl.JMControllerImpl
org.apache.ws.jaxme.impl.JMUnmarshallerImpl
Unmarshaller
implementation.
Field Summary |
Fields inherited from class org.apache.ws.jaxme.impl.JMControllerImpl | |
JAXME_DATATYPE_CONVERTER , JAXME_FORMAT_DATE , JAXME_FORMAT_DATETIME , JAXME_FORMAT_TIME , JAXME_PRIVATE , eventHandler |
Method Summary | |
UnmarshallerHandler |
|
boolean |
|
void |
|
Object |
|
Object |
|
Object |
|
Object |
|
Object |
|
Object |
|
Methods inherited from class org.apache.ws.jaxme.impl.JMControllerImpl | |
getDatatypeConverter , getDateFormat , getDateTimeFormat , getEventHandler , getJAXBContextImpl , getProperty , getTimeFormat , setDatatypeConverter , setDateFormat , setDateTimeFormat , setEventHandler , setJAXBContextImpl , setProperty , setTimeFormat |
public UnmarshallerHandler getUnmarshallerHandler()
Returns a SAX 2org.xml.sax.ContentHandler
, which is able to parse a SAX event stream and convert it into a JAXB object. This is particularly useful in a stack of SAX handlers. (Think of Apache Cocoon.) Note: The JAXB provider may choose to return the same handler again, if the method is invoked more than once. In other words, if you need to have multiple handlers (for example, because you have multiple threads), then you should create multipleUnmarshallers
.
- Specified by:
- getUnmarshallerHandler in interface Unmarshaller
public boolean isValidating()
Sets whether theUnmarshaller
is validating the objects that it reads. The default is false.
- Specified by:
- isValidating in interface Unmarshaller
- Returns:
- True, if the
Unmarshaller
is validating the objects that it reads, false otherwise.
- See Also:
Unmarshaller.setValidating(boolean)
public void setValidating(boolean pValidating)
Sets whether theUnmarshaller
is validating the objects that it reads. The default is false. Note: A validating unmarshaller will rarely use a validating SAX parser by default! It does so, because the SAX parsers validation and the Unmarshallers builtin validation would most probably validate the same things, resulting in no additional safety at the cost of wasting performance. Second, a SAX parser is not always in use. For example, you do not need a parser when converting a DOM Node. If you insist in a validating XML parser, then you should create your ownorg.xml.sax.XMLReader
and use the methodunmarshal(javax.xml.transform.Source)
.
- Specified by:
- setValidating in interface Unmarshaller
- Parameters:
pValidating
- Whether theUnmarshaller
should validate or not.
public Object unmarshal(InputSource pSource) throws JAXBException
The Unmarshaller reads the byte stream or character stream referred by theorg.xml.sax.InputSource
and converts it into an equivalent JAXB object.
- Specified by:
- unmarshal in interface Unmarshaller
- Parameters:
pSource
- TheInputSource
referring to a byte or character stream. It is recommended, that the system ID is set. This may be required, if the XML in the stream refers to external entities.
- Returns:
- The JAXB object read from the byte or character stream.
- Throws:
JAXBException
- An unexpected problem (for example an IOException) occurred.
public Object unmarshal(Node pNode) throws JAXBException
The Unmarshaller converts the given node into an equivalent JAXB object.
- Specified by:
- unmarshal in interface Unmarshaller
- Parameters:
pNode
- The node to convert. The JAXB provider must support documents and elements. Other node types may not work (document fragments) or cannot work (attributes, text nodes, and so on).
- Returns:
- The JAXB object read from the DOM node.
- Throws:
JAXBException
- An unexpected problem occurred.
public Object unmarshal(Source pSource) throws JAXBException
The Unmarshaller reads the XML representation from the givenSource
and converts it into an equivalent JAXB object. The JAXB provider must support at leastjavax.xml.transform.sax.SAXSource
,javax.xml.transform.dom.DOMSource
, andjavax.xml.transform.stream.StreamSource
. A possible implementation could validate whether the argument is actually an instance of these subinterfaces. If so, it might simply act likeUnmarshaller.getUnmarshallerHandler()
,unmarshal(org.w3c.dom.Node)
,Unmarshaller.unmarshal(InputStream)
, orunmarshal(org.xml.sax.InputSource)
, respectively. Note: If you are not using the standard JAXP mechanism for obtaining anorg.xml.sax.XMLReader
, then you might create your own SAX parser and invoke thepSource
argumentsjavax.xml.transform.sax.SAXSource.setXMLReader(org.xml.sax.XMLReader)
. The JAXB provider will detect and use your SAX parser.
- Specified by:
- unmarshal in interface Unmarshaller
- Parameters:
pSource
- TheSource
being read.
- Returns:
- The JAXB object read from the DOM node.
- Throws:
JAXBException
- An unexpected problem occurred.