Return-Path: Delivered-To: apmail-incubator-abdera-commits-archive@locus.apache.org Received: (qmail 10295 invoked from network); 13 Jul 2006 19:51:56 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 13 Jul 2006 19:51:56 -0000 Received: (qmail 88833 invoked by uid 500); 13 Jul 2006 19:51:56 -0000 Delivered-To: apmail-incubator-abdera-commits-archive@incubator.apache.org Received: (qmail 88818 invoked by uid 500); 13 Jul 2006 19:51:56 -0000 Mailing-List: contact abdera-commits-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: abdera-dev@incubator.apache.org Delivered-To: mailing list abdera-commits@incubator.apache.org Received: (qmail 88809 invoked by uid 99); 13 Jul 2006 19:51:56 -0000 Received: from asf.osuosl.org (HELO asf.osuosl.org) (140.211.166.49) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 13 Jul 2006 12:51:56 -0700 X-ASF-Spam-Status: No, hits=-9.4 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received-SPF: pass (asf.osuosl.org: local policy) Received: from [140.211.166.113] (HELO eris.apache.org) (140.211.166.113) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 13 Jul 2006 12:51:55 -0700 Received: by eris.apache.org (Postfix, from userid 65534) id 1A8AA1A981A; Thu, 13 Jul 2006 12:51:35 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r421693 - in /incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax: FOMDocument.java FOMElement.java Date: Thu, 13 Jul 2006 19:51:34 -0000 To: abdera-commits@incubator.apache.org From: jmsnell@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20060713195135.1A8AA1A981A@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N Author: jmsnell Date: Thu Jul 13 12:51:34 2006 New Revision: 421693 URL: http://svn.apache.org/viewvc?rev=421693&view=rev Log: Clone and Writeto improvements. Document.clone wasn't working completely correctly The writeTo methods were suboptimal Modified: incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMDocument.java incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMElement.java Modified: incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMDocument.java URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMDocument.java?rev=421693&r1=421692&r2=421693&view=diff ============================================================================== --- incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMDocument.java (original) +++ incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMDocument.java Thu Jul 13 12:51:34 2006 @@ -19,24 +19,30 @@ import java.io.IOException; import java.io.OutputStream; +import java.io.OutputStreamWriter; import java.net.URI; import java.net.URISyntaxException; import java.util.Date; +import java.util.Iterator; import javax.activation.MimeType; -import javax.xml.stream.XMLOutputFactory; import javax.xml.stream.XMLStreamException; -import javax.xml.stream.XMLStreamWriter; import org.apache.abdera.factory.Factory; import org.apache.abdera.model.Document; import org.apache.abdera.model.Element; +import org.apache.axiom.om.OMComment; +import org.apache.axiom.om.OMDocType; +import org.apache.axiom.om.OMDocument; import org.apache.axiom.om.OMElement; import org.apache.axiom.om.OMFactory; +import org.apache.axiom.om.OMNode; import org.apache.axiom.om.OMOutputFormat; +import org.apache.axiom.om.OMProcessingInstruction; import org.apache.axiom.om.OMXMLParserWrapper; import org.apache.axiom.om.impl.MTOMXMLStreamWriter; import org.apache.axiom.om.impl.llom.OMDocumentImpl; +import org.apache.axiom.om.util.StAXUtils; public class FOMDocument @@ -103,29 +109,20 @@ } public void writeTo(OutputStream out) throws IOException { - try { - OMOutputFormat outputFormat = new OMOutputFormat(); - outputFormat.setCharSetEncoding(this.getCharsetEncoding()); - MTOMXMLStreamWriter omwriter = new MTOMXMLStreamWriter(out, outputFormat); - internalSerialize(omwriter, true); - omwriter.flush(); - } catch (XMLStreamException e) { - throw new FOMException(e); - } + writeTo(new OutputStreamWriter(out)); } public void writeTo(java.io.Writer writer) throws IOException { - try { - setComplete(true); + try { OMOutputFormat outputFormat = new OMOutputFormat(); - outputFormat.setCharSetEncoding(this.getCharsetEncoding()); - XMLStreamWriter streamwriter = - XMLOutputFactory.newInstance().createXMLStreamWriter( - writer); - MTOMXMLStreamWriter omwriter = new MTOMXMLStreamWriter(streamwriter); + if (this.getCharsetEncoding() != null) + outputFormat.setCharSetEncoding(this.getCharsetEncoding()); + MTOMXMLStreamWriter omwriter = + new MTOMXMLStreamWriter( + StAXUtils.createXMLStreamWriter(writer)); omwriter.setOutputFormat(outputFormat); - this.internalSerializeAndConsume(omwriter); - omwriter.flush(); + this.internalSerialize(omwriter); + omwriter.flush(); } catch (XMLStreamException e) { throw new FOMException(e); } @@ -149,9 +146,29 @@ @SuppressWarnings("unchecked") public Object clone() { - T rootClone = (T)getRoot().clone(); Document doc = ((FOMFactory)factory).newDocument(); - doc.setRoot(rootClone); + OMDocument omdoc = (OMDocument) doc; + for (Iterator i = getChildren(); i.hasNext();) { + OMNode node = (OMNode) i.next(); + switch(node.getType()) { + case OMNode.COMMENT_NODE: + OMComment comment = (OMComment) node; + factory.createOMComment(omdoc, comment.getValue()); + break; + case OMNode.DTD_NODE: + OMDocType doctype = (OMDocType) node; + factory.createOMDocType(omdoc, doctype.getValue()); + break; + case OMNode.ELEMENT_NODE: + Element el = (Element) node; + omdoc.addChild((OMNode) el.clone()); + break; + case OMNode.PI_NODE: + OMProcessingInstruction pi = (OMProcessingInstruction) node; + factory.createOMProcessingInstruction(omdoc, pi.getTarget(), pi.getValue()); + break; + } + } return doc; } Modified: incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMElement.java URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMElement.java?rev=421693&r1=421692&r2=421693&view=diff ============================================================================== --- incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMElement.java (original) +++ incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMElement.java Thu Jul 13 12:51:34 2006 @@ -20,6 +20,7 @@ import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.OutputStream; +import java.io.OutputStreamWriter; import java.net.URI; import java.net.URISyntaxException; import java.util.ArrayList; @@ -27,9 +28,7 @@ import java.util.List; import javax.xml.namespace.QName; -import javax.xml.stream.XMLOutputFactory; import javax.xml.stream.XMLStreamException; -import javax.xml.stream.XMLStreamWriter; import org.apache.abdera.factory.Factory; import org.apache.abdera.model.Base; @@ -53,10 +52,8 @@ import org.apache.axiom.om.OMProcessingInstruction; import org.apache.axiom.om.OMText; import org.apache.axiom.om.OMXMLParserWrapper; -import org.apache.axiom.om.impl.MTOMXMLStreamWriter; import org.apache.axiom.om.impl.llom.OMElementImpl; - public class FOMElement extends OMElementImpl implements Element, @@ -295,30 +292,15 @@ } public void writeTo(OutputStream out) throws IOException { - try { - OMOutputFormat outputFormat = new OMOutputFormat(); - if (getDocument() != null) - outputFormat.setCharSetEncoding(getDocument().getCharset()); - MTOMXMLStreamWriter omwriter = - new MTOMXMLStreamWriter(out, outputFormat); - internalSerialize(omwriter, true); - omwriter.flush(); - } catch (XMLStreamException e) { - throw new FOMException(e); - } + writeTo(new OutputStreamWriter(out)); } public void writeTo(java.io.Writer writer) throws IOException { try { OMOutputFormat outputFormat = new OMOutputFormat(); - outputFormat.setCharSetEncoding(getDocument().getCharset()); - XMLStreamWriter streamwriter = - XMLOutputFactory.newInstance().createXMLStreamWriter( - writer); - MTOMXMLStreamWriter omwriter = new MTOMXMLStreamWriter(streamwriter); - omwriter.setOutputFormat(outputFormat); - this.internalSerialize(omwriter, true); - omwriter.flush(); + if (getDocument() != null && getDocument().getCharset() != null) + outputFormat.setCharSetEncoding(getDocument().getCharset()); + serializeAndConsume(writer, outputFormat); } catch (XMLStreamException e) { throw new FOMException(e); }