[ https://issues.apache.org/jira/browse/AXIS2-5023?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Ivan updated AXIS2-5023: ------------------------ Attachment: AXIS2-5023.patch In the patch, a new method isXMLData is added to indicate whether the contents of the block should be of XML, it only returns false with DataSourceBlockImpl. Also, it is allowed to return empty source with the Provider style web service, so the SourceBlockFactoryImpl will return null if the empty source is detected > Ambigious use of isElementData in the Block interface > ----------------------------------------------------- > > Key: AXIS2-5023 > URL: https://issues.apache.org/jira/browse/AXIS2-5023 > Project: Axis2 > Issue Type: Bug > Components: jaxws > Reporter: Ivan > Labels: Geronimo > Attachments: AXIS2-5023-Test.patch, AXIS2-5023.patch > > > 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); > } > } > <--- -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira --------------------------------------------------------------------- To unsubscribe, e-mail: java-dev-unsubscr...@axis.apache.org For additional commands, e-mail: java-dev-h...@axis.apache.org