diff --git a/common/src/main/java/com/jeesite/common/mapper/JaxbMapper.java b/common/src/main/java/com/jeesite/common/mapper/JaxbMapper.java deleted file mode 100644 index fbb3aab1..00000000 --- a/common/src/main/java/com/jeesite/common/mapper/JaxbMapper.java +++ /dev/null @@ -1,172 +0,0 @@ -/** - * Copyright (c) 2005-2012 springside.org.cn - * - * Licensed under the Apache License, Version 2.0 (the "License"); - */ -package com.jeesite.common.mapper; - -import java.io.StringReader; -import java.io.StringWriter; -import java.util.Collection; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ConcurrentMap; - -import javax.xml.bind.JAXBContext; -import javax.xml.bind.JAXBElement; -import javax.xml.bind.JAXBException; -import javax.xml.bind.Marshaller; -import javax.xml.bind.Unmarshaller; -import javax.xml.bind.annotation.XmlAnyElement; -import javax.xml.namespace.QName; - -import com.jeesite.common.lang.ExceptionUtils; -import com.jeesite.common.lang.StringUtils; -import com.jeesite.common.reflect.ReflectUtils; - -/** - * 使用Jaxb2.0实现XML<->Java Object的Mapper. - * - * 在创建时需要设定所有需要序列化的Root对象的Class. - * 特别支持Root对象是Collection的情形. - * - * @author calvin - * @version 2013-01-15 - */ -@SuppressWarnings("rawtypes") -public class JaxbMapper { - - private static ConcurrentMap jaxbContexts = new ConcurrentHashMap(); - - /** - * Java Object->Xml without encoding. - */ - public static String toXml(Object root) { - Class clazz = ReflectUtils.getUserClass(root); - return toXml(root, clazz, null); - } - - /** - * Java Object->Xml with encoding. - */ - public static String toXml(Object root, String encoding) { - Class clazz = ReflectUtils.getUserClass(root); - return toXml(root, clazz, encoding); - } - - /** - * Java Object->Xml with encoding. - */ - public static String toXml(Object root, Class clazz, String encoding) { - try { - StringWriter writer = new StringWriter(); - createMarshaller(clazz, encoding).marshal(root, writer); - return writer.toString(); - } catch (JAXBException e) { - throw ExceptionUtils.unchecked(e); - } - } - - /** - * Java Collection->Xml without encoding, 特别支持Root Element是Collection的情形. - */ - public static String toXml(Collection root, String rootName, Class clazz) { - return toXml(root, rootName, clazz, null); - } - - /** - * Java Collection->Xml with encoding, 特别支持Root Element是Collection的情形. - */ - public static String toXml(Collection root, String rootName, Class clazz, String encoding) { - try { - CollectionWrapper wrapper = new CollectionWrapper(); - wrapper.collection = root; - - JAXBElement wrapperElement = new JAXBElement(new QName(rootName), - CollectionWrapper.class, wrapper); - - StringWriter writer = new StringWriter(); - createMarshaller(clazz, encoding).marshal(wrapperElement, writer); - - return writer.toString(); - } catch (JAXBException e) { - throw ExceptionUtils.unchecked(e); - } - } - - /** - * Xml->Java Object. - */ - @SuppressWarnings("unchecked") - public static T fromXml(String xml, Class clazz) { - try { - StringReader reader = new StringReader(xml); - return (T) createUnmarshaller(clazz).unmarshal(reader); - } catch (JAXBException e) { - throw ExceptionUtils.unchecked(e); - } - } - - /** - * 创建Marshaller并设定encoding(可为null). - * 线程不安全,需要每次创建或pooling。 - */ - public static Marshaller createMarshaller(Class clazz, String encoding) { - try { - JAXBContext jaxbContext = getJaxbContext(clazz); - - Marshaller marshaller = jaxbContext.createMarshaller(); - - marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); - - if (StringUtils.isNotBlank(encoding)) { - marshaller.setProperty(Marshaller.JAXB_ENCODING, encoding); - } - - return marshaller; - } catch (JAXBException e) { - throw ExceptionUtils.unchecked(e); - } - } - - /** - * 创建UnMarshaller. - * 线程不安全,需要每次创建或pooling。 - */ - public static Unmarshaller createUnmarshaller(Class clazz) { - try { - JAXBContext jaxbContext = getJaxbContext(clazz); - return jaxbContext.createUnmarshaller(); - } catch (JAXBException e) { - throw ExceptionUtils.unchecked(e); - } - } - - protected static JAXBContext getJaxbContext(Class clazz) { - if (clazz == null){ - throw new RuntimeException("'clazz' must not be null"); - } - JAXBContext jaxbContext = jaxbContexts.get(clazz); - if (jaxbContext == null) { - try { - jaxbContext = JAXBContext.newInstance(clazz, CollectionWrapper.class); - jaxbContexts.putIfAbsent(clazz, jaxbContext); - } catch (JAXBException ex) { -// throw new HttpMessageConversionException("Could not instantiate JAXBContext for class [" + clazz -// + "]: " + ex.getMessage(), ex); - throw new RuntimeException("Could not instantiate JAXBContext for class [" + clazz - + "]: " + ex.getMessage(), ex); - } - } - return jaxbContext; - } - - /** - * 封装Root Element 是 Collection的情况. - */ - public static class CollectionWrapper { - - @XmlAnyElement - protected Collection collection; - } - -}