/*
* Copyright LGPL3
* YES Technology Association
* http://yestech.org
*
* http://www.opensource.org/licenses/lgpl-3.0.html
*/
package org.yestech.lib.hessian.currency;
import com.caucho.hessian.io.AbstractHessianOutput;
import com.caucho.hessian.io.AbstractSerializer;
import org.yestech.lib.currency.Money;
import java.io.IOException;
import java.util.Locale;
/**
* Serializes Money objects correctly.
*
* @author A.J. Wright
*/
public class MoneySerializer extends AbstractSerializer {
@Override
public void writeObject(Object obj, AbstractHessianOutput out) throws IOException {
Class cl = obj.getClass();
if (out.addRef(obj))
return;
int ref = out.writeObjectBegin(cl.getName());
Money money = (Money) obj;
if (ref < -1) {
out.writeString("value");
out.writeString(money.toString());
out.writeString("locale");
final Locale locale = money.getLocale();
out.writeString(locale.getLanguage() + ":" + locale.getCountry());
out.writeMapEnd();
} else {
if (ref == -1) {
out.writeInt(1);
out.writeString("value");
out.writeObjectBegin(cl.getName());
}
out.writeString(money.toString());
}
}
}