It sounds good ! Thanks for the proposal. Let me know if you need help with 
Jira, I will do the improvement.

Regards
JB

> Le 11 juin 2021 à 12:35, Łukasz Dywicki <l...@code-house.org> a écrit :
> 
> Indeed It is the same mechanism I would love to see employed in
> mentioned places.
> 
> The way how custom.system.properties works is great. Combined with
> property resolver and fallbacks we can save peoples time in
> synchronizing (jre|custom).properties.
> 
> I will try to book some time for this to register JIRA and cook an PR in
> coming weeks (please don't be surprised if it will turn into a month).
> 
> Best,
> Łukasz
> --
> Integrate software (Code-House) & hardware (ConnectorIO)
> http://code-house.org
> http://connectorio.com
> 
> On 11.06.2021 12:25, Jean-Baptiste Onofre wrote:
>> Hi Lukasz
>> 
>> It’s a good idea for system/custom properties. It’s similar/extend of the 
>> custom.system.properties we already have in system.properties right ?
>> 
>> For json/cfg files, it’s not necessary as we can already override with 
>> system properties or env variables (useful with docker) IMHO.
>> 
>> Regards
>> JB
>> 
>>> Le 11 juin 2021 à 10:34, Łukasz Dywicki <l...@code-house.org> a écrit :
>>> 
>>> Hey all,
>>> 
>>> I recently been going over few Karaf assemblies I created in past years
>>> and I realized that in many cases I had to copy entire configuration
>>> shipped by Karaf distribution in order to include a new config in
>>> bootstrap process.
>>> Quite often my requirements were quite small, yet I had to create two
>>> files and take care of updates of distro shipped file in order to keep
>>> assembly well behaving.
>>> 
>>> Looking at base resources:
>>> https://github.com/apache/karaf/tree/karaf-4.3.2/assemblies/features/base/src/main/filtered-resources/resources/etc
>>> 
>>> If distro builder wants to override or extend any of properties defined
>>> in these he needs to copy a whole file. While it is not a problem for
>>> custom properties it is a burden for jre and system properties which
>>> vary between releases.
>>> 
>>> This week I attempted a bit simplified approach which can be summarized as:
>>> 1) Define default ${optionals} dedicated to overrides, ie. ${optionals}
>>> = custom.config.properties
>>> 2) Update each interesting system property to contain an placeholder
>>> with fallback. For example:
>>> org.osgi.framework.system.packages=\
>>> ... \
>>> org.apache.karaf.info;version="4.2.9",\
>>> ${jre-${java.specification.version}}, \
>>> ${custom.org.osgi.framework.system.packages:-}
>>> 
>>> With this approach user who needs to add an extra import or export for
>>> his environment needs to do just one thing. Create a
>>> "custom.config.properties" file with a single line:
>>> custom.org.osgi.framework.system.packages=jdk.internal.math
>>> 
>>> Packager work related to overrides of distro files is completely
>>> removed. More over this also leaves end user free of the need to fight
>>> ordering of dependencies in maven poms to shade Karaf defaults.
>>> 
>>> While above is quite handy there is a security consideration to be made.
>>> First of all, creation of an optional file might simplify process of
>>> affecting existing Karaf installations through easier injection of
>>> additional options. I believe that proper file and folder permissions
>>> should prevent that, however it must be noted that distro will have more
>>> flexible configuration injection with all pros and cons.
>>> 
>>> Best,
>>> Łukasz
>>> --
>>> Integrate software (Code-House) & hardware (ConnectorIO)
>>> http://code-house.org
>>> http://connectorio.com
>> 

Reply via email to