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*
>> >>>
>> >>
>>
>>
>

Reply via email to