jp.terasoluna.fw.web.struts
クラス MessageFormatCloneReturnIfUseDateFormatMap
java.lang.Object
java.util.AbstractMap<K,V>
java.util.HashMap<java.lang.String,java.text.MessageFormat>
jp.terasoluna.fw.web.struts.MessageFormatCloneReturnIfUseDateFormatMap
- すべての実装されたインタフェース:
- java.io.Serializable, java.lang.Cloneable, java.util.Map<java.lang.String,java.text.MessageFormat>
public class MessageFormatCloneReturnIfUseDateFormatMap
- extends java.util.HashMap<java.lang.String,java.text.MessageFormat>
Strutsのバグ(STR-2172)回避用HashMap(MessageFormatキャッシュ)。
StrutsのMessageResourcesは、キャッシュからgetしたMessageFormatを同期化せずに複数スレッドでアクセス可能にしている。
このバグを回避するため、キャッシュから同一インスタンスを返さず、cloneインスタンスを返すよう拡張している。
ただし、全てのMessageFormatを無条件にcloneするのではなく、
明らかにスレッドアンセーフ問題が発生する、DateFormatをサブフォーマットに持つMessageFormatのみ、
get時にcloneする。
このクラスは、StrutsのMessageResourcesのバグ回避専用クラスである。
putメソッド(null値の設定なし)とgetメソッドのみ使用されることを前提としている。
その他のメソッドを使用した場合の、Mapとしての動作は保証しない。
また、putの戻り値では、前回のputの引数で渡されたインスタンスではなく、等価なcloneインスタンスを返す場合がある。
(get時にcloneインスタンスを返す条件を満たすものがこれに該当する。)
- 関連項目:
MessageFormatCacheMapFactory
,
直列化された形式
メソッドの概要 |
java.text.MessageFormat |
get(java.lang.Object key)
キャッシュされたMessageFormatインスタンスを、必要に応じてcloneして返す。 |
java.text.MessageFormat |
put(java.lang.String key,
java.text.MessageFormat value)
MessageFormatインスタンスをキャッシュする。 |
クラス java.util.HashMap から継承されたメソッド |
clear, clone, containsKey, containsValue, entrySet, isEmpty, keySet, putAll, remove, size, values |
クラス java.util.AbstractMap から継承されたメソッド |
equals, hashCode, toString |
クラス java.lang.Object から継承されたメソッド |
finalize, getClass, notify, notifyAll, wait, wait, wait |
インタフェース java.util.Map から継承されたメソッド |
equals, hashCode |
serialVersionUID
private static final long serialVersionUID
- シリアルバージョンID
- 関連項目:
- 定数フィールド値
cloneReturnMap
private MessageFormatCloneReturnMap cloneReturnMap
- get時にMessageFormatのcloneインスタンスを返すMap
MessageFormatCloneReturnIfUseDateFormatMap
public MessageFormatCloneReturnIfUseDateFormatMap()
put
public java.text.MessageFormat put(java.lang.String key,
java.text.MessageFormat value)
- MessageFormatインスタンスをキャッシュする。
- 定義:
- インタフェース
java.util.Map<java.lang.String,java.text.MessageFormat>
内の put
- オーバーライド:
- クラス
java.util.HashMap<java.lang.String,java.text.MessageFormat>
内の put
- パラメータ:
key
- MessageFormatキャッシュ時のキーvalue
- キャッシュするMessageFormatインスタンス
- 戻り値:
- メソッド実行前にキャッシュされていたMessageFormatインスタンス
get
public java.text.MessageFormat get(java.lang.Object key)
- キャッシュされたMessageFormatインスタンスを、必要に応じてcloneして返す。
- 定義:
- インタフェース
java.util.Map<java.lang.String,java.text.MessageFormat>
内の get
- オーバーライド:
- クラス
java.util.HashMap<java.lang.String,java.text.MessageFormat>
内の get
- パラメータ:
key
- MessageFormatキャッシュ時のキー
- 戻り値:
- MessageFormatインスタンス