Hi

2017-02-07 10:31 GMT+01:00 Svetlin Zarev <svetlin.angelov.za...@gmail.com>:

> Hello,
>
> In *one* of the configuration factory constructors a system property is
> set:
>
> public ConfigurationFactory() {
>     this(!shouldAutoDeploy());
>     System.setProperty("bval.in-container", "true");
> }
>
> What do you think about moving this to system.properties ? The reason is
> that:
>

well, not an option cause 80% of "tomee" usages are not in tomee and don't
have system.properties - but doesn't mean we can't move it, just that the
file will not work


> * it's really hidden and not obvious why it's there
>

Was the most common piece of code executed early enough when added and also
a place you can override and change if you desire to keep default behavior
or have a custom one. We can surely make it part of SystemInstance but
override will be harder.


> * it's being set every time in case of vanilla tomee
>

Was one of the goal, not sure I see what the issue is


> * it's not set when using custom configuration factory when you use one of
> the other constructors (and this breaks CDI)
>

Not set: was part of the goal to let the custom factory change that easily
but agree we can find a better place
Breaks CDI: depends the CDI config actually but by default yes cause
BValExtension will try to add a validator and validator factory but openejb
does it as well


> * IMO it's a good idea to have all global properties at one place, instead
> of being scattered in the source
>

Yes and no, there are multiple kind of properties:

- global one ("enforced") like this one: not against aggregating them but
gain shouldn't be that big
- speific ones: this needs to be done per code area and not aggregated all
together (you will not put tomee properties in openejb code for instance)
- "in case ones": we have some of that kind where it is there just cause it
can break and it enables the user to make its app working even if default
is not desired. These ones are not all very official and I don't find it
that bad to hide them a bit cause we shouldn't encourage them

So story short: we can aggregate several ones but we can't - I think - put
them all in a single SystemProperties class.

Side note (find it funny): you complain this property is skipped if you use
another constructor but same applies to the auto deploy one ;)

Finally note official properties are listed on
http://tomee.apache.org/admin/configuration/server.html

If we miss a bit we can add them but this bval one is an internal one. At
some point we can even drop it from bval and just detect we run in tomee
and set it this way instead of using a system property - maybe better?


>
> Kind regards,
> Svetlin
>

Reply via email to