Class PropertyReader
- Since:
- 2.5.x
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final String
static final String
Path to the base property file, "/ini/jspwiki.properties", usually overridden by values provided in a jspwiki-custom.properties file.static final String
The servlet context parameter (from web.xml) that defines where the config file is to be found.static final String
The prefix when you are cascading properties. -
Method Summary
Modifier and TypeMethodDescriptionstatic void
expandVars
(Properties properties) You define a property variable by using the prefixvar.x
as a property.static Properties
getCombinedProperties
(String fileName) Returns a property set consisting of the default Property Set overlaid with a custom property setstatic Properties
Returns the property set as a Properties object.static Properties
loadWebAppProps
(javax.servlet.ServletContext context) Loads the webapp properties based on servlet context information, or (if absent) based on the Java System Property "jspwiki.custom.config".static InputStream
locateClassPathResource
(javax.servlet.ServletContext context, String resourceName) Locate a resource stored in the class path.static void
propertyExpansion
(Properties properties) Try to resolve properties whose value is something like${SOME_VALUE}
from a system property first and, if not found, from a system environment variable.
-
Field Details
-
DEFAULT_JSPWIKI_CONFIG
Path to the base property file, "/ini/jspwiki.properties", usually overridden by values provided in a jspwiki-custom.properties file.- See Also:
-
PARAM_CUSTOMCONFIG
The servlet context parameter (from web.xml) that defines where the config file is to be found. If it is not defined, checks the Java System Property, if that is not defined either, uses the default as defined by DEFAULT_PROPERTYFILE. "/ini/jspwiki.properties"- See Also:
-
PARAM_CUSTOMCONFIG_CASCADEPREFIX
The prefix when you are cascading properties. -
CUSTOM_JSPWIKI_CONFIG
- See Also:
-
-
Method Details
-
loadWebAppProps
Loads the webapp properties based on servlet context information, or (if absent) based on the Java System Property "jspwiki.custom.config". Returns a Properties object containing the settings, or null if unable to load it. (The default file is ini/jspwiki.properties, and can be customized by setting "jspwiki.custom.config" in the server or webapp configuration.)Properties sources
The following properties sources are taken into account:- JSPWiki default properties
- System environment
- JSPWiki custom property files
- JSPWiki cascading properties
- System properties
jspwiki
(case unsensitive) are taken into account. Also, to ease docker integration, System env properties containing "_" are turned into ".". Thus,ENV jspwiki_fileSystemProvider_pageDir
is loaded asjspwiki.fileSystemProvider.pageDir
.Cascading Properties
You can define additional property files and merge them into the default properties file in a similar process to how you define cascading style sheets; hence we call this cascading property files. This way you can overwrite the default values and only specify the properties you need to change in a multiple wiki environment.
You define a cascade in the context mapping of your servlet container.
jspwiki.custom.cascade.1 jspwiki.custom.cascade.2 jspwiki.custom.cascade.3
and so on. You have to number your cascade in a descending way starting with "1". This means you cannot leave out numbers in your cascade. This method is based on an idea by Olaf Kaus, see [JSPWiki:MultipleWikis].- Parameters:
context
- A Servlet Context which is used to find the properties- Returns:
- A filled Properties object with all the cascaded properties in place
-
getDefaultProperties
Returns the property set as a Properties object.- Returns:
- A property set.
-
getCombinedProperties
Returns a property set consisting of the default Property Set overlaid with a custom property set- Parameters:
fileName
- Reference to the custom override file- Returns:
- A property set consisting of the default property set and custom property set, with the latter's properties replacing the former for any common values
-
propertyExpansion
Try to resolve properties whose value is something like
${SOME_VALUE}
from a system property first and, if not found, from a system environment variable. If not found on neither, the property value will remain as${SOME_VALUE}
, and no more expansions will be processed.Several expansions per property is OK, but no we're not supporting fancy things like recursion. Reference to other properties is achieved through
expandVars(Properties)
. More than one property expansion per entry is allowed.- Parameters:
properties
- properties to expand;
-
expandVars
You define a property variable by using the prefix
var.x
as a property. In property values you can then use the "$x" identifier to use this variable.For example, you could declare a base directory for all your files like this and use it in all your other property definitions with a
$basedir
. Note that it does not matter if you define the variable before its usage.var.basedir = /p/mywiki; # var.basedir = ${TOMCAT_HOME} would also be fine jspwiki.fileSystemProvider.pageDir = $basedir/www/ jspwiki.basicAttachmentProvider.storageDir = $basedir/www/ jspwiki.workDir = $basedir/wrk/
- Parameters:
properties
- - properties to expand;
-
locateClassPathResource
public static InputStream locateClassPathResource(javax.servlet.ServletContext context, String resourceName) Locate a resource stored in the class path. Try first with "WEB-INF/classes" from the web app and fallback to "resourceName".- Parameters:
context
- the servlet contextresourceName
- the name of the resource- Returns:
- the input stream of the resource or null if the resource was not found
-