Author: vgritsenko Date: Thu Apr 21 05:11:55 2005 New Revision: 164043 URL: http://svn.apache.org/viewcvs?rev=164043&view=rev Log: ipublic static empty attributes should be an immutable object. use single FACTORY. add serialize(XMLizable) method.
Added: cocoon/trunk/src/java/org/apache/cocoon/xml/ImmutableAttributesImpl.java (props changed) - copied unchanged from r164042, cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/xml/ImmutableAttributesImpl.java Modified: cocoon/trunk/src/java/org/apache/cocoon/xml/XMLUtils.java Copied: cocoon/trunk/src/java/org/apache/cocoon/xml/ImmutableAttributesImpl.java (from r164042, cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/xml/ImmutableAttributesImpl.java) URL: http://svn.apache.org/viewcvs/cocoon/trunk/src/java/org/apache/cocoon/xml/ImmutableAttributesImpl.java?p2=cocoon/trunk/src/java/org/apache/cocoon/xml/ImmutableAttributesImpl.java&p1=cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/xml/ImmutableAttributesImpl.java&r1=164042&r2=164043&rev=164043&view=diff ============================================================================== (empty) Propchange: cocoon/trunk/src/java/org/apache/cocoon/xml/ImmutableAttributesImpl.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: cocoon/trunk/src/java/org/apache/cocoon/xml/ImmutableAttributesImpl.java ------------------------------------------------------------------------------ svn:keywords = Id Modified: cocoon/trunk/src/java/org/apache/cocoon/xml/XMLUtils.java URL: http://svn.apache.org/viewcvs/cocoon/trunk/src/java/org/apache/cocoon/xml/XMLUtils.java?rev=164043&r1=164042&r2=164043&view=diff ============================================================================== --- cocoon/trunk/src/java/org/apache/cocoon/xml/XMLUtils.java (original) +++ cocoon/trunk/src/java/org/apache/cocoon/xml/XMLUtils.java Thu Apr 21 05:11:55 2005 @@ -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. @@ -44,12 +44,16 @@ * @author <a href="mailto:[EMAIL PROTECTED]">Nicola Ken Barozzi</a> * @author <a href="mailto:[EMAIL PROTECTED]">Sylvain Wallez</a> * @author <a href="mailto:[EMAIL PROTECTED]">Carsten Ziegeler</a> - * @version CVS $Id: XMLUtils.java,v 1.10 2004/06/18 12:38:31 vgritsenko Exp $ + * @version $Id$ */ public class XMLUtils { - public static final AttributesImpl EMPTY_ATTRIBUTES = new AttributesImpl(); + /** + * Empty attributes immutable object. + */ + public static final Attributes EMPTY_ATTRIBUTES = new ImmutableAttributesImpl(); + private static final SAXTransformerFactory FACTORY = (SAXTransformerFactory) TransformerFactory.newInstance(); private static final Properties XML_FORMAT = createDefaultPropertiesForXML(false); private static final Properties XML_FORMAT_NODECL = createDefaultPropertiesForXML(true); @@ -199,9 +203,10 @@ if (node == null) { return ""; } + StringWriter writer = new StringWriter(); TransformerHandler transformerHandler; - transformerHandler = ((SAXTransformerFactory)TransformerFactory.newInstance()).newTransformerHandler(); + transformerHandler = FACTORY.newTransformerHandler(); transformerHandler.getTransformer().setOutputProperties(format); transformerHandler.setResult(new StreamResult(writer)); if (node.getNodeType() != Node.DOCUMENT_NODE) { @@ -212,13 +217,44 @@ if (node.getNodeType() != Node.DOCUMENT_NODE) { transformerHandler.endDocument(); } + + return writer.toString(); + } catch (javax.xml.transform.TransformerException e) { + throw new ProcessingException("TransformerException: " + e, e); + } catch (SAXException e) { + throw new ProcessingException("SAXException while streaming DOM node to SAX: " + e, e); + } + } + + /** + * Serialize a XMLizable into a string. + * If the object is null the empty string is returned. + * + * @param format The format of the output to be used by SAX transformer. + * @see OutputKeys + */ + public static String serialize(org.apache.excalibur.xml.sax.XMLizable xml, Properties format) + throws ProcessingException { + + try { + if (xml == null) { + return ""; + } + + StringWriter writer = new StringWriter(); + TransformerHandler transformerHandler; + transformerHandler = FACTORY.newTransformerHandler(); + transformerHandler.getTransformer().setOutputProperties(format); + transformerHandler.setResult(new StreamResult(writer)); + transformerHandler.startDocument(); + xml.toSAX(new EmbeddedXMLPipe(transformerHandler)); + transformerHandler.endDocument(); + return writer.toString(); - } catch (javax.xml.transform.TransformerException local) { - throw new ProcessingException("TransformerException: " + local, - local); - } catch (SAXException local) { - throw new ProcessingException("SAXException while streaming DOM node to SAX: " + local, - local); + } catch (javax.xml.transform.TransformerException e) { + throw new ProcessingException("TransformerException: " + e, e); + } catch (SAXException e) { + throw new ProcessingException("SAXException while streaming DOM node to SAX: " + e, e); } }