Incorrect parse function for ArrayOfAnyType
-------------------------------------------
Key: AXIS2-4923
URL: https://issues.apache.org/jira/browse/AXIS2-4923
Project: Axis2
Issue Type: Bug
Components: adb
Affects Versions: 1.5.4
Environment: Jave 1.5.0_08, Tomcat 5.5.18
Reporter: Andy Chapman
Autogeneration of a client using a WSDL with a segment like this:
<s:complexType name="ArrayOfAnyType">
<s:sequence>
<s:element minOccurs="0" maxOccurs="unbounded" name="anyType"
nillable="true"/>
</s:sequence>
</s:complexType>
Generates a ArrayOfAnyType.Factory.parse method like this:
try {
while (!reader.isStartElement() &&
!reader.isEndElement())
reader.next();
if
(reader.getAttributeValue("http://www.w3.org/2001/XMLSchema-instance","type")!=null){
java.lang.String fullTypeName =
reader.getAttributeValue("http://www.w3.org/2001/XMLSchema-instance", "type");
if (fullTypeName!=null){
java.lang.String
nsPrefix = null;
if
(fullTypeName.indexOf(":") > -1){
nsPrefix =
fullTypeName.substring(0,fullTypeName.indexOf(":"));
}
nsPrefix =
nsPrefix==null?"":nsPrefix;
java.lang.String type =
fullTypeName.substring(fullTypeName.indexOf(":")+1);
if
(!"ArrayOfAnyType".equals(type)){
//find
namespace for the prefix
java.lang.String nsUri = reader.getNamespaceContext().getNamespaceURI(nsPrefix);
return
(ArrayOfAnyType)ExtensionMapper.getTypeObject(nsUri,type,reader);
}
}
}
// Note all attributes that were
handled. Used to differ normal attributes
// from anyAttributes.
java.util.Vector handledAttributes =
new java.util.Vector();
reader.next();
while (!reader.isStartElement() &&
!reader.isEndElement()) reader.next();
if (reader.isStartElement()){
nillableValue =
reader.getAttributeValue("http://www.w3.org/2001/XMLSchema-instance","nil");
if
(!"true".equals(nillableValue) && !"1".equals(nillableValue)){
java.lang.String
content = reader.getElementText();
org.apache.axiom.om.OMFactory fac =
org.apache.axiom.om.OMAbstractFactory.getOMFactory();
org.apache.axiom.om.OMNamespace omNs =
fac.createOMNamespace("http://apiconnector.com", "");
org.apache.axiom.om.OMElement _valueAnyType = fac.createOMElement("anyType",
omNs);
_valueAnyType.addChild(fac.createOMText(_valueAnyType, content));
object.setAnyType(_valueAnyType);
} else {
reader.getElementText(); // throw away text nodes if any.
}
reader.next();
} // End of if for expected property
start element
else {
}
while (!reader.isStartElement() &&
!reader.isEndElement())
reader.next();
if (reader.isStartElement()) {
// A start element we are not
expecting indicates a trailing invalid property
throw new
org.apache.axis2.databinding.ADBException("Unexpected subelement " +
reader.getLocalName());
}
} catch (javax.xml.stream.XMLStreamException e)
{
throw new java.lang.Exception(e);
}
Which basically reads the first element in the array and then treats the next
one as an unexpected element. So the error "Unexpected element anyType" is
produced.
I regenerated the client using XMLBeans instead of ADB and it seems to be fine.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]