By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
444,017 Members | 1,158 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 444,017 IT Pros & Developers. It's quick & easy.

Problem consuming complex object with .NET

P: n/a
Hello,

I have webservice created with Axis 1.2.1 and that I am trying to
consuming in .NET (VB) using the Microsoft provided tools. While I am
able to consume methods on the service that return simple type, I
cannot consume methods that return complex objects. I have tried
experimenting, with this, but am at a bit of loss on where the problem
lies. When I call the services from a browser, I do get back the
response that contains valid data. Any help on this would be greatly
appreciated. I have attached supporting files. For the purpose of an
example, I have used the getLogin() method.

Thanks in advance.
Leslie

--------------WSDL:-----------------
<wsdl:definitions
targetNamespace="http://localhost:9082/axis/services/AuthLogin"
xmlns:apachesoap="http://xml.apache.org/xml-soap"
xmlns:impl="http://localhost:9082/axis/services/AuthLogin"
xmlns:intf="http://localhost:9082/axis/services/AuthLogin"
xmlns:tns1="urn:AuthLogin" xmlns:tns2="http://security.ws.diamelle"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<!--WSDL created by Apache Axis version: 1.2.1
Built on Jun 14, 2005 (09:15:57 EDT)-->
<wsdl:types>
<schema elementFormDefault="qualified"
targetNamespace="urn:AuthLogin"
xmlns="http://www.w3.org/2001/XMLSchema">
<import namespace="http://xml.apache.org/xml-soap"/>
<import namespace="http://localhost:9082/axis/services/AuthLogin"/>
<element name="authenticate">
<complexType>
<sequence>
<element name="serviceId" type="xsd:string"/>
<element name="login" type="xsd:string"/>
<element name="password" type="xsd:string"/>
</sequence>
</complexType>
</element>
<element name="authenticateResponse">
<complexType>
<sequence>
<element name="authenticateResponse" type="tns1:SSOSubject"/>
</sequence>
</complexType>
</element>
<complexType name="SSOSubject">
<sequence>
<element name="authenticatingAuthority" nillable="true"
type="xsd:string"/>
<element name="entitlements" nillable="true"
type="impl:ArrayOf_xsd_anyType"/>
<element name="expirationTime" type="xsd:long"/>
<element name="permissions" nillable="true"
type="impl:ArrayOf_xsd_anyType"/>
<element name="principals" nillable="true"
type="impl:ArrayOf_xsd_anyType"/>
<element name="privateCredentials" nillable="true"
type="impl:ArrayOf_xsd_anyType"/>
<element name="publicCredentials" nillable="true"
type="impl:ArrayOf_xsd_anyType"/>
<element name="readOnly" type="xsd:boolean"/>
<element name="userACLs" nillable="true"
type="impl:ArrayOf_xsd_anyType"/>
<element name="userGroups" nillable="true"
type="impl:ArrayOf_xsd_anyType"/>
<element name="userId" nillable="true" type="xsd:string"/>
<element name="userRoles" nillable="true"
type="impl:ArrayOf_xsd_anyType"/>
</sequence>
</complexType>
<element name="getUserId">
<complexType>
<sequence>
<element name="serviceId" type="xsd:string"/>
<element name="login" type="xsd:string"/>
<element name="password" type="xsd:string"/>
</sequence>
</complexType>
</element>
<element name="getUserIdResponse">
<complexType>
<sequence>
<element name="getUserIdResponse" type="xsd:string"/>
</sequence>
</complexType>
</element>
<element name="autoResetPassword">
<complexType>
<sequence>
<element name="serviceId" type="xsd:string"/>
<element name="login" type="xsd:string"/>
</sequence>
</complexType>
</element>
<element name="autoResetPasswordResponse">
<complexType>
<sequence>
<element name="autoResetPasswordResponse" type="xsd:string"/>
</sequence>
</complexType>
</element>
<element name="getLogin">
<complexType>
<sequence>
<element name="serviceId" type="xsd:string"/>
<element name="login" type="xsd:string"/>
</sequence>
</complexType>
</element>
<element name="getLoginResponse">
<complexType>
<sequence>
<element name="getLoginResponse" type="tns1:WSLoginValue"/>
</sequence>
</complexType>
</element>
<complexType name="WSLoginValue">
<sequence>
<element name="authFailureCount" type="xsd:int"/>
<element name="changePassword" nillable="true"
type="xsd:dateTime"/>
<element name="createDate" nillable="true" type="xsd:dateTime"/>
<element name="createdBy" nillable="true" type="xsd:string"/>
<element name="currentLoginHost" nillable="true"
type="xsd:string"/>
<element name="gracePeriodExp" nillable="true"
type="xsd:dateTime"/>
<element name="guest" type="xsd:boolean"/>
<element name="lastAuthAttempt" nillable="true"
type="xsd:dateTime"/>
<element name="locked" type="xsd:boolean"/>
<element name="login" nillable="true" type="xsd:string"/>
<element name="newUser" type="xsd:boolean"/>
<element name="password" nillable="true" type="xsd:string"/>
<element name="passwordEquivalentToken" nillable="true"
type="xsd:string"/>
<element name="passwordExp" nillable="true" type="xsd:dateTime"/>
<element name="resetPassword" type="xsd:boolean"/>
<element name="service" nillable="true" type="xsd:string"/>
<element name="status" nillable="true" type="xsd:string"/>
<element name="token" nillable="true" type="xsd:string"/>
<element name="userId" nillable="true" type="xsd:string"/>
</sequence>
</complexType>
<element name="removeLogin">
<complexType>
<sequence>
<element name="serviceId" type="xsd:string"/>
<element name="loginId" type="xsd:string"/>
</sequence>
</complexType>
</element>
<element name="removeLoginResponse">
<complexType/>
</element>
<element name="getAllLogins">
<complexType>
<sequence>
<element name="userId" type="xsd:string"/>
</sequence>
</complexType>
</element>
<element name="getAllLoginsResponse">
<complexType>
<sequence>
<element name="getAllLoginsResponse"
type="tns1:ArrayOfSSOPrincipal"/>
</sequence>
</complexType>
</element>
<complexType name="ArrayOfSSOPrincipal">
<sequence>
<element maxOccurs="unbounded" minOccurs="0" name="item"
type="xsd:anyType"/>
</sequence>
</complexType>
<element name="getPrincipals">
<complexType>
<sequence>
<element name="userId" type="xsd:string"/>
</sequence>
</complexType>
</element>
<element name="getPrincipalsResponse">
<complexType>
<sequence>
<element name="getPrincipalsReturn"
type="tns1:ArrayOfSSOPrincipal"/>
</sequence>
</complexType>
</element>
</schema>
<schema elementFormDefault="qualified"
targetNamespace="http://localhost:9082/axis/services/AuthLogin"
xmlns="http://www.w3.org/2001/XMLSchema">
<import namespace="http://xml.apache.org/xml-soap"/>
<import namespace="urn:AuthLogin"/>
<complexType name="ArrayOf_xsd_anyType">
<sequence>
<element maxOccurs="unbounded" minOccurs="0" name="item"
type="xsd:anyType"/>
</sequence>
</complexType>
</schema>
<schema elementFormDefault="qualified"
targetNamespace="http://xml.apache.org/xml-soap"
xmlns="http://www.w3.org/2001/XMLSchema">
<import namespace="urn:AuthLogin"/>
<import namespace="http://localhost:9082/axis/services/AuthLogin"/>
<complexType name="Vector">
<sequence>
<element maxOccurs="unbounded" minOccurs="0" name="item"
type="xsd:anyType"/>
</sequence>
</complexType>
</schema>
<schema elementFormDefault="qualified"
targetNamespace="http://security.ws.diamelle"
xmlns="http://www.w3.org/2001/XMLSchema">
<import namespace="http://xml.apache.org/xml-soap"/>
<import namespace="urn:AuthLogin"/>
<import namespace="http://localhost:9082/axis/services/AuthLogin"/>
<element name="authenticateToken">
<complexType>
<sequence>
<element name="userId" type="xsd:string"/>
<element name="token" type="xsd:string"/>
</sequence>
</complexType>
</element>
<element name="authenticateTokenResponse">
<complexType>
<sequence>
<element name="authenticateTokenReturn" type="tns1:SSOSubject"/>
</sequence>
</complexType>
</element>
<element name="logout">
<complexType>
<sequence>
<element name="userId" type="xsd:string"/>
</sequence>
</complexType>
</element>
<element name="logoutResponse">
<complexType/>
</element>
<element name="addLogin">
<complexType>
<sequence>
<element name="loginValue" type="tns1:WSLoginValue"/>
</sequence>
</complexType>
</element>
<element name="addLoginResponse">
<complexType/>
</element>
<element name="updateLogin">
<complexType>
<sequence>
<element name="lv" type="tns1:WSLoginValue"/>
</sequence>
</complexType>
</element>
<element name="updateLoginResponse">
<complexType/>
</element>
<element name="encrypt">
<complexType>
<sequence>
<element name="clearText" type="xsd:string"/>
</sequence>
</complexType>
</element>
<element name="encryptResponse">
<complexType>
<sequence>
<element name="encryptReturn" type="xsd:string"/>
</sequence>
</complexType>
</element>
<element name="decrypt">
<complexType>
<sequence>
<element name="token" type="xsd:string"/>
</sequence>
</complexType>
</element>
<element name="decryptResponse">
<complexType>
<sequence>
<element name="decryptReturn" type="xsd:string"/>
</sequence>
</complexType>
</element>
</schema>
</wsdl:types>

