net.rim.device.api.xml.jaxp
Class WBXMLWriter

java.lang.Object
  extended by org.xml.sax.helpers.DefaultHandler
      extended by net.rim.device.api.xml.jaxp.WBXMLWriter
All Implemented Interfaces:
RIMExtendedHandler, WBXMLConstants, ContentHandler, DTDHandler, EntityResolver, ErrorHandler

public class WBXMLWriter
extends DefaultHandler
implements RIMExtendedHandler, WBXMLConstants

This class implements a WBXML writer as a SAX parser handler. The writer can be passed to any parser and will write WBXML to the specified OutputStream.

The three methods
setTagTable(String[] tagTable),
setAttrStartTable(String[] attrStartTable), and
setAttrValueTable(String[] attrValueTable)

are typically used to set up the tag table, the attribute-name table, and and the attribute-value table for generating the corresponding WBXML.

Since:
BlackBerry API 4.0.0

Field Summary
 
Fields inherited from interface net.rim.device.api.xml.WBXMLConstants
CHARSET_ISO_8859_1, CHARSET_UTF_8, END, ENTITY, EXT_0, EXT_1, EXT_2, EXT_I_0, EXT_I_1, EXT_I_2, EXT_T_0, EXT_T_1, EXT_T_2, ISO_8859_1, LITERAL, LITERAL_A, LITERAL_AC, LITERAL_C, OPAQUE, PI, PUBLIC_ID_UNKNOWN, PUBLIC_ID_WML10, PUBLIC_ID_WML11, PUBLIC_ID_WML12, PUBLIC_ID_WML13, STR_I, STR_T, SWITCH_PAGE, UTF_8, WBXML_1_1, WBXML_1_2, WBXML_1_3
 
Constructor Summary
WBXMLWriter(OutputStream out)
           This class implements a WBXML writer as a SAX parser handler.
 
Method Summary
 void cdataSection(char[] text, int offset, int length)
          Receives notification of a CDATA section.
 void characters(char[] ch, int start, int length)
          Receive notification of character data inside an element.
 void comment(char[] text, int offset, int length)
          Receives notification of a comment.
 void defaultAttribute(String element, String attribute, String defaultValue)
          Receives notification of a default attribute value declaration.
 void endDTD(String name, String publicIdStr, String systemId, String body)
          
 void endDocument()
          
 void endElement(String uri, String localName, String qName)
          Receive notification of the end of an element.
 void endEntityReference(String name)
          Receives notification of the end of an entity reference.
 void entityDecl(String name, String value)
          Receives notification of a general entity declaration.
 void ignorableWhitespace(char[] ch, int start, int length)
          Receive notification of ignorable whitespace in element content.
 void processingInstruction(String target, String data)
          Receive notification of a processing instruction.
 InputSource resolveEntity(String publicId, String systemId)
          Resolve an external entity.
 void setAttrStartTable(int page, String[] attrStartTable)
           Sets the attribute start table for a given page.
 void setAttrStartTable(String[] attrStartTable)
           Sets the attribute start table.
 void setAttrValueTable(int page, String[] attrValueTable)
           Sets the attribute value table for a given page.
 void setAttrValueTable(String[] attrValueTable)
           Sets the attribute value table.
 void setCharset(int charset)
           Sets the character set for the written WBXML.
 void setEncoding(String encoding)
           Sets the encoding for the written WBXML.
 void setEntityResolver(EntityResolver entityResolver)
           Sets the entity resolver for this writer.
 void setPublicID(int publicID)
           Sets the written WBXML public ID.
 void setTagTable(int page, String[] tagTable)
           Sets the tag code page for a given page.
 void setTagTable(String[] tagTable)
           Sets the tag code page.
 void setVersion(int version)
           Sets the version of the WBXML.
 void startAndEndElement(String eUri, String localName, String qName, Attributes attributes)
           Handles self-closing element.
 void startDTD()
          Implementation of RIMExtendedHandler
 void startDocument()
          
 void startElement(String eUri, String localName, String qName, Attributes attributes)
          Receive notification of the start of an element.
 void startEntityReference(String name, String publicId, String systemId)
          Receives notification of the start of an entity reference.
 void startPrefixMapping(String prefix, String uri)
          Receive notification of the start of a Namespace mapping.
 
