Chris, you, definitely, missed part of my message related to the stub .Net produces...
Instead of  System.SByte[][] or System.Byte[][] which is what I expected to see, I've 
got System.SByte[].
Here is C# stub:
    /// <remarks/>
    [System.Xml.Serialization.SoapTypeAttribute("MultipleValueAttribute", 
"urn:attribute.common.framework.webservices.cleverpath.ca.com")]
    public class MultipleValueAttribute : Attribute {
        
        /// <remarks/>
        public bool[] multipleBooleanValues;
        
        /// <remarks/>
        public System.SByte[] multipleByteArrayValues;
        
        /// <remarks/>
        [System.Xml.Serialization.SoapElementAttribute(DataType="base64Binary")]
        public System.Byte[] multipleByteValues;
        
        /// <remarks/>
        public System.DateTime[] multipleDateValues;
        
        /// <remarks/>
        public System.Double[] multipleDoubleValues;
        
        /// <remarks/>
        public System.Single[] multipleFloatValues;
        
        /// <remarks/>
        public int[] multipleIntValues;
        
        /// <remarks/>
        public long[] multipleLongValues;
        
        /// <remarks/>
        public string[] multipleStringValues;
        
        /// <remarks/>
        public MultipleValueAttributeDefinition multipleValueAttributeDefinition;
    }
Here is the <type> part of the wsdl:

<?xml version="1.0" encoding="utf-8"?>
<definitions xmlns:s1="http://berer02xp2:8080/WSB/soap/GroupManager"; 
xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"; 
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"; 
xmlns:s="http://www.w3.org/2001/XMLSchema"; 
xmlns:s0="urn:common.framework.webservices.cleverpath.ca.com" 
xmlns:s3="urn:usermanagement.service.framework.webservices.cleverpath.ca.com" 
xmlns:s2="urn:attribute.common.framework.webservices.cleverpath.ca.com" 
xmlns:s4="http://common.framework.webservices.cleverpath.ca.com"; 
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"; 
xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/"; 
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"; 
targetNamespace="http://berer02xp2:8080/WSB/soap/GroupManager"; 
xmlns="http://schemas.xmlsoap.org/wsdl/";>
  <types>
    <s:schema targetNamespace="urn:common.framework.webservices.cleverpath.ca.com">
      <s:import namespace="http://schemas.xmlsoap.org/soap/encoding/"; />
      <s:complexType name="WSValue">
        <s:sequence>
          <s:element name="type" type="s:int" />
          <s:element name="value" nillable="true" type="s:string" />
        </s:sequence>
      </s:complexType>
      <s:complexType name="Query">
        <s:sequence>
          <s:element name="complete" type="s:boolean" />
          <s:element name="elapsedTime" type="s:long" />
          <s:element name="startTime" type="s:long" />
        </s:sequence>
      </s:complexType>
      <s:complexType name="WSAttribute">
        <s:sequence>
          <s:element name="name" nillable="true" type="s:string" />
          <s:element name="value" nillable="true" type="s0:WSValue" />
        </s:sequence>
      </s:complexType>
      <s:complexType name="QueryEnvironment">
        <s:sequence>
          <s:element name="countLimit" type="s:int" />
          <s:element name="executionMode" type="s:int" />
          <s:element name="timeoutLimit" type="s:int" />
        </s:sequence>
      </s:complexType>
      <s:complexType name="WSInterface">
        <s:sequence>
          <s:element name="interfaceID" nillable="true" type="s:string" />
          <s:element name="otherID" nillable="true" type="s:string" />
          <s:element name="otherIDType" type="s:int" />
        </s:sequence>
      </s:complexType>
    </s:schema>
    <s:schema targetNamespace="http://berer02xp2:8080/WSB/soap/GroupManager";>
      <s:import namespace="http://schemas.xmlsoap.org/soap/encoding/"; />
      <s:complexType name="ArrayOf_tns2_WSValue">
        <s:complexContent mixed="false">
          <s:restriction base="soapenc:Array">
            <s:attribute d7p1:arrayType="s0:WSValue[]" ref="soapenc:arrayType" 
xmlns:d7p1="http://schemas.xmlsoap.org/wsdl/"; />
          </s:restriction>
        </s:complexContent>
      </s:complexType>
      <s:complexType name="ArrayOf_xsd_boolean">
        <s:complexContent mixed="false">
          <s:restriction base="soapenc:Array">
            <s:attribute d7p1:arrayType="s:boolean[]" ref="soapenc:arrayType" 
xmlns:d7p1="http://schemas.xmlsoap.org/wsdl/"; />
          </s:restriction>
        </s:complexContent>
      </s:complexType>
      <s:complexType name="ArrayOf_xsd_base64Binary">
        <s:complexContent mixed="false">
          <s:restriction base="soapenc:Array">
            <s:attribute d7p1:arrayType="s:byte[][]" ref="soapenc:arrayType" 
