Should be ... left to users, applications or extensions. A Configuration interface with pretty much nothing but get(String) comes back to a slightly "fancier" Properties class but that's about it. There are tons of Properties extensions, e.g. https://docs.jboss.org/jbossas/javadoc/4.0.4/common/org/jboss/util/property/PropertyMap.html has Red Hat EC alternate Scott Stark among its authors;-)
Werner On Tue, Jul 19, 2016 at 2:34 PM, Werner Keil <[email protected]> wrote: > If get(String) only returns a string, how do you imagine it should be used > by real apps. > > Configuration config = ... > String minAsString = config.get("min.value"); > int minValue = Integer.parseInt(minAsString); > String maxAsString = config.get("max.value"); > int maxValue = Integer.parseInt(maxAsString); > ... > > If the rest is "sugar" as you say that boilerplate code is left to > > Archaius, btw. using Apache Commons Config in production already on > https://github.com/Netflix/archaius has the top most feature > > - Dynamic, Typed Properties > > If the configuration was so crippled, then why not just scrap it along the > lines of > > // Change this interface to whatever you want > public interface SampleConfig { > Integer birthYear(); > List<String> friends(); > URL homepage(); > Map<String, Character> grades(); > } > > public static void main(String... args) { > ConfigurationSource source = new GitConfigurationSourceBuilder() > > .withRepositoryURI("https://github.com/cfg4j/cfg4j-git-sample-config.git") > .build(); > > ConfigurationProvider provider = new ConfigurationProviderBuilder() > .withConfigurationSource(source) > .build(); > > SampleConfig config = configurationProvider.bind("reksio", > SampleConfig.class); > > // Use it! > System.out.println(config.homepage()); > } > > That pretty much goes along the Option Pattern also found in .NET > > https://docs.asp.net/en/latest/fundamentals/configuration.html#options-config-objects > > Btw. believe it or not, a lot of that is also under Apache 2 now coming > from Microsoft;-) > https://github.com/aspnet/Options > > Werner > > > On Tue, Jul 19, 2016 at 1:57 PM, Mark Struberg <[email protected]> > wrote: > >> Thanks Anatole, It’s a start. >> >> But this only covers the consumer part, or did I miss something? >> What about the SPI part? >> >> Do you think we can live without a way to declare where the configuration >> comes from? >> Would this be totally up to the container vendor? >> How to provide default configuration inside e.g. a jar? >> >> @Romain: yes, I also think get(String) is enough, rest is probably sugar. >> The getProperties() actually makes mostly sense on the ConfigSources >> (e.g. for an admin/control page) but probably not on the final >> Configuration instance. >> >> txs and LieGrue, >> strub >> >> >> > Am 19.07.2016 um 13:38 schrieb Romain Manni-Bucau < >> [email protected]>: >> > >> > Ok for ConfigException, ConfigProvider with some rework (see end of the >> > mail) is ok however I think that: >> > >> > - Configuration (as a core API) shouldn't get more than get(String). The >> > "or default" is sugar we'll add on top of that anyway and >> getProperties() >> > implies you can list all entries which can not be possible so I >> wouldn't do >> > it in the main core part (DS did it for historical reasons and I think >> > today it is not the best it could have done) >> > - I tend to think Filter and Source can be part of the core cause >> otherwise >> > you have an entry supplier without any way to provide values. >> > >> > >> > Then about provider: what about just applying bean validation model >> blindy >> > first (provider to load a factory to create through a builder API or >> > through default loading mecanism an instance - of Configuration for >> us)? I >> > don't think we can get rid of the provider layer cause it will likely >> use >> > ServiceLoader - even in OSGi since it will be part of the impl so fine - >> > and the provider will then use what is adapted to its env to load other >> SPI >> > like sources/filters. >> > >> > So it would make a core of (feel free to change name): >> > >> > - Configuration { >> > String get(String); >> > static Configuration buildDefaultConfiguration() { >> > >> byProvider(...loadDefault()...).withSources(...loadDefaults()...).withDeciphers(...loadDefaults()...).build(); >> > } >> > static BootConfig byProvider(String); >> > } >> > - ConfigurationProvider { >> > Configuration build(BootConfig) >> > } >> > - BootConfig { >> > withSources(sources...); >> > withDeciphers(filters...); >> > Configuration build(); >> > } >> > - ConfigurationSource { String get(String); String name(); } // but >> don't >> > impl Configuration for future >> > - ConfigurationDecipher { String decipher(String); String name(); } >> > >> > >> > wdyt? >> > >> > >> > >> > Romain Manni-Bucau >> > @rmannibucau <https://twitter.com/rmannibucau> | Blog >> > <https://blog-rmannibucau.rhcloud.com> | Old Wordpress Blog >> > <http://rmannibucau.wordpress.com> | Github < >> https://github.com/rmannibucau> | >> > LinkedIn <https://www.linkedin.com/in/rmannibucau> | Tomitriber >> > <http://www.tomitribe.com> | JavaEE Factory >> > <https://javaeefactory-rmannibucau.rhcloud.com> >> > >> > 2016-07-19 13:18 GMT+02:00 Werner Keil <[email protected]>: >> > >> >> Sounds like a plan. >> >> >> >> Not sure, if a "general" top level configuration type specialized for >> >> String allows extending it in another model without some restrictions, >> but >> >> if the java.util.Properties like get(String) is of minimalistic use, >> e.g. >> >> where it's backed by "good old Properties" anyway why not. Extending >> it it >> >> with a flexible type-system would still be possible. >> >> >> >> Supplier<String> sounds Java SE 8, so in an API that works both in >> Java SE >> >> 6/7 or Java ME 8 that cannot exist. >> >> >> >> If a type like ConfigurationProvider is optional, then it would be >> better >> >> to put it to another package. Makes building smaller modules easier >> IMHO, >> >> otherwise you probably have to use filtering and "Maven magic" to >> ensure >> >> only the mandatory or core types are packaged for a "minimal" profile >> or >> >> situation while everything is built for a "full" scope. >> >> >> >> Werner >> >> >> >> >> >> >> >> On Tue, Jul 19, 2016 at 12:39 PM, Anatole Tresch <[email protected]> >> >> wrote: >> >> >> >>> For me a point is that I would like to see the API being complete, >> >> meaning >> >>> all I need is the API to get a Configuration. Using Java 8 I don't >> need >> >> it, >> >>> so I can provide the ConfigurationProvider for Java 7 only. >> >> ConfigOperator >> >>> and -Query are only there for Java 7, they easily vould be removed >> from >> >> the >> >>> API as well. >> >>> But talking about minimal: a*lso the idea of organizing configuration >> as >> >>> property sources is already a design decision the API should not care >> >> about >> >>> IMO*. So being really minimal, we need: >> >>> >> >>> - Configuration (interface) >> >>> - ConfigException (exception) >> >>> - ConfigurationProvider (optional) >> >>> >> >>> The key here is Configuration. We agree IMO to provide *single* key >> >> access >> >>> for String values. IMO people also expect access to non-String values, >> >> but >> >>> this must not be part of the core Configuration interface since it >> could >> >>> easily be added as a facade functionality for example, so it can be >> >>> realized as an extension module! >> >>> Accessing a Map<String,String> of properties IMO, and also from user >> >>> feedback, is a wanted functionality. In most cases also the result >> can be >> >>> well calculated and further functionality added on top that most >> people >> >>> expect from a Configuration solution. This is also what we have done >> in >> >> the >> >>> current source tree (see tamaya-functions module). >> >>> >> >>> So my proposal would be: >> >>> >> >>> - reduce the API to these 3 artifacts (including ConfigProvider - it >> >>> doesnt hurt and makes migration from Java 7 to 8 much easier). >> >>> - Remove type support from Configuration, it can be added in a >> >> separate >> >>> module >> >>> , which is not too much change needed). >> >>> . >> >>> - discuss how the ConfigurationProvider loads the Configuration >> >>> instance to be returned (service loader, OSGI service). >> >>> - move all the rest of artifacts into separate modules. This also >> >>> includes the DS inspired parts of PropertySource handling currently >> in >> >>> the >> >>> core module. >> >>> >> >>> >> >>> People already using deltaspike can easily plugin in the DS logic >> without >> >>> having to rewrite anything and start using the new API. In CDI >> >>> Configuration can be determined from using the CDI context (os >> something >> >>> else in stages, where CDI is not yet loaded). Same story for Spring >> and >> >>> more. >> >>> >> >>> This is basically what I proposed in the* tamaya-next branch*: So our >> >>> complete core API fits into half a page! >> >>> >> >>> public interface Configuration { >> >>> String get(String key); >> >>> default String getOrDefault(String key, final String >> defaultValue){...} >> >>> default String getOrDefault(String key, Supplier<String> >> >>> defaultValueSupplier){...} >> >>> Map<String,String> getProperties(); >> >>> } >> >>> public final class ConfigurationProvider { >> >>> [...] >> >>> Configuration getConfiguration(){ >> >>> // tbd >> >>> } >> >>> } >> >>> public class ConfigException extends RuntimeException{ >> >>> private static final long serialVersionUID = -5886094818057522680L; >> >>> public ConfigException(String message){ >> >>> super(message); >> >>> } >> >>> public ConfigException(String message, Throwable t){ >> >>> super(message, t); >> >>> } >> >>> } >> >>> >> >>> J Anatole >> >>> >> >>> >> >>> >> >>> >> >>> >> >>> >> >>> >> >>> 2016-07-19 9:08 GMT+02:00 Werner Keil <[email protected]>: >> >>> >> >>>> tamaya-api-0.2-incubating.jar is just 30 kb right now. >> >>>> While the exact set of methods is questionable in the "design study" >> >>> (just >> >>>> leave it as that and thanks to EC members like myself or Ben there's >> no >> >>>> further damage done by the way it was presented, we're not talking >> >> about >> >>>> JCP aspects here now ;-) a minimalistic approach may leave >> >> Configuration >> >>>> and ConfigException pretty much the only core elements. Not even sure >> >>> about >> >>>> the *Provider. As the name suggests it could be in an SPI, take >> JCache >> >>>> (where only its Caching static facade mixes the two and makes clean >> >>>> separation impossible, CacheProvider is in an SPI package though) >> >>>> >> >>>> *Operator and *Query feel a bit redundant and both can be seen as >> >>> optional. >> >>>> Especially for implementations based on Java 8 one could probably >> stick >> >>> to >> >>>> Function<Configuration, Configuration> or similar to accomplish that. >> >> If >> >>>> Tamaya needs a Java 7 compatibility layer (it'll take years before >> >>>> especially the Enterprise sector will fully adopt even Java SE and EE >> >> 7, >> >>> I >> >>>> work there all the time and see what's used;-) then it could be in a >> >>>> different package/jar, but doesn't have to be in a core API. >> >>>> >> >>>> Cheers, >> >>>> Werner >> >>>> >> >>>> >> >>>> On Tue, Jul 19, 2016 at 3:57 AM, Mark Struberg >> >> <[email protected] >> >>>> >> >>>> wrote: >> >>>> >> >>>>> Then see it as the smallest possible core. It has only 30 kByte >> >> (api+RI >> >>>>> jars). >> >>>>> It even works on ME or Android. >> >>>>> >> >>>>> LieGrue, >> >>>>> Strub >> >>>>> >> >>>>>> Am 19.07.2016 um 01:00 schrieb Werner Keil <[email protected] >> >>> : >> >>>>>> >> >>>>>> We're not talking about the API when it comes to Spring, OSGi or >> >> even >> >>>> CDI >> >>>>>> support. Same for say a YAML module, etc. >> >>>>>> Those are implementation specific. >> >>>>>> >> >>>>>> The more modular and fine-grained the API (of Tamaya) can get, the >> >>>>> better. >> >>>>>> >> >>>>>> CDI has to learn that with V2 only, but for relatively new JSRs or >> >>>> modern >> >>>>>> projects it should be considered right from the start. >> >>>>>> The most basic core API may or may not work even on Java ME >> >> Embedded. >> >>>>>> JSR 363, which has a core of only 4 mandatory core types plus 3 >> >>>>> exceptions. >> >>>>>> If put in a separate JAR those would only take around 5k. Fits even >> >>> the >> >>>>>> smallest Java ME device out there. You may not always be able to >> >> cut >> >>>>> things >> >>>>>> as small in "Server Land" but getting the idea and trying to be >> >>> modular >> >>>>>> even before the JDK starts to enforce that with Java 9 is the right >> >>>>>> approach. >> >>>>>> >> >>>>>> >> >>>>>> On Mon, Jul 18, 2016 at 11:13 PM, Romain Manni-Bucau < >> >>>>> [email protected]> >> >>>>>> wrote: >> >>>>>> >> >>>>>>> Le 18 juil. 2016 23:04, "Werner Keil" <[email protected]> a >> >>>> écrit : >> >>>>>>>> >> >>>>>>>> Tamaya already works with e.g. Spring despite Spring Framework >> >>>> offering >> >>>>>>>> Config functionality of its own;-) >> >>>>>>>> >> >>>>>>> >> >>>>>>> Yes but libs cant rely on spring config api without bringing back >> >>>> spring >> >>>>>>> core >> >>>>>>> >> >>>>>>>> So as there are other config solutions at Apache like Commons >> >>> Config, >> >>>>>>>> exclusing CDI because DeltaSpike already uses it sounds odd. >> >>>>>>>> >> >>>>>>> >> >>>>>>> Commons config has no link afaik since it provides nice low level >> >>> impl >> >>>>> but >> >>>>>>> no good end user api/integration. It is also too opiniated to be >> >>> good >> >>>>> for a >> >>>>>>> spec since it has a lot of core methods making it hard to >> >> integrate >> >>>> with >> >>>>>>> all frameworks without limitations. >> >>>>>>> >> >>>>>>> That is why tamaya core should be minimal IMO. >> >>>>>>> >> >>>>>>>> There are even Apache projects like Tapestry that still offer >> >> their >> >>>> own >> >>>>>>> DI >> >>>>>>>> mechanism beside a JSR 330/CDI one, so I hope you're not >> >> suggesting >> >>>>>>> Tamaya >> >>>>>>>> should do the same just to "avoid" DeltaSpike?;-O >> >>>>>>>> >> >>>>>>> >> >>>>>>> I'm saying that tamaya core should be light enough to work with >> >> any >> >>>>> context >> >>>>>>> impl and never conflict with them, ie not implementing another >> >>>> context, >> >>>>> ie >> >>>>>>> providing built Config but not store them itself. >> >>>>>>> >> >>>>>>>> >> >>>>>>>> On Mon, Jul 18, 2016 at 10:53 PM, Romain Manni-Bucau < >> >>>>>>> [email protected]> >> >>>>>>>> wrote: >> >>>>>>>> >> >>>>>>>>> Trying to get back on track... >> >>>>>>>>> >> >>>>>>>>> If Tamaya targets CDI it will compete in a useless manner with >> >> DS >> >>> or >> >>>>>>> any >> >>>>>>>>> specific config API, if it targets contextuality it will with >> >> any >> >>>> IoC, >> >>>>>>> if >> >>>>>>>>> it targets coercing it will as well with one or both of previous >> >>>>>>> points. >> >>>>>>>>> >> >>>>>>>>> So IMO Tamaya API should be as Mark explained about handling >> >>> sources >> >>>>>>> and >> >>>>>>>>> filters to build on Config which can provide string access - and >> >>> not >> >>>>>>>>> properties cause it shouldnt be listable by default IMO. >> >>>>>>>>> >> >>>>>>>>> In term of API design I would align it on bval - a factory with >> >> a >> >>>>>>> builder >> >>>>>>>>> or a default loading to get a Config. It is core for me. Mark >> >>> likes >> >>>> to >> >>>>>>>>> count classes: factory + config + provider + source + source >> >>>> provider >> >>>>> + >> >>>>>>>>> filter (we can merge few of them using j8, not sure it is good >> >> but >> >>>>>>> would >> >>>>>>>>> work). >> >>>>>>>>> >> >>>>>>>>> Once we agree on that we will have to discuss on top of that: >> >>>>>>>>> >> >>>>>>>>> - integrations >> >>>>>>>>> - injections (injection points vs proxy Bean) >> >>>>>>>>> - coercion >> >>>>>>>>> - default impls >> >>>>>>>>> - .... >> >>>>>>>>> >> >>>>>>>>> But making the API small, strong and usable by all is important >> >>> IMHO >> >>>>>>>>> >> >>>>>>>>> Le 18 juil. 2016 22:41, "Werner Keil" <[email protected]> a >> >>>> écrit >> >>>>>>> : >> >>>>>>>>> >> >>>>>>>>>> Sorry to dissapoint you, but I was involved at least in Tamaya >> >>>> before >> >>>>>>>>>> Anatole even proposed it. >> >>>>>>>>>> I was nearly asked to give the presentation on what later >> >> became >> >>>>>>> Tamaya >> >>>>>>>>> by >> >>>>>>>>>> Mike Keith when he was stuck in heavy Monsoon rain at GIDS >> >>> 2011;-) >> >>>>>>>>>> >> >>>>>>>>>> I know what Commons Config, Tamaya or DeltaSpike can be used >> >> for. >> >>>> And >> >>>>>>>>>> helped clients who found e.g. DeltaSpike too complex and >> >>> overloaded >> >>>>>>> by >> >>>>>>>>>> contributing to their in-house CDI-based configuration >> >> framework >> >>>>>>>>> "inspired" >> >>>>>>>>>> by it. So Tamaya isn't the only example of API that some find >> >>> "too >> >>>>>>>>> much"... >> >>>>>>>>>> >> >>>>>>>>>> Werner >> >>>>>>>>>> >> >>>>>>>>>> >> >>>>>>>>>> On Mon, Jul 18, 2016 at 10:08 PM, Mark Struberg >> >>>>>>>>> <[email protected] >> >>>>>>>>>>> >> >>>>>>>>>> wrote: >> >>>>>>>>>> >> >>>>>>>>>>> It seems you do not yet understand the mechanics behind >> >>> DeltaSpike >> >>>>>>> and >> >>>>>>>>>>> Tamaya. Let me elaborate: Properties (and commons-config1&2 as >> >>>> well >> >>>>>>> for >> >>>>>>>>>>> that matter) only handle information from a SINGLE file. >> >>>>>>>>>>> >> >>>>>>>>>>> Whereas the ConfigSource approach abstracts that into an >> >> ordered >> >>>>>>> stack >> >>>>>>>>> of >> >>>>>>>>>>> _multiple_ such 'sources'. And such a >> >>> ConfigSource/PropertySource >> >>>>>>> also >> >>>>>>>>>>> doesn't need to be a single property file. It can be anything >> >>>> which >> >>>>>>>>> gives >> >>>>>>>>>>> access to configuration information. >> >>>>>>>>>>> >> >>>>>>>>>>> So yes, it should imo be as easy as property files - even >> >>> easier. >> >>>>>>> But >> >>>>>>>>> it >> >>>>>>>>>>> is not a _single_ file but many of them. And not only property >> >>>>>>> files >> >>>>>>>>> but >> >>>>>>>>>> a >> >>>>>>>>>>> freely extensible bunch of different such configuration >> >> sources! >> >>>>>>>>>>> >> >>>>>>>>>>> I hope you _now_ see the huge difference. >> >>>>>>>>>>> Regarding type-safety: I already wrote that twice: check out >> >>>>>>>>> ConfigValue. >> >>>>>>>>>>> (copying the example again): >> >>>>>>>>>>> >> >>>>>>>>>>> --- >> >>>>>>>>>>>> This allows for things like >> >>>>>>>>>>> >> >>>>>>>>>>>> ConfigValue<Integer> reloadAfterCfg = >> >>>>>>>>>>>> >> >> ConfigProvider.getConfig().access("myproject.mydb.reloadAfter") >> >>>>>>>>>>>> .as(Integer.class) >> >>>>>>>>>>>> .withDefault(1000) >> >>>>>>>>>>>> .cacheFor(5, TimeUnit.MINUTES) >> >>>>>>>>>>>> .evaluateVariables(true) >> >>>>>>>>>>>> .withLookupPath(config.getValue("myproject.dbvendor"), >> >>>>>>>>> projectStage); >> >>>>>>>>>>>> >> >>>>>>>>>>>> And later use >> >>>>>>>>>>>> reloadAfterCfg.getValue()--- >> >>>>>>>>>>> >> >>>>>>>>>>> LieGrue, >> >>>>>>>>>>> strub >> >>>>>>>>>>> >> >>>>>>>>>>> >> >>>>>>>>>>> >> >>>>>>>>>>> >> >>>>>>>>>>> On Monday, 18 July 2016, 21:53, Werner Keil < >> >>>> [email protected] >> >>>>>>>> >> >>>>>>>>>> wrote: >> >>>>>>>>>>>> To consider possible simplification and common denominators, >> >> it >> >>>>>>> seems >> >>>>>>>>>>> good to have a look at Tamaya's base interface: >> >>>>>>>>>>> >> >>>>>>> >> >>> http://tamaya.apache.org/apidocs/org/apache/tamaya/Configuration.html >> >>>>>>>>>>>> and >> >>>>>>>>>>>> >> >>>>>>>>>>> >> >>>>>>>>>> >> >>>>>>>>> >> >>>>>>> >> >>>>>>> >> >>>>> >> >>>> >> >>> >> >> >> https://commons.apache.org/proper/commons-configuration/apidocs/org/apache/commons/configuration2/ImmutableConfiguration.html >> >>>>>>>>>>>> >> >>>>>>>>>>>> they have at least some very basic methods in common. Leaving >> >>> the >> >>>>>>>>> order >> >>>>>>>>>>> of key or type aside. >> >>>>>>>>>>>> >> >>>>>>>>>>>> >> >>>>>>>>>>>> In your proposed Config interface I only saw a >> >>>>>>>>>>>> String get(String) method, but for that sorry, we could just >> >>>> stick >> >>>>>>> to >> >>>>>>>>>> the >> >>>>>>>>>>> good old Properties and forget about the whole thing ;-| >> >>>>>>>>>>>> >> >>>>>>>>>>>> >> >>>>>>>>>>>> A default or convenience method (what Commons Config 2 calls >> >>>>>>>>>> getString()) >> >>>>>>>>>>> why not, but without type-safe yet extensible getters, there >> >> is >> >>>>>>> little >> >>>>>>>>>>> value to create a new API with more or less the same value >> >>>>>>> (literally) >> >>>>>>>>>> than >> >>>>>>>>>>> java.util.Properties. >> >>>>>>>>>>>> >> >>>>>>>>>>>> >> >>>>>>>>>>>> I know you're on the CDI EG, other than that, not sure, >> >> which >> >>>>>>> others >> >>>>>>>>>>> (according to JCP.org, not mailing lists or other forms of >> >>>>>>>>> contribution) >> >>>>>>>>>>>> Being on both sides (EG and EC) in many cases, I am used to >> >>>>>>> question >> >>>>>>>>>> JSRs >> >>>>>>>>>>> and their Spec Leads, so it's not bad if this happens before >> >> any >> >>>> of >> >>>>>>>>> that >> >>>>>>>>>>> was filed or sonsidered towards a JSR. >> >>>>>>>>>>>> >> >>>>>>>>>>>> >> >>>>>>>>>>>> Although there had been 2 attempt (one even by Adam Bien at a >> >>>> very >> >>>>>>>>> early >> >>>>>>>>>>> stage of his efforts in the JCP) JSR 377 is an example for a >> >>>>>>> seemingly >> >>>>>>>>>>> premature JSR proposal. And unless Andres does some "miracle" >> >> it >> >>>>>>> may >> >>>>>>>>>> likely >> >>>>>>>>>>> be shut down by the EC with the next Renewal Ballot. >> >>>>>>>>>>>> >> >>>>>>>>>>>> >> >>>>>>>>>>>> So JCP.next introduced a few measures to avoid "neverending >> >>> JSRs" >> >>>>>>> like >> >>>>>>>>>>> 107 or 310 now, but sometimes it isn't a bad thing to wait or >> >>> file >> >>>>>>> it >> >>>>>>>>>> based >> >>>>>>>>>>> on experience by one or several Open Source projects. >> >> Hibernate >> >>>> was >> >>>>>>>>> one, >> >>>>>>>>>>> but considering the JPA RI is based on TopLink (now >> >> EclipseLink) >> >>>> it >> >>>>>>>>>>> certainly isn't the only project behind what became JPA >> >> either. >> >>>>>>>>>>>> >> >>>>>>>>>>>> >> >>>>>>>>>>>> Cheers, >> >>>>>>>>>>>> Werner >> >>>>>>>>>>>> >> >>>>>>>>>>>> >> >>>>>>>>>>>> >> >>>>>>>>>>>> On Mon, Jul 18, 2016 at 9:15 PM, Mark Struberg >> >>>>>>>>>> <[email protected]> >> >>>>>>>>>>> wrote: >> >>>>>>>>>>>> >> >>>>>>>>>>>> Yes Werner, we know. >> >>>>>>>>>>>>> >> >>>>>>>>>>>>> >> >>>>>>>>>>>>> But nonetheless Hibernate managed to >> >>>>>>>>>>>>> >> >>>>>>>>>>>>> a.) get the spec on the ground pretty efficiently >> >>>>>>>>>>>>> b.) implemented the JPA specification on top of their own >> >>> logic >> >>>>>>> in a >> >>>>>>>>>>> timely fashion. >> >>>>>>>>>>>>> >> >>>>>>>>>>>>> >> >>>>>>>>>>>>> As you know I'm contributing to a number of specifications >> >> as >> >>> an >> >>>>>>>>>>> _active_ JCP EG member myself for many years now, so I really >> >>> know >> >>>>>>> all >> >>>>>>>>>> this >> >>>>>>>>>>> stuff! >> >>>>>>>>>>>>> >> >>>>>>>>>>>>> On the original topic: if I say '5 interfaces' than those >> >>> don't >> >>>>>>> need >> >>>>>>>>> to >> >>>>>>>>>>> be exactly the ones I proposed. I also don't care whether we >> >>> call >> >>>>>>> them >> >>>>>>>>>>> ConfigSource or PropertySource (as example). All I like to do >> >> is >> >>>> to >> >>>>>>>>>> review >> >>>>>>>>>>> and clean up the API. After all this is a community decision. >> >>> If a >> >>>>>>>>>> majority >> >>>>>>>>>>> of Tamaya committers say I'm nuts and the current API is fine, >> >>>> then >> >>>>>>> be >> >>>>>>>>>> it. >> >>>>>>>>>>> Otoh if the majority is to do the cleanup then we should do it >> >>>>>>>>> properly. >> >>>>>>>>>>>>> >> >>>>>>>>>>>>> LieGrue, >> >>>>>>>>>>>>> strub >> >>>>>>>>>>>>> >> >>>>>>>>>>>>> >> >>>>>>>>>>>>> >> >>>>>>>>>>>>> >> >>>>>>>>>>>>> >> >>>>>>>>>>>>>> On Monday, 18 July 2016, 20:55, Werner Keil < >> >>>>>>> [email protected] >> >>>>>>>>>> >> >>>>>>>>>>> wrote: >> >>>>>>>>>>>>>>> Hibernate vs. JPA is also an interesting read: >> >>>>>>>>>>>>>> >> >>>>>>>>>>> >> >>>>>>>>>> >> >>>>>>>>> >> >>>>>>> >> >>>>>>> >> >>>>> >> >>>> >> >>> >> >> >> http://stackoverflow.com/questions/9881611/whats-the-difference-between-jpa-and-hibernate >> >>>>>>>>>>>>>> Like Tamaya, Apache Commons Config or other config >> >> solutions, >> >>>>>>>>>>> Hibernate was >> >>>>>>>>>>>>>> there before JPA. Its creators were involved as well as >> >> many >> >>>>>>> others >> >>>>>>>>>>> (even >> >>>>>>>>>>>>>> Apache or Novell;-) >> >>>>>>>>>>>>>> >> >>>>>>>>>>>>>> Werner >> >>>>>>>>>>>>>> >> >>>>>>>>>>>>>> >> >>>>>>>>>>>>>> >> >>>>>>>>>>>>>> On Mon, Jul 18, 2016 at 7:56 PM, Gerhard Petracek < >> >>>>>>>>>>> [email protected]> >> >>>>>>>>>>>>>> wrote: >> >>>>>>>>>>>>>> >> >>>>>>>>>>>>>>> before i vote, i would like to hear if there is a real >> >>>>>>> blocker >> >>>>>>>>> for >> >>>>>>>>>> a >> >>>>>>>>>>>>>>> simpler api (besides collections). >> >>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>> regards, >> >>>>>>>>>>>>>>> gerhard >> >>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>> >> >>>>>>>>>>>>> >> >>>>>>>>>>>> >> >>>>>>>>>>>> >> >>>>>>>>>>>> >> >>>>>>>>>>> >> >>>>>>>>>> >> >>>>>>>>> >> >>>>>>> >> >>>>> >> >>>>> >> >>>> >> >>> >> >>> >> >>> >> >>> -- >> >>> *Anatole Tresch* >> >>> PPMC Member Apache Tamaya >> >>> JCP Star Spec Lead >> >>> *Switzerland, Europe Zurich, GMT+1* >> >>> *maketechsimple.wordpress.com <http://maketechsimple.wordpress.com/> >> * >> >>> *Twitter: @atsticks, @tamayaconf* >> >>> >> >> >> >> >
