Mapping datatypes

Beginning in EAServer version 6.0, PowerBuilder NVOs are wrapped as EJBs. Table 5-1 describes the PowerBuilder to EJB datatype mappings, which are applied when an NVO package is wrapped as an EJB module. NVO is a generic term used to describe “custom class user objects,” which inherit directly from the PowerBuilder system type NonVisualObject.

Mappings for datatypes passed by value are valid for in and return parameter modes. Mappings for datatypes passed by reference are valid for out and inout parameter modes.

Table 5-1: PowerBuilder to EJB datatype mappings

PowerBuilder type

EJB parameter type

Blob by value

Blob by reference

byte[]

javax.xml.rpc.holders.ByteArrayHolder

Boolean by value

Boolean by reference

boolean

javax.xml.rpc.holders.BooleanHolder

Byte by value

Byte by reference

See “Byte datatype”.

byte

javax.xml.rpc.holders.ByteHolder

Char by value

Char by reference

char – see “Character datatypes”.

No mapping exists for Char passed by reference (out and inout parameter modes).

Date by value

Date by reference

java.util.Calendar

javax.xml.rpc.holders.CalendarHolder

DateTime by value

DateTime by reference

java.util.Calendar

javax.xml.rpc.holders.CalendarHolder

Decimal by value

Decimal by reference

java.math.BigDecimal

javax.xml.rpc.holders.BigDecimalHolder

Double by value

Double by reference

double

javax.xml.rpc.holders.DoubleHolder

Integer by value

Integer by reference

short

javax.xml.rpc.holders.ShortHolder

For Java client components that communicate with PowerBuilder server components, the numerical range that this datatype supports is -32768 – 32767.

Long by value

Long by reference

int

javax.xml.rpc.holders.IntHolder

For Java client components that communicate with PowerBuilder server components, the numerical range that this datatype supports is -2147483648 – 2147483647.

LongLong by value

LongLong by reference

long

javax.xml.rpc.holders.LongHolder

Real by value

Real by reference

float

javax.xml.rpc.holders.FloatHolder

String by value

String by reference

String

javax.xml.rpc.holders.StringHolder

Time by value

Time by reference

java.util.Calendar

javax.xml.rpc.holders.CalendarHolder

MyModule_MyArray[] or MyArray[] (return type only)

MyModule.ejb.MyElement[]

MyModule_MyException or MyException

MyModule.ejb.MyException

MyModule_MyComp or MyComp by value

MyModule_MyComp or MyComp by reference

MyModule.ejb.MyComp

MyModule.ejb.holders.MyCompHolder

MyModule_MyStruct or MyStruct by value

MyModule_MyStruct or MyStruct by reference

MyModule.ejb.MyStruct

MyModule.ejb.holders.MyStructHolder

MyModule_MyUnion or MyUnion by value

MyModule_MyUnion or MyUnion by reference

MyModule.ejb.MyUnion

MyModule.ejb.holders.MyUnionHolder

MyModule_MyElement[] or MyElement[] by value

MyModule_MyElement[] or MyElement[] by reference

MyModule.ejb.MyElement[]

MyModule.ejb.holders.ArrayOfMyElementHolder

MyModule_MySequence or MySequence (return type only)

MyModule.ejb.MyElement[]

MyModule_MyElement[n] or MyElement[n] by value

MyModule_MyElement[n] or MyElement[n] by reference

MyModule.ejb.MyElement[]

MyModule.ejb.holders.MyArrayHolder

ResultSet by value

ResultSet by reference

java.sql.ResultSet

TabularResults.SqlResultSetHolder

ResultSets by value

ResultSets by reference

java.sql.ResultSet[]

TabularResults.SqlResultSetsHolder

XDT_BooleanValue by value

XDT_BooleanValue by reference

java.lang.Boolean

javax.xml.rpc.holders.BooleanWrapperHolder

See “XDT datatypes”.

XDT_CharValue by value

XDT_CharValue by reference

java.lang.Character

XDT.CharacterWrapperHolder

See “Character datatypes”.

XDT_ByteValue by value

XDT_ByteValue by reference

java.lang.Byte

javax.xml.rpc.holders.ByteWrapperHolder

XDT_ShortValue by value

XDT_ShortValue by reference

java.lang.Short

javax.xml.rpc.holders.ShortWrapperHolder

XDT_IntValue by value

XDT_IntValue by reference

java.lang.Int

javax.xml.rpc.holders.IntegerWrapperHolder

XDT_LongValue by value

XDT_LongValue by reference

java.lang.Long

javax.xml.rpc.holders.LongWrapperHolder

XDT_FloatValue by value

XDT_FloatValue by reference

java.lang.Float

javax.xml.rpc.holders.FloatWrapperHolder

XDT_DoubleValue by value

XDT_DoubleValue by reference

java.lang.Double

javax.xml.rpc.holders.DoubleWrapperHolder

XDT_DecimalValue by value

XDT_DecimalValue by reference

java.math.BigDecimal

javax.xml.rpc.holders.BigDecimalHolder

XDT_IntegerValue by value

XDT_IntegerValue by reference

java.math.BigInteger

javax.xml.rpc.holders.BigIntegerHolder

XDT_DateValue by value

XDT_DateValue by reference

java.util.Calendar

javax.xml.rpc.holders.CalendarHolder

XDT_TimeValue by value

XDT_TimeValue by reference

java.util.Calendar

javax.xml.rpc.holders.CalendarHolder

XDT_DateTimeValue by value

XDT_DateTimeValue by reference

java.util.Calendar

javax.xml.rpc.holders.CalendarHolder

Byte datatype

PowerBuilder version 10.5 introduced a Byte datatype. To use the PowerBuilder Char datatype for backward compatibility, run the following command (once) before deployment:

configure idl-octet-to-pb-char

To switch back to using the PowerBuilder Byte datatype, run the following command (once) before deployment:

configure idl-octet-to-pb-byte

Character datatypes

Only characters in the ISO 8859-1 character set can be used for in and return parameter modes. To propagate other characters, use the String datatype.

The char and java.lang.Character datatypes have no defined XML schema mappings for EJB Web services, so you cannot use these as a parameter types or structure field types if you intend to expose a component as a Web service. Use the String datatype instead.

CORBA C++ datatypes

For CORBA C++ datatypes, see CORBA IDL to C++ Language Mapping.

DataStore system object

Sybase recommends that you use the PowerBuilder DataStore system object with the ResultSet return type, especially for NVOs running in an application server. For improved performance, use NVO instance variables, and create the DataStore and assign the DataObject in your NVO constructor.

XDT datatypes

To obtain the PowerBuilder XDT_* datatypes to use as PowerBuilder structure field types or component parameter types, use the EAServer Proxy wizard or the Application Server Proxy wizard in the PowerBuilder IDE to generate proxies for the XDT package. Each of the XDT_* datatypes contains a value field and an isNull field. You must set isNull to true if you want to indicate null values.