<wsdl:message name="authenticateTokenRequest">

<wsdl:part element="tns2:authenticateToken" name="parameters"/>

</wsdl:message>

<wsdl:message name="logoutRequest">

<wsdl:part element="tns2:logout" name="parameters"/>

</wsdl:message>

<wsdl:message name="updateLoginRequest">

<wsdl:part element="tns2:updateLogin" name="parameters"/>

</wsdl:message>

<wsdl:message name="decryptRequest">

<wsdl:part element="tns2:decrypt" name="parameters"/>

</wsdl:message>

<wsdl:message name="removeLoginResponse">

<wsdl:part element="tns1:removeLoginResponse" name="parameters"/>

</wsdl:message>

<wsdl:message name="authenticateTokenResponse">

<wsdl:part element="tns2:authenticateTokenResponse"
name="parameters"/>

</wsdl:message>

<wsdl:message name="getLoginRequest">

<wsdl:part element="tns1:getLogin" name="parameters"/>

</wsdl:message>

<wsdl:message name="logoutResponse">

<wsdl:part element="tns2:logoutResponse" name="parameters"/>

</wsdl:message>

<wsdl:message name="encryptResponse">

<wsdl:part element="tns2:encryptResponse" name="parameters"/>

</wsdl:message>

<wsdl:message name="getUserIdRequest">

