package com.netflix.fabricator; /** * I. Primitive type * prefix.${id}.field1=boolean|number|string|list|... withField1(String value) * withField1(Supplier<String> value) * withField1(ListenableSupplier<String> value) * * II. Named * 1. prefix.${id}.field1=${name} withField1(Foo foo); * * bind(Foo.class).annotatedWith("name").to(FooImpl.class) // Has a named binding * MapBinder<String, Snack> mapbinder * = MapBinder.newMapBinder(binder(), String.class, Snack.class); * * III. Policy (policy is an interface) * 1. prefix.${id}.policy1.type MapBinder<String, Snack> mapbinder * prefix.${id}.policy1.field1=... = MapBinder.newMapBinder(binder(), String.class, Snack.class); * * IV. Embedded (embedded is a complex type) withFoo(Foo foo); // No named binding * 1. prefix.${id}.embedded1.field1 * prefix.${id}.embedded2.field2 * * @author elandau * */ public interface PropertyBinder { public boolean bind(Object obj, ConfigurationNode node) throws Exception; }