package com.brightgenerous.xml.deleagate; import java.io.Reader; import java.io.StringWriter; import java.io.Writer; import javax.xml.bind.DataBindingException; import javax.xml.bind.JAXB; import com.brightgenerous.xml.XmlException; class XmlDelegaterImpl implements XmlDelegater { { check(); } private static void check() { try { Class.forName(DataBindingException.class.getName()); Class.forName(JAXB.class.getName()); } catch (ClassNotFoundException e) { throw new RuntimeException(e); } } @Override public <T> T unmarshal(String xml, Class<T> clazz) throws XmlException { try { return JAXB.unmarshal(xml, clazz); } catch (DataBindingException e) { throw new XmlException(e); } } @Override public <T> T unmarshal(Reader xml, Class<T> clazz) throws XmlException { try { return JAXB.unmarshal(xml, clazz); } catch (DataBindingException e) { throw new XmlException(e); } } @Override public String marshal(Object obj) throws XmlException { StringWriter sw = new StringWriter(); try { JAXB.marshal(obj, sw); } catch (DataBindingException e) { throw new XmlException(e); } return sw.toString(); } @Override public void marshal(Object obj, Writer out) throws XmlException { try { JAXB.marshal(obj, out); } catch (DataBindingException e) { throw new XmlException(e); } } }