See inline...
-----Original Message----- From: Romain Manni-Bucau [mailto:[email protected]] Sent: Donnerstag, 18. Dezember 2014 09:21 To: [email protected] Subject: Re: UC: Configuration Injection (SE) using pseudo code to make it shorter: public class MyConfig { @Config(...) @Codec(deserializer = JSonDeserializer.class, serializer = JSonSerializer.class) MySubConfig sub; } config could then be foo = {"a":"b",...} and MySubConfig = { String b;... }. Until now nothing needing all this stuff but now suppose I modify sub during app lifecycle, how do I store modifications? What I would avoid is to 100% rely on impls (ie I cast my Source and use its store method for instance). -> +1 if we want this feature to be offered, it should be supported by the API... Would be great to be symmetric :) -> I would also start think about how to include this feature as part of the API. My ideas currently are as follows 0) a Codec implements two functional interfaces: ConfigSerializer, ConfigDeserializer (or encoder/decoder? ) 1) Offer creation of a Configuration using a Codec, e.g. String jsonOrWhatever = ...; Codec codec = ...; Configuration config = Configuration.of(jsonOrWhatEver, codec); // takes a deserializer and with templates: String jsonOrWhatever = ...; Codec codec = ...; Configuration config = codec.decode(jsonOrWhatEver); // takes a deserializer MyConfig config = Configuration.of(MyConfig.class, config); // signature public static <T> T of(Class<T> template, Configuration... configs); and Codec codec = ...; Configuration config = ...; String jsonOrWhatever = codec.encode(config); // a serializer // or in addition, when serializer extends ConfigQuery<String> String jsonOrWhatever = config.query(encoder); and Codec codec = ...; MyConfig config = ...; String jsonOrWhatever = codec.encode(config); WDYT? Anatole