xmlns:d7p1="http://schemas.xmlsoap.org/wsdl/"; />
          </s:restriction>
        </s:complexContent>
      </s:complexType>
      <s:complexType name="ArrayOf_xsd_dateTime">
        <s:complexContent mixed="false">
          <s:restriction base="soapenc:Array">
            <s:attribute d7p1:arrayType="s:dateTime[]" ref="soapenc:arrayType" 
xmlns:d7p1="http://schemas.xmlsoap.org/wsdl/"; />
          </s:restriction>
        </s:complexContent>
      </s:complexType>
      <s:complexType name="ArrayOf_xsd_double">
        <s:complexContent mixed="false">
          <s:restriction base="soapenc:Array">
            <s:attribute d7p1:arrayType="s:double[]" ref="soapenc:arrayType" 
xmlns:d7p1="http://schemas.xmlsoap.org/wsdl/"; />
          </s:restriction>
        </s:complexContent>
      </s:complexType>
      <s:complexType name="ArrayOf_xsd_float">
        <s:complexContent mixed="false">
          <s:restriction base="soapenc:Array">
            <s:attribute d7p1:arrayType="s:float[]" ref="soapenc:arrayType" 
xmlns:d7p1="http://schemas.xmlsoap.org/wsdl/"; />
          </s:restriction>
        </s:complexContent>
      </s:complexType>
      <s:complexType name="ArrayOf_xsd_int">
        <s:complexContent mixed="false">
          <s:restriction base="soapenc:Array">
            <s:attribute d7p1:arrayType="s:int[]" ref="soapenc:arrayType" 
xmlns:d7p1="http://schemas.xmlsoap.org/wsdl/"; />
          </s:restriction>
        </s:complexContent>
      </s:complexType>
      <s:complexType name="ArrayOf_xsd_long">
        <s:complexContent mixed="false">
          <s:restriction base="soapenc:Array">
            <s:attribute d7p1:arrayType="s:long[]" ref="soapenc:arrayType" 
xmlns:d7p1="http://schemas.xmlsoap.org/wsdl/"; />
          </s:restriction>
        </s:complexContent>
      </s:complexType>
      <s:complexType name="ArrayOf_xsd_string">
        <s:complexContent mixed="false">
          <s:restriction base="soapenc:Array">
            <s:attribute d7p1:arrayType="s:string[]" ref="soapenc:arrayType" 
xmlns:d7p1="http://schemas.xmlsoap.org/wsdl/"; />
          </s:restriction>
        </s:complexContent>
      </s:complexType>
      <s:complexType name="ArrayOf_tns1_MultipleValueAttribute">
        <s:complexContent mixed="false">
          <s:restriction base="soapenc:Array">
            <s:attribute d7p1:arrayType="s2:MultipleValueAttribute[]" 
ref="soapenc:arrayType" xmlns:d7p1="http://schemas.xmlsoap.org/wsdl/"; />
          </s:restriction>
        </s:complexContent>
      </s:complexType>
      <s:complexType name="ArrayOf_tns1_MultipleValueAttributeDefinition">
        <s:complexContent mixed="false">
          <s:restriction base="soapenc:Array">
            <s:attribute d7p1:arrayType="s2:MultipleValueAttributeDefinition[]" 
ref="soapenc:arrayType" xmlns:d7p1="http://schemas.xmlsoap.org/wsdl/"; />
          </s:restriction>
        </s:complexContent>
      </s:complexType>
      <s:complexType name="ArrayOf_tns2_WSAttribute">
        <s:complexContent mixed="false">
          <s:restriction base="soapenc:Array">
            <s:attribute d7p1:arrayType="s0:WSAttribute[]" ref="soapenc:arrayType" 
xmlns:d7p1="http://schemas.xmlsoap.org/wsdl/"; />
          </s:restriction>
        </s:complexContent>
      </s:complexType>
      <s:complexType name="ArrayOf_tns3_Group">
        <s:complexContent mixed="false">
          <s:restriction base="soapenc:Array">
            <s:attribute d7p1:arrayType="s3:Group[]" ref="soapenc:arrayType" 
xmlns:d7p1="http://schemas.xmlsoap.org/wsdl/"; />
          </s:restriction>
        </s:complexContent>
      </s:complexType>
    </s:schema>
    <s:schema 
