Package org.apache.commons.lang.text
Class ExtendedMessageFormat
- java.lang.Object
-
- java.text.Format
-
- java.text.MessageFormat
-
- org.apache.commons.lang.text.ExtendedMessageFormat
-
- All Implemented Interfaces:
java.io.Serializable,java.lang.Cloneable
public class ExtendedMessageFormat extends java.text.MessageFormatExtendsjava.text.MessageFormatto allow pluggable/additional formatting options for embedded format elements. Client code should specify a registry ofFormatFactoryinstances associated withStringformat names. This registry will be consulted when the format elements are parsed from the message pattern. In this way custom patterns can be specified, and the formats supported byjava.text.MessageFormatcan be overridden at the format and/or format style level (see MessageFormat). A "format element" embedded in the message pattern is specified (()? signifies optionality):
{argument-number(,format-name(,format-style)?)?}format-name and format-style values are trimmed of surrounding whitespace in the manner of
java.text.MessageFormat. If format-name denotesFormatFactory formatFactoryInstanceinregistry, aFormatmatching format-name and format-style is requested fromformatFactoryInstance. If this is successful, theFormatfound is used for this format element.NOTICE:: The various subformat mutator methods are considered unnecessary; they exist on the parent class to allow the type of customization which it is the job of this class to provide in a configurable fashion. These methods have thus been disabled and will throw
UnsupportedOperationExceptionif called.Limitations inherited from
java.text.MessageFormat:- When using "choice" subformats, support for nested formatting instructions is limited to that provided by the base class.
- Thread-safety of
Formats, includingMessageFormatand thusExtendedMessageFormat, is not guaranteed.
- Since:
- 2.4
- Version:
- $Id: ExtendedMessageFormat.java 1057427 2011-01-11 00:28:01Z niallp $
- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description private static java.lang.StringDUMMY_PATTERNprivate static charEND_FEprivate static java.lang.StringESCAPED_QUOTEprivate static intHASH_SEEDprivate static charQUOTEprivate java.util.Mapregistryprivate static longserialVersionUIDprivate static charSTART_FEprivate static charSTART_FMTprivate java.lang.StringtoPattern
-
Constructor Summary
Constructors Constructor Description ExtendedMessageFormat(java.lang.String pattern)Create a new ExtendedMessageFormat for the default locale.ExtendedMessageFormat(java.lang.String pattern, java.util.Locale locale)Create a new ExtendedMessageFormat.ExtendedMessageFormat(java.lang.String pattern, java.util.Locale locale, java.util.Map registry)Create a new ExtendedMessageFormat.ExtendedMessageFormat(java.lang.String pattern, java.util.Map registry)Create a new ExtendedMessageFormat for the default locale.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private StrBuilderappendQuotedString(java.lang.String pattern, java.text.ParsePosition pos, StrBuilder appendTo, boolean escapingOn)Consume a quoted string, adding it toappendToif specified.voidapplyPattern(java.lang.String pattern)Apply the specified pattern.private booleancontainsElements(java.util.Collection coll)Learn whether the specified Collection contains non-null elements.booleanequals(java.lang.Object obj)Check if this extended message format is equal to another object.private java.text.FormatgetFormat(java.lang.String desc)Get a custom format from a format description.private voidgetQuotedString(java.lang.String pattern, java.text.ParsePosition pos, boolean escapingOn)Consume quoted string onlyinthashCode()Return the hashcode.private java.lang.StringinsertFormats(java.lang.String pattern, java.util.ArrayList customPatterns)Insert formats back into the pattern for toPattern() support.private java.text.ParsePositionnext(java.text.ParsePosition pos)Convenience method to advance parse position by 1private java.lang.StringparseFormatDescription(java.lang.String pattern, java.text.ParsePosition pos)Parse the format component of a format element.private intreadArgumentIndex(java.lang.String pattern, java.text.ParsePosition pos)Read the argument index from the current format elementprivate voidseekNonWs(java.lang.String pattern, java.text.ParsePosition pos)Consume whitespace from the current parse position.voidsetFormat(int formatElementIndex, java.text.Format newFormat)Throws UnsupportedOperationException - see class Javadoc for details.voidsetFormatByArgumentIndex(int argumentIndex, java.text.Format newFormat)Throws UnsupportedOperationException - see class Javadoc for details.voidsetFormats(java.text.Format[] newFormats)Throws UnsupportedOperationException - see class Javadoc for details.voidsetFormatsByArgumentIndex(java.text.Format[] newFormats)Throws UnsupportedOperationException - see class Javadoc for details.java.lang.StringtoPattern()
-
-
-
Field Detail
-
serialVersionUID
private static final long serialVersionUID
- See Also:
- Constant Field Values
-
HASH_SEED
private static final int HASH_SEED
- See Also:
- Constant Field Values
-
DUMMY_PATTERN
private static final java.lang.String DUMMY_PATTERN
- See Also:
- Constant Field Values
-
ESCAPED_QUOTE
private static final java.lang.String ESCAPED_QUOTE
- See Also:
- Constant Field Values
-
START_FMT
private static final char START_FMT
- See Also:
- Constant Field Values
-
END_FE
private static final char END_FE
- See Also:
- Constant Field Values
-
START_FE
private static final char START_FE
- See Also:
- Constant Field Values
-
QUOTE
private static final char QUOTE
- See Also:
- Constant Field Values
-
toPattern
private java.lang.String toPattern
-
registry
private final java.util.Map registry
-
-
Constructor Detail
-
ExtendedMessageFormat
public ExtendedMessageFormat(java.lang.String pattern)
Create a new ExtendedMessageFormat for the default locale.- Parameters:
pattern- the pattern to use, not null- Throws:
java.lang.IllegalArgumentException- in case of a bad pattern.
-
ExtendedMessageFormat
public ExtendedMessageFormat(java.lang.String pattern, java.util.Locale locale)Create a new ExtendedMessageFormat.- Parameters:
pattern- the pattern to use, not nulllocale- the locale to use, not null- Throws:
java.lang.IllegalArgumentException- in case of a bad pattern.
-
ExtendedMessageFormat
public ExtendedMessageFormat(java.lang.String pattern, java.util.Map registry)Create a new ExtendedMessageFormat for the default locale.- Parameters:
pattern- the pattern to use, not nullregistry- the registry of format factories, may be null- Throws:
java.lang.IllegalArgumentException- in case of a bad pattern.
-
ExtendedMessageFormat
public ExtendedMessageFormat(java.lang.String pattern, java.util.Locale locale, java.util.Map registry)Create a new ExtendedMessageFormat.- Parameters:
pattern- the pattern to use, not nulllocale- the locale to use, not nullregistry- the registry of format factories, may be null- Throws:
java.lang.IllegalArgumentException- in case of a bad pattern.
-
-
Method Detail
-
toPattern
public java.lang.String toPattern()
- Overrides:
toPatternin classjava.text.MessageFormat
-
applyPattern
public final void applyPattern(java.lang.String pattern)
Apply the specified pattern.- Overrides:
applyPatternin classjava.text.MessageFormat- Parameters:
pattern- String
-
setFormat
public void setFormat(int formatElementIndex, java.text.Format newFormat)Throws UnsupportedOperationException - see class Javadoc for details.- Overrides:
setFormatin classjava.text.MessageFormat- Parameters:
formatElementIndex- format element indexnewFormat- the new format- Throws:
java.lang.UnsupportedOperationException
-
setFormatByArgumentIndex
public void setFormatByArgumentIndex(int argumentIndex, java.text.Format newFormat)Throws UnsupportedOperationException - see class Javadoc for details.- Overrides:
setFormatByArgumentIndexin classjava.text.MessageFormat- Parameters:
argumentIndex- argument indexnewFormat- the new format- Throws:
java.lang.UnsupportedOperationException
-
setFormats
public void setFormats(java.text.Format[] newFormats)
Throws UnsupportedOperationException - see class Javadoc for details.- Overrides:
setFormatsin classjava.text.MessageFormat- Parameters:
newFormats- new formats- Throws:
java.lang.UnsupportedOperationException
-
setFormatsByArgumentIndex
public void setFormatsByArgumentIndex(java.text.Format[] newFormats)
Throws UnsupportedOperationException - see class Javadoc for details.- Overrides:
setFormatsByArgumentIndexin classjava.text.MessageFormat- Parameters:
newFormats- new formats- Throws:
java.lang.UnsupportedOperationException
-
equals
public boolean equals(java.lang.Object obj)
Check if this extended message format is equal to another object.- Overrides:
equalsin classjava.text.MessageFormat- Parameters:
obj- the object to compare to- Returns:
- true if this object equals the other, otherwise false
- Since:
- 2.6
-
hashCode
public int hashCode()
Return the hashcode.- Overrides:
hashCodein classjava.text.MessageFormat- Returns:
- the hashcode
- Since:
- 2.6
-
getFormat
private java.text.Format getFormat(java.lang.String desc)
Get a custom format from a format description.- Parameters:
desc- String- Returns:
- Format
-
readArgumentIndex
private int readArgumentIndex(java.lang.String pattern, java.text.ParsePosition pos)Read the argument index from the current format element- Parameters:
pattern- pattern to parsepos- current parse position- Returns:
- argument index
-
parseFormatDescription
private java.lang.String parseFormatDescription(java.lang.String pattern, java.text.ParsePosition pos)Parse the format component of a format element.- Parameters:
pattern- string to parsepos- current parse position- Returns:
- Format description String
-
insertFormats
private java.lang.String insertFormats(java.lang.String pattern, java.util.ArrayList customPatterns)Insert formats back into the pattern for toPattern() support.- Parameters:
pattern- sourcecustomPatterns- The custom patterns to re-insert, if any- Returns:
- full pattern
-
seekNonWs
private void seekNonWs(java.lang.String pattern, java.text.ParsePosition pos)Consume whitespace from the current parse position.- Parameters:
pattern- String to readpos- current position
-
next
private java.text.ParsePosition next(java.text.ParsePosition pos)
Convenience method to advance parse position by 1- Parameters:
pos- ParsePosition- Returns:
pos
-
appendQuotedString
private StrBuilder appendQuotedString(java.lang.String pattern, java.text.ParsePosition pos, StrBuilder appendTo, boolean escapingOn)
Consume a quoted string, adding it toappendToif specified.- Parameters:
pattern- pattern to parsepos- current parse positionappendTo- optional StringBuffer to appendescapingOn- whether to process escaped quotes- Returns:
appendTo
-
getQuotedString
private void getQuotedString(java.lang.String pattern, java.text.ParsePosition pos, boolean escapingOn)Consume quoted string only- Parameters:
pattern- pattern to parsepos- current parse positionescapingOn- whether to process escaped quotes
-
containsElements
private boolean containsElements(java.util.Collection coll)
Learn whether the specified Collection contains non-null elements.- Parameters:
coll- to check- Returns:
trueif some Object was found,falseotherwise.
-
-