Hi,
The StringPropertyReplacer class already provides a method #replaceProperties that replaces ${expression} value with system properties. I think that it can be useful to resolve expression on system properties with system properties.
Example :
<system-properties>
<property name="my.image.dir" value="${jboss.server.data.dir}/image"/>
</system-properties>
Sure I can do the work on my code but I don't want to reference jboss system property :
<system-properties>
<property name="my.image.dir" value="image"/>
</system-properties>
System.getProperty("jboss.server.data.dir") + "/" + System.getProperty("my.image.dir");
If we use StringPropertyReplacer we can also do sometthing like :
<system-properties>
<property name="my.dir" value="/my/dir"/>
<property name="my.image.dir" value="${my.dir:/home}/image"/>
</system-properties>
The basic idea is to check if the added/removed/changed system property resolve expression :
setSystemProperty("my.image.dir", "${jboss.server.data.dir}/image");
# my.image.dir = "${jboss.server.data.dir}/image"
setSystemProperty("jboss.server.data.dir", "/opt/jboss");
# retrieve my.image.dir property, resolve expression and setSystemProperty("my.image.dir", "/opt/jboss/image");
# my.image.dir = /opt/jboss/image
The resolved expression will not be stored on the standalone.xml/domain.xml file.
What do you think ?
Guillaume.