@MinDoc(copyright="Copyright 1999 - 2009, 2016, 2021 A. Weinert", author="Albrecht Weinert", version="V.50", lastModified="4.06.2021", usage="3 phase: make, populate, use (preferably not further modified)", purpose="extended capabilities of PropMap for applications, App, ...") public class Prop extends PropMap
Map
, AbstractMap
and
de.frame4j.util.PropMap
sense properties are set of
key-value-pairs.Prop
unites both these aspects. Prop
extends
PropMap
by an ample bundle of utility functions for applications
of all kinds. Among others these are:Prop()
a Prop
object containing the (basic)
properties for the parameter evaluation mentioned above; see
there
. This enables all utilising applications to evaluate
start respectively initialisation parameters
with little to null programming effort.Properties
and
PropMap
entries can be loaded from text files (streams) obeying a
quite primitive syntax rules. Some of the constructors and methods load
files and resources of that kind, using a simple name and some
suffixesApp
and
Prop(App, CharSequence)
).Prop
object's properties named (keyed) "language"
and "region". Some methods, like
nationalise(CharSequence, CharSequence, CharSequence)
allow a
direct setting of language and / or region. This supports easy
nationalising of applications without re-starting (or worse
re-building).AppLangMap
supports these tasks further; in co-operation
with this class even a very basic Prop
(the name.properties above)
object has multilingual stereotypical expressions and output patterns; see
also PropMap.valueLang(CharSequence, String)
.Prop
widely simplifies (especially when extending
de.frame4j.util.App
) the handling and evaluation of those
start parameters (s.u.). See also some helpers in the
class de.frame4j.text.TextHelper
for preparing start
parameters for sub processes, applications or plug-ins.Prop
to evaluate its
(String[]) start parameters; this is supported among others by the methods
parse()
and setFields()
. An application extending
de.frame4j.util.App
— a good choice instead of starting
on empty ground — gets all this by just using one of the
inherited methods
go(String[]...)
for starting.SVNkeys
.PropMap
,
AppLangMap
,
AppHelper
,
App
,
parse(String[], CharSequence, boolean)
,
parse(String[], CharSequence)
,
setFields(Object)
,
PropMapHelper.setField(Object, String, String)
,
Serialized FormPropMap.EntrySet, PropMap.KeySet<S>
AbstractMap.SimpleEntry<K,V>, AbstractMap.SimpleImmutableEntry<K,V>
Modifier and Type | Field and Description |
---|---|
protected Class<?> |
baseClass
A base class.
|
protected URL |
baseURL
A base URL.
|
entries, FILE_LIST_LEN, hashMissMax, hashMissSum, internalEntrySet, internalKeySet, keyStringMld, language, region, reHashes, rLock, valStringMld, VL_CL, wLock
Constructor and Description |
---|
Prop()
Constructor with basic presettings for applications.
|
Prop(App app,
CharSequence commBeg)
Constructor with presettings by an application (App object).
|
Prop(char se)
Constructor with basic pre-settings for web services.
|
Prop(CharSequence fileName,
CharSequence encoding)
Constructor with presettings from a file (by name).
|
Prop(Class<?> cl,
String shortClassName,
boolean allowNoPropFile,
String extraProp)
Constructor with presettings related to a class.
|
Prop(Map<CharSequence,String> preset)
Constructor with presettings by a Map.
|
Prop(URL baseURL,
String fileName,
CharSequence encoding)
Constructor with presettings from a file with a base URL.
|
Modifier and Type | Method and Description |
---|---|
Object |
changeProperty(CharSequence keyValue)
Change an existing property.
|
AppLangMap |
getAppLangMap()
Fitting language object.
|
InputStream |
getAsFileStream(CharSequence fileName)
Get an input stream for a file name.
|
InputStream |
getAsResourceStream(String fileName)
Get an input stream for a file name as resource.
|
InputStream |
getAsStream(String fileName,
String ext)
Get an input stream for a file name as file or as resource.
|
boolean |
getBoolean(CharSequence name,
int num,
boolean def)
Fetching a "numbered" property as boolean with default.
|
String |
getHelpText(String def)
Fetching the property "helpText" nationalised.
|
int |
getInt(String name,
int num,
int def)
Fetching a "numbered" property as int with default.
|
String |
getProperty(CharSequence key,
int num)
Fetching a "numbered" or indexed property as non empty
String.
|
String |
getResString(CharSequence key,
String def)
Fetching a property also indirectly from a resource —
nationalised.
|
String |
getString(String name,
int num,
String def)
Fetching a "numbered" or indexed property as non empty
String.
|
String |
getText(CharSequence key)
Fetching a property as (non null) text.
|
StringBuilder |
list()
List all properties as StringBuilder .
|
void |
list(PrintStream out)
Output all properties to a PrintStream .
|
void |
list(PrintWriter out)
Output all properties to a PrintWriter .
|
boolean |
load(CharSequence fName,
CharSequence encoding)
Loading of properties from a .properties text file.
|
boolean |
load1(Class<?> cl,
CharSequence fileName,
CharSequence encoding)
Loading of properties from a text file; class related.
|
boolean |
load1(URL url,
CharSequence fileName,
CharSequence encoding)
Loading of properties from a text file; URL related.
|
boolean |
nationalise(CharSequence fileName,
CharSequence lang,
CharSequence reg)
Nationalising the properties.
|
void |
parse(String[] args,
CharSequence commSt)
Evaluate or parse a sequence of parameters.
|
void |
parse(String[] args,
CharSequence commSt,
boolean partial)
Evaluate or parse a sequence of parameters.
|
String |
percReplace(String val)
Replace references to properties by their values.
|
int |
setFields(Object obj)
Setting an object's fields (beans properties).
|
protected PropMapHelper.Entry |
substLang(String key,
String lang,
String regio,
String def)
Get a substitute entry for a key — nationalised.
|
String |
valueLang(CharSequence key)
Fetching a value preferably in user language.
|
add, asProperties, clear, clear, clone, containsKey, containsValue, deepIt, entry, entrySet, equals, get, getBoolean, getBoolean, getInt, getLanguage, getLong, getProperty, getProperty, getProperty, getProperty, getRegion, getString, getString, hashCode, hashQuality, indexOfKey, isEmpty, keySet, load, load1, put, put, putAll, putIfAbsent, putImpl, putNewImpl, putNewImut, rehash, rehash, remove, remove, remove, replace, replace, setLanguage, setNewProperty, setNewProperty, setProperty, setProperty, setProperty, setRegion, size, sortedKeys, sortedList, store, subSet, toString, value, valueLang
values
finalize, getClass, notify, notifyAll, wait, wait, wait
compute, computeIfAbsent, computeIfPresent, forEach, getOrDefault, merge, replaceAll
protected URL baseURL
load()
methods.public Prop()
- verbosity=normal *)
- help = false *)
- option-v= verbosity = verbose
- option-verbose= verbosity = verbose
- option-silent= verbosity = silent
- option-normal= verbosity = normal
- option-debug= verbosity = debug
- option-test= verbosity = test
- option-a= outMode=append
- option-o= outMode=overwrite
- option-c= outMode=create
- option-askGraf= askGraf=true
- option-askCons= askGraf=false
- option-log= logDat
- option-?= help=true
- option-help= help=true
- source=
- outMode=ask
- askGraf=!
ComVar
.NOT_WINDOWS
**)
- codePages=
- dest=
- logDat=
- outDat=
- language= <wie user.language or
ComVar.UL
>
- region= <wie user.region bzw.
ComVar.UR
>
- option-de= language=de ## region=DE
- option-deDE= language=de ## region=DE
- option-deCH= language=de ## region=CH
- option-en= language=en ## region=GB
- option-enGB= language=en ## region=GB
- option-fr= language=fr ## region=FR
- option-frFR= language=fr ## region=FR
- option-frCH= language=fr ## region=CH
- option-frBE= language=fr ## region=BE
- option-it= language=it ## region=IT
- option-itIT= language=it ## region=IT
- option-itCH= language=it ## region=CH
- option-es= language=es ## region=ES
- option-da= language=da ## region=DK
- option-nl= language=nl ## region=NL
- option-pt= language=pt ## region=PT
- option-lang= language
- option-regio= region
- thoseDirs=
- omitDirs=
- thoseFiles=
- omitFiles=
- days=nosetting
- daysOld=nosetting
- since=
- til=
- ignoreCase= !
ComVar.NOT_WINDOWS
- option-cs= ignoreCase=false
- option-case= ignoreCase=false
- option-ncs= ignoreCase=true
- option-nocase= ignoreCase=true
These are the basic properties including the basic syntax for evaluating
start parameters as well as as base for often used file and directory
criteria.App
(inheritor) object
(see e.g. Prop(App, CharSequence)
), that in not the base
application (that is usually the one started with the JVM) but is an
"App plug in") of another suitable "mother
application", then some properties are copied from there:
help and verbosity.new Prop((Map)null)
. In that case, ask the question,
if not a PropMap
is the thing meant.public Prop(char se)
If a Servlet, you get additionally
- option-v= verbosity = verbose
- option-verbose= verbosity = verbose
- option-silent= verbosity = silent
- option-normal= verbosity = normal
- option-debug= verbosity = debug
- option-test= verbosity = test
- option-de= language=de ## region=DE
- option-deDE= language=de ## region=DE
- option-deCH= language=de ## region=CH
- option-en= language=en ## region=GB
- option-enGB= language=en ## region=GB
- option-fr= language=fr ## region=FR
- option-frFR= language=fr ## region=FR
- option-frCH= language=fr ## region=CH
- option-frBE= language=fr ## region=BE
- option-it= language=it ## region=IT
- option-itIT= language=it ## region=IT
- option-itCH= language=it ## region=CH
- option-es= language=es ## region=ES
- option-da= language=da ## region=DK
- option-nl= language=nl ## region=NL
- option-pt= language=pt ## region=PT
This features the base properties usual for web services without the file
and directory criteria for (most) applications (by Prop()
).se
- S, s: Servlet; A, a: Applet; else: empty.load()
,
Prop()
,
Prop(URL, String, CharSequence)
public Prop(CharSequence fileName, CharSequence encoding) throws FileNotFoundException
constructor
s is made. Using
load(fileName, encoding)
a
preset by the content of text file (in Java/SUN properties syntax) is
tried (if fileName
is not empty).Prop()
.fileName
- the name of properties text fileFileNotFoundException
- if file fileName is nor readable.load(CharSequence, CharSequence)
,
Prop(Class, String, boolean, String)
,
Prop(URL, String, CharSequence)
,
Prop()
public Prop(URL baseURL, String fileName, CharSequence encoding) throws FileNotFoundException
Prop()
is made and (by
load(CharSequence, CharSequence)
) additionally set by a
file specified by
fileName + Basis-URL.fileName
is null the effect is like Prop()
plus (if given) the setting of a baseURL
.fileName
- the name of properties text fileFileNotFoundException
- if no such file readableload(CharSequence, CharSequence)
,
Prop(Class, String, boolean, String)
,
Prop(CharSequence, CharSequence)
,
Prop()
public Prop(Map<CharSequence,String> preset)
Map
preset
that fulfil PropMap
's conditions on
key-value-pairs.preset
is null (or empty), the newly made Properties object
is empty. It will also not contain any standard or default entries made
by other constructors like Prop()
.public Prop(Class<?> cl, String shortClassName, boolean allowNoPropFile, String extraProp) throws FileNotFoundException
Prop()
. Then, using
load(CharSequence, CharSequence)
all properties from the file
className+".properties" are added. Used therefore is the pure (short)
class name of the class cl
, that means without packages and
else.Prop
object
made will be tried bynationalise
(className, null, null)
.de.frame4j
inheritors:cl
is an inheritor of a tool of a de.frame4j
application its .properties file (from the .jar file) will be loaded
first. For that the "total" name de/frame4j/parentApp will be
used. The effect is that fitting properties of the base application don't
have to be repeated in the inheriting applications .properties file.allowNoPropFile
- if true the absence of an own .properties file will
be allowed; otherwise an exception would be thrownextraProp
- if not null or empty, the name of extra properties
to be loaded before the class related onesFileNotFoundException
- if the base .properties file is not
readable and allowNoPropFile is falseload()
,
Prop(CharSequence, CharSequence)
public Prop(App app, CharSequence commBeg) throws FileNotFoundException
de.frame4j.util.App
and fulfilling
its contract. This constructor does all the evaluating of start arguments,
the nationalising according to all available .properties files for that
application.Prop
object is made by
Prop(Class, String, boolean, String)
.
If the App
object app
has a mother application the
properties help and verbosity take its values as defaults (instead of
false and NORMAL
.parse()
).App
object app
will be set by setFields()
.FileNotFoundException
- if no base .properties file for
app
can be found and read, except the application
explicitly allows that omission; see
App.allowNoPropertiesFile()
NullPointerException
- if app is nullIllegalArgumentException
- on parsing exception and if
a called set(..) method raises an exception like
IllegalArgumentException
or an
PropertyVetoException
. The message of that
exception will be transfered to the new
IllegalArgumentException
parse()
,
setFields()
,
getText()
,
Prop(CharSequence, CharSequence)
,
Prop(Class, String, boolean, String)
public boolean load1(URL url, CharSequence fileName, CharSequence encoding)
fileName
related to the provided url
or this Prop
's baseURL
will be loaded into this
Prop
object. For the text file's syntax see
Properties.load()
.Prop
object's
properties are usually modified or added to.url
- the (base) URL. If null, the base URL set by some constructors
is used instead. If that is null too, false is returned.fileName
- the URL related file name. \ will be replaced by / .load1(Class, CharSequence, CharSequence)
,
PropMap.load1(CharSequence, CharSequence)
,
load(CharSequence, CharSequence)
public boolean load1(Class<?> cl, CharSequence fileName, CharSequence encoding) throws ClassCastException, UnsupportedOperationException, UnsupportedOperationException
fileName
related to the class cl
or to a baseClass
set by some constructors will be loaded into
this Prop
object. For the text file's syntax see
Properties.load()
.Prop
object's properties are usually modified or added to.PropMap
's method
PropMap.load1(Class, CharSequence, CharSequence)
. The differences
are the mentioned substituting of cl
== null by
baseClass
and encoding
== null by
ComVar
.JAR_ENCODING
.load1
in class PropMap
cl
- the (base) class. If null, the base class set by some
constructors is used instead. If that is null too, false
is returned.fileName
- the class related file name. \ will be replaced by / .encoding
- the resource / file encoding. null or empty will get
JAR_ENCODING
IllegalArgumentException
- if put(String, String) will be
so rejectedUnsupportedOperationException
- if put(String, String)
will be so rejectedClassCastException
- if a key violates PropMap
' contractClassCastException
- a key violates PropMap
' contractload1(URL, CharSequence, CharSequence)
,
PropMap.load1(CharSequence, CharSequence)
,
load(CharSequence, CharSequence)
public boolean load(CharSequence fName, CharSequence encoding)
fileName
will be loaded. true is returned on success. For the text file's syntax
see
Properties.load()
.fileName
contains no path (no \ or /), it ends with .properties
and if baseClass
is not null, it will be tried to read the file
as class (loader) related resource. For frame4j base classes it will be
tried to find the .properties file under de.frame4j first. For that .jar
encoding (usually UTF8) will be used, no matter, what encoding
says. If the resource loading succeeds or not direct file loading is tried
next.fileName
will be suffixed by ".properties"
if not yet ending so, and the trial will be repeated.fileName
contains no path (not even .\) the trial is
repeated in the jre\lib directory (ComVar.JRL
).baseURL
) is set the trial is
repeated as URL related load.PropMap.load1(CharSequence, CharSequence)
,
load1(URL, CharSequence, CharSequence)
,
load1(URL, CharSequence, CharSequence)
,
ComVar.JRL
public boolean nationalise(CharSequence fileName, CharSequence lang, CharSequence reg)
Prop
erties will be nationalised according to language and
region given as parameters. null or empty will default to the properties
language and region. These, if not otherwise set explicitly, are given
by ComVar.UL
and ComVar.UR
.fileName
is substituted by the first (originally) loaded
file for this Prop
.fileName
are tried to be loaded from the class files
resource and in case of a pure file name on base of
ComVar.JRL
and ComVar.UD
by
load(CharSequence, CharSequence)
.protected PropMapHelper.Entry substLang(String key, String lang, String regio, String def)
AppLangMap
fitting langAppLangMap
fitting
user language
, but not fitting langPropMap.substLang()
.PropMap.valueLang(CharSequence, String)
.substLang
in class PropMap
key
- non emptylang
- two letter lower case language coderegio
- two letter upper case region or country code
or ComVar.EMPTY_STRING
if no region to be useddef
- the default value; ignored in this implementationpublic AppLangMap getAppLangMap()
public final String valueLang(CharSequence key)
AppLangMap.valueUL(CharSequence)
public InputStream getAsFileStream(CharSequence fileName)
InputStream
for the
given file name fileN
. In case of success the source is
registered in the list of opened / used file resources.
No success returns null.PropMap.load1(CharSequence, CharSequence)
,
getAsStream(String, String)
public InputStream getAsResourceStream(String fileName)
InputStream
)from the fileName
provided, that must
contain no path (not even .\).baseClass
related resource. (This would in effect be
a file within the deployment .jar),baseURL
) if set.load(CharSequence, CharSequence)
,
ComVar.JRL
,
getAsFileStream(String)
,
getAsStream(String, String)
public InputStream getAsStream(String fileName, String ext)
InputStream
) for the fileName
provided. If that
succeeds that InputStream
will be returned and the
fileName
entered to the list of loaded files.
If all fails, null is returned.fileName
and fileName
suffixed ext
if fileName
is not yet ending so.fileName
contains no path (not even .\), the
following is tried (with and without ext
):ComVar.JRL
),baseClass
)
loader (this would in effect be a file within
the deployment .jar),baseURL
) if set.load(CharSequence, CharSequence)
,
ComVar.JRL
,
getAsFileStream(String)
,
getAsResourceStream(String)
public Object changeProperty(CharSequence keyValue)
PropMap.setProperty(CharSequence)
with the difference of only
changing an existing property (key value pair) and not creating a new
one.Prop
object. Returned is the empty String
ComVar.EMPTY_STRING
in this case.keyValue
- key-value pairComVar.EMPTY_STRING
if a) null before
or b) allowed as new "indexed property"public void parse(String[] args, CharSequence commSt) throws IllegalArgumentException
args
will be worked on
from start to end or the first occurrence of the character sequence
commSt
. This is accompanied by a strict syntax check: parameters
the usage of with is not defined in this Prop
object throw an
exception. By using the similar but less strict method
parse(String[],CharSequence,false)
this strictness can be partly switched
off (for applications that will rework the parameters).option-parameter
(in all lower case) is searched in this Prop
object. If it does
not exist or has an empty value an exception is raised.args
as it is. If there is no next parameters (before
commSt
) an exception is raised."butHref17=otto"
, the definition of which may be allowed by a
special property "allowIndexed-butHref=19"
(all examples) in the
range butHref0
respectively butHref00
to butHref19
.nationalise()
). If no such file exists an exception
is raised.word-0
or
is searched for; for the second word-1
and so on. If this
property does not exist an exception is raised. Otherwise its value is
taken as the name of the property to be set by the standard
parameter.word-00
to word-09
.parse(String[], CharSequence)
and
parse(String[], CharSequence, boolean)
rely on the supplied
String[] fulfilling the same contract as JVM to main(String[]) to do
useful work. If not they do just nothing.parse(args, commSt, false)
.args
- the (start) parameters / arguments to parsecommSt
- if not empty a comment start within args
and hence
its effective end for this methods workIllegalArgumentException
- on the contract violations namedsetProperty()
,
changeProperty()
,
load()
,
setFields()
public void parse(String[] args, CharSequence commSt, boolean partial) throws IllegalArgumentException
parse(String[], CharSequence)
if
the parameter partial
is false.partial
is true there are the following differences:option-name
and also a
property option+name
is looked for (all in lower case). If
both don't exist an exception is thrown.args
and may be (sequence
dependent re-) evaluated by the application code.option+dummy=
" or
"option+dummy= ##
" without raising an
exception. If the option value stars with # (as in the second example)
the count of word parameters will be set to 30 if less.option-xyz=effect
, is considered as effective for the
application as whole and independent of parameter sequence. The
related parameter(s) will be set null in args
after
evaluation.args
.commSt
all parameters thereafter
will be set null or shortened accordingly.Prop
, but want to re-evaluate the (remaining) arguments in
their sequence. Points 5 to 7 facilitate this proceeding by eliminating
all evaluated global parameters as well as a parameter (command line)
comment. An example for this is the tool Era (source
Era.java, .properties file
Era.properties).partial
- if true behaviour other than
parse(String[], CharSequence)
if false see
description there
IllegalArgumentException
- on the contract violations describedparse(String[], CharSequence)
public String getString(String name, int num, String def)
Prop
object contains a property named "name
" + num
according to the rules of the method
getProperty(name, num)
, the value
of which is a non empty String also after removing surrounding white
space.def
otherwise.name
- the searched for property's namenum
- its number or indexdef
- the substitute value if no non empty value is foundgetString(String,String)
,
getInt()
,
getBoolean()
,
setProperty()
,
changeProperty()
public String getProperty(CharSequence key, int num)
key
is null or empty or if num
is < 0, null is
returned.Prop
object contains a property key + num
in the
variants described its value is returned even if empty.num
is in the range 0 to 9 and no such property (like
e.g. "name7") was found the trial is repeated with a leading
zero (hence "name07" in the example).num
is 0 the property key
without any number is looked for.key
null or
num
< 0.key
- the key (without number) to the propertynum
- the number (>= 0)public String getResString(CharSequence key, String def)
Prop
object contains a property named
<key>File
(key
being the parameter}, may be
language prefixed in the form .de, .en .fr and so on, its non empty value,
if given, will be taken as the name of a file or resource. It is tried
to read its content by using
getAsStream(keyFile, null)
. If this succeeds the
read content is returned as String.<key>File
is not given
valueLanguage(key, def)
is returned.<key>File
including a default
resource name without language prefix has priority over a possibly
existing property lang.key fitting the language. This is to keep in mind
if both possibilities are mixed.PropMap.valueLang(CharSequence, String)
this method does no caching.
So this method should be called only once per language dependent property
or file / resource. If the value is needed multiple times it should be
stored / cashed by the application.key
- the searched property's namedef
- a substitute value (may be null)valueLang(CharSequence)
,
getAsStream(String, String)
public String getText(CharSequence key)
key
or the empty String ComVar.EMPTY_STRING
.key
- the searched property's namePropMap.getString(CharSequence)
,
PropMap.getString(CharSequence, String)
,
PropMap.getInt(CharSequence, int)
,
PropMap.getBoolean(CharSequence)
,
setProperty()
,
changeProperty()
public String percReplace(String val)
val
will be searched for names enclosed by two
percent signs %, without enclosing a space. In
"xxxyyy%nameX% hhh" for example nameX would be recognised
as such a name, but not in the case of
"xxxyyy%name % hhh".valueLang(name)
. The replacement is
hence nationalised.val
is null ComVar.EMPTY_STRING
is returned.val
- the sequence to work onpublic final String getHelpText(String def)
valueLang("helpText", def)
) and with possible replacements
(compare percReplace()
and returned.def
- substitute text if the property helpText respectively
de.helpText, en.HelpText etc. does not existpublic boolean getBoolean(CharSequence name, int num, boolean def)
getProperty(name, num)
the (indexed) property specified. If no such
property exists def
is returned.asBoolean(value, def)
. The result is returned.getBoolean
in class PropMap
name
- the searched property's namedef
- a substitute value (may be null)num
- the property's index / number (>=0)
public int getInt(String name, int num, int def)
getProperty(name, num)
the (indexed) property specified. If no such
property exists def
is returned.getInt
in class PropMap
name
- the searched property's namedef
- a substitute valuenum
- the property's index / number (>=0)PropMap.getInt(CharSequence, int)
,
TextHelper.asInt(CharSequence, int)
,
getLong()
,
TextHelper.asInt(CharSequence, int)
public int setFields(Object obj) throws SecurityException, IllegalArgumentException
obj
will be set by this Prop
object's properties
of the same name. Keys containing dot (.), minus (-) or plus (+) can't be
variable's names and are not considered in the proceeding (see
below).property
a property
"lang.property" is looked for (lang being the result of
PropMap.getLanguage()
). If it exists its value is taken otherwise
that of property
.setProperty(...)
. Thereby this method uses the
methods PropMapHelper.setField(Object, String, String)
and
searches in the sequence described
there
setters
and at last the direct access to the public (not inherited)
variable.obj
to call methods
or set variables the existence of which this method can by no means know
beforehand, of course.nationalise(CharSequence, CharSequence, CharSequence)
).
Hence multilingual values in one .properties file should not be combined
with extra nationalised .properties files for the same key.obj
- the object the field of which shall be modifiedSecurityException
- if the necessary introspection is
forbiddenIllegalArgumentException
- if a set method called throws an
exception (e.g. an IllegalArgumentException
or a
PropertyVetoException
. The exception's
message is put into the (new) IllegalArgumentException
PropMap.getString(CharSequence)
,
getInt()
,
getBoolean()
,
parse()
,
PropMapHelper.setField(Object, String, String)
public void list(PrintStream out)
list()
public void list(PrintWriter out)
list()
public StringBuilder list()
getInt()
respectively by
getBoolean()
) this interpretation is appended
after <<.PropMap.sortedKeys()
,
list(PrinWriter/PrintStream)