cvs commit: xml-xindice/java/src/org/apache/xindice/tools/command AddDocument.java StringSerializer.java

[email protected]
Newsgroups gmane.text.xml.xindice.devel
Message-ID <[email protected]>
vgritsenko    2005/03/31 18:38:08

  Modified:    java/src/org/apache/xindice/tools/command AddDocument.java
                        StringSerializer.java
  Log:
  string serializer sax methods should throw sax exception.
  
  Revision  Changes    Path
  1.15      +4 -4      xml-xindice/java/src/org/apache/xindice/tools/command/AddDocument.java
  
  Index: AddDocument.java
  ===================================================================
  RCS file: /home/cvs/xml-xindice/java/src/org/apache/xindice/tools/command/AddDocument.java,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- AddDocument.java	20 Jul 2004 20:31:37 -0000	1.14
  +++ AddDocument.java	1 Apr 2005 02:38:08 -0000	1.15
  @@ -1,5 +1,5 @@
   /*
  - * Copyright 1999-2004 The Apache Software Foundation.
  + * Copyright 1999-2005 The Apache Software Foundation.
    *
    * Licensed under the Apache License, Version 2.0 (the "License");
    * you may not use this file except in compliance with the License.
  @@ -75,7 +75,7 @@
               spf.setNamespaceAware(true);
   
               XMLReader reader = spf.newSAXParser().getXMLReader();
  -            StringSerializer ser = new StringSerializer(null);
  +            StringSerializer ser = new StringSerializer();
               reader.setContentHandler(ser);
               reader.setProperty("http://xml.org/sax/properties/lexical-handler", ser);
               reader.parse(new InputSource(fis));
  
  
  
  1.10      +65 -86    xml-xindice/java/src/org/apache/xindice/tools/command/StringSerializer.java
  
  Index: StringSerializer.java
  ===================================================================
  RCS file: /home/cvs/xml-xindice/java/src/org/apache/xindice/tools/command/StringSerializer.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- StringSerializer.java	8 Feb 2004 02:57:35 -0000	1.9
  +++ StringSerializer.java	1 Apr 2005 02:38:08 -0000	1.10
  @@ -1,5 +1,5 @@
   /*
  - * Copyright 1999-2004 The Apache Software Foundation.
  + * Copyright 1999-2005 The Apache Software Foundation.
    *
    * Licensed under the Apache License, Version 2.0 (the "License");
    * you may not use this file except in compliance with the License.
  @@ -20,6 +20,7 @@
   
   import org.xml.sax.Attributes;
   import org.xml.sax.ContentHandler;
  +import org.xml.sax.SAXException;
   import org.xml.sax.ext.LexicalHandler;
   
   import java.util.HashMap;
  @@ -28,35 +29,44 @@
   
   /**
    * SAX content handler that produces a string from the SAX events it receives.
  - * After calling endDocument(), the string becomes available by calling
  - * <code>toString()</code>
  + * After calling <code>endDocument()</code>, the string becomes available by
  + * calling <code>toString()</code>
    *
    * @author <a href="mailto:[email protected]">James Bates</a>
    * @version CVS $Revision$, $Date$
    */
   public class StringSerializer implements ContentHandler, LexicalHandler {
   
  -    /* map that contains a stack for each prefix used in XML document */
  +    /**
  +     * The encoding that should be written into the XML declaration. May be
  +     * <code>null</code> indicating no encoding should be written.
  +     */
  +    private String encoding;
  +
  +    /**
  +     * Map containing stack of prefixes used in the XML document
  +     */
       private Map namespaceMap;
   
  -    /* namespace-declarations that should be written when the next element
  -       opens */
  +    /**
  +     * Namespace declarations that should be written out when the
  +     * next element opens
  +     */
       private StringBuffer namespaceDecls;
   
  -    /* Are we currently inside a CDATA section? */
  +    /**
  +     * Are we currently inside a CDATA section?
  +     */
       private boolean inCDATA;
   
  -    /* the encoding name that should be written into the XML declaration. May be
  -     * <code>null</code> indicating no encoding should be written.
  +    /**
  +     * The document so far
        */
  -    private String outputEncoding;
  -
  -    /* the document so far */
       private StringBuffer outputXml;
   
       /**
  -     * Creates new <code>StringSerializer</code>. The output encoding is not specified therefor
  -     * will be treated as "UTF-8".
  +     * Creates new <code>StringSerializer</code>. The output encoding is not
  +     * specified therefore will be treated as "UTF-8".
        */
       public StringSerializer() {
           this(null);
  @@ -65,40 +75,36 @@
       /**
        * Creates new <code>StringSerializer</code>.
        *
  -     * @param outputEncoding the encoding that should be written into the
  -     * XML declaration for the document. This encoding is not used in any other
  -     * way: when the resultant string is written to a file, the writing application
  -     * must still take care to actually write using the correct encoding.
  -     *
  -     * If <code>outputEncoding</code> is <code>null</code>, the encoding will
  -     * be omitted from the XML declaration.
  +     * @param encoding The encoding that should be written into the
  +     *                 XML declaration for the document. This encoding
  +     *                 is not used in any other way: when the resultant
  +     *                 string is written to a file, the writing application
  +     *                 must still take care to actually write using the
  +     *                 correct encoding. If <code>encoding</code> is
  +     *                 <code>null</code>, the encoding will be omitted
  +     *                 from the XML declaration.
        */
  -    public StringSerializer(String outputEncoding) {
  -
  -        this.outputEncoding = outputEncoding;
  -        outputXml = new StringBuffer(1024); // allocate a 1k block to start with
  -        namespaceMap = new HashMap();
  -        namespaceDecls = new StringBuffer();
  -        inCDATA = false;
  +    public StringSerializer(String encoding) {
  +        this.encoding = encoding;
  +        this.outputXml = new StringBuffer(1024); // allocate a 1k block to start with
  +        this.namespaceMap = new HashMap();
  +        this.namespaceDecls = new StringBuffer();
       }
   
  -    public void startDocument() throws org.xml.sax.SAXException {
  -
  +    public void startDocument() throws SAXException {
           outputXml.append("<?xml version=\"1.0\"");
  -        if (outputEncoding != null) {
  -
  +        if (encoding != null) {
               outputXml.append(" encoding=\"");
  -            outputXml.append(outputEncoding);
  +            outputXml.append(encoding);
               outputXml.append('\"');
           }
           outputXml.append("?>");
       }
   
  -    public void endDocument() throws org.xml.sax.SAXException {
  +    public void endDocument() throws SAXException {
       }
   
  -    public void processingInstruction(String target, String data) {
  -
  +    public void processingInstruction(String target, String data) throws SAXException {
           outputXml.append("<?");
           outputXml.append(target);
           outputXml.append(' ');
  @@ -106,36 +112,30 @@
           outputXml.append("?>");
       }
   
  -    public void comment(char[] data, int start, int len) {
  -
  +    public void comment(char[] data, int start, int len) throws SAXException {
           outputXml.append("<!--");
           outputXml.append(data, start, len);
           outputXml.append("-->");
       }
   
  -    private void xmlIze(StringBuffer sb, char[] data, int start, int len,
  +    private void xmlIze(StringBuffer sb,
  +                        char[] data, int start, int len,
                           boolean isAttValue) {
   
           for (int i = start; i < start + len; i++) {
  -
               if (data[i] == '<') {
  -
                   sb.append("&lt;");
               } else if (data[i] == '&') {
  -
                   sb.append("&amp;");
               } else if ((data[i] == '"') && (isAttValue)) {
  -
                   sb.append("&quot;");
               } else {
  -
                   sb.append(data[i]);
               }
           }
       }
   
       private void writeAttribute(StringBuffer sb, String attName, String attValue) {
  -
           sb.append(' ');
           sb.append(attName);
           sb.append("=\"");
  @@ -143,11 +143,9 @@
           sb.append('\"');
       }
   
  -    public void startPrefixMapping(String prefix, String uri) {
  -
  +    public void startPrefixMapping(String prefix, String uri) throws SAXException {
           Stack uriStack = (Stack) namespaceMap.get(prefix);
           if (uriStack == null) {
  -
               uriStack = new Stack();
               namespaceMap.put(prefix, uriStack);
           }
  @@ -155,47 +153,39 @@
           uriStack.push(uri);
   
           if (!prefix.equals("")) {
  -
               writeAttribute(namespaceDecls, "xmlns:" + prefix, uri);
           } else {
  -
               writeAttribute(namespaceDecls, "xmlns", uri);
           }
       }
   
  -    public void endPrefixMapping(String prefix) {
  -
  +    public void endPrefixMapping(String prefix) throws SAXException {
           Stack uriStack = (Stack) namespaceMap.get(prefix);
           uriStack.pop();
       }
   
  -
  -    public void ignorableWhitespace(char[] data, int start, int len) {
  -
  +    public void ignorableWhitespace(char[] data, int start, int len) throws SAXException {
           outputXml.append(data, start, len);
       }
   
       private String getPrefix(String qName) {
  -
           if (qName.indexOf(':') != -1) {
  -
               return qName.substring(0, qName.indexOf(':'));
           } else {
  -
               return "";
           }
       }
   
  -    public void startElement(String namespaceUri, String localName, String qName,
  -                             Attributes att) {
  +    public void startElement(String ns, String localName, String qName, Attributes att)
  +            throws SAXException {
   
           /* First: check element name qualification */
           String prefix = getPrefix(qName);
   
           if ((!(prefix.equals("") || prefix.equals("xml")))
  -                && (namespaceMap.get(prefix) == null)) {
  +                && namespaceMap.get(prefix) == null) {
   
  -            writeAttribute(namespaceDecls, "xmlns:" + prefix, namespaceUri);
  +            writeAttribute(namespaceDecls, "xmlns:" + prefix, ns);
           }
   
           outputXml.append('<');
  @@ -213,7 +203,6 @@
               if (!(attPrefix.equals("") || attPrefix.equals("xml"))) {
   
                   if (namespaceMap.get(attPrefix) == null) {
  -
                       writeAttribute(outputXml, "xmlns:" + attPrefix, attNamespaceUri);
                   }
               }
  @@ -224,34 +213,28 @@
           outputXml.append('>');
       }
   
  -    public void endElement(String namespaceUri, String localName, String qName) {
  -
  +    public void endElement(String ns, String localName, String qName)
  +            throws SAXException {
           outputXml.append("</");
           outputXml.append(qName);
           outputXml.append('>');
       }
   
  -    public void skippedEntity(String entity) {
  -
  +    public void skippedEntity(String entity) throws SAXException {
           if (entity.startsWith("%")) {
  -
               outputXml.append(entity);
               outputXml.append(';');
           } else {
  -
               outputXml.append('&');
               outputXml.append(entity);
               outputXml.append(';');
           }
       }
   
  -    public void characters(char[] data, int start, int len) {
  -
  +    public void characters(char[] data, int start, int len) throws SAXException {
           if (inCDATA) {
  -
               outputXml.append(data, start, len);
           } else {
  -
               xmlIze(outputXml, data, start, len, false);
           }
       }
  @@ -259,33 +242,29 @@
       public void setDocumentLocator(org.xml.sax.Locator locator) {
       }
   
  -    public void startCDATA() {
  -
  +    public void startCDATA() throws SAXException {
           outputXml.append("<![CDATA[");
           inCDATA = true;
       }
   
  -    public void endCDATA() throws org.xml.sax.SAXException {
  -
  +    public void endCDATA() throws SAXException {
           inCDATA = false;
           outputXml.append("]]>");
       }
   
  -
  -    public void startEntity(String entity) {
  +    public void startEntity(String entity) throws SAXException {
       }
   
  -    public void endEntity(String entity) {
  +    public void endEntity(String entity) throws SAXException {
       }
   
  -    public void startDTD(String docType, String systemID, String publicID) {
  +    public void startDTD(String docType, String systemID, String publicID) throws SAXException {
       }
   
  -    public void endDTD() {
  +    public void endDTD() throws SAXException {
       }
   
       public String toString() {
  -
  -        return new String(outputXml);
  +        return outputXml.toString();
       }
   }
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.