001package org.kuali.ole.docstore.discovery.circulation;
002
003import org.codehaus.jackson.map.ObjectMapper;
004import groovy.json.JsonBuilder;
005import org.slf4j.Logger;
006import org.slf4j.LoggerFactory;
007
008import javax.xml.bind.JAXBContext;
009import javax.xml.bind.JAXBElement;
010import javax.xml.bind.JAXBException;
011import javax.xml.bind.Unmarshaller;
012import javax.xml.stream.XMLInputFactory;
013import javax.xml.stream.XMLStreamReader;
014import java.io.IOException;
015import java.io.StringReader;
016
017/**
018 * Created with IntelliJ IDEA.
019 * User: pvsubrah
020 * Date: 5/22/13
021 * Time: 10:32 AM
022 * To change this template use File | Settings | File Templates.
023 */
024public class XmlContentHandler {
025    private XMLInputFactory xmlInputFactory;
026    private static final Logger LOG             = LoggerFactory.getLogger(XmlContentHandler.class);
027    public Object unmarshalXMLContent(Class clazz, String content) {
028        Object unmarshaledObject = null;
029        try {
030            JAXBContext jaxbContext = JAXBContextFactory.getJAXBContextForClass(clazz);
031            Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
032            XMLInputFactory xmlInputFactory = getXmlInputFactory();
033            XMLStreamReader xmlStreamReader = xmlInputFactory.createXMLStreamReader(new StringReader(content));
034            unmarshaledObject = jaxbUnmarshaller.unmarshal(xmlStreamReader);
035        } catch (Exception e) {
036            LOG.error(e.getMessage(), e);
037        }
038        if (unmarshaledObject instanceof JAXBElement) {
039            return ((JAXBElement) unmarshaledObject).getValue();
040        }
041        return unmarshaledObject;
042    }
043
044    public String marshalToJSON(Object object) throws JAXBException, IOException {
045        ObjectMapper objectMapper = new ObjectMapper();
046        return objectMapper.defaultPrettyPrintingWriter().writeValueAsString(object);
047    }
048
049    private XMLInputFactory getXmlInputFactory() {
050        if (null == xmlInputFactory) {
051            xmlInputFactory = XMLInputFactory.newInstance();
052        }
053        return xmlInputFactory;
054    }
055}