Flex Gateway新着情報
Governance新着情報
Monitoring API ManagerMIME タイプ: application/java
ID: java
Java データ形式の場合、DataWeave は Java 値を DataWeave 値にマップしようとします。ほとんどの場合、これは DataWeave と Java のセマンティックを照合することで行われます。
次の表に、Java クラスと DataWeave の型のマッピングを示します。
| Java クラス | DataWeave | 
|---|---|
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
表に存在しない 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 が作成されます。
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 の例では、次のクラス定義を使用します。
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 を拡張します。
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 プロパティの値にアクセスする方法を示しています。
次の例は、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>"}
DataWeave では、Java 形式の次の設定プロパティがサポートされています。
Java 形式では、出力データの書き込みの指示を提供するプロパティを使用できます。
| パラメーター | 型 | デフォルト | 説明 | 
|---|---|---|---|
  | 
  | 
  | 
オブジェクトで重複キーが検出されると、ライターはその値をそれらのすべての値が含まれる配列に変更します。
有効な値は、  | 
  | 
  | 
  | 
キーの属性をキーの子に追加するかどうかを指定します。新しい属性キー名の先頭は @ になります。有効なオプションは、  |