abstractunmarshallerimpl.java

来自「RESIN 3.2 最新源码」· Java 代码 · 共 307 行

JAVA
307
字号
/** 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.helpers;import org.w3c.dom.Node;import org.xml.sax.InputSource;import org.xml.sax.SAXException;import org.xml.sax.XMLReader;import org.xml.sax.helpers.XMLReaderFactory;import javax.xml.bind.*;import javax.xml.bind.annotation.adapters.XmlAdapter;import javax.xml.bind.attachment.AttachmentUnmarshaller;import javax.xml.stream.XMLEventReader;import javax.xml.stream.XMLInputFactory;import javax.xml.stream.XMLStreamException;import javax.xml.stream.XMLStreamReader;import javax.xml.transform.Source;import javax.xml.validation.Schema;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.io.Reader;import java.net.URL;import java.util.HashMap;public abstract class AbstractUnmarshallerImpl implements Unmarshaller{  private static XMLReader _xmlReader;  static {    try {      _xmlReader = XMLReaderFactory.createXMLReader();    } catch (SAXException e) {      // XXX    }  }  private static final ValidationEventHandler _defaultValidationEventHandler     = new DefaultValidationEventHandler() {      public boolean handleEvent(ValidationEvent event)      {        if (event == null)          throw new IllegalArgumentException();        return event.getSeverity() != ValidationEvent.FATAL_ERROR;      }    };  private XMLInputFactory _factory;  protected boolean validating;  private AttachmentUnmarshaller _attachmentUnmarshaller = null;  private ValidationEventHandler _validationEventHandler     = _defaultValidationEventHandler;  private Listener _listener = null;  private HashMap<String,Object> _properties = new HashMap<String,Object>();  private Schema _schema = null;  private XmlAdapter _adapter = null;  private HashMap<Class,XmlAdapter> _adapters =    new HashMap<Class,XmlAdapter>();  public AbstractUnmarshallerImpl()  {  }  protected UnmarshalException createUnmarshalException(SAXException e)  {    return new UnmarshalException(e);  }  public <A extends XmlAdapter> A getAdapter(Class<A> type)  {    return (A)_adapters.get(type);  }  public AttachmentUnmarshaller getAttachmentUnmarshaller()  {    return _attachmentUnmarshaller;  }  public ValidationEventHandler getEventHandler() throws JAXBException  {    return _validationEventHandler;  }  public Listener getListener()  {    return _listener;  }  public Object getProperty(String name) throws PropertyException  {    return _properties.get(name);  }  public Schema getSchema()  {    return _schema;  }  protected XMLReader getXMLReader() throws JAXBException  {    return _xmlReader;  }  public boolean isValidating() throws JAXBException  {    return validating;  }  public <A extends XmlAdapter> void setAdapter(Class<A> type, A adapter)  {    _adapters.put(type, adapter);  }  public void setAdapter(XmlAdapter adapter)  {    setAdapter((Class)adapter.getClass(), adapter);  }  public void setAttachmentUnmarshaller(AttachmentUnmarshaller au)  {    _attachmentUnmarshaller = au;  }  public void setEventHandler(ValidationEventHandler handler)    throws JAXBException  {    _validationEventHandler = handler;  }  public void setListener(Listener listener)  {    _listener = listener;  }  public void setProperty(String name, Object value) throws PropertyException  {    _properties.put(name, value);  }  public void setSchema(Schema schema)  {    _schema = schema;  }  public void setValidating(boolean validating) throws JAXBException  {    this.validating = validating;  }  private XMLInputFactory getXMLInputFactory()  {    if (_factory == null)      _factory = XMLInputFactory.newInstance();    return _factory;  }  public final Object unmarshal(File f) throws JAXBException  {    FileInputStream fis = null;    try {      fis = new FileInputStream(f);      return unmarshal(fis);    }    catch (IOException e) {      throw new JAXBException(e);    }    finally {      try {        if (fis != null)          fis.close();      }      catch (IOException e) {        throw new JAXBException(e);      }    }  }  public final Object unmarshal(InputSource source) throws JAXBException  {    throw new UnsupportedOperationException("subclasses must override this");  }    public final Object unmarshal(InputStream is) throws JAXBException  {    try {      XMLInputFactory factory = XMLInputFactory.newInstance();      return unmarshal(factory.createXMLStreamReader(is));    }    catch (XMLStreamException e) {      throw new JAXBException(e);    }  }  public final Object unmarshal(Reader reader) throws JAXBException  {    try {      XMLInputFactory factory = getXMLInputFactory();            return unmarshal(factory.createXMLStreamReader(reader));    }    catch (XMLStreamException e) {      throw new JAXBException(e);    }  }  public Object unmarshal(Source source) throws JAXBException  {    try {      XMLInputFactory factory = getXMLInputFactory();            return unmarshal(factory.createXMLStreamReader(source));    }    catch (XMLStreamException e) {      throw new JAXBException(e);    }  }  public <T> JAXBElement<T> unmarshal(Node node, Class<T> declaredType)      throws JAXBException  {    throw new UnsupportedOperationException("subclasses must override this");  }  public <T> JAXBElement<T> unmarshal(Source node, Class<T> declaredType)      throws JAXBException  {    try {      XMLInputFactory factory = XMLInputFactory.newInstance();      return unmarshal(factory.createXMLStreamReader(node), declaredType);    }    catch (XMLStreamException e) {      throw new JAXBException(e);    }  }  public final Object unmarshal(URL url) throws JAXBException  {    try {      return unmarshal(url.openStream());    }    catch (IOException e) {      throw new JAXBException(e);    }  }  public Object unmarshal(XMLEventReader reader) throws JAXBException  {    throw new UnsupportedOperationException("subclasses must override this");  }  public <T> JAXBElement<T> unmarshal(XMLEventReader xmlEventReader,                                      Class<T> declaredType)    throws JAXBException  {    throw new UnsupportedOperationException("subclasses must override this");  }  public <T> JAXBElement<T> unmarshal(XMLStreamReader xmlStreamReader,                                      Class<T> declaredType)      throws JAXBException  {    throw new UnsupportedOperationException("subclasses must override this");  }  public Object unmarshal(XMLStreamReader reader) throws JAXBException  {    throw new UnsupportedOperationException("subclasses must override this");  }  public abstract UnmarshallerHandler getUnmarshallerHandler();  protected abstract Object unmarshal(XMLReader reader, InputSource source)    throws JAXBException;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?