[jdom-interest] IllegalDataException changes
Bradley S. Huffman
hip at cs.okstate.edu
Tue Jul 8 06:58:32 PDT 2003
Hmmm interesting, but what happens if the second addContent also throws a
IllegalDataException? Most checks stop after the first failure, so the replace
my not replace all invalid chars just the first one found.
Brad
"Nathaniel Spurling" writes:
> Hi,
>
> I've been using JDOM for writing XML docs and find it very good;
>
> I found it useful to add accessors to the IllegalDataException class for the
> constructor arguments. This makes it easier to handle errors arising from non
> -XML chars in the inputstream.
>
> For example you can do something like:
>
>
> private void addContent(Element parent, String content){
> try{
> parent.addContent(content);
> }
> catch(IllegalDataException e){
> String illegal_data = e.getIllegalData();
> String default_replace=" ";
> String content2 = StringFunctions.Replace(cont
> ent, illegal_data, default_replace);
> log.warning("illegal data in inputstream ["+e.
> getReason()+"] replacing "+e.getIllegalData()+" with "+default_replace);
> addContent(parent,content2);
> }
> }
>
> to substitute any illegal characters with spaces.
>
> Source of changed .java file is at bottom of this mail, other than the additi
> onal methods the functionality of the class is unchanged.
>
> Cheers,
>
> Nat Spurling
>
>
>
>
>
> /*--
>
> $Id: IllegalDataException.java,v 1.10 2002/04/29 13:38:15 jhunter Exp $
>
> Copyright (C) 2000 Jason Hunter & Brett McLaughlin.
> All rights reserved.
>
> Redistribution and use in source and binary forms, with or without
> modification, are permitted provided that the following conditions
> are met:
>
> 1. Redistributions of source code must retain the above copyright
> notice, this list of conditions, and the following disclaimer.
>
> 2. Redistributions in binary form must reproduce the above copyright
> notice, this list of conditions, and the disclaimer that follows
> these conditions in the documentation and/or other materials
> provided with the distribution.
>
> 3. The name "JDOM" must not be used to endorse or promote products
> derived from this software without prior written permission. For
> written permission, please contact <request_AT_jdom_DOT_org>.
>
> 4. Products derived from this software may not be called "JDOM", nor
> may "JDOM" appear in their name, without prior written permission
> from the JDOM Project Management <request_AT_jdom_DOT_org>.
>
> In addition, we request (but do not require) that you include in the
> end-user documentation provided with the redistribution and/or in the
> software itself an acknowledgement equivalent to the following:
> "This product includes software developed by the
> JDOM Project (http://www.jdom.org/)."
> Alternatively, the acknowledgment may be graphical using the logos
> available at http://www.jdom.org/images/logos.
>
> THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
> WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
> OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
> DISCLAIMED. IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT
> CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
> SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
> LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
> USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
> ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
> OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
> OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
> SUCH DAMAGE.
>
> This software consists of voluntary contributions made by many
> individuals on behalf of the JDOM Project and was originally
> created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
> Brett McLaughlin <brett_AT_jdom_DOT_org>. For more information
> on the JDOM Project, please see <http://www.jdom.org/>.
>
> */
>
> package org.jdom;
>
> /**
> * <code>IllegalDataException</code>
> * is thrown when illegal text is supplied to a
> * JDOM construct.
> *
> * @author Brett McLaughlin
> * @author Elliotte Rusty Harold
> * @version $Revision: 1.10 $, $Date: 2002/04/29 13:38:15 $
> */
> public class IllegalDataException extends IllegalArgumentException {
>
> private static final String CVS_ID =
> "@(#) $RCSfile: IllegalDataException.java,v $ $Revision: 1.10 $ $Date:
> 2002/04/29 13:38:15 $ $Name: jdom_1_0_b9_rc2 $";
>
> private String data, construct, reason;
>
>
> /**
> * This will create an <code>Exception</code> indicating that the
> * specified data is illegal for the construct it was supplied to.
> *
> *@param data <code>String</code> data that breaks rules.
> *@param construct <code>String</code> construct that data is illeg
> al
> * for.
> *@param reason <code>String</code> message or reason data is
> * illegal.
> */
> public IllegalDataException(String data, String construct, String re
> ason) {
> super(new StringBuffer()
> .append("The data \"")
> .append(data)
> .append("\" is not legal for a JDOM ")
> .append(construct)
> .append(reason != null ? ": " + reason + "." : "")
> .toString());
> this.data = data;
> this.construct = construct;
> this.reason = reason;
> }
>
>
> /**
> * This will create an <code>Exception</code> indicating that the
> * specified data is illegal for the construct it was supplied to.
> *
> *@param data <code>String</code> data that breaks rules.
> *@param construct <code>String</code> construct that data is illeg
> al
> * for.
> */
> public IllegalDataException(String data, String construct) {
> this(data, construct, null);
> }
>
>
> /**
> * Gets the data that breaks rules.
> *
> *@return <code>String</code> data that breaks rules.
> */
> public String getIllegalData() {
> return data;
> }
>
>
> /**
> * Gets the Construct that data is illegal for
> *
> *@return <code>String</code> construct that data is illegal
> * for.
> */
> public String getConstruct() {
> return construct;
> }
>
>
> /**
> * Gets the Reason reason data is illegal.
> *
> *@return <code>String</code> message or reason data is
> * illegal.
> */
> public String getReason() {
> return reason;
> }
> }
>
>
>
>
> --
>
> This e-mail may contain confidential and/or privileged information. If you ar
> e not the intended recipient (or have received this e-mail in error) please n
> otify the sender immediately and destroy this e-mail. Any unauthorized copyin
> g, disclosure or distribution of the material in this e-mail is strictly forb
> idden.
>
>
> _______________________________________________
> To control your jdom-interest membership:
> http://lists.denveronline.net/mailman/options/jdom-interest/youraddr@yourhost
> .com
More information about the jdom-interest
mailing list