targetNamespace="urn:attribute.common.framework.webservices.cleverpath.ca.com">
      <s:import namespace="http://schemas.xmlsoap.org/soap/encoding/"; />
      <s:complexType name="AttributeDefinition">
        <s:sequence>
          <s:element name="ID" nillable="true" type="s:string" />
          <s:element name="confidential" type="s:boolean" />
          <s:element name="constantID" type="s:int" />
          <s:element name="dataType" type="s:int" />
          <s:element name="description" nillable="true" type="s:string" />
          <s:element name="displayName" nillable="true" type="s:string" />
          <s:element name="maxLength" type="s:int" />
          <s:element name="minLength" type="s:int" />
          <s:element name="nullPermitted" type="s:boolean" />
          <s:element name="permittedValues" nillable="true" 
type="s1:ArrayOf_tns2_WSValue" />
          <s:element name="readOnly" type="s:boolean" />
          <s:element name="required" type="s:boolean" />
        </s:sequence>
      </s:complexType>
      <s:complexType name="Attribute">
        <s:sequence>
          <s:element name="accessKey" nillable="true" type="s:string" />
          <s:element name="attributeDefinition" nillable="true" 
type="s2:AttributeDefinition" />
          <s:element name="value" nillable="true" type="s:string" />
        </s:sequence>
      </s:complexType>
      <s:complexType name="MultipleValueAttributeDefinition">
        <s:complexContent mixed="false">
          <s:extension base="s2:AttributeDefinition">
            <s:sequence>
              <s:element name="isSingleValued" type="s:boolean" />
              <s:element name="maxValueCount" type="s:int" />
              <s:element name="minValueCount" type="s:int" />
              <s:element name="valuesMustBeUnique" type="s:boolean" />
            </s:sequence>
          </s:extension>
        </s:complexContent>
      </s:complexType>
      <s:complexType name="MultipleValueAttribute">
        <s:complexContent mixed="false">
          <s:extension base="s2:Attribute">
            <s:sequence>
              <s:element name="multipleBooleanValues" nillable="true" 
type="s1:ArrayOf_xsd_boolean" />
              <s:element name="multipleByteArrayValues" nillable="true" 
type="s1:ArrayOf_xsd_base64Binary" />
              <s:element name="multipleByteValues" type="s:base64Binary" />
              <s:element name="multipleDateValues" nillable="true" 
type="s1:ArrayOf_xsd_dateTime" />
              <s:element name="multipleDoubleValues" nillable="true" 
type="s1:ArrayOf_xsd_double" />
              <s:element name="multipleFloatValues" nillable="true" 
type="s1:ArrayOf_xsd_float" />
              <s:element name="multipleIntValues" nillable="true" 
type="s1:ArrayOf_xsd_int" />
              <s:element name="multipleLongValues" nillable="true" 
type="s1:ArrayOf_xsd_long" />
              <s:element name="multipleStringValues" nillable="true" 
type="s1:ArrayOf_xsd_string" />
              <s:element name="multipleValueAttributeDefinition" nillable="true" 
type="s2:MultipleValueAttributeDefinition" />
            </s:sequence>
          </s:extension>
        </s:complexContent>
      </s:complexType>
      <s:complexType name="MultipleValueAttributeSet">
        <s:sequence>
          <s:element name="multipleValueAttributes" nillable="true" 
type="s1:ArrayOf_tns1_MultipleValueAttribute" />
        </s:sequence>
      </s:complexType>
      <s:complexType name="MultipleValueAttributeDefinitionSet">
        <s:sequence>
          <s:element name="multipleValueAttributeDefinitions" nillable="true" 
type="s1:ArrayOf_tns1_MultipleValueAttributeDefinition" />
        </s:sequence>
      </s:complexType>
    </s:schema>
    <s:schema 
targetNamespace="urn:usermanagement.service.framework.webservices.cleverpath.ca.com">
      <s:import namespace="http://schemas.xmlsoap.org/soap/encoding/"; />
      <s:complexType name="QueryFilter">
        <s:sequence>
          <s:element name="ascending" type="s:boolean" />
          <s:element name="constraints" nillable="true" 
type="s1:ArrayOf_tns2_WSAttribute" />
          <s:element name="resultSetProperties" nillable="true" 
type="s1:ArrayOf_xsd_string" />
          <s:element name="sortAttributeIDs" nillable="true" 
type="s1:ArrayOf_xsd_string" />
        </s:sequence>
      </s:complexType>
      <s:complexType name="GroupResultSet">
        <s:sequence>
          <s:element name="ID" nillable="true" type="s:string" />
          <s:element name="count" type="s:int" />
          <s:element name="query" nillable="true" type="s0:Query" />
          <s:element name="queryFilter" nillable="true" type="s3:QueryFilter" />
        </s:sequence>
      </s:complexType>
      <s:complexType name="GroupReference">
        <s:sequence>
          <s:element name="groupAccessKey" nillable="true" type="s:string" />
          <s:element name="serviceReference" nillable="true" type="s:string" />
        </s:sequence>
      </s:complexType>
      <s:complexType name="Group">
        <s:sequence>
          <s:element name="ID" nillable="true" type="s3:GroupReference" />
          <s:element name="attributeSet" nillable="true" 
