You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ws.apache.org by ve...@apache.org on 2016/05/21 22:25:43 UTC

svn commit: r1744994 - in /webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/stream: sax/XmlHandlerContentHandler.java serializer/ToStream.java

Author: veithen
Date: Sat May 21 22:25:43 2016
New Revision: 1744994

URL: http://svn.apache.org/viewvc?rev=1744994&view=rev
Log:
Use the new serializer to serialize the internal subset in XmlHandlerContentHandler.

Modified:
    webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/stream/sax/XmlHandlerContentHandler.java
    webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/stream/serializer/ToStream.java

Modified: webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/stream/sax/XmlHandlerContentHandler.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/stream/sax/XmlHandlerContentHandler.java?rev=1744994&r1=1744993&r2=1744994&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/stream/sax/XmlHandlerContentHandler.java (original)
+++ webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/stream/sax/XmlHandlerContentHandler.java Sat May 21 22:25:43 2016
@@ -20,6 +20,7 @@ package org.apache.axiom.core.stream.sax
 
 import org.apache.axiom.core.stream.StreamException;
 import org.apache.axiom.core.stream.XmlHandler;
+import org.apache.axiom.core.stream.serializer.ToStream;
 import org.xml.sax.Attributes;
 import org.xml.sax.ContentHandler;
 import org.xml.sax.DTDHandler;
@@ -28,6 +29,7 @@ import org.xml.sax.SAXException;
 import org.xml.sax.ext.DeclHandler;
 import org.xml.sax.ext.LexicalHandler;
 
+import java.io.StringWriter;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -53,7 +55,9 @@ public final class XmlHandlerContentHand
     /**
      * Stores the internal subset if there is a DTD.
      */
-    private StringBuilder internalSubset;
+    private StringWriter internalSubset;
+
+    private ToStream internalSubsetSerializer;
 
     /**
      * Stores the replacement values for entities.
@@ -118,48 +122,38 @@ public final class XmlHandlerContentHand
         dtdName = name;
         dtdPublicId = publicId;
         dtdSystemId = systemId;
-        internalSubset = new StringBuilder();
+        internalSubset = new StringWriter();
+        internalSubsetSerializer = new ToStream(internalSubset);
     }
 
     public void elementDecl(String name, String model) throws SAXException {
         if (!inExternalSubset) {
-            internalSubset.append("<!ELEMENT ");
-            internalSubset.append(name);
-            internalSubset.append(' ');
-            internalSubset.append(model);
-            internalSubset.append(">\n");
+            try {
+                internalSubsetSerializer.elementDecl(name, model);
+            } catch (StreamException ex) {
+                throw toSAXException(ex);
+            }
         }
     }
 
     public void attributeDecl(String eName, String aName, String type, String mode, String value)
             throws SAXException {
         if (!inExternalSubset) {
-            internalSubset.append("<!ATTLIST ");
-            internalSubset.append(eName);
-            internalSubset.append(' ');
-            internalSubset.append(aName);
-            internalSubset.append(' ');
-            internalSubset.append(type);
-            if (value != null) {
-                internalSubset.append(' ');
-                internalSubset.append(value);
+            try {
+                internalSubsetSerializer.attributeDecl(eName, aName, type, mode, value);
+            } catch (StreamException ex) {
+                throw toSAXException(ex);
             }
-            internalSubset.append(">\n");
         }
     }
 
     public void externalEntityDecl(String name, String publicId, String systemId) throws SAXException {
         if (!inExternalSubset) {
-            internalSubset.append("<!ENTITY ");            
-            internalSubset.append(name);
-            if (publicId != null) {
-                internalSubset.append(" PUBLIC \"");
-                internalSubset.append(publicId);
-            } else {
-                internalSubset.append(" SYSTEM \"");
-                internalSubset.append(systemId);
+            try {
+                internalSubsetSerializer.externalEntityDecl(name, publicId, systemId);
+            } catch (StreamException ex) {
+                throw toSAXException(ex);
             }
-            internalSubset.append("\">\n");
         }
     }
 
@@ -169,55 +163,45 @@ public final class XmlHandlerContentHand
         }
         entities.put(name, value);
         if (!inExternalSubset) {
-            internalSubset.append("<!ENTITY ");
-            internalSubset.append(name);
-            internalSubset.append(" \"");
-            internalSubset.append(value);
-            internalSubset.append("\">\n");
+            try {
+                internalSubsetSerializer.internalEntityDecl(name, value);
+            } catch (StreamException ex) {
+                throw toSAXException(ex);
+            }
         }
     }
 
     public void notationDecl(String name, String publicId, String systemId) throws SAXException {
         if (!inExternalSubset) {
-            internalSubset.append("<!NOTATION ");            
-            internalSubset.append(name);
-            if (publicId != null) {
-                internalSubset.append(" PUBLIC \"");
-                internalSubset.append(publicId);
-            } else {
-                internalSubset.append(" SYSTEM \"");
-                internalSubset.append(systemId);
+            try {
+                internalSubsetSerializer.notationDecl(name, publicId, systemId);
+            } catch (StreamException ex) {
+                throw toSAXException(ex);
             }
-            internalSubset.append("\">\n");
         }
     }
 
     public void unparsedEntityDecl(String name, String publicId, String systemId, String notationName)
             throws SAXException {
         if (!inExternalSubset) {
-            internalSubset.append("<!ENTITY ");
-            internalSubset.append(name);
-            if (publicId != null) {
-                internalSubset.append(" PUBLIC \"");
-                internalSubset.append(publicId);
-            } else {
-                internalSubset.append(" SYSTEM \"");
-                internalSubset.append(systemId);
-            }
-            internalSubset.append("\" NDATA ");
-            internalSubset.append(notationName);
-            internalSubset.append(">\n");
+            try {
+                internalSubsetSerializer.unparsedEntityDecl(name, publicId, systemId, notationName);
+            } catch (StreamException ex) {
+                throw toSAXException(ex);
+            }
         }
     }
 
     public void endDTD() throws SAXException {
         try {
+            String internalSubset = this.internalSubset.toString();
             handler.processDocumentTypeDeclaration(dtdName, dtdPublicId, dtdSystemId,
-                    internalSubset.length() == 0 ? null : internalSubset.toString());
+                    internalSubset.length() == 0 ? null : internalSubset);
         } catch (StreamException ex) {
             throw toSAXException(ex);
         }
         internalSubset = null;
+        internalSubsetSerializer = null;
     }
 
     /*

Modified: webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/stream/serializer/ToStream.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/stream/serializer/ToStream.java?rev=1744994&r1=1744993&r2=1744994&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/stream/serializer/ToStream.java (original)
+++ webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/stream/serializer/ToStream.java Sat May 21 22:25:43 2016
@@ -39,7 +39,7 @@ import org.apache.axiom.core.stream.seri
  * 
  * @xsl.usage internal
  */
-final class ToStream extends SerializerBase
+public final class ToStream extends SerializerBase
 {
 
     private static final String COMMENT_BEGIN = "<!--";