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 }