import com.sun.graft.GraftBuilder;
import com.sun.graft.filter.ConditionalFilter;
import com.sun.graft.function.Functions;
import com.sun.graft.provenance.Grafter;
import com.sun.graft.provenance.Provenance;
import com.sun.graft.provenance.ProvenanceContext;
import com.sun.graft.source.Item;
import com.sun.graft.source.ItemBuilder;
import com.sun.graft.source.ItemSource;
import com.sun.graft.source.Items;
public class GraftExample {
public static void main(String[] args) {
ItemSource source = new ItemSource.Builder()
.withItems(Items.create("Apple", "Banana", "Carrot"))
.build();
GraftBuilder graftBuilder = new GraftBuilder()
.transform(Functions.toUpper())
.transform(new CustomTransformer())
.compose(Functions.toList());
Grafter grafter = new Grafter.Builder()
.withSource(source)
.withGraftBuilder(graftBuilder)
.build();
ProvenanceContext ctx = Provenance.prepare();
Item result = grafter.getResult(ctx);
System.out.println(result.getValue());
}
static class CustomTransformer implements ConditionalFilter {
@Override
public Item apply(Item item, Provenance provenance) {
if (item.getValue().startsWith("A")) {
Item newItem = ItemBuilder.newBuilder()
.from(item)
.withValue("Avocado")
.build();
return provenance.wrap(newItem);
} else {
return item;
}
}
}
}
json
{
"transformers": [
{
"name": "toUpper",
"type": "com.sun.graft.function.ToUpperCase"
},
{
"name": "customTransformer",
"type": "com.example.CustomTransformer"
}
],
"composers": [
{
"name": "toList",
"type": "com.sun.graft.function.ToList"
}
]
}