Methods inherited from class org.xml.sax.helpers.DefaultHandler
endPrefixMapping, error, fatalError, notationDecl, setDocumentLocator, skippedEntity, unparsedEntityDecl, warning
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 



Constructor Detail

WBXMLWriter

public WBXMLWriter(OutputStream out)

This class implements a WBXML writer as a SAX parser handler. The writer can be passed to any parser and will write WBXML to the specified OutputStream.

Parameters:
out - A stream to receive the WBXML output.
Since:
BlackBerry API 4.0.0


Method Detail

setCharset

public void setCharset(int charset)

Sets the character set for the written WBXML.

Parameters:
charset - The character set. It must be one of net.rim.device.api.xml.WBXMLConstants.CHARSET_ISO_8859_1 or net.rim.device.api.xml.WBXMLConstants.CHARSET_UTF_8.
See Also:
net.rim.device.api.xml.WBXMLConstants.
Since:
BlackBerry API 4.0.0

setPublicID

public void setPublicID(int publicID)

Sets the written WBXML public ID.

Parameters:
publicId - The public ID. It must be one of net.rim.device.api.xml.WBXMLConstants.PUBLIC_ID_WML10, net.rim.device.api.xml.WBXMLConstants.PUBLIC_ID_WML11, net.rim.device.api.xml.WBXMLConstants.PUBLIC_ID_WML12, or net.rim.device.api.xml.WBXMLConstants.PUBLIC_ID_WML13.
See Also:
net.rim.device.api.xml.WBXMLConstants.
Since:
BlackBerry API 4.0.0

setVersion

public void setVersion(int version)

Sets the version of the WBXML.

Parameters:
The - version. It must be one of net.rim.device.api.xml.WBXMLConstants.WBXML_1_1, net.rim.device.api.xml.WBXMLConstants.WBXML_1_2, or net.rim.device.api.xml.WBXMLConstants.WBXML_1_3.
See Also:
net.rim.device.api.xml.WBXMLConstants.
Since:
BlackBerry API 4.0.0

setTagTable

public void setTagTable(int page,
                        String[] tagTable)

Sets the tag code page for a given page.

Parameters:
page - The page number.
tagTable - The tags.
Throws:
IllegalArgumentException - if page exceeds 256 (the tag code space has only 256 code pages.), or if page equals 255 (the code page 255 is reserved for implementation-specific or experimental use.), or if the number of elements in the input table tagTable exceeds 59.
Since:
BlackBerry API 4.0.0

setTagTable

public void setTagTable(String[] tagTable)

Sets the tag code page.

Parameters:
tagTable - The tags.
Throws:
IllegalArgumentException - if the number of pages needed exceeds the maximum number of code pages allowed (255).
Since:
BlackBerry API 5.0.0

setAttrStartTable

public void setAttrStartTable(int page,
                              String[] attrStartTable)

Sets the attribute start table for a given page.

Parameters:
page - The page number.
attrStartTable - The attribute names to define.
Throws:
IllegalArgumentException - if page exceeds 256 (the attribute start code space has only 256 code pages.), or if page equals 255 (the code page 255 is reserved for implementation-specific or experimental use.), or if the number of elements in the input table attrStartTable exceeds 118.
Since:
BlackBerry API 4.0.0

setAttrStartTable

public void setAttrStartTable(String[] attrStartTable)

Sets the attribute start table.

Parameters:
attrStartTable - The attribute names to define.
Throws:
IllegalArgumentException - if the number of pages needed exceeds the maximum number of code pages allowed (255).
Since:
BlackBerry API 5.0.0

setAttrValueTable

public void setAttrValueTable(int page,
                              String[] attrValueTable)

Sets the attribute value table for a given page.

