Java 形式

MIME タイプ: application/java

ID: java

Java データ形式の場合、DataWeave は Java 値を DataWeave 値にマップしようとします。ほとんどの場合、これは DataWeave と Java のセマンティックを照合することで行われます。

Java 値のマッピング

次の表に、Java クラスと DataWeave の型のマッピングを示します。

Java クラス DataWeave

java.lang.String

String

Enum

String

Class

String

UUID

String

CharSequence

String

Char

String

java.sql.Clob

String

java.io.Reader

String

int

Number

long

Number

double

Number

short

Number

BigInteger

Number

BigDecimal

Number

AtomicInteger

Number

AtomicLong

Number

boolean

Boolean

AtomicBoolean

Boolean

java.util.Collection

Array

java.lang.Iterable

Array

java.util.Iterator

Array

java.util.Map

Object

java.util.Optional

Null​ または ​Value

java.util.OptionalInt

Null​ または ​Number

java.util.OptionalDouble

Null​ または ​Number

java.util.OptionalLong

Null​ または ​Number

byte[]

Binary

java.lang.InputStream

Binary

java.nio.ByteBuffer

Binary

byte

Binary

java.lang.File

Binary

java.time.Instant

LocalDateTime

java.time.LocalDateTime

LocalDateTime

java.sql.Timestamp

LocalDateTime

java.sql.Date

LocalDateTime

java.util.Date

LocalDateTime

java.time.ZonedDateTime

DateTime

java.time.LocalTime

LocalTime

java.time.OffsetTime

Time

java.time.LocalDate

Date

java.time.ZoneOffset

TimeZone

java.util.Calendar

DateTime

java.util.XMLGregorianCalendar

DateTime

*[]

Array

表に存在しない Java クラスは、DataWeave で ​JavaBean​ として処理され、​Object​ 型としてマップされます。この場合、すべてのプロパティが Java getter から取得されます。

メタデータ

DataWeave では、Java 形式の ​^class​ メタデータがサポートされています。

すべての Java オブジェクトは、クラスに関連付けられます。DataWeave は、クラスをメタデータプロパティにマップして、この関連付けを保持します。

payload.^class​ は、​payload​ のクラスの名前を返します。

Java ライターは、メタデータプロパティを使用して、DataWeave 値をマップする Java クラスを検出します。つまり、DataWeave はメタデータプロパティを使用して、特定の DataWeave 値から作成される Java クラスを決定します。たとえば、式 ​output application/java --- now() as DateTime {class: "java.util.Calendar"}​ では、​java.util.Calendar​ が作成されます。

Enum カスタム型

Java 形式では、​Enum​ カスタム型がサポートされています。​java.util.Map​ に Java ​enum​ 値を配置するには、DataWeave Java Module では、​Enum​ と呼ばれるカスタム型を定義します。 このカスタム種別により、特定の文字列を指定の ​enum​ 種別の名前として処理できます。Enum の Java クラス名を指定する場合、​class​ メタデータプロパティを使用する必要があります (例: {gender: "Female" as Enum {class: "org.mycompany.Gender"}}​)。

次の例は、Java 形式の使用方法を示しています。

クラス定義

この Java の例では、次のクラス定義を使用します。

User クラス:
class User {
    private String name;
    private String lastName;

    public User(){

    }

    public User(String name, String lastName){
        this.name = name;
        this.lastName = lastName;
    }

    public void setName(String name){
        this.name = name;
    }

     public void setLastName(String lastName){
        this.lastName = lastName;
    }

    public String getName(){
        return name;
    }

    public String getLastName(){
        return lastName;
    }
}

次のクラスは ​User​ を拡張します。

Customer クラス:
import java.util.Calendar;
class Customer extends User {
    private Calendar expirationDate;
    private User salesRepr;

    public User(){

    }

    public User(String name, String lastName,Calendar expirationDate){
        super(name,lastName);
        this.expirationDate = expirationDate;
    }

    public void setSalesRepr(User salesRepr){
        this.salesRepr = salesRepr;
    }

    public User getSalesRepr(){
        return this.salesRepr;
    }

    public void  setExpirationDate(Calendar expirationDate){
        this.expirationDate = expirationDate;
    }

    public Calendar getExpirationDate(){
        return this.expirationDate;
    }
}

例: Java プロパティの値にアクセスする

次の例は、Java プロパティの値にアクセスする方法を示しています。

入力

User​ 値は、DataWeave スクリプトへの入力ペイロードとして機能します。

new User("Leandro", "Shokida")

ソース

この DataWeave スクリプトは、入力値を JSON に変換します。

output application/json
---
{
    a: payload.name,
    b: payload.lastName
}

出力

出力は、キー-値ペアを含む JSON オブジェクトになります。値は、入力 ​User​ オブジェクトの ​name​ および ​lastName​ 値になります。

{
    "a": "Leandro",
    "b": "Shokida"
}

例: Customer オブジェクトを作成する

次の例は、​Customer​ クラスのインスタンスを作成する方法を示しています。このスクリプトは、JSON 形式と MIME タイプでオブジェクトを出力します。

クラスは親クラス定義から推定されるため、内部プロパティのクラスを指定する必要はありません。

output application/json
---
{
    name: "Tomo",
    lastName: "Chibana",
    expirationDate: now(),
    salesRepr: {
        name: "Mariano",
        lastName: "de Achaval",
    }
} as Object {class: "Customer"}

例: 汎用型を使用する

この例では、クラス名の汎用型のサポートを使用して、​User​ オブジェクトの ​java.util.ArrayList​ を作成します。

各インスタンスで汎用型を使用してクラスを指定する必要はありません。クラスはリストの汎用型から取得されます。

output application/json
---
[{
    name: "Tomo",
    lastName: "Chibana"
},
{
    name: "Ana",
    lastName: "Felissati"
},
{
    name: "Leandro",
    lastName: "Shokida"
}
] as Array {class: "java.util.ArrayList<User>"}

Configuration のプロパティ

DataWeave では、この形式の以下の設定プロパティがサポートされています。

Reader のプロパティ

この形式のリーダープロパティはありません。

Writer のプロパティ

この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。

パラメーター デフォルト 説明

duplicateKeyAsArray

Boolean

false

オブジェクト内の重複キーの値を複製されたキーに対する値の 1 つの配列に変換します。

有効な値は、​true​ または ​false​ です。

writeAttributes

Boolean

false

キーの属性をそのキーの子キー-値のペアに変換します。属性キー名の先頭は @ になります。

有効な値は、​true​ または ​false​ です。

サポートされる MIME タイプ

この形式では、次の MIME タイプがサポートされます。

MIME タイプ

*/java