-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

Hi again,

here's my proposal for a solution to the slight conf. API mess:
https://github.com/rsmeral/deltaspike/commit/d270ac0cb6d5ed47a5912365f95
9145b12da0e99

Main change: a new type-safe fluent API for typed config resolution

Connection conn = ConfigResolver.resolve("db.connection")
  .as(Connection.class, new ConnectionConverter())
  .parameterizedBy("db.vendor")
  .withCurrentProjectStage(true)
  .strictly()
  .withDefault(whatever)
  .getValue();

or simply

  String conn = ConfigResolver.resolve("db.connection").getValue();

This would obsolete TypedConfig since ConfigResolver would be
implicitly type-aware and it brings the type conversion functions from
DefaultConfigPropertyProducer and TypedConfig into ConfigResolver.

We would also mark the dynamic configurations with some interface
(currently DeltaSpikeConfig), mark the static ones with another (e.g.
DeltaSpikeBaseConfig).

Check out the commit (and also DELTASPIKE-885) for more details.

Thanks for any comments, reviews and suggestions :)

R.

On 28.4.2015 12:33, Ron Smeral wrote:
> Thanks for the clarification. I'll try to answer my own question 
> then, please comment if anything is not right:
> 
>> * why does PropertyFileConfig implement DeltaSpikeConfig? Doesn't
>> make sense to me, given the purpose of DeltaSpikeConfig.
> 
> I guess this was not intentional and is a bug. I'll file an issue 
> for this.
> 
>> * is there any reason why the ones from the first category 
>> (TransactionConfig and JsfModuleConfig) couldn't be implemented 
>> using the second way (TypedConfig)?
> 
> They couldn't, synce TypedConfig is for "static" boot-time 
> configuration .
> 
>> * if none of the above is applicable, then: shouldn't the 
>> TypedConfig ones (CoreBaseConfig, ...) implement DeltaSpikeConfig
>> as well?
> 
> I understand that we'd like to keep DeltaSpikeConfig as the marker 
> for all "dynamic" configuration, i.e. the way it's used now. Maybe 
> we could introduce a new interface to expose the TypedConfig-based 
> interfaces, sth. like DeltaSpikeBaseConfig.
> 
> R.
> 
> On 27.4.2015 21:36, Mark Struberg wrote:
>> Hi!
> 
>> Sorry for brevity. Like to quickly sum up what we discussed on 
>> irc:
> 
>> .) DeltaSpikeConfig is merely a marker interface for 
>> interfaces/classes which can be used to define the behaviour of 
>> certain DeltaSpike features at runtimy. Since this is a class it
>>  can return different values for each invocation. This is e.g. 
>> useful for the LocaleResoler configuration (each user request 
>> could result in another Locale). Otoh this configuration 
>> mechanism is only available once the CDI container finally got 
>> booted. So it can NOT be used to e.g. configure CDI Extensions 
>> itself.
> 
>> .) ConfigResolver based configuration. The TypeConfig is 
>> basically a object which contains the config-key + code to
>> access the value. This mechanism is purely JavaSE and thus can
>> also be used to configure Extensions itself as well. It’s also
>> more the kind of a ’static’ configuration.
> 
>> LieGrue, strub
> 
> 
>>> Am 27.04.2015 um 19:38 schrieb Ron Smeral 
>>> <rsme...@apache.org>:
>>> 
>> Hi,
> 
>> DeltaSpike itself is currently configured in at least 2 different
>> ways: * using interfaces extending DeltaSpikeConfig: **
>> org.apache.deltaspike.jpa.api.transaction.TransactionConfig **
>> org.apache.deltaspike.jsf.api.config.JsfModuleConfig (** 
>> PropertyFileConfig (Why? It does not configure just DS itself.))
> 
>> * using interfaces with static TypedConfig instances: ** 
>> org.apache.deltaspike.testcontrol.impl.jsf.MyFacesTestBaseConfig 
>> ** org.apache.deltaspike.testcontrol.api.junit.TestBaseConfig **
>>  org.apache.deltaspike.scheduler.impl.SchedulerBaseConfig ** 
>> org.apache.deltaspike.jsf.api.config.base.JsfBaseConfig ** 
>> org.apache.deltaspike.core.api.config.base.CoreBaseConfig
> 
>> My questions are: * why does PropertyFileConfig implement 
>> DeltaSpikeConfig? Doesn't make sense to me, given the purpose of
>>  DeltaSpikeConfig.
> 
>> * is there any reason why the ones from the first category 
>> (TransactionConfig and JsfModuleConfig) couldn't be implemented 
>> using the second way (TypedConfig)?
> 
>> * if none of the above is applicable, then: shouldn't the 
>> TypedConfig ones (CoreBaseConfig, ...) implement DeltaSpikeConfig
>> as well?
> 
>> I hacked up a quick suggestion of how this could look: 
>> https://github.com/rsmeral/deltaspike/commit/b5be1c79b67d6a15b30036ed
9
>
>>
>> 
0a
> 
> 
> 7b90fba9b5e00
> 
>> Currently, having two ways of configuration defies the purpose
>> of DeltaSpikeConfig -- that is allowing to find DS configuration
>>  points easily.
> 
>> WDYT?
> 
>> Regards, Ron
> 
> 
> 
> 

- -- 
Ron Smeral
JBoss Quality Engineer
Brno
-----BEGIN PGP SIGNATURE-----

iQIcBAEBCgAGBQJVQiyEAAoJEJr1g28gQ1chuRAP/i+gtqFmLjeg17zQrPolUK/o
0/ZlGHonIHmMR8+ePWDpJIKMLgXRmj1pOk62sFbpGWDApfj2BLCfn/Lxz1L+6Zqp
srsOrlQ3dYyy2kwHaPytClx6KNFcaBbK3p+BK5BR1IS2X2mtrRGhCZ7yWDRe6KKI
JS0veh39NFfojhT/O7cImRqKRzsf6e1FoSRxCH/mFXOO5GBE3g/yPs+5j9kXwWjO
DQffBl5II4lw4JHIvZeQW/JNC3hfq5Sgmxn3v6DtFnsurjqwkFpvwyD5kJDG6N2V
LE6jX4QS0qbQB698OTH0efa0cvm19OcCobHvoWLvxtSr53yEdigtuYjcLU5ku5e3
Wb1jjS4L6X/RN0c9QjsEm6d9zDJ4jZFbKPNziHezjWKEy/jbSbpft8peCHC9ApUg
7JLMT/tOHbAcQTTPYZHgYcJ0J2Ko49riJr0ymFJlfv3OE+LYOJ2R24G5YgDHteAF
C2DOTjsutcaIRI36VqezjK3o/0kaX1NTM7vMfxtJNEWTJFH9KyDrJ45hat4swleH
HCbnbt7lOV/nwJKSerylWpwnG+g3uy04r6YLEYipPKeyBgF/o+ILYk31iEkOYwEA
GDt5Jsmr9rqxVEZgINK9MnT0w6vKcyq9JTq4lDvaWlcBmmBGmLQCttUnzoLNtA5N
BG3tQ2IZbCamQnnxL0NR
=ewF+
-----END PGP SIGNATURE-----

Reply via email to