jaxb.java
来自「RESIN 3.2 最新源码」· Java 代码 · 共 246 行
JAVA
246 行
/** Copyright (c) 1998-2006 Caucho Technology -- all rights reserved** This file is part of Resin(R) Open Source** Each copy or derived work must preserve the copyright notice and this* notice unmodified.** Resin Open Source is free software; you can redistribute it and/or modify* it under the terms of the GNU General Public License as published by* the Free Software Foundation; either version 2 of the License, or* (at your option) any later version.** Resin Open Source is distributed in the hope that it will be useful,* but WITHOUT ANY WARRANTY; without even the implied warranty of* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, or any warranty* of NON-INFRINGEMENT. See the GNU General Public License for more* details.** You should have received a copy of the GNU General Public License* along with Resin Open Source; if not, write to the** Free Software Foundation, Inc.* 59 Temple Place, Suite 330* Boston, MA 02111-1307 USA** @author Scott Ferguson*/package javax.xml.bind;import java.util.*;import java.io.*;import java.net.*;import java.lang.ref.*;import javax.xml.transform.*;import javax.xml.transform.stream.*;public final class JAXB { private static WeakHashMap<Class,SoftReference<JAXBContext>> _contextMap = new WeakHashMap<Class,SoftReference<JAXBContext>>(); public static void marshal(Object obj, File xml) { try { getContext(obj).createMarshaller().marshal(obj, xml); } catch (RuntimeException e) { throw e; } catch (Exception e) { throw new DataBindingException(e); } } public static void marshal(Object obj, URL xml) { try { URLConnection conn = xml.openConnection(); conn.setDoInput(false); conn.setDoOutput(false); conn.connect(); OutputStream os = conn.getOutputStream(); try { StreamResult result = new StreamResult(os); marshal(obj, result); } finally { os.close(); } } catch (RuntimeException e) { throw e; } catch (Exception e) { throw new DataBindingException(e); } } public static void marshal(Object obj, URI xml) { try { marshal(obj, xml.toURL()); } catch (RuntimeException e) { throw e; } catch (Exception e) { throw new DataBindingException(e); } } public static void marshal(Object obj, String xml) { try { StreamResult result = new StreamResult(xml); getContext(obj).createMarshaller().marshal(obj, result); } catch (RuntimeException e) { throw e; } catch (Exception e) { throw new DataBindingException(e); } } public static void marshal(Object obj, OutputStream xml) { try { getContext(obj).createMarshaller().marshal(obj, xml); } catch (RuntimeException e) { throw e; } catch (Exception e) { throw new DataBindingException(e); } } public static void marshal(Object obj, Writer xml) { try { getContext(obj).createMarshaller().marshal(obj, xml); } catch (RuntimeException e) { throw e; } catch (Exception e) { throw new DataBindingException(e); } } public static void marshal(Object obj, Result xml) { try { getContext(obj).createMarshaller().marshal(obj, xml); } catch (RuntimeException e) { throw e; } catch (Exception e) { throw new DataBindingException(e); } } public static <T> T unmarshal(File xml, Class<T> type) { try { return (T) getContext(type).createUnmarshaller().unmarshal(xml); } catch (RuntimeException e) { throw e; } catch (Exception e) { throw new DataBindingException(e); } } public static <T> T unmarshal(URL url, Class<T> type) { try { return (T) getContext(type).createUnmarshaller().unmarshal(url); } catch (RuntimeException e) { throw e; } catch (Exception e) { throw new DataBindingException(e); } } public static <T> T unmarshal(URI uri, Class<T> type) { try { return unmarshal(uri.toURL(), type); } catch (RuntimeException e) { throw e; } catch (Exception e) { throw new DataBindingException(e); } } public static <T> T unmarshal(String xml, Class<T> type) { try { StreamSource source = new StreamSource(xml); return (T) getContext(type).createUnmarshaller().unmarshal(source); } catch (RuntimeException e) { throw e; } catch (Exception e) { throw new DataBindingException(e); } } public static <T> T unmarshal(InputStream xml, Class<T> type) { try { return (T) getContext(type).createUnmarshaller().unmarshal(xml); } catch (RuntimeException e) { throw e; } catch (Exception e) { throw new DataBindingException(e); } } public static <T> T unmarshal(Reader xml, Class<T> type) { try { return (T) getContext(type).createUnmarshaller().unmarshal(xml); } catch (RuntimeException e) { throw e; } catch (Exception e) { throw new DataBindingException(e); } } public static <T> T unmarshal(Source xml, Class<T> type) { try { return (T) getContext(type).createUnmarshaller().unmarshal(xml); } catch (RuntimeException e) { throw e; } catch (Exception e) { throw new DataBindingException(e); } } private static JAXBContext getContext(Object obj) throws JAXBException { if (obj instanceof JAXBElement) { JAXBElement elt = (JAXBElement) obj; return getContext(elt.getDeclaredType()); } else return getContext(obj.getClass()); } private static JAXBContext getContext(Class cl) throws JAXBException { SoftReference<JAXBContext> ref = _contextMap.get(cl); JAXBContext context = null; if (ref != null) context = ref.get(); if (context == null) { context = JAXBContext.newInstance(cl); _contextMap.put(cl, new SoftReference<JAXBContext>(context)); } return context; }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?