.source(Person.class)
.target(User.class)
.field("name", "username")
.field("age", "age")
.field("emailAddresses", "emails")
.converter("age", AgeConverter.class)
.converter("emailAddresses", EmailConverter.class)
.build();
User user = Grafter.transform(person, User.class);
<people>
<person>
<name>John</name>
<age>30</age>
<email>john@example.com</email>
<email>j.doe@example.com</email>
</person>
<person>
<name>Jane</name>
<age>25</age>
<email>jane@example.com</email>
</person>
</people>
<rules>
<rule source="Person" target="User">
<field source="name" target="username"/>
<field source="age" target="age"/>
<field source="email" target="emails"/>
<converter field="age" class="com.example.AgeConverter"/>
<converter field="email" class="com.example.EmailConverter"/>
</rule>
</rules>
DataSource source = new FileDataSource("person.xml");
RuleSource ruleSource = new FileRuleSource("rules.xml");
GrafterConfig config = new GrafterConfig()
.dataSource(source)
.ruleSource(ruleSource);
Grafter grafter = new DefaultGrafter(config);
User user = grafter.transform("Person", "User", person);
public class AgeConverter implements Converter<Integer, Integer> {
public Integer convert(Integer input) {
return input + 10;
}
}
public class EmailConverter implements Converter<Collection<String>, String> {
public String convert(Collection<String> input) {
return input.iterator().next();
}
}