Parameters:
page - The page number.
attrValueTable - The attribute values to define.
Throws:
IllegalArgumentException - if page exceeds 256 (the attribute value code space has only 256 code pages.), or if page equals 255 (the code page 255 is reserved for implementation-specific or experimental use.), or if the number of elements in the input table attrValueTable exceeds 118.
Since:
BlackBerry API 4.0.0

setAttrValueTable

public void setAttrValueTable(String[] attrValueTable)

Sets the attribute value table.

Parameters:
attrValueTable - The attribute values to define.
Throws:
IllegalArgumentException - if the number of pages needed exceeds the maximum number of code pages allowed (255).
Since:
BlackBerry API 5.0.0

setEncoding

public void setEncoding(String encoding)
                 throws IOException

Sets the encoding for the written WBXML.

Parameters:
encoding - The encoding. It must be one of net.rim.device.api.xml.WBXMLConstants.UTF_8 or net.rim.device.api.xml.WBXMLConstants.ISO_8859_1.
Throws:
IllegalArgumentException - if the encoding is not supported for WBXML.
IOException
See Also:
net.rim.device.api.xml.WBXMLConstants.
Since:
BlackBerry API 4.0.0

setEntityResolver

public void setEntityResolver(EntityResolver entityResolver)

Sets the entity resolver for this writer. If the parser encounters external parsed entities, it asks the writer to resolve them.

Parameters:
entityResolver - The entity resolver.
Since:
BlackBerry API 4.0.0

startDTD

public void startDTD()
Implementation of RIMExtendedHandler

Specified by:
startDTD in interface RIMExtendedHandler
Since:
BlackBerry API 4.0.0

endDTD

public void endDTD(String name,
                   String publicIdStr,
                   String systemId,
                   String body)
            throws SAXException

Specified by:
endDTD in interface RIMExtendedHandler
Parameters:
name - The document name.
publicIdStr - The public ID of the DTD external subset (or null).
systemId - The sytem ID of the DTD external subset (or null of no external subset specified).
body - The body of the DTD. This includes all characters between .
Throws:
SAXException - Thrown if a SAX exception, possibly wrapping another exception, occurs.
See Also:

Obtains the token value for the public identifier.

Since:
BlackBerry API 4.0.0

comment

public void comment(char[] text,
                    int offset,
                    int length)
             throws SAXException
Description copied from interface: RIMExtendedHandler
Receives notification of a comment.

Specified by:
comment in interface RIMExtendedHandler
Parameters:
text - The comment characters not including .
offset - The start position in the character array.
length - The number of characters to use from the character array.
Throws:
SAXException - Thrown if a SAX exception, possibly wrapping another exception, occurs.
Since:
BlackBerry API 4.0.0

cdataSection

public void cdataSection(char[] text,
                         int offset,
                         int length)
                  throws SAXException
Description copied from interface: RIMExtendedHandler
Receives notification of a CDATA section.

Specified by:
cdataSection in interface RIMExtendedHandler
Parameters:
text - The CDATA characters not including .
offset - The start position in the character array.
length - The number of characters to use from the character array.
Throws:
SAXException - Thrown if a SAX exception, possibly wrapping another exception, occurs.
Since:
BlackBerry API 4.0.0

startEntityReference

public void startEntityReference(String name,
                                 String publicId,
                                 String systemId)
                          throws SAXException
Description copied from interface: RIMExtendedHandler
Receives notification of the start of an entity reference.

Specified by:
startEntityReference in interface RIMExtendedHandler
Parameters:
name - The name of the entity.
publicId - The public ID of the entity.
systemId - The system ID of the entity or null if this is an internal entity
Throws:
SAXException - Any SAX exception, possibly wrapping another exception.
Since:
BlackBerry API 4.0.0

endEntityReference

public void endEntityReference(String name)
                        throws SAXException
Description copied from interface: RIMExtendedHandler
Receives notification of the end of an entity reference.

Specified by:
endEntityReference in interface RIMExtendedHandler
Parameters:
name - The name of the entity.
Throws:
SAXException - Thrown if a SAX exception, possibly wrapping another exception, occurs.
Since:
BlackBerry API 4.0.0

entityDecl