<wsdl:part element="tns1:getUserId" name="parameters"/>

</wsdl:message>

<wsdl:message name="authenticateRequest">

<wsdl:part element="tns1:authenticate" name="parameters"/>

</wsdl:message>

<wsdl:message name="addLoginRequest">

<wsdl:part element="tns2:addLogin" name="parameters"/>

</wsdl:message>

<wsdl:message name="getPrincipalsResponse">

<wsdl:part element="tns1:getPrincipalsResponse"
name="parameters"/>

</wsdl:message>

<wsdl:message name="autoResetPasswordRequest">

<wsdl:part element="tns1:autoResetPassword" name="parameters"/>

</wsdl:message>

<wsdl:message name="encryptRequest">

<wsdl:part element="tns2:encrypt" name="parameters"/>

</wsdl:message>

<wsdl:message name="getAllLoginsResponse">

<wsdl:part element="tns1:getAllLoginsResponse"
name="parameters"/>

</wsdl:message>

<wsdl:message name="addLoginResponse">

<wsdl:part element="tns2:addLoginResponse" name="parameters"/>

</wsdl:message>

<wsdl:message name="getPrincipalsRequest">

<wsdl:part element="tns1:getPrincipals" name="parameters"/>

</wsdl:message>

<wsdl:message name="autoResetPasswordResponse">

<wsdl:part element="tns1:autoResetPasswordResponse"
name="parameters"/>

</wsdl:message>

<wsdl:message name="getLoginResponse">

<wsdl:part element="tns1:getLoginResponse" name="parameters"/>

