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
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: