私はCastorを使用してユーザーIDのマップを時間間隔に書き出しています。私はそれを使って長いタスクで進捗状況を保存し、再開します。できるだけコンパクトなXMLを作成しようとしています。私のマップは、文字列のユーザーIDから、インターバルタイムスタンプを含むクラス、およびシリアル化する必要のない追加の一時的なデータです。Castorを使用してオブジェクトをコンパクトにシリアル化しようとしています
私は、ネストされたクラスのマッピングを使用することができるよ:
...
<field name="userIntervals" collection="map">
<bind-xml name="u">
<class name="org.exolab.castor.mapping.MapItem">
<field name="key" type="string"><bind-xml name="n" node="attribute"/></field>
<field name="value" type="my.package.TimeInterval"/>
</class>
</bind-xml>
</field>
...
<class name="my.package.TimeInterval">
<map-to xml="ti"/>
<field name="intervalStart" type="long"><bind-xml name="s" node="attribute"/></field>
<field name="intervalEnd" type="long"><bind-xml name="e" node="attribute"/></field>
</class>
...
とのような出力を得る:私が好きな何
<u n="36164639"><value s="1292750896000" e="1292750896000"/></u>
には、名前、開始、およびの終わりですこのような単一ノード内のユーザ。
<u n="36164639" s="1292750896000" e="1292750896000"/>
しかし、私は、「値」、「キー」と同じノードに行くにとても開始と終了の属性を、それをfinagleように見えることはできません。どんなアイデアでも大歓迎です。
私が考えていた(少し傷ついた)アプローチは、 'value'のカスタム' FieldHandler'を持っていたと考えました - しかし、私は開始属性と終了時間を一つの属性に入れなければなりません。私が望むより少しコンパクトです;) –