type="s2:MultipleValueAttributeSet" />
          <s:element name="displayName" nillable="true" type="s:string" />
        </s:sequence>
      </s:complexType>
      <s:complexType name="Capability">
        <s:sequence>
          <s:element name="entityNameCaseSensitive" type="s:boolean" />
          <s:element name="groupManagerReadOnly" type="s:boolean" />
          <s:element name="groupMembershipLimit" type="s:int" />
          <s:element name="membershipManagerReadOnly" type="s:boolean" />
          <s:element name="supportedGroupContent" type="s:int" />
          <s:element name="supportsGroupsWithMultipleParents" type="s:boolean" />
          <s:element name="supportsLightWeightResultSets" type="s:boolean" />
          <s:element name="supportsOrderedResultSets" type="s:boolean" />
          <s:element name="userManagerReadOnly" type="s:boolean" />
        </s:sequence>
      </s:complexType>
    </s:schema>
    <s:schema targetNamespace="http://common.framework.webservices.cleverpath.ca.com";>
      <s:import namespace="http://schemas.xmlsoap.org/soap/encoding/"; />
      <s:complexType name="WSException">
        <s:sequence>
          <s:element name="driverID" nillable="true" type="s:string" />
          <s:element name="errorNumber" nillable="true" type="s:string" />
          <s:element name="instanceID" nillable="true" type="s:string" />
          <s:element name="message" nillable="true" type="s:string" />
          <s:element name="serviceID" nillable="true" type="s:string" />
          <s:element name="serviceReference" nillable="true" type="s:string" />
          <s:element name="sessionID" nillable="true" type="s:string" />
          <s:element name="userAccessKey" nillable="true" type="s:string" />
        </s:sequence>
      </s:complexType>
    </s:schema>
  </types>
-----Original Message-----
From: chris [mailto:[EMAIL PROTECTED]
Sent: Monday, November 17, 2003 9:18 PM
To: [EMAIL PROTECTED]
Subject: RE: Axis/.Net interop


Mikhail -    I'd definitely expect a Java byte to be converted into an
xsd:byte that would then be converted into a .NET System.SByte.

A byte is defined in XML schema as:
" 3.3.19 byte [Definition:]   byte is .derived. from short by setting
the value of .maxInclusive. to be 127 and .minInclusive. to be -128. The
.base type. of byte is short. 

http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/#byte
"

A SByte is defined in .NET as:
" sbyte -128 to 127 Signed 8-bit integer System

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/csref/h
tml/vclrfsbyte.asp
"

Therefore, it seems that the conversion of an xsd:byte[][] defined in a
WSDL document into a System.SByte[][] is correct.  


Or maybe I'm missing something about the Java->WSDL->.NET conversion
that you are attempting.....  If you post the bean, wsdl, and C# code,
it may help debug the issue.

/Chris

-----Original Message-----
From: Mikhail Melamud [mailto:[EMAIL PROTECTED] 
Sent: Monday, November 17, 2003 2:32 PM
To: [EMAIL PROTECTED]
Subject: Axis/.Net interop

For the the Java bean having property defined as: 
 private byte[][] multipleByteArrayValues;
Axis 1.1 Java2WSDL generates descriptor as follows:
 <complexType name="ArrayOf_xsd_base64Binary"> 
 <complexContent> 
 <restriction base="soapenc:Array"> 
        <attribute ref="soapenc:arrayType"
wsdl:arrayType="xsd:byte[][]" /> 
</restriction> 
</complexContent> 
</complexType>
As I understand this is OK as far as WSDL 1.1 and SOAP
1.1 concerned for rpc/soap encoded web service

MS .Net Visual Studio stub generator responds with
System.SByte[] to such type definition in wsdl,
where the SByte value type represents integers with
values ranging from negative 128 to positive 127,
which is not exactly what I'd expect.
Changing the wsdl to 
 <complexType name="ArrayOf_xsd_base64Binary"> 
 <complexContent> 
 <restriction base="soapenc:Array"> 
        <attribute ref="soapenc:arrayType"
wsdl:arrayType="s:base64Binary[]" /> 
</restriction> 
</complexContent> 
</complexType>
where xmlns:s="http://www.w3.org/2001/XMLSchema"; 
produces expected definition in c# stub:
System.Byte[][]
Has anyone seen this behavior and is there a way to
affect Axis's java2Wsdl to generate base64Binary[]as
an arraytype or .Net to understand byte[][] and
generate proper stub.
Thanks
Mike


__________________________________
Do you Yahoo!?
Protect your identity with Yahoo! Mail AddressGuard
http://antispam.yahoo.com/whatsnewfree


Reply via email to