Curl ORBのデータ通信には以下のデータ型を利用することができます。(要はサービスクラスのコンストラクタやメソッドの引数及び戻り値、フィールドのデータクラスとして利用できる方です。)
Curl | Java |
int | int |
int8 | byte |
int16 | short |
int32 | int |
int64 | long |
float | float |
double | double |
bool | boolean |
char | char |
String | java.lang.String |
DateTime | java.util.Date |
FastArray-of データ型 | 配列 |
Array (Array-of any) | List, ArrayList |
HashTable (HashTable-of any) | Map, HashMap |
ByteArray | com.curl.io.serialize.types.ByteArray |
COM.CURL.ORB.TYPE.SerializableRecordSet COM.CURL.ORB.TYPE.SerializableRecordField COM.CURL.ORB.TYPE.SerializableRecordData(0.7以上でサポート) |
com.curl.orb.type.SerializableRecordSet com.curl.orb.type.SerializableRecordField com.curl.orb.type.SerializableRecordData |
ユーザ定義型(フィールドは上記のものに限る) | ユーザ定義型(フィールドは上記のものに限る) |
バージョン0.6から以下のデータ型もサポートされました。
Curl | Java |
COM.CURL.ORB.TYPE.BigInteger | java.math.BigInteger |
COM.CURL.ORB.TYPE.BigDecimal | java.math.BigDecimal |
COM.CURL.ORB.TYPE.Date | java.util.Date |
COM.CURL.ORB.TYPE.CDate | java.sql.Date |
COM.CURL.ORB.TYPE.CTime | java.sql.Time |
COM.CURL.ORB.TYPE.CTimestamp | java.sql.Timestamp |
COM.CURL.ORB.TYPE.Blob | java.sql.Blob |
COM.CURL.ORB.TYPE.Clob | java.sql.Clob |
注意) サーバからのレスポンスとして受け取る場合(戻り値)は、すべてNull許容の型となる。(例、#String, #Foo)
また、Curlのユーザ定義型をJavaのクラスから生成する場合は、”Data Class”としてコード生成ツールから生成します。
さらにバージョン0.8からValueクラスとDecimal型 (Curl8.0のみ)もサポートされました。
注意) Valueクラスを利用する際は、Javaクラスに@ValueClassアノテーションを付与する必要があります。
レコードセットのサンプル
以下のようにサーバ側でレコードセットを作成し、クライアントへ返すことができます。
Java
// 0.6 の場合 |
// 0.7の場合 |
Curl
{method public {create-record-set}:#SerializableRecordSet || 利用例 |
BigInteger、BigDecimalのサンプル
Java
import java.math.BigDecimal; public class TestTypes { public BigInteger echoBigInteger(BigInteger bigInteger) { public BigDecimal echoBigDecimal(BigDecimal bigDecimal) { public Date echoDate(Date sqlDate) { public Time echoTime(Time sqlTime) { public Timestamp echoTimestamp(Timestamp sqlTimestamp) { public Blob echoBlob(Blob blob) { public Clob echoClob(Clob clob) { |
Curl
{define-class public TestTypes {inherits ApplicationContextClient} || これは生成されたコード {method public {echo-date v0:CDate}:#CDate {method public {echo-complex-type v0:ComplexTypeDto}:#ComplexTypeDto {method public {echo-big-integer v0:BigInteger}:#BigInteger {method public {echo-big-decimal v0:BigDecimal}:#BigDecimal {method public {echo-time v0:CTime}:#CTime {method public {echo-timestamp v0:CTimestamp}:#CTimestamp {method public {echo-blob v0:Blob}:#Blob {method public {echo-clob v0:Clob}:#Clob || 以下のように利用 {import * from COM.CURL.ORB} || from-int64, from-int, from-String, from-doubleファクトリでBigIntegerのインスタンス生成可能 || from-int64, from-int, from-String, from-doubleファクトリでBigDecimalのインスタンス生成可能 def date:CDate = {ct.echo-date {CDate}} def time:CTime = {ct.echo-time {CTime 20000}} def timestamp:CTimestamp = {ct.echo-timestamp {CTimestamp 40000}} def blob:Blob = {ct.echo-blob {Blob {{Array-of byte} ‘a’, ‘b’, ‘c’}} def clob:Clob = {ct.echo-clob {Clob {{Array-of char} ‘a’, ‘b’, ‘c’}}} |
*各クラスは、基本的にJavaのAPIと同等のメソッドを持っています。