The component now supports two ways of defining Jbi4Corba endpoints:
In both cases, the endpoint is configured from a WSDL. However, since in the IDL-first case the WSDL is generated from the IDL (using theNetbeans plugin), in the "WSDL-first" case we don't know the IDL (at least at design time) and the endpoint is dynamically generated from the WSDL.
The types and the limitations in the IDL-first case are the same as the provider case (see idl2wsdl) See below for the WSDL supported data types for the WSDL-first case.
The jbi4corba component supports some of the data types defined in the XML schema specification.
Supported Built-in Data Types
| XML Schema types | Java Types | IDL Types |
| anySimpleType | String | wstring |
| boolean | boolean | boolean |
| float | float | float |
| double | double | double |
| long | long | long long |
| int | int | long |
| unsignedInt | long | long long |
| unsignedShort | int | long |
| unsignedByte | short | short |
| anyURI | String | wstring |
| string | String | wstring |
| normalizedString | String | wstring |
| token | String | wstring |
| language | String | wstring |
| Name | String | wstring |
| NMTOKEN | String | wstring |
| NCName | String | wstring |
| ID | String | wstring |
| ENTITY | String | wstring |
| short | short | short |
| byte | byte | octet |
Unsupported Built-in Data Types
| XML Schema types | Java Types | IDL Types |
| anyType | Object | |
| duration | javax.xml.datatype.Duration | |
| dateTime | javax.xml.datatype.XMLGregorianCalendar | |
| time | javax.xml.datatype.XMLGregorianCalendar | |
| date | javax.xml.datatype.XMLGregorianCalendar | |
| gYearMonth | javax.xml.datatype.XMLGregorianCalendar | |
| gYear | javax.xml.datatype.XMLGregorianCalendar | |
| gMonthDay | javax.xml.datatype.XMLGregorianCalendar | |
| gDay | javax.xml.datatype.XMLGregorianCalendar | |
| gMonth | javax.xml.datatype.XMLGregorianCalendar | |
| base64Binary | array of byte | |
| hexBinary | array of byte | |
| QName | javax.xml.namespace.QName | |
| NOTATION | ||
| decimal | BigDecimal | |
| integer | BigInteger | |
| nonPositiveInteger | java.lang.Number | |
| nonNegativeInteger | java.lang.Number | |
| negativeInteger | java.lang.Number | |
| positiveInteger | java.lang.Number | |
| unsignedLong | java.lang.Number | |
| NMTOKENS | java.util.List | |
| IDREF | Object | |
| IDREFS | java.util.List | |
| ENTITIES | java.util.List |
simpleType
The XML Schema specification defines a tag called 'simpleType' used to define a new type from a built-in data type. This tag has some features but the only one supported by jbi4corba is the 'restriction'.
<xsd:element name="simpleStringRequest">
<xsd:simpleType>
<xsd:restriction base="xsd:string"/>
</xsd:simpleType>
</xsd:element>
complexType
The XML schema definition defines a tag called 'complexType' used to define new types with an advanced structure. A complexType has many features and jbi4corba support many of them. (For a detailed discussion about the 'complexType' please visit the web site of the w3c.org)
<xsd:group name="MyGroup">
<xsd:all>
<xsd:element name="user" type="xsd:string" minOccurs="1" maxOccurs="1"/>
<xsd:element name="pass" type="xsd:string" minOccurs="1" maxOccurs="1"/>
</xsd:all>
</xsd:group>
<xsd:element name="TReqGroup">
<xsd:complexType>
<xsd:group ref="tns:MyGroup"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="TReqAll">
<xsd:complexType>
<xsd:all>
<xsd:element name="user" type="xsd:string" minOccurs="1" maxOccurs="1"/>
<xsd:element name="pass" type="xsd:string" minOccurs="1" maxOccurs="1"/>
</xsd:all>
</xsd:complexType>
</xsd:element>
<xsd:element name="TResAll">
<xsd:complexType>
<xsd:all>
<xsd:element name="user" type="xsd:string" minOccurs="1" maxOccurs="1"/>
<xsd:element name="pass" type="xsd:string" minOccurs="1" maxOccurs="1"/>
</xsd:all>
</xsd:complexType>
</xsd:element>
A complexType that contains a sequence is allowed but there are some limitation:
<xsd:element name="TResSeq">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="dataString" type="xsd:string" nillable="false" minOccurs="1" maxOccurs="1"/>
<xsd:element name="dataBoolean" type="xsd:boolean" nillable="false" minOccurs="1" maxOccurs="1"/>
<xsd:element name="dataFloat" type="xsd:float" nillable="false" minOccurs="1" maxOccurs="1"/>
<xsd:element name="dataDouble" type="xsd:double" nillable="false" minOccurs="1" maxOccurs="1"/>
<xsd:element name="dataAnyURI" type="xsd:anyURI" nillable="false" minOccurs="1" maxOccurs="1"/>
<xsd:element name="dataLong" type="xsd:long" nillable="false" minOccurs="1" maxOccurs="1"/>
<xsd:element name="dataInt" type="xsd:int" nillable="false" minOccurs="1" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>