</wsdl:message>

<wsdl:message name="getUserIdResponse">

<wsdl:part element="tns1:getUserIdResponse" name="parameters"/>

</wsdl:message>

<wsdl:message name="removeLoginRequest">

<wsdl:part element="tns1:removeLogin" name="parameters"/>

</wsdl:message>

<wsdl:message name="updateLoginResponse">

<wsdl:part element="tns2:updateLoginResponse" name="parameters"/>

</wsdl:message>

<wsdl:message name="authenticateResponse">

<wsdl:part element="tns1:authenticateResponse"
name="parameters"/>

</wsdl:message>

<wsdl:message name="getAllLoginsRequest">

<wsdl:part element="tns1:getAllLogins" name="parameters"/>

</wsdl:message>

<wsdl:message name="decryptResponse">

<wsdl:part element="tns2:decryptResponse" name="parameters"/>

</wsdl:message>

<wsdl:portType name="AuthLogin">

<wsdl:operation name="authenticate">

<wsdl:input message="impl:authenticateRequest"
name="authenticateRequest"/>

<wsdl:output message="impl:authenticateResponse"
name="authenticateResponse"/>

</wsdl:operation>

<wsdl:operation name="getUserId">

<wsdl:input message="impl:getUserIdRequest"
name="getUserIdRequest"/>

<wsdl:output message="impl:getUserIdResponse"
name="getUserIdResponse"/>

</wsdl:operation>

<wsdl:operation name="autoResetPassword">

<wsdl:input message="impl:autoResetPasswordRequest"
name="autoResetPasswordRequest"/>

<wsdl:output message="impl:autoResetPasswordResponse"
name="autoResetPasswordResponse"/>

</wsdl:operation>

<wsdl:operation name="getLogin">

<wsdl:input message="impl:getLoginRequest"
name="getLoginRequest"/>

<wsdl:output message="impl:getLoginResponse"
name="getLoginResponse"/>

</wsdl:operation>

<wsdl:operation name="removeLogin">

<wsdl:input message="impl:removeLoginRequest"
name="removeLoginRequest"/>

<wsdl:output message="impl:removeLoginResponse"
name="removeLoginResponse"/>

</wsdl:operation>

<wsdl:operation name="getAllLogins">

<wsdl:input message="impl:getAllLoginsRequest"
name="getAllLoginsRequest"/>

<wsdl:output message="impl:getAllLoginsResponse"
name="getAllLoginsResponse"/>

</wsdl:operation>

<wsdl:operation name="getPrincipals">

<wsdl:input message="impl:getPrincipalsRequest"
name="getPrincipalsRequest"/>

<wsdl:output message="impl:getPrincipalsResponse"
name="getPrincipalsResponse"/>

</wsdl:operation>

<wsdl:operation name="authenticateToken">

<wsdl:input message="impl:authenticateTokenRequest"
name="authenticateTokenRequest"/>

<wsdl:output message="impl:authenticateTokenResponse"
name="authenticateTokenResponse"/>

</wsdl:operation>

<wsdl:operation name="logout">

<wsdl:input message="impl:logoutRequest"
name="logoutRequest"/>

<wsdl:output message="impl:logoutResponse"
name="logoutResponse"/>

</wsdl:operation>

<wsdl:operation name="addLogin">

<wsdl:input message="impl:addLoginRequest"
name="addLoginRequest"/>

<wsdl:output message="impl:addLoginResponse"
name="addLoginResponse"/>

</wsdl:operation>

<wsdl:operation name="updateLogin">

<wsdl:input message="impl:updateLoginRequest"
name="updateLoginRequest"/>

<wsdl:output message="impl:updateLoginResponse"
name="updateLoginResponse"/>

</wsdl:operation>

<wsdl:operation name="encrypt">

<wsdl:input message="impl:encryptRequest"
name="encryptRequest"/>

<wsdl:output message="impl:encryptResponse"
name="encryptResponse"/>

</wsdl:operation>

<wsdl:operation name="decrypt">

<wsdl:input message="impl:decryptRequest"
name="decryptRequest"/>

<wsdl:output message="impl:decryptResponse"
name="decryptResponse"/>

