Could anyone help to give some comments on this ?
Thanks.
2011/5/6 Ivan <[email protected]>
> In the Block interface, a method named isElementData is defined with doc
> description below, from my understanding, it only return true while the
> block could be represented as a single element.
> /**
> * @return true if data is always an element; false if possibly mixed
> content or multiple
> * elements
> */
> public boolean isElementData();
>
> In the getQName() of BlockImpl class, any XML parsing exception is
> swallowed if isElementData return false. IMO, it should only ignore it
> while the block elment might be a MIME type, which means it is of a
> DataSource type. e.g. while invoking the Dispatch<Source>.invoke, aninvalid
> XML string like <simplerequest><param>1</param><simpleRequest> is passed, no
> exception is thrown, while a WebServiceException should be expected.
> Thougths ? If I did not miss anything, would like to open a JIRA for it and
> attach a draft patch.
>
> --->
> /* (non-Javadoc)
> * @see org.apache.axis2.jaxws.message.Block#getQName()
> */
> public QName getQName() throws WebServiceException {
> // If the QName is not known, find it
> try {
> if (qName == null) {
> // If a prior call discovered that this content has no
> QName, then return null
> if (noQNameAvailable) {
> return null;
> }
> if (omElement == null) {
> try {
> XMLStreamReader newReader =
> _getReaderFromBO(busObject, busContext);
> busObject = null;
> StAXOMBuilder builder = new
> StAXOMBuilder(newReader);
> omElement = builder.getDocumentElement();
> omElement.close(true);
> } catch (Exception e) {
> // Some blocks may represent non-element data
> if (log.isDebugEnabled()) {
> log.debug("Exception occurred while obtaining
> QName:" + e);
> }
> if (!isElementData()) {
> // If this block can hold non-element data,
> then accept
> // the fact that there is no qname and continue
> if (log.isDebugEnabled()) {
> log.debug("The block does not contain an
> xml element. Processing continues.");
> }
> // Indicate that the content has no QName
> // The exception is swallowed.
> noQNameAvailable = true;
> return null;
> } else {
> // The content should contain xml.
> // Rethrowing the exception.
> throw
> ExceptionFactory.makeWebServiceException(e);
> }
> }
> }
> qName = omElement.getQName();
> }
> return qName;
> } catch (Exception xse) {
> setConsumed(true);
> throw ExceptionFactory.makeWebServiceException(xse);
> }
> }
> <---
>
> --
> Ivan
>
--
Ivan