cziegeler 01/11/13 03:03:58 Added: src/scratchpad/org/apache/avalon/excalibur/source ModifiableSource.java Source.java src/scratchpad/org/apache/avalon/excalibur/xml AbstractXMLConsumer.java ContentHandlerWrapper.java JaxpParser.java Parser.java XMLConsumer.java XMLFragment.java XMLizable.java XercesParser.java Log: Start moving components from Cocoon to Avalon. First set includes Parser, XMLConsumer and the basic Source interfaces Revision Changes Path 1.1 jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/source/ModifiableSource.java Index: ModifiableSource.java =================================================================== /***************************************************************************** * Copyright (C) The Apache Software Foundation. All rights reserved. * * ------------------------------------------------------------------------- * * This software is published under the terms of the Apache Software License * * version 1.1, a copy of which has been included with this distribution in * * the LICENSE file. * *****************************************************************************/ package org.apache.avalon.excalibur.source; /** * Describes a {@link Source} object whose data content can change. * * @author <a href="mailto:[EMAIL PROTECTED]">Ovidiu Predescu</a> */ public interface ModifiableSource extends Source { /** * Refresh the content of this object after the underlying data * content has changed. */ void refresh(); } 1.1 jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/source/Source.java Index: Source.java =================================================================== /***************************************************************************** * Copyright (C) The Apache Software Foundation. All rights reserved. * * ------------------------------------------------------------------------- * * This software is published under the terms of the Apache Software License * * version 1.1, a copy of which has been included with this distribution in * * the LICENSE file. * *****************************************************************************/ package org.apache.avalon.excalibur.source; import org.apache.avalon.excalibur.pool.Recyclable; import org.xml.sax.InputSource; import java.io.IOException; import java.io.InputStream; /** * Description of a source. This interface provides a simple interface * for accessing a source of data. The source of data is assumed to * <b>not change</b> during the lifetime of the Source object. If you * have a data source that can change its content and you want it to * reflect, use a {@link ModifiableSource} object instead. * * @author <a href="mailto:[EMAIL PROTECTED]">Carsten Ziegeler</a> * @author <a href="mailto:[EMAIL PROTECTED]">Ovidiu Predescu</a> * @version CVS $Revision: 1.1 $ $Date: 2001/11/13 11:03:58 $ */ public interface Source extends Recyclable { /** * Get the last modification date of the source or 0 if it * is not possible to determine the date. */ long getLastModified(); /** * Get the content length of the source or -1 if it * is not possible to determine the length. */ long getContentLength(); /** * Return an <code>InputStream</code> object to read from the source. */ InputStream getInputStream() throws IOException; /** * Return an <code>InputSource</code> object to read the XML * content. * * @return an <code>InputSource</code> value * @exception ProcessingException if an error occurs * @exception IOException if an error occurs */ InputSource getInputSource() throws IOException; /** * Return the unique identifer for this source */ String getSystemId(); } 1.1 jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/xml/AbstractXMLConsumer.java Index: AbstractXMLConsumer.java =================================================================== /***************************************************************************** * Copyright (C) The Apache Software Foundation. All rights reserved. * * ------------------------------------------------------------------------- * * This software is published under the terms of the Apache Software License * * version 1.1, a copy of which has been included with this distribution in * * the LICENSE file. * *****************************************************************************/ package org.apache.avalon.excalibur.xml; import org.apache.avalon.framework.logger.AbstractLoggable; import org.xml.sax.Attributes; import org.xml.sax.Locator; import org.xml.sax.SAXException; /** * This abstract class provides default implementation of the methods specified * by the <code>XMLConsumer</code> interface. * * @author <a href="mailto:[EMAIL PROTECTED]">Pierpaolo Fumagalli</a> * (Apache Software Foundation, Exoffice Technologies) * @version CVS $Revision: 1.1 $ $Date: 2001/11/13 11:03:58 $ */ public abstract class AbstractXMLConsumer extends AbstractLoggable implements XMLConsumer { /** * Receive an object for locating the origin of SAX document events. * * @param locator An object that can return the location of any SAX * document event. */ public void setDocumentLocator(Locator locator) { } /** * Receive notification of the beginning of a document. */ public void startDocument() throws SAXException { } /** * Receive notification of the end of a document. */ public void endDocument() throws SAXException { } /** * Begin the scope of a prefix-URI Namespace mapping. * * @param prefix The Namespace prefix being declared. * @param uri The Namespace URI the prefix is mapped to. */ public void startPrefixMapping(String prefix, String uri) throws SAXException { } /** * End the scope of a prefix-URI mapping. * * @param prefix The prefix that was being mapping. */ public void endPrefixMapping(String prefix) throws SAXException { } /** * Receive notification of the beginning of an element. * * @param uri The Namespace URI, or the empty string if the element has no * Namespace URI or if Namespace * processing is not being performed. * @param loc The local name (without prefix), or the empty string if * Namespace processing is not being performed. * @param raw The raw XML 1.0 name (with prefix), or the empty string if * raw names are not available. * @param a The attributes attached to the element. If there are no * attributes, it shall be an empty Attributes object. */ public void startElement(String uri, String loc, String raw, Attributes a) throws SAXException { } /** * Receive notification of the end of an element. * * @param uri The Namespace URI, or the empty string if the element has no * Namespace URI or if Namespace * processing is not being performed. * @param loc The local name (without prefix), or the empty string if * Namespace processing is not being performed. * @param raw The raw XML 1.0 name (with prefix), or the empty string if * raw names are not available. */ public void endElement(String uri, String loc, String raw) throws SAXException { } /** * Receive notification of character data. * * @param ch The characters from the XML document. * @param start The start position in the array. * @param len The number of characters to read from the array. */ public void characters(char ch[], int start, int len) throws SAXException { } /** * Receive notification of ignorable whitespace in element content. * * @param ch The characters from the XML document. * @param start The start position in the array. * @param len The number of characters to read from the array. */ public void ignorableWhitespace(char ch[], int start, int len) throws SAXException { } /** * Receive notification of a processing instruction. * * @param target The processing instruction target. * @param data The processing instruction data, or null if none was * supplied. */ public void processingInstruction(String target, String data) throws SAXException { } /** * Receive notification of a skipped entity. * * @param name The name of the skipped entity. If it is a parameter * entity, the name will begin with '%'. */ public void skippedEntity(String name) throws SAXException { } /** * Report the start of DTD declarations, if any. * * @param name The document type name. * @param publicId The declared public identifier for the external DTD * subset, or null if none was declared. * @param systemId The declared system identifier for the external DTD * subset, or null if none was declared. */ public void startDTD(String name, String publicId, String systemId) throws SAXException { } /** * Report the end of DTD declarations. */ public void endDTD() throws SAXException { } /** * Report the beginning of an entity. * * @param name The name of the entity. If it is a parameter entity, the * name will begin with '%'. */ public void startEntity(String name) throws SAXException { } /** * Report the end of an entity. * * @param name The name of the entity that is ending. */ public void endEntity(String name) throws SAXException { } /** * Report the start of a CDATA section. */ public void startCDATA() throws SAXException { } /** * Report the end of a CDATA section. */ public void endCDATA() throws SAXException { } /** * Report an XML comment anywhere in the document. * * @param ch An array holding the characters in the comment. * @param start The starting position in the array. * @param len The number of characters to use from the array. */ public void comment(char ch[], int start, int len) throws SAXException { } } 1.1 jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/xml/ContentHandlerWrapper.java Index: ContentHandlerWrapper.java =================================================================== /***************************************************************************** * Copyright (C) The Apache Software Foundation. All rights reserved. * * ------------------------------------------------------------------------- * * This software is published under the terms of the Apache Software License * * version 1.1, a copy of which has been included with this distribution in * * the LICENSE file. * *****************************************************************************/ package org.apache.avalon.excalibur.xml; import org.apache.avalon.excalibur.pool.Recyclable; import org.xml.sax.Attributes; import org.xml.sax.ContentHandler; import org.xml.sax.Locator; import org.xml.sax.SAXException; import org.xml.sax.ext.LexicalHandler; /** * This class is an utility class "wrapping" around a SAX version 2.0 * <code>ContentHandler</code> and forwarding it those events received throug * its <code>XMLConsumers</code> interface. * <br> * * @author <a href="mailto:[EMAIL PROTECTED]">Davanum Srinivas</a> * (Apache Software Foundation, Computer Associates) * @version CVS $Revision: 1.1 $ $Date: 2001/11/13 11:03:58 $ */ public class ContentHandlerWrapper extends AbstractXMLConsumer implements Recyclable { /** The current <code>ContentHandler</code>. */ protected ContentHandler contentHandler; /** The optional <code>LexicalHandler</code> */ protected LexicalHandler lexicalHandler; /** * Create a new <code>ContentHandlerWrapper</code> instance. */ public ContentHandlerWrapper() { super(); } /** * Create a new <code>ContentHandlerWrapper</code> instance. */ public ContentHandlerWrapper(ContentHandler contentHandler) { this(); this.setContentHandler(contentHandler); } /** * Create a new <code>ContentHandlerWrapper</code> instance. */ public ContentHandlerWrapper(ContentHandler contentHandler, LexicalHandler lexicalHandler) { this(); this.setContentHandler(contentHandler); this.setLexicalHandler(lexicalHandler); } /** * Set the <code>ContentHandler</code> that will receive XML data. * * @exception IllegalStateException If the <code>ContentHandler</code> * was already set. */ public void setContentHandler(ContentHandler contentHandler) throws IllegalStateException { if (this.contentHandler!=null) throw new IllegalStateException(); this.contentHandler=contentHandler; } /** * Set the <code>LexicalHandler</code> that will receive XML data. * * @exception IllegalStateException If the <code>LexicalHandler</code> * was already set. */ public void setLexicalHandler(LexicalHandler lexicalHandler) throws IllegalStateException { if (this.lexicalHandler!=null) throw new IllegalStateException(); this.lexicalHandler=lexicalHandler; } public void recycle () { this.contentHandler = null; this.lexicalHandler = null; } /** * Receive an object for locating the origin of SAX document events. */ public void setDocumentLocator (Locator locator) { if (this.contentHandler==null) return; else this.contentHandler.setDocumentLocator(locator); } /** * Receive notification of the beginning of a document. */ public void startDocument () throws SAXException { if (this.contentHandler==null) throw new SAXException("ContentHandler not set"); this.contentHandler.startDocument(); } /** * Receive notification of the end of a document. */ public void endDocument () throws SAXException { this.contentHandler.endDocument(); } /** * Begin the scope of a prefix-URI Namespace mapping. */ public void startPrefixMapping(String prefix, String uri) throws SAXException { if (this.contentHandler==null) throw new SAXException("ContentHandler not set"); this.contentHandler.startPrefixMapping(prefix, uri); } /** * End the scope of a prefix-URI mapping. */ public void endPrefixMapping(String prefix) throws SAXException { this.contentHandler.endPrefixMapping(prefix); } /** * Receive notification of the beginning of an element. */ public void startElement(String uri, String loc, String raw, Attributes a) throws SAXException { this.contentHandler.startElement(uri, loc, raw, a); } /** * Receive notification of the end of an element. */ public void endElement(String uri, String loc, String raw) throws SAXException { this.contentHandler.endElement(uri, loc, raw); } /** * Receive notification of character data. */ public void characters(char ch[], int start, int len) throws SAXException { this.contentHandler.characters(ch,start,len); } /** * Receive notification of ignorable whitespace in element content. */ public void ignorableWhitespace(char ch[], int start, int len) throws SAXException { this.contentHandler.ignorableWhitespace(ch,start,len); } /** * Receive notification of a processing instruction. */ public void processingInstruction(String target, String data) throws SAXException { this.contentHandler.processingInstruction(target,data); } /** * Receive notification of a skipped entity. * * @param name The name of the skipped entity. If it is a parameter * entity, the name will begin with '%'. */ public void skippedEntity(String name) throws SAXException { this.contentHandler.skippedEntity(name); } /** * Report the start of DTD declarations, if any. * * @param name The document type name. * @param publicId The declared public identifier for the external DTD * subset, or null if none was declared. * @param systemId The declared system identifier for the external DTD * subset, or null if none was declared. */ public void startDTD(String name, String publicId, String systemId) throws SAXException { if (this.lexicalHandler != null) this.lexicalHandler.startDTD(name, publicId, systemId); } /** * Report the end of DTD declarations. */ public void endDTD() throws SAXException { if (this.lexicalHandler != null) this.lexicalHandler.endDTD(); } /** * Report the beginning of an entity. * * @param name The name of the entity. If it is a parameter entity, the * name will begin with '%'. */ public void startEntity(String name) throws SAXException { if (this.lexicalHandler != null) this.lexicalHandler.startEntity(name); } /** * Report the end of an entity. * * @param name The name of the entity that is ending. */ public void endEntity(String name) throws SAXException { if (this.lexicalHandler != null) this.lexicalHandler.endEntity(name); } /** * Report the start of a CDATA section. */ public void startCDATA() throws SAXException { if (this.lexicalHandler != null) this.lexicalHandler.startCDATA(); } /** * Report the end of a CDATA section. */ public void endCDATA() throws SAXException { if (this.lexicalHandler != null) this.lexicalHandler.endCDATA(); } /** * Report an XML comment anywhere in the document. * * @param ch An array holding the characters in the comment. * @param start The starting position in the array. * @param len The number of characters to use from the array. */ public void comment(char ch[], int start, int len) throws SAXException { if (this.lexicalHandler != null) this.lexicalHandler.comment(ch, start, len); } } 1.1 jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/xml/JaxpParser.java Index: JaxpParser.java =================================================================== /***************************************************************************** * Copyright (C) The Apache Software Foundation. All rights reserved. * * ------------------------------------------------------------------------- * * This software is published under the terms of the Apache Software License * * version 1.1, a copy of which has been included with this distribution in * * the LICENSE file. * *****************************************************************************/ package org.apache.avalon.excalibur.xml; import org.apache.avalon.excalibur.pool.Recyclable; import org.apache.avalon.framework.configuration.Configurable; import org.apache.avalon.framework.configuration.Configuration; import org.apache.avalon.framework.configuration.ConfigurationException; import org.apache.avalon.framework.logger.AbstractLoggable; import org.apache.avalon.framework.parameters.Parameters; import org.w3c.dom.Document; import org.xml.sax.*; import javax.xml.parsers.*; import java.io.IOException; /** * An XMLParser that is only dependant on JAXP 1.1 compliant parsers. * If only we can get rid of the need for the Document... * * @author <a href="mailto:[EMAIL PROTECTED]">Berin Loritsch</a> * @author <a href="mailto:[EMAIL PROTECTED]">Carsten Ziegeler</a> * @version CVS $Revision: 1.1 $ $Date: 2001/11/13 11:03:58 $ */ public class JaxpParser extends AbstractLoggable implements Parser, ErrorHandler, Configurable, Recyclable { /** the SAX Parser factory */ protected SAXParserFactory factory; /** the Document Builder factory */ protected DocumentBuilderFactory docfactory; /** * Configure */ public void configure(Configuration config) throws ConfigurationException { Parameters params = Parameters.fromConfiguration(config); boolean validate = params.getParameterAsBoolean("validate", false); this.factory = SAXParserFactory.newInstance(); this.docfactory = DocumentBuilderFactory.newInstance(); this.factory.setNamespaceAware(true); this.factory.setValidating(validate); this.docfactory.setNamespaceAware(true); this.docfactory.setValidating(validate); } public void parse(InputSource in, XMLConsumer consumer) throws SAXException, IOException { SAXParser parser = null; try { parser = this.factory.newSAXParser(); } catch (ParserConfigurationException e) { getLogger().error("Cannot produce a valid parser", e); throw new SAXException("Could not get valid parser" + e.getMessage(), e); } XMLReader reader = parser.getXMLReader(); reader.setFeature("http://xml.org/sax/features/namespace-prefixes", true); try { reader.setProperty("http://xml.org/sax/properties/lexical-handler", consumer); } catch (SAXException e) { getLogger().warn("SAX2 driver does not support property: "+ "'http://xml.org/sax/properties/lexical-handler'"); } reader.setErrorHandler(this); reader.setContentHandler(consumer); reader.parse(in); } /** * Parses a new Document object from the given InputSource. */ public Document parseDocument(InputSource input) throws SAXException, IOException { DocumentBuilder builder = null; try { builder = this.docfactory.newDocumentBuilder(); } catch (ParserConfigurationException pce) { getLogger().error("Could not build DocumentBuilder", pce); return null; } return builder.parse(input); } /** * Receive notification of a recoverable error. */ public void error(SAXParseException e) throws SAXException { throw new SAXException("Error parsing "+e.getSystemId()+" (line "+ e.getLineNumber()+" col. "+e.getColumnNumber()+ "): "+e.getMessage(),e); } /** * Receive notification of a fatal error. */ public void fatalError(SAXParseException e) throws SAXException { throw new SAXException("Fatal error parsing "+e.getSystemId()+" (line "+ e.getLineNumber()+" col. "+e.getColumnNumber()+ "): "+e.getMessage(),e); } /** * Receive notification of a warning. */ public void warning(SAXParseException e) throws SAXException { throw new SAXException("Warning parsing "+e.getSystemId()+" (line "+ e.getLineNumber()+" col. "+e.getColumnNumber()+ "): "+e.getMessage(),e); } /** * Recycle */ public void recycle() { } } 1.1 jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/xml/Parser.java Index: Parser.java =================================================================== /***************************************************************************** * Copyright (C) The Apache Software Foundation. All rights reserved. * * ------------------------------------------------------------------------- * * This software is published under the terms of the Apache Software License * * version 1.1, a copy of which has been included with this distribution in * * the LICENSE file. * *****************************************************************************/ package org.apache.avalon.excalibur.xml; import org.apache.avalon.framework.component.Component; import org.w3c.dom.Document; import org.xml.sax.ContentHandler; import org.xml.sax.InputSource; import org.xml.sax.SAXException; import org.xml.sax.ext.LexicalHandler; import java.io.IOException; /** * * @author <a href="mailto:[EMAIL PROTECTED]">Carsten Ziegeler</a> * @version CVS $Revision: 1.1 $ $Date: 2001/11/13 11:03:58 $ */ public interface Parser extends Component { String ROLE = "org.apache.avalon.excalibur.xml.Parser"; void parse(InputSource in, XMLConsumer consumer) throws SAXException, IOException; Document parseDocument(InputSource in) throws SAXException, IOException; } 1.1 jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/xml/XMLConsumer.java Index: XMLConsumer.java =================================================================== /***************************************************************************** * Copyright (C) The Apache Software Foundation. All rights reserved. * * ------------------------------------------------------------------------- * * This software is published under the terms of the Apache Software License * * version 1.1, a copy of which has been included with this distribution in * * the LICENSE file. * *****************************************************************************/ package org.apache.avalon.excalibur.xml; import org.xml.sax.ContentHandler; import org.xml.sax.ext.LexicalHandler; /** * This interfaces identifies classes that consume XML data, receiving * notification of SAX events. * <br> * This interface unites the idea of SAX <code>ContentHandler</code> and * <code>LexicalHandler</code>. * * @author <a href="mailto:[EMAIL PROTECTED]">Pierpaolo Fumagalli</a> * (Apache Software Foundation, Exoffice Technologies) * @version CVS $Revision: 1.1 $ $Date: 2001/11/13 11:03:58 $ */ public interface XMLConsumer extends ContentHandler, LexicalHandler { } 1.1 jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/xml/XMLFragment.java Index: XMLFragment.java =================================================================== /***************************************************************************** * Copyright (C) The Apache Software Foundation. All rights reserved. * * ------------------------------------------------------------------------- * * This software is published under the terms of the Apache Software License * * version 1.1, a copy of which has been included with this distribution in * * the LICENSE file. * *****************************************************************************/ package org.apache.avalon.excalibur.xml; import org.w3c.dom.DOMException; import org.w3c.dom.Node; /** * This interface must be implemented by classes willing * to provide an XML representation of their current state. * <br/> * * @author <a href="mailto:[EMAIL PROTECTED]">Sylvain Wallez</a> * @author <a href="mailto:[EMAIL PROTECTED]">Ricardo Rocha</a> for the original XObject class * @version CVS $Revision: 1.1 $ $Date: 2001/11/13 11:03:58 $ */ public interface XMLFragment { /** * Appends children representing the object's state to the given node. */ void toDOM(Node node) throws DOMException; } 1.1 jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/xml/XMLizable.java Index: XMLizable.java =================================================================== /***************************************************************************** * Copyright (C) The Apache Software Foundation. All rights reserved. * * ------------------------------------------------------------------------- * * This software is published under the terms of the Apache Software License * * version 1.1, a copy of which has been included with this distribution in * * the LICENSE file. * *****************************************************************************/ package org.apache.avalon.excalibur.xml; import org.xml.sax.ContentHandler; import org.xml.sax.SAXException; /** * This interface can be implemented by classes willing to provide an XML representation * of their current state as SAX events. * * @author <a href="mailto:[EMAIL PROTECTED]">Sylvain Wallez</a> * @version CVS $Revision: 1.1 $ $Date: 2001/11/13 11:03:58 $ */ public interface XMLizable { /** * Generates SAX events representing the object's state.<br/> * <b>NOTE</b> : if the implementation can produce lexical events, care should be taken * that <code>handler</code> can actually be a {@link XMLConsumer} that accepts such * events or directly implements the LexicalHandler interface! */ void toSAX(ContentHandler handler) throws SAXException; } 1.1 jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/xml/XercesParser.java Index: XercesParser.java =================================================================== /***************************************************************************** * Copyright (C) The Apache Software Foundation. All rights reserved. * * ------------------------------------------------------------------------- * * This software is published under the terms of the Apache Software License * * version 1.1, a copy of which has been included with this distribution in * * the LICENSE file. * *****************************************************************************/ package org.apache.avalon.excalibur.xml; import org.apache.avalon.framework.logger.AbstractLoggable; import org.apache.avalon.framework.thread.SingleThreaded; import org.apache.xerces.parsers.DOMParser; import org.apache.xerces.parsers.SAXParser; import org.w3c.dom.Document; import org.xml.sax.ErrorHandler; import org.xml.sax.InputSource; import org.xml.sax.SAXException; import org.xml.sax.SAXParseException; import java.io.IOException; /** * * @author <a href="mailto:[EMAIL PROTECTED]">Pierpaolo Fumagalli</a> * (Apache Software Foundation, Exoffice Technologies) * @version CVS $Revision: 1.1 $ $Date: 2001/11/13 11:03:58 $ */ public class XercesParser extends AbstractLoggable implements Parser, ErrorHandler, SingleThreaded { /** the SAX Parser */ final SAXParser parser; public XercesParser () throws SAXException { this.parser = new SAXParser(); this.parser.setFeature("http://xml.org/sax/features/validation",false); this.parser.setFeature("http://xml.org/sax/features/namespaces",true); this.parser.setFeature("http://xml.org/sax/features/namespace-prefixes", true); } public void parse(InputSource in, XMLConsumer consumer) throws SAXException, IOException { this.parser.setProperty("http://xml.org/sax/properties/lexical-handler", consumer); this.parser.setErrorHandler(this); this.parser.setContentHandler(consumer); this.parser.parse(in); } /** * Parses a new Document object from the given InputSource. */ public Document parseDocument(InputSource input) throws SAXException, IOException { DOMParser parser = null; try { parser = new DOMParser(); parser.setFeature("http://xml.org/sax/features/validation",false); parser.setFeature("http://xml.org/sax/features/namespaces",true); parser.setFeature("http://xml.org/sax/features/namespace-prefixes", true); parser.parse(input); } catch (Exception pce) { getLogger().error("Could not build DocumentBuilder", pce); return null; } return parser.getDocument(); } /** * Receive notification of a recoverable error. */ public void error(SAXParseException e) throws SAXException { throw new SAXException("Error parsing "+e.getSystemId()+" (line "+ e.getLineNumber()+" col. "+e.getColumnNumber()+ "): "+e.getMessage(),e); } /** * Receive notification of a fatal error. */ public void fatalError(SAXParseException e) throws SAXException { throw new SAXException("Fatal error parsing "+e.getSystemId()+" (line "+ e.getLineNumber()+" col. "+e.getColumnNumber()+ "): "+e.getMessage(),e); } /** * Receive notification of a warning. */ public void warning(SAXParseException e) throws SAXException { throw new SAXException("Warning parsing "+e.getSystemId()+" (line "+ e.getLineNumber()+" col. "+e.getColumnNumber()+ "): "+e.getMessage(),e); } }
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>