package org.jboss.resteasy.plugins.providers.jaxb.json;
import org.codehaus.jettison.mapped.Configuration;
import org.codehaus.jettison.mapped.MappedNamespaceConvention;
import org.codehaus.jettison.mapped.MappedXMLStreamWriter;
import org.jboss.resteasy.plugins.providers.jaxb.BaseMarshaller;
import org.w3c.dom.Node;
import org.xml.sax.ContentHandler;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.PropertyException;
import javax.xml.bind.ValidationEventHandler;
import javax.xml.bind.annotation.adapters.XmlAdapter;
import javax.xml.bind.attachment.AttachmentMarshaller;
import javax.xml.stream.XMLEventWriter;
import javax.xml.stream.XMLStreamWriter;
import javax.xml.transform.Result;
import javax.xml.validation.Schema;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.Writer;
import java.util.List;
import java.util.Map;
/**
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
* @version $Revision: 1 $
*/
public class JettisonMappedMarshaller extends BaseMarshaller
{
private MappedNamespaceConvention convention;
public JettisonMappedMarshaller(JAXBContext context, Map<String, String> xmlToJSON, List<String> attributeMapping, List<String> ignoredElements) throws JAXBException
{
marshaller = context.createMarshaller();
Configuration config = new Configuration(xmlToJSON, attributeMapping, ignoredElements);
convention = new MappedNamespaceConvention(config);
}
public JettisonMappedMarshaller(JAXBContext context, MappedNamespaceConvention convention) throws JAXBException
{
marshaller = context.createMarshaller();
this.convention = convention;
}
public void marshal(Object o, Result result)
throws JAXBException
{
marshaller.marshal(o, result);
}
public void marshal(Object o, File file)
throws JAXBException
{
try
{
marshal(o, new FileOutputStream(file));
}
catch (FileNotFoundException e)
{
throw new JAXBException(e);
}
}
public void marshal(Object o, Writer writer)
throws JAXBException
{
MappedXMLStreamWriter mapped = new MappedXMLStreamWriter(convention, writer);
marshaller.marshal(o, mapped);
}
public void marshal(Object o, ContentHandler contentHandler)
throws JAXBException
{
marshaller.marshal(o, contentHandler);
}
public void marshal(Object o, Node node)
throws JAXBException
{
marshaller.marshal(o, node);
}
public void marshal(Object o, XMLStreamWriter xmlStreamWriter)
throws JAXBException
{
marshaller.marshal(o, xmlStreamWriter);
}
public void marshal(Object o, XMLEventWriter xmlEventWriter)
throws JAXBException
{
marshaller.marshal(o, xmlEventWriter);
}
public Node getNode(Object o)
throws JAXBException
{
return marshaller.getNode(o);
}
public Object getProperty(String s)
throws PropertyException
{
return marshaller.getProperty(s);
}
public void setEventHandler(ValidationEventHandler validationEventHandler)
throws JAXBException
{
marshaller.setEventHandler(validationEventHandler);
}
public ValidationEventHandler getEventHandler()
throws JAXBException
{
return marshaller.getEventHandler();
}
public void setAdapter(XmlAdapter xmlAdapter)
{
marshaller.setAdapter(xmlAdapter);
}
public <A extends XmlAdapter> void setAdapter(Class<A> aClass, A a)
{
marshaller.setAdapter(aClass, a);
}
public <A extends XmlAdapter> A getAdapter(Class<A> aClass)
{
return marshaller.getAdapter(aClass);
}
public void setAttachmentMarshaller(AttachmentMarshaller attachmentMarshaller)
{
marshaller.setAttachmentMarshaller(attachmentMarshaller);
}
public AttachmentMarshaller getAttachmentMarshaller()
{
return marshaller.getAttachmentMarshaller();
}
public void setSchema(Schema schema)
{
marshaller.setSchema(schema);
}
public Schema getSchema()
{
return marshaller.getSchema();
}
public void setListener(Listener listener)
{
marshaller.setListener(listener);
}
public Listener getListener()
{
return marshaller.getListener();
}
}