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" } ] }


上一篇:
下一篇:
切换中文