public abstract class TopLevelDefinition extends Definition
Modifier and Type | Field and Description |
---|---|
static java.lang.String |
DESCRIPTION_KEY
The relative key for the description of a bean or bean property.
|
static java.lang.String |
LABEL_KEY
The relative key for the label of a bean or bean property.
|
Modifier and Type | Method and Description |
---|---|
void |
addDeprecatedId(java.lang.String id) |
java.lang.String |
bind(java.lang.String message,
java.lang.Object context,
boolean erase)
Binds a localized template to the context of a specified bean.
|
protected java.lang.String |
defaultLabelString()
Gets a default value for a missing label resource string.
|
java.lang.String |
description()
Gets the localized description of a bean from this definition, or a default
description if none supplied.
|
boolean |
equals(java.lang.Object that) |
java.lang.String |
formattedString(java.lang.String relativeKey,
java.lang.Object context)
Gets and binds a specific localized template relative to this definition,
or null if none supplied.
|
java.lang.String |
formattedString(java.lang.String relativeKey,
java.lang.Object context,
boolean erase)
Formats a localized template in the context of bean associated with this
definition.
|
java.util.List<java.lang.String> |
getDeprecatedIds() |
java.lang.String |
getElementName() |
ExtensionBundle |
getExtensionBundle() |
java.lang.String |
getId() |
java.lang.String |
getName() |
java.util.Map<java.lang.String,java.lang.String> |
getStrings() |
int |
hashCode() |
java.lang.String |
label()
Gets the localized label of a bean from this definition, or a default label
if none supplied.
|
java.lang.String |
propertyDescription(java.lang.String propertyName)
Gets the localized description of a property in a bean from this
definition, or null if none supplied.
|
java.lang.String |
propertyLabel(java.lang.String propertyName)
Gets the localized label of a property in a bean from this definition, or
null if none supplied.
|
java.lang.String |
propertyString(java.lang.String propertyName,
java.lang.String relativeKey)
Gets a specific localized string relative to this definition for a
property of a bean from this definition, or null if none supplied.
|
protected void |
reportMissingString(java.lang.String relativeKey)
Reports a missing resource string.
|
void |
setStrings(java.util.Map<java.lang.String,java.lang.String> strings) |
java.lang.String |
string(java.lang.String relativeKey)
Gets a specific localized string relative to this definition, or null if
none supplied.
|
java.lang.String |
toString() |
getColumnNumber, getContext, getExtensionId, getLineNumber, getPublicId, getSystemId, isExtensionLoaded, log, log
public static final java.lang.String LABEL_KEY
public static final java.lang.String DESCRIPTION_KEY
public ExtensionBundle getExtensionBundle()
public java.lang.String getId()
public java.lang.String getName()
public java.util.List<java.lang.String> getDeprecatedIds()
public void addDeprecatedId(java.lang.String id)
public java.util.Map<java.lang.String,java.lang.String> getStrings()
public void setStrings(java.util.Map<java.lang.String,java.lang.String> strings)
public java.lang.String label()
LABEL_KEY
public java.lang.String description()
DESCRIPTION_KEY
public java.lang.String propertyLabel(java.lang.String propertyName)
LABEL_KEY
public java.lang.String propertyDescription(java.lang.String propertyName)
DESCRIPTION_KEY
public java.lang.String string(java.lang.String relativeKey)
The default TopLevelDefinition
implementation maps the relative
key to a full key to use to get the localized string from the ExtensionBundle
bound to this definition. If the definition does not
supply an explicit full key for a given relative key, a default is computed
by concatenating the simple name
of the definition, a
dot (">"), and the given relative key.
relativeKey
- the bean-defined relative key of the string (e.g., "label").protected java.lang.String defaultLabelString()
protected void reportMissingString(java.lang.String relativeKey)
relativeKey
- the bean-defined relative key of the string (e.g., "label").public java.lang.String formattedString(java.lang.String relativeKey, java.lang.Object context)
string(java.lang.String)
and binds
it using bind(java.lang.String, java.lang.Object, boolean)
. Unresolved value references in the template are
included verbatim in the result.relativeKey
- the bean-defined relative key of the string (e.g., "label").context
- context defining parameters in the string.public java.lang.String formattedString(java.lang.String relativeKey, java.lang.Object context, boolean erase)
string(java.lang.String)
and binds it using
bind(java.lang.String, java.lang.Object, boolean)
. Unresolved value references in the template are included
verbatim in the result unless erase
is true
, in which case
the value reference, any surrounding single or double quotes, and all but
one surrounding space character are omitted from the result.relativeKey
- the bean-defined relative key of the string (e.g., "label").context
- context defining parameters in the string.erase
- whether to erase unresolved value referencespublic java.lang.String propertyString(java.lang.String propertyName, java.lang.String relativeKey)
The default TopLevelDefinition
implementation creates a property-
specific relative key by concatenating the property name, a dot ("."), and
the given relative key to get the string using string(java.lang.String)
.
propertyName
- the name of the property.relativeKey
- the bean-defined relative key of the string (e.g., "label").public java.lang.String bind(java.lang.String message, java.lang.Object context, boolean erase)
Violation
, entry values of the
context bean when it is a Map
, or localized strings accessible to
the formattedString(java.lang.String, java.lang.Object)
method of this definition when the value
reference begins with the at sign ('@').
If a value reference does not begin with the at sign ("@"), the reference is assumed to designate a value reachable from the context bean. If the name name does not contain a '.' character, the simple name is resolved to the final value as described by the sequence below. If the name does contain '.' characters, it is split at the first '.' into a simple name and a remainder string, the simple name is resolved to an intermediate value as described by the sequence below, and then the resolution process is repeated for the remainder string with the intermediate value as the context bean until the remainder string is exhausted and a final value is produced.
A simple name is resolved against a context bean in the following sequence:TransformContext
, if a getter
method corresponds to the name, the value is the value returned by that
getter method. Otherwise, the violation of the transform context is
substituted and evaluation continues with the next step.
Violation
, if the name is an
integer, the value is the parameter of the Violation
with the
indicated index, or null if the index is too large. Otherwise, the value
is the parameter of the Violation
with the matching name, or null
if no name matches.
Map
, the value is the value
returned by Map.get(java.lang.Object)
using the property name as the key.
If a value reference begins with "@", the text after the '@' is
interpreted as a relative key. Usually the entire key is passed to formattedString(java.lang.String, java.lang.Object)
along with the context
and erase
parameters to resolve the reference. However, if the text contains a '#'
character, then an exact value relative key is constructed and tried first
before falling back to the given relative key if no localized string is
supplied for the exact value. In particular, if a '# is present, the text
after the '#' is used as a value reference and resolved against the
context bean as described above, and the exact value relative key is
created by replacing the text after the '#' with the resolved value. One
use for exact value kinds is to properly pluralize a numeric phrase. For
example, to produce "root has no children", "root has 1 child", or "root
has 200 children" given message parameters named "parent" and "count", the
properties might look like this:
some-bean.message={parent} has {@children#count}
some-bean.children#0=no children
some-bean.children#1=1 child
some-bean.children#count={count} child
When a value reference cannot be resolved to a value, then if erase
is false, the value reference and its surrounding braces are retained in
the bound string unmodified; if erase is true, then the value reference,
its surrounding braces, and any immediately surrounding single or double
quotes are erased, and remaining spaces at the point of erasure are
collapsed to a single space. This behavior in many cases allows a template
to bind acceptably both when value references are resolvable and when not.
public java.lang.String getElementName()
public boolean equals(java.lang.Object that)
equals
in class java.lang.Object
public int hashCode()
hashCode
in class java.lang.Object
public java.lang.String toString()
toString
in class Definition