[
https://issues.apache.org/jira/browse/AXIS2-4923?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Andy Chapman updated AXIS2-4923:
--------------------------------
Description:
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://<removed>.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.
was:
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.
> 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
> Eclipse Helios Build id: 20100917-0705
> Axis2 Tools (Eclipse XML Editors and Tools) Version:
> 1.1.100.v201005241530-78-FF0DZRDKDDePSKwHj
> 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://<removed>.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]