Flex Gateway新着情報
Governance新着情報
Monitoring API ManagerJava クラスを読み込む場合、java! プレフィックスがあるインポートディレクティブを使用します。プレフィックス java! では、Java Module ローダーを使用するように DataWeave に指示します。モジュールが読み込まれたら、コンストラクター、変数、関数をコールできます (DataWeave を使用した Java メソッドのコールを参照)。また、クラス型を使用することもできます。DataWeave は、Class という型名で Java クラスの型を公開します。
Java クラスは、「Java 値のマッピング」にリストされている DataWeave 型にマップされます。
表で指定されていない Java クラスは、DataWeave で JavaBean として処理され、DataWeave の Object 型にマップされます。そのオブジェクトのキーは Java クラスのプロパティの名前と一致し、それらの値はプロパティクラスと一致する DataWeave 型に対応します。次の例は、DataWeave が Java getter からすべてのプロパティを取得する方法を示しています。
Product クラス:
package org.mycompany;
public class Product {
private String name;
private int price;
public Product(String name, int price) {
this.name = name;
this.price = price;
}
public String getName() {return name;}
public void setName(String name) {this.name = name;}
public int getPrice() {return price;}
public void setPrice(int price) {this.price = price;}
}
この Java クラスの型を読み込むと、次の DataWeave 型の宣言と同じ効果があります。
type Class = { name?: String | Null, price?: Number | Null }
次の例は、型 Product::Class を DataWeave のその他の型として使用します。関数 Product::new をコールして (これにより、Java クラスのコンストラクターがコールされる)、DataWeave オブジェクトを作成しても、型 Product::Class と同じ効果があります。
インポートディレクティブには from がなく、代わりに型 Class のプレフィックス Product:: を使用しています。このプレフィックスにより、型をより宣言的な使用が可能になり、インポートされる他の Class 型との競合を回避できます。
%dw 2.0
output json
import java!org::mycompany::Product
var aBook: Product::Class = {name: "Learn DW", price: 123}
fun description(p: Product::Class) = "The product: $(p.name), costs: $(p.price)"
type Order = {
product: Product::Class,
date: LocalDateTime
}
---
{
a: Product::new("DW lang", 321) is Product::Class,
b: description(aBook),
c: {product: aBook, date: |2022-12-18T14:00:00|} is Order
}
{
a: true,
b: "The product: Learn DW, costs: 123",
c: true
}