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}