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​

​byte[]

​Binary​

​java.lang.InputStream

​Binary​

​byte

​Binary​

​java.lang.File

​Binary​

​java.time.LocalDateTime

​LocalDateTime​

​java.sql.Timestamp

​LocalDateTime​

​java.sql.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 では、Java 形式の次の設定プロパティがサポートされています。

Reader のプロパティ

Java データのリーダープロパティはありません。

Writer のプロパティ

Java 形式では、出力データの書き込みの指示を提供するプロパティを使用できます。

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

​duplicateKeyAsArray

​Boolean

​false

オブジェクトで重複キーが検出されると、ライターはその値をそれらのすべての値が含まれる配列に変更します。 有効な値は、​true​ または ​false​ です。

​writeAttributes

​Boolean

​false

キーの属性をキーの子に追加するかどうかを指定します。新しい属性キー名の先頭は @ になります。有効なオプションは、​true​ または ​false​ です。

サポートされる MIME タイプ

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

MIME タイプ

*/java​