package at.ac.tuwien.infosys.jaxb;
import java.math.BigDecimal;
import javax.xml.bind.annotation.adapters.XmlAdapter;
import com.sun.xml.bind.WhiteSpaceProcessor;
/**
* See https://github.com/whummer/jaxb-facets/issues/24
*/
public class DecimalAdaptor extends XmlAdapter<String, BigDecimal> {
@Override
public String marshal(BigDecimal value) throws Exception {
if (value == null) {
return null;
}
return value.toPlainString();
}
@Override
public BigDecimal unmarshal(String value) throws Exception {
if (value == null) {
return null;
}
CharSequence trimmed = WhiteSpaceProcessor.trim(value);
if (trimmed.length() == 0) {
return null;
}
try {
return new BigDecimal(trimmed.toString());
} catch (NumberFormatException e) {
throw new NumberFormatException("Invalid decimal");
}
}
}