fedora.server.storage.translation
Class FOXMLDODeserializer

java.lang.Object
  extended by org.xml.sax.helpers.DefaultHandler
      extended by fedora.server.storage.translation.FOXMLDODeserializer
All Implemented Interfaces:
Constants, DODeserializer, org.xml.sax.ContentHandler, org.xml.sax.DTDHandler, org.xml.sax.EntityResolver, org.xml.sax.ErrorHandler

public class FOXMLDODeserializer
extends org.xml.sax.helpers.DefaultHandler
implements DODeserializer, Constants

Deserializes XML digital object encoded in accordance with the Fedora Object XML (FOXML) schema defined at: http://www.fedora.info/definitions/1/0/foxml1-0.xsd. The FOXML XML is parsed using SAX and is instantiated into a Fedora digital object in memory (see fedora.server.types.DigitalObject).

Version:
$Id: FOXMLDODeserializer.java 7438 2008-07-08 06:41:33Z pangloss $
Author:
payette@cs.cornell.edu

Nested Class Summary
 
Nested classes/interfaces inherited from interface fedora.common.Constants
Constants.FedoraHome
 
Field Summary
static int QUERY_ALWAYS
          Always query web server for content size and MIME type.
static int QUERY_IF_UNDEFINED
          Query web server for content size and MIME type if either are undefined.
static int QUERY_NEVER
          Never query web server for content size and MIME type
 
Fields inherited from interface fedora.common.Constants
ACTION, BDEF, BMECH, DATASTREAM, DC, DISSEMINATOR, ENVIRONMENT, FEDORA, FEDORA_HOME, FEDORA_SYSTEM_DEF_PID, FEDORA_SYSTEM_DEF_URI, HTTP_REQUEST, MODEL, OBJECT, RDF, RECOVERY, RELS_EXT, RESOURCE, SUBJECT, TUCANA, VIEW, XSD
 
Constructor Summary
FOXMLDODeserializer()
           
FOXMLDODeserializer(java.lang.String characterEncoding)
          Initializes by setting up a parser that doesn't validate and never queries the server for values of DSSize and DSMIME.
FOXMLDODeserializer(java.lang.String characterEncoding, boolean validate, int queryBehavior)
          Initializes by setting up a parser that validates only if validate=true.
 
Method Summary
 void characters(char[] ch, int start, int length)
           
 void deserialize(java.io.InputStream in, DigitalObject obj, java.lang.String encoding, int transContext)
           
 void endElement(java.lang.String uri, java.lang.String localName, java.lang.String qName)
           
 void endPrefixMapping(java.lang.String prefix)
           
 DODeserializer getInstance()
           
 void startElement(java.lang.String uri, java.lang.String localName, java.lang.String qName, org.xml.sax.Attributes a)
           
 void startPrefixMapping(java.lang.String prefix, java.lang.String uri)
           
 
Methods inherited from class org.xml.sax.helpers.DefaultHandler
endDocument, error, fatalError, ignorableWhitespace, notationDecl, processingInstruction, resolveEntity, setDocumentLocator, skippedEntity, startDocument, unparsedEntityDecl, warning
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

QUERY_NEVER

public static int QUERY_NEVER
Never query web server for content size and MIME type


QUERY_IF_UNDEFINED

public static int QUERY_IF_UNDEFINED
Query web server for content size and MIME type if either are undefined.


QUERY_ALWAYS

public static int QUERY_ALWAYS
Always query web server for content size and MIME type.

Constructor Detail

FOXMLDODeserializer

public FOXMLDODeserializer()
                    throws javax.xml.parsers.FactoryConfigurationError,
                           javax.xml.parsers.ParserConfigurationException,
                           org.xml.sax.SAXException,
                           java.io.UnsupportedEncodingException
Throws:
javax.xml.parsers.FactoryConfigurationError
javax.xml.parsers.ParserConfigurationException
org.xml.sax.SAXException
java.io.UnsupportedEncodingException

FOXMLDODeserializer

public FOXMLDODeserializer(java.lang.String characterEncoding)
                    throws javax.xml.parsers.FactoryConfigurationError,
                           javax.xml.parsers.ParserConfigurationException,
                           org.xml.sax.SAXException,
                           java.io.UnsupportedEncodingException
Initializes by setting up a parser that doesn't validate and never queries the server for values of DSSize and DSMIME.

Throws:
javax.xml.parsers.FactoryConfigurationError
javax.xml.parsers.ParserConfigurationException
org.xml.sax.SAXException
java.io.UnsupportedEncodingException

FOXMLDODeserializer

public FOXMLDODeserializer(java.lang.String characterEncoding,
                           boolean validate,
                           int queryBehavior)
                    throws javax.xml.parsers.FactoryConfigurationError,
                           javax.xml.parsers.ParserConfigurationException,
                           org.xml.sax.SAXException,
                           java.io.UnsupportedEncodingException
Initializes by setting up a parser that validates only if validate=true.

The character encoding of the XML is auto-determined by sax, but we need it for when we set the byte[] in DatastreamXMLMetadata, so we effectively, we need to also specify the encoding of the datastreams. this could be different than how the digital object xml was encoded, and this class won't care. However, the caller should keep track of the byte[] encoding if it plans on doing any translation of that to characters (such as in xml serialization)

Throws:
javax.xml.parsers.FactoryConfigurationError
javax.xml.parsers.ParserConfigurationException
org.xml.sax.SAXException
java.io.UnsupportedEncodingException
Method Detail

getInstance

public DODeserializer getInstance()
                           throws RepositoryConfigurationException
Specified by:
getInstance in interface DODeserializer
Throws:
RepositoryConfigurationException

deserialize

public void deserialize(java.io.InputStream in,
                        DigitalObject obj,
                        java.lang.String encoding,
                        int transContext)
                 throws ObjectIntegrityException,
                        StreamIOException,
                        java.io.UnsupportedEncodingException
Specified by:
deserialize in interface DODeserializer
Throws:
ObjectIntegrityException
StreamIOException
java.io.UnsupportedEncodingException

startPrefixMapping

public void startPrefixMapping(java.lang.String prefix,
                               java.lang.String uri)
Specified by:
startPrefixMapping in interface org.xml.sax.ContentHandler
Overrides:
startPrefixMapping in class org.xml.sax.helpers.DefaultHandler

endPrefixMapping

public void endPrefixMapping(java.lang.String prefix)
Specified by:
endPrefixMapping in interface org.xml.sax.ContentHandler
Overrides:
endPrefixMapping in class org.xml.sax.helpers.DefaultHandler

startElement

public void startElement(java.lang.String uri,
                         java.lang.String localName,
                         java.lang.String qName,
                         org.xml.sax.Attributes a)
                  throws org.xml.sax.SAXException
Specified by:
startElement in interface org.xml.sax.ContentHandler
Overrides:
startElement in class org.xml.sax.helpers.DefaultHandler
Throws:
org.xml.sax.SAXException

characters

public void characters(char[] ch,
                       int start,
                       int length)
Specified by:
characters in interface org.xml.sax.ContentHandler
Overrides:
characters in class org.xml.sax.helpers.DefaultHandler

endElement

public void endElement(java.lang.String uri,
                       java.lang.String localName,
                       java.lang.String qName)
                throws org.xml.sax.SAXException
Specified by:
endElement in interface org.xml.sax.ContentHandler
Overrides:
endElement in class org.xml.sax.helpers.DefaultHandler
Throws:
org.xml.sax.SAXException