</wsdl:operation>

</wsdl:portType>

<wsdl:binding name="AuthLoginSoapBinding" type="impl:AuthLogin">

<wsdlsoap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"/>

<wsdl:operation name="authenticate">

<wsdlsoap:operation soapAction=""/>

<wsdl:input name="authenticateRequest">

<wsdlsoap:body use="literal"/>

</wsdl:input>

<wsdl:output name="authenticateResponse">

<wsdlsoap:body use="literal"/>

</wsdl:output>

</wsdl:operation>

<wsdl:operation name="getUserId">

<wsdlsoap:operation soapAction=""/>

<wsdl:input name="getUserIdRequest">

<wsdlsoap:body use="literal"/>

</wsdl:input>

<wsdl:output name="getUserIdResponse">

<wsdlsoap:body use="literal"/>

</wsdl:output>

</wsdl:operation>

<wsdl:operation name="autoResetPassword">

<wsdlsoap:operation soapAction=""/>

<wsdl:input name="autoResetPasswordRequest">

<wsdlsoap:body use="literal"/>

</wsdl:input>

<wsdl:output name="autoResetPasswordResponse">

<wsdlsoap:body use="literal"/>

</wsdl:output>

</wsdl:operation>

<wsdl:operation name="getLogin">

<wsdlsoap:operation soapAction=""/>

<wsdl:input name="getLoginRequest">

<wsdlsoap:body use="literal"/>

</wsdl:input>

<wsdl:output name="getLoginResponse">

<wsdlsoap:body use="literal"/>

</wsdl:output>

</wsdl:operation>

<wsdl:operation name="removeLogin">

<wsdlsoap:operation soapAction=""/>

<wsdl:input name="removeLoginRequest">

<wsdlsoap:body use="literal"/>

</wsdl:input>

<wsdl:output name="removeLoginResponse">

<wsdlsoap:body use="literal"/>

</wsdl:output>

</wsdl:operation>

<wsdl:operation name="getAllLogins">

<wsdlsoap:operation soapAction=""/>

<wsdl:input name="getAllLoginsRequest">

<wsdlsoap:body use="literal"/>

</wsdl:input>

<wsdl:output name="getAllLoginsResponse">

<wsdlsoap:body use="literal"/>

</wsdl:output>

</wsdl:operation>

<wsdl:operation name="getPrincipals">

<wsdlsoap:operation soapAction=""/>

<wsdl:input name="getPrincipalsRequest">

<wsdlsoap:body use="literal"/>

</wsdl:input>

<wsdl:output name="getPrincipalsResponse">

<wsdlsoap:body use="literal"/>

</wsdl:output>

</wsdl:operation>

<wsdl:operation name="authenticateToken">

<wsdlsoap:operation soapAction=""/>

<wsdl:input name="authenticateTokenRequest">

<wsdlsoap:body use="literal"/>

</wsdl:input>

<wsdl:output name="authenticateTokenResponse">

<wsdlsoap:body use="literal"/>

</wsdl:output>

</wsdl:operation>

<wsdl:operation name="logout">

<wsdlsoap:operation soapAction=""/>

<wsdl:input name="logoutRequest">

<wsdlsoap:body use="literal"/>

</wsdl:input>

<wsdl:output name="logoutResponse">

<wsdlsoap:body use="literal"/>

</wsdl:output>

</wsdl:operation>

<wsdl:operation name="addLogin">

<wsdlsoap:operation soapAction=""/>

<wsdl:input name="addLoginRequest">

<wsdlsoap:body use="literal"/>

</wsdl:input>

<wsdl:output name="addLoginResponse">

<wsdlsoap:body use="literal"/>

</wsdl:output>

</wsdl:operation>

<wsdl:operation name="updateLogin">

<wsdlsoap:operation soapAction=""/>

<wsdl:input name="updateLoginRequest">

<wsdlsoap:body use="literal"/>

</wsdl:input>

<wsdl:output name="updateLoginResponse">

<wsdlsoap:body use="literal"/>

</wsdl:output>

</wsdl:operation>

<wsdl:operation name="encrypt">

<wsdlsoap:operation soapAction=""/>

<wsdl:input name="encryptRequest">

