[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