public void entityDecl(String name,
                       String value)
                throws SAXException
Description copied from interface: RIMExtendedHandler
Receives notification of a general entity declaration.

Specified by:
entityDecl in interface RIMExtendedHandler
Parameters:
name - The name of the entity.
value - The entity's replacement text.
Throws:
SAXException - Thrown if a SAX exception, possibly wrapping another exception, occurs.
Since:
BlackBerry API 4.0.0

defaultAttribute

public void defaultAttribute(String element,
                             String attribute,
                             String defaultValue)
                      throws SAXException
Description copied from interface: RIMExtendedHandler
Receives notification of a default attribute value declaration.

Specified by:
defaultAttribute in interface RIMExtendedHandler
Parameters:
element - The qualified name of the element.
attribute - The qualified name of the attribute.
defaultValue - The default attribute value.
Throws:
SAXException - Thrown if a SAX exception, possibly wrapping another exception, occurs.
Since:
BlackBerry API 4.0.0

characters

public void characters(char[] ch,
                       int start,
                       int length)
                throws SAXException
Description copied from class: DefaultHandler
Receive notification of character data inside an element.

By default, do nothing. Application writers may override this method to take specific actions for each chunk of character data (such as adding the data to a node or buffer, or printing it to a file).

Specified by:
characters in interface ContentHandler
Overrides:
characters in class DefaultHandler
Parameters:
ch - The characters.
start - The start position in the character array.
length - The number of characters to use from the character array.
Throws:
SAXException - any SAX exception, possibly wrapping another exception
See Also:
DefaultHandler.characters(char[], int, int)
Since:
BlackBerry API 4.0.0

ignorableWhitespace

public void ignorableWhitespace(char[] ch,
                                int start,
                                int length)
                         throws SAXException
Description copied from class: DefaultHandler
Receive notification of ignorable whitespace in element content.

By default, do nothing. Application writers may override this method to take specific actions for each chunk of ignorable whitespace (such as adding data to a node or buffer, or printing it to a file).

Specified by:
ignorableWhitespace in interface ContentHandler
Overrides:
ignorableWhitespace in class DefaultHandler
Parameters:
ch - The whitespace characters.
start - The start position in the character array.
length - The number of characters to use from the character array.
Throws:
SAXException - any SAX exception, possibly wrapping another exception
See Also:
DefaultHandler.ignorableWhitespace(char[], int, int)
Since:
BlackBerry API 4.0.0

processingInstruction

public void processingInstruction(String target,
                                  String data)
                           throws SAXException
Description copied from class: DefaultHandler
Receive notification of a processing instruction.

By default, do nothing. Application writers may override this method in a subclass to take specific actions for each processing instruction, such as setting status variables or invoking other methods.

Specified by:
processingInstruction in interface ContentHandler
Overrides:
processingInstruction in class DefaultHandler
Parameters:
target - The processing instruction target.
data - The processing instruction data, or null if none is supplied.
Throws:
SAXException - any SAX exception, possibly wrapping another exception
See Also:
DefaultHandler.processingInstruction(java.lang.String, java.lang.String)
Since:
BlackBerry API 4.0.0

startDocument

public void startDocument()
                   throws SAXException

Specified by:
startDocument in interface ContentHandler
Overrides:
startDocument in class DefaultHandler
Throws:
SAXException - any SAX exception, possibly wrapping another exception
See Also:

Since:
BlackBerry API 4.0.0

endDocument

public void endDocument()
                 throws SAXException

Specified by:
endDocument in interface ContentHandler
Overrides:
endDocument in class DefaultHandler
Throws:
SAXException - any SAX exception, possibly wrapping another exception
See Also:

Since:
BlackBerry API 4.0.0

startAndEndElement

public void startAndEndElement(String eUri,
                               String localName,
                               String qName,
                               Attributes attributes)
                        throws SAXException

Handles self-closing element.

