Hi Anne,
The WSDL is just cut and paste off my Apache/Tomcat server
that hosts the WS. You can see the complete WSDL at:
See Provider.java def below. This was originally
generated by Axis but I have added fields to it since then. There is no field in
my definition for the extra field tagged onto each structure. There are 3 structures that get this extra field at the end and they are
all the ones that get returned as arrays from my services.
This is one of the service entry points:
public Provider[] getProviders(String name, String providerNo, String
orgName,
String locationId, int maxResults) throws Exception { }
The others are all constructed similarly.
> Can you convert to doc/literal?
How do I do this? > Add this parameter (dotNetSoapEncFix) to your global configuration:
I am trying this now.
Provider.java:
package au.gov.qld.health.s8online.providerdir;
import javax.xml.namespace.QName;
import org.apache.axis.description.ElementDesc;
public class Provider
{ protected int id; protected String name; protected String providerId; protected String org;
protected String locationId; protected String application;
protected String deliveryMethod; public
Provider()
{ setId(0); } public void setProvider(String name, String providerNo, String
org,
String locationId, String application, String deliveryMethod) { this.name = name; this.providerId = providerNo; this.org = org; this.locationId = locationId; this.application = application; this.deliveryMethod = deliveryMethod; } public void setProvider(Provider
pd)
{ setId(pd.getId()); this.name = pd.getName(); this.providerId = pd.getProviderId(); this.org = pd.getOrg(); this.locationId = pd.getLocationId(); this.application = pd.getApplication(); this.deliveryMethod = pd.getDeliveryMethod(); } public int getId() {return id;}
public void setId(int id) {this.id = id;} public String getName() {return name;}
public void setName(String name){this.name = name;} public String getLocationId(){return
this.locationId;}
public void setlocationId(String locationId){this.locationId = locationId;} public String getOrg(){return org;}
public void setOrg(String org){this.org = org;} public String getProviderId(){return providerId;}
public void setProviderId(String providerNo){this.providerId = providerNo;} public String getApplication() {return application;}
public void setApplication(String application) {this.application = application;} public String getDeliveryMethod() {return
deliveryMethod;}
public void setDeliveryMethod(String deliveryMethod) {this.deliveryMethod = deliveryMethod;} public String toString()
{ String s = ""; if ( name != null && !name.equals("")) s += "name=\"" + name + "\""; if ( providerId != null && !providerId.equals("")) s += ", providerNo=\"" + providerId + "\""; if ( org != null && !org.equals("")) s += ", org=\"" + org + "\""; if ( locationId != null && !locationId.equals("")) s += ", locationId=\"" + locationId + "\""; if ( application != null && !application.equals("")) s += ", application=\"" + application + "\""; if ( deliveryMethod != null && !deliveryMethod.equals("")) s += ", deliveryMethod=\"" + deliveryMethod + "\""; return s; } public synchronized boolean equals(Object
obj)
{ if (!(obj instanceof Provider)) return false; Provider other = (Provider)obj; if (obj == null) return false; if (this == obj) return true; if (__equalsCalc != null) { return (__equalsCalc == obj); } __equalsCalc = obj; boolean _equals; _equals = true && ((this.name == null && other.getName() == null) || (this.name != null && this.name.equals(other.getName()))) && ((this.providerId == null && other.getProviderId() == null) || (this.providerId != null && this.providerId.equals(other.getProviderId()))) && ((this.org == null && other.getOrg() == null) || (this.org != null && this.org.equals(other.getOrg()))) && ((this.application == null && other.getApplication() == null) || (this.application != null && this.application.equals(other.getApplication()))) && ((this.deliveryMethod == null && other.getDeliveryMethod() == null) || (this.deliveryMethod != null && this.deliveryMethod.equals(other.getDeliveryMethod()))) && ((this.locationId == null && other.getLocationId() == null) || (this.locationId != null && this.locationId.equals(other.getLocationId()))); __equalsCalc = null; return _equals; } public synchronized int hashCode()
{ if (__hashCodeCalc) { return 0; } __hashCodeCalc = true; String h; int _hashCode = 1; h = getName(); if (h != null) { _hashCode += h.hashCode(); } h = getProviderId(); if (h != null) { _hashCode += h.hashCode(); } h = getOrg(); if (h != null) { _hashCode += h.hashCode(); } h = getLocationId(); if (h != null) { _hashCode += h.hashCode(); } h = getApplication(); if (h != null) { _hashCode += h.hashCode(); } h = getDeliveryMethod(); if (h != null) { _hashCode += h.hashCode(); } __hashCodeCalc = false; return _hashCode; } protected Object __equalsCalc = null;
protected boolean __hashCodeCalc = false;
private static org.apache.axis.description.TypeDesc typeDesc
=
new org.apache.axis.description.TypeDesc(Provider.class, true); static {
typeDesc.setXmlType(new javax.xml.namespace.QName("urn:qh", "Provider")); initStringField("name"); initStringField("providerId"); initStringField("org"); initStringField("locationId"); initStringField("emailAddress"); initStringField("application"); initStringField("deliveryMethod"); } private static void initStringField(String
name)
{ ElementDesc elemField; elemField = new ElementDesc(); elemField.setFieldName(name); elemField.setXmlName(new QName("", name)); elemField.setXmlType(new QName("http://schemas.xmlsoap.org/soap/encoding/", "string")); elemField.setNillable(true); typeDesc.addFieldDesc(elemField); } /**
* Return type metadata object */ public static org.apache.axis.description.TypeDesc getTypeDesc() { return typeDesc; } /**
* Get Custom Serializer */ public static org.apache.axis.encoding.Serializer getSerializer(java.lang.String mechType, java.lang.Class _javaType, javax.xml.namespace.QName _xmlType) { return new org.apache.axis.encoding.ser.BeanSerializer(_javaType, _xmlType, typeDesc); } /**
* Get Custom Deserializer */ public static org.apache.axis.encoding.Deserializer getDeserializer(java.lang.String mechType, java.lang.Class _javaType, javax.xml.namespace.QName _xmlType) { return new org.apache.axis.encoding.ser.BeanDeserializer(_javaType, _xmlType, typeDesc); } }
Simon McMahon Work: (07) 31311420
Mobile: (043) 2294180 >>> [EMAIL PROTECTED] 06/28/06 11:11pm >>> SOAP Encoding arrays are not particularly interoperable. Can you convert to doc/literal? If not, then you at least need to use the .NET SOAP Enocding fix. Add this parameter to your global configuration: <parameter name="dotNetSoapEncFix"
value="true"/> This fix will change soapenc:string to xsd:string. I also question whether the array is defined accurately. Is your Provider object supposed to include another Provider object? Because that's how it's defined now. (The "provider" element is defined as type="impl"Provider", not as a link or reference.) How did you generate this WSDL? Anne On 6/28/06, Simon
McMahon <[EMAIL PROTECTED]
> wrote:
Hi, |
- Re: [1.3] Handling arrays - interop with .NET Simon McMahon
- Re: [1.3] Handling arrays - interop with .NET Benjamin Fan
- Re: [1.3] Handling arrays - interop with .NET Simon McMahon