Package uk.ac.starlink.votable.soap

## Class AxisTableDeserializer

- java.lang.Object
- - org.xml.sax.helpers.DefaultHandler
  - - org.apache.axis.message.SOAPHandler
    - - org.apache.axis.encoding.DeserializerImpl
      - - uk.ac.starlink.votable.soap.AxisTableDeserializer

All Implemented Interfaces:
  `java.io.Serializable`, `javax.xml.rpc.encoding.Deserializer`, `org.apache.axis.encoding.Callback`, `org.apache.axis.encoding.Deserializer`, `org.xml.sax.ContentHandler`, `org.xml.sax.DTDHandler`, `org.xml.sax.EntityResolver`, `org.xml.sax.ErrorHandler`, `TableHandler`

    public class AxisTableDeserializer
    extends org.apache.axis.encoding.DeserializerImpl
    implements TableHandler

Custom deserializer for VOTables. The serialized stream is assumed to be a valid VOTABLE element containing a RESOURCE element containing a TABLE element.

The implementation of this class is tailored to various ill-documented idiosyncracies of AXIS's deserialization machinery. Tinker at your peril.

Since:
  23 Mar 2005
Author:
  Mark Taylor (Starlink)
See Also:
  Serialized Form

### Field Summary

### Fields inherited from class org.apache.axis.encoding.DeserializerImpl

`componentsReadyFlag, defaultType, id, isEnded, isHref, isNil, log, targets, value`

### Fields inherited from class org.apache.axis.message.SOAPHandler

`myElement`

### Constructor Summary

Constructors
`AxisTableDeserializer​(uk.ac.starlink.table.StoragePolicy storagePolicy)` Constructor.

### Method Summary

All Methods Instance Methods Concrete Methods
`boolean` `componentsReady()`
`void` `endTable()` Called when there are no more rows to be transmitted.
`java.lang.Object` `getValue()`
`void` `onEndElement​(java.lang.String namespace, java.lang.String localName, org.apache.axis.encoding.DeserializationContext context)`
`org.apache.axis.message.SOAPHandler` `onStartChild​(java.lang.String namespace, java.lang.String localName, java.lang.String prefix, org.xml.sax.Attributes atts, org.apache.axis.encoding.DeserializationContext context)`
`void` `rowData​(java.lang.Object[] row)` Called when a row has been read.
`void` `startTable​(uk.ac.starlink.table.StarTable meta)` Called when a table is about to be transmitted.
`void` `valueComplete()`

### Methods inherited from class org.apache.axis.encoding.DeserializerImpl

`addChildDeserializer, endElement, getDefaultType, getMechanismType, getValue, getValueTargets, moveValueTargets, onStartElement, registerValueTarget, removeValueTargets, setChildValue, setDefaultType, setValue, setValue, startElement`

### Methods inherited from class org.apache.axis.message.SOAPHandler

`characters, makeNewElement, onEndChild`

### Methods inherited from class org.xml.sax.helpers.DefaultHandler

`endDocument, endElement, endPrefixMapping, error, fatalError, ignorableWhitespace, notationDecl, processingInstruction, resolveEntity, setDocumentLocator, skippedEntity, startDocument, startElement, startPrefixMapping, unparsedEntityDecl, warning`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### AxisTableDeserializer

    public AxisTableDeserializer​(uk.ac.starlink.table.StoragePolicy storagePolicy)

Constructor.

Parameters:
  `storagePolicy` - policy for storing streamed table data

### Method Detail

#### onStartChild

    public org.apache.axis.message.SOAPHandler onStartChild​(java.lang.String namespace,
                                                            java.lang.String localName,
                                                            java.lang.String prefix,
                                                            org.xml.sax.Attributes atts,
                                                            org.apache.axis.encoding.DeserializationContext context)
                                                     throws org.xml.sax.SAXException

Specified by:
  `onStartChild` in interface `org.apache.axis.encoding.Deserializer`
Overrides:
  `onStartChild` in class `org.apache.axis.encoding.DeserializerImpl`
Throws:
  `org.xml.sax.SAXException`

#### onEndElement

    public void onEndElement​(java.lang.String namespace,
                             java.lang.String localName,
                             org.apache.axis.encoding.DeserializationContext context)
                      throws org.xml.sax.SAXException

Specified by:
  `onEndElement` in interface `org.apache.axis.encoding.Deserializer`
Overrides:
  `onEndElement` in class `org.apache.axis.encoding.DeserializerImpl`
Throws:
  `org.xml.sax.SAXException`

#### startTable

    public void startTable​(uk.ac.starlink.table.StarTable meta)

Description copied from interface: `TableHandler`
Called when a table is about to be transmitted. This call will occur somewhere between matched DATA element `startElement` and `endElement` calls. The `metadata` argument signals column and table metadata argument about the table whose rows are about to be transmitted. If the number of rows that will be transmitted via subsequent calls to `rowData` is known, this value should be made available as the row count of `metadata` (`StarTable.getRowCount()`); if it is not known, the row count should be -1. However, this object should not attempt to read any of `meta`'s cell data.

The data to be transmitted in subsequent calls of `acceptRow` must match the metadata transmitted in this call in the same way that rows of a StarTable must match its own metadata (number and content clases of columns etc).

Specified by:
  `startTable` in interface `TableHandler`
Parameters:
  `meta` - metadata object

#### rowData

    public void rowData​(java.lang.Object[] row)
                 throws org.xml.sax.SAXException

Description copied from interface: `TableHandler`
Called when a row has been read. This method will be called between matched `startTable` and `endTable` calls.

Specified by:
  `rowData` in interface `TableHandler`
Parameters:
  `row` - array of data objects representing a row in the current table
Throws:
  `org.xml.sax.SAXException`

#### endTable

    public void endTable()
                  throws org.xml.sax.SAXException

Description copied from interface: `TableHandler`
Called when there are no more rows to be transmitted.

Specified by:
  `endTable` in interface `TableHandler`
Throws:
  `org.xml.sax.SAXException`

#### getValue

    public java.lang.Object getValue()

Specified by:
  `getValue` in interface `org.apache.axis.encoding.Deserializer`
Overrides:
  `getValue` in class `org.apache.axis.encoding.DeserializerImpl`

#### componentsReady

    public boolean componentsReady()

Specified by:
  `componentsReady` in interface `org.apache.axis.encoding.Deserializer`
Overrides:
  `componentsReady` in class `org.apache.axis.encoding.DeserializerImpl`

#### valueComplete

    public void valueComplete()
                       throws org.xml.sax.SAXException

Specified by:
  `valueComplete` in interface `org.apache.axis.encoding.Deserializer`
Overrides:
  `valueComplete` in class `org.apache.axis.encoding.DeserializerImpl`
Throws:
  `org.xml.sax.SAXException`