Specified by:
startAndEndElement in interface RIMExtendedHandler
attributes - The specified or defaulted attributes.
Throws:
SAXException - Thrown if a SAX exception, possibly wrapping another exception, occurs.
See Also:
net.rim.device.api.xml.jaxp.RIMExtendedDefaultHandler#startAndEndElement.
Since:
BlackBerry API 4.0.0

startElement

public void startElement(String eUri,
                         String localName,
                         String qName,
                         Attributes attributes)
                  throws SAXException
Description copied from class: DefaultHandler
Receive notification of the start of an element.

By default, do nothing. Application writers may override this method in a subclass to take specific actions at the start of each element (such as allocating a new tree node or writing output to a file).

Specified by:
startElement in interface ContentHandler
Overrides:
startElement in class DefaultHandler
Parameters:
eUri - The Namespace URI, or the empty string if the element has no Namespace URI or if Namespace processing is not being performed.
localName - The local name (without prefix), or the empty string if Namespace processing is not being performed.
qName - The qualified name (with prefix), or the empty string if qualified names are not available.
attributes - The attributes attached to the element. If there are no attributes, it shall be an empty Attributes object.
Throws:
SAXException - any SAX exception, possibly wrapping another exception
See Also:
DefaultHandler.startElement(java.lang.String, java.lang.String, java.lang.String, org.xml.sax.Attributes)
Since:
BlackBerry API 4.0.0

endElement

public void endElement(String uri,
                       String localName,
                       String qName)
                throws SAXException
Description copied from class: DefaultHandler
Receive notification of the end of an element.

By default, do nothing. Application writers may override this method in a subclass to take specific actions at the end of each element (such as finalising a tree node or writing output to a file).

Specified by:
endElement in interface ContentHandler
Overrides:
endElement in class DefaultHandler
Parameters:
uri - The Namespace URI, or the empty string if the element has no Namespace URI or if Namespace processing is not being performed.
localName - The local name (without prefix), or the empty string if Namespace processing is not being performed.
qName - The qualified name (with prefix), or the empty string if qualified names are not available.
Throws:
SAXException - any SAX exception, possibly wrapping another exception
See Also:
DefaultHandler.endElement(java.lang.String, java.lang.String, java.lang.String)
Since:
BlackBerry API 4.0.0

startPrefixMapping

public void startPrefixMapping(String prefix,
                               String uri)
                        throws SAXException
Description copied from class: DefaultHandler
Receive notification of the start of a Namespace mapping.

By default, do nothing. Application writers may override this method in a subclass to take specific actions at the start of each Namespace prefix scope (such as storing the prefix mapping).

Specified by:
startPrefixMapping in interface ContentHandler
Overrides:
startPrefixMapping in class DefaultHandler
Parameters:
prefix - The Namespace prefix being declared.
uri - The Namespace URI mapped to the prefix.
Throws:
SAXException - the client may throw an exception during processing
See Also:
DefaultHandler.startPrefixMapping(java.lang.String, java.lang.String)
Since:
BlackBerry API 4.0.0

resolveEntity

public InputSource resolveEntity(String publicId,
                                 String systemId)
                          throws SAXException,
                                 IOException
Description copied from class: DefaultHandler
Resolve an external entity.

Always return null, so that the parser will use the system identifier provided in the XML document. This method implements the SAX default behaviour: application writers can override it in a subclass to do special translations such as catalog lookups or URI redirection.

Specified by:
resolveEntity in interface EntityResolver
Overrides:
resolveEntity in class DefaultHandler
Parameters:
publicId - The public identifer, or null if none is available.
systemId - The system identifier provided in the XML document.
Returns:
The new input source, or null to require the default behaviour.
Throws:
SAXException - Any SAX exception, possibly wrapping another exception.
IOException - A Java-specific IO exception, possibly the result of creating a new InputStream or Reader for the InputSource.
See Also:
DefaultHandler.resolveEntity(java.lang.String, java.lang.String)
Since:
BlackBerry API 4.0.0





Copyright 1999-2011 Research In Motion Limited. 295 Phillip Street, Waterloo, Ontario, Canada, N2L 3W8. All Rights Reserved.
Java is a trademark of Oracle America Inc. in the US and other countries.
Legal