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;
}
}
Java Format
MIME Type: application/java
ID: java
For the Java data format, DataWeave attempts to map any Java value to a DataWeave value, most often by matching the semantics of DataWeave and Java.
Java Value Mapping
The following table maps Java classes to DataWeave types.
Java Class | DataWeave |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
If a Java class is not in present in the table, DataWeave treats it as a JavaBean and maps it as an Object type. In this case, DataWeave takes all properties from the Java getters.
|
Metadata
DataWeave supports the ^class
metadata for the Java format.
All Java objects are associated with a class. DataWeave maintains this association by mapping the class to a Metadata property.
payload.^class
returns the name of the class of the payload
.
The Java writer uses the metadata property to discover the Java class to which the DataWeave value maps. That is, DataWeave uses the metadata property to determine which Java class is to be created from a given DataWeave value. For example, the expression output application/java --- now() as DateTime {class: "java.util.Calendar"}
creates a java.util.Calendar
.
Enum Custom Type
The Java format supports the Enum
custom type. To put a Java enum
value into a java.util.Map
, the DataWeave Java module defines a custom type called Enum
.
This custom type enables you to handle a given string as the name of a specified enum
type. You must use the class
metadata property when specifying the Java class name of the enum, for example: {gender: "Female" as Enum {class: "org.mycompany.Gender"}}
Examples
The following examples show uses of the Java format.
Class Definitions
The Java examples use the following class definitions:
The following class extends 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;
}
}
Example: Access Values of Java Properties
This example shows how to access the values of Java properties.
Input
The User
values serves as the input payload to the DataWeave script.
new User("Leandro", "Shokida")
Example: Create a Customer Object
This example shows how to create an instance of a Customer
class. The script outputs the object in the JSON format and MIME type.
Notice that it is not necessary to specify the class of inner properties because their class is inferred from the parent class definition.
output application/json
---
{
name: "Tomo",
lastName: "Chibana",
expirationDate: now(),
salesRepr: {
name: "Mariano",
lastName: "de Achaval",
}
} as Object {class: "Customer"}
Example: Use a Generic
This example relies on generic support in the class name to create a java.util.ArrayList
of User
objects.
Note that you do not need to use a generic to specify the class in each instance. The class is taken from the generic in the list.
output application/json
---
[{
name: "Tomo",
lastName: "Chibana"
},
{
name: "Ana",
lastName: "Felissati"
},
{
name: "Leandro",
lastName: "Shokida"
}
] as Array {class: "java.util.ArrayList<User>"}
Configuration Properties
DataWeave supports the following configuration properties for the Java format.
Writer Properties
The Java format accepts properties that provide instructions for writing output data.
Parameter | Type | Default | Description |
---|---|---|---|
|
|
|
If duplicate keys are detected in
an object, the writer will change the value to an array with all those values.
Valid values are |
|
|
|
Indicates whether to add attributes of a key to children of the key. The new attribute key name will start with @. Valid options are |