<wsdlsoap:body use="literal"/>

</wsdl:input>

<wsdl:output name="encryptResponse">

<wsdlsoap:body use="literal"/>

</wsdl:output>

</wsdl:operation>

<wsdl:operation name="decrypt">

<wsdlsoap:operation soapAction=""/>

<wsdl:input name="decryptRequest">

<wsdlsoap:body use="literal"/>

</wsdl:input>

<wsdl:output name="decryptResponse">

<wsdlsoap:body use="literal"/>

</wsdl:output>

</wsdl:operation>

</wsdl:binding>

<wsdl:service name="AuthLoginService">

<wsdl:port binding="impl:AuthLoginSoapBinding" name="AuthLogin">

<wsdlsoap:address
location="http://localhost:9082/axis/services/AuthLogin"/>

</wsdl:port>

</wsdl:service>

</wsdl:definitions>

--------------XML RESPONSE -------------
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<getLoginResponse>
<ns1:getLoginResponse xmlns:ns1="urn:AuthLogin">
<authFailureCount>0</authFailureCount>
<changePassword xsi:nil="1"/>
<createDate xsi:nil="1"/>
<createdBy xsi:nil="1"/>
<currentLoginHost xsi:nil="1"/>
<gracePeriodExp xsi:nil="1"/>
<guest>false</guest>
<lastAuthAttempt xsi:nil="1"/>
<locked>false</locked>
<login>sysadmin</login>
<newUser>false</newUser>
<password>passwd00</password>
<passwordEquivalentToken xsi:nil="1"/>
<passwordExp xsi:nil="1"/>
<resetPassword>false</resetPassword>
<service>IDM</service>
<status xsi:nil="1"/>
<token xsi:nil="1"/>
<userId>3000</userId>
</ns1:getLoginResponse>
</getLoginResponse>
</soapenv:Body>
</soapenv:Envelope>

---------------- GENERATED SOURCE CODE -------------------
<System.Web.Services.Protocols.SoapDocumentMethodA ttribute("",
RequestNamespace:="urn:AuthLogin", ResponseNamespace:="urn:AuthLogin",
Use:=System.Web.Services.Description.SoapBindingUs e.Literal,
ParameterStyle:=System.Web.Services.Protocols.Soap ParameterStyle.Wrapped)>
_
Public Function getLogin(ByVal serviceId As String, ByVal login As
String) As
<System.Xml.Serialization.XmlElementAttribute("get LoginResponse")>
WSLoginValue
Dim results() As Object = Me.Invoke("getLogin", New Object()
{serviceId, login})
Return CType(results(0), WSLoginValue)
End Function

'<remarks/>
Public Function BegingetLogin(ByVal serviceId As String, ByVal
login As String, ByVal callback As System.AsyncCallback, ByVal
asyncState As Object) As System.IAsyncResult
Return Me.BeginInvoke("getLogin", New Object() {serviceId,
login}, callback, asyncState)
End Function

'<remarks/>
Public Function EndgetLogin(ByVal asyncResult As
System.IAsyncResult) As WSLoginValue
Dim results() As Object = Me.EndInvoke(asyncResult)
Return CType(results(0), WSLoginValue)
End Function

Nov 23 '05 #1
Share this Question
Share on Google+
1 Reply


P: n/a
I'll give you some random thoughts :

- I see dateTime being nillable in your WSLoginValue data type. DateTime are
not nillable in .NET, they are value types like int or short. It would be
better if you could mark them not nillable, though I don't think your main
problem comes from here.

- your namespace http://localhost:9082/axis/services/AuthLogin is strange,
but then again, it is legal...

- your imports are strange : no location whatsoever to find the schemas (my
guess is your problem comes from here), imports are circular
(http://xml.apache.org/xml-soap imports urn:AuthLogin which imports
http://xml.apache.org/xml-soap...), and http://xml.apache.org/xml-soap is not
used anyway.

Do you have a java client working with this WSDL ? Does the error come when
importing the wsdl or when calling the service ? I suggest you clean up the
WSDL of all the strange things I told you, and try it again.

Hope this helps

Regards

François
Nov 23 '05 #2

This discussion thread is closed

Replies have been disabled for this discussion.