You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by Nathan Eric Probst <pr...@pond.net> on 2001/01/13 18:11:08 UTC

SAXException when using Digester -- HELP!

This is my first time posting to this list, so if I'm not following
protocol, or am being stupid, please forgive (and correct) me.

Below is the pertinent information, I think.  Thanks for your help!

Nathan Probst

======================================================================================================

I get this error:
======================================================================================================

Internal Servlet Error:

javax.servlet.ServletException: Error while Digesting:
/WEB-INF/res/compositions/demoOne-schema.xml
 at
com.javawebguy.jig.actions.ConfigureCompositionAction.perform(ConfigureCompositionAction.java:89)

 at
org.apache.struts.action.ActionServlet.processActionPerform(ActionServlet.java:1621)

 at
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1431)
 at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:464)

 at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
 at
org.apache.tomcat.core.ServletWrapper.doService(ServletWrapper.java:404)

 at org.apache.tomcat.core.Handler.service(Handler.java:286)
 at
org.apache.tomcat.core.ServletWrapper.service(ServletWrapper.java:372)
 at
org.apache.tomcat.core.ContextManager.internalService(ContextManager.java:797)

 at
org.apache.tomcat.core.ContextManager.service(ContextManager.java:743)
 at
org.apache.tomcat.service.http.HttpConnectionHandler.processConnection(HttpConnectionHandler.java:210)

 at
org.apache.tomcat.service.TcpWorkerThread.runIt(PoolTcpEndpoint.java:416)

 at
org.apache.tomcat.util.ThreadPool$ControlRunnable.run(ThreadPool.java:498)

 at java.lang.Thread.run(Thread.java:484)
Root cause:

org.xml.sax.SAXException
 at org.apache.struts.digester.Digester.endElement(Digester.java:382)
 at com.sun.xml.parser.Parser.maybeElement(Parser.java:1413)
 at com.sun.xml.parser.Parser.content(Parser.java:1499)
 at com.sun.xml.parser.Parser.maybeElement(Parser.java:1400)
 at com.sun.xml.parser.Parser.parseInternal(Parser.java:492)
 at com.sun.xml.parser.Parser.parse(Parser.java:284)
 at javax.xml.parsers.SAXParser.parse(SAXParser.java:155)
 at javax.xml.parsers.SAXParser.parse(SAXParser.java:77)
 at org.apache.struts.digester.Digester.parse(Digester.java:716)
 at
com.javawebguy.jig.actions.ConfigureCompositionAction.perform(ConfigureCompositionAction.java:86)

 at
org.apache.struts.action.ActionServlet.processActionPerform(ActionServlet.java:1621)

 at
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1431)
 at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:464)

 at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
 at
org.apache.tomcat.core.ServletWrapper.doService(ServletWrapper.java:404)

 at org.apache.tomcat.core.Handler.service(Handler.java:286)
 at
org.apache.tomcat.core.ServletWrapper.service(ServletWrapper.java:372)
 at
org.apache.tomcat.core.ContextManager.internalService(ContextManager.java:797)

 at
org.apache.tomcat.core.ContextManager.service(ContextManager.java:743)
 at
org.apache.tomcat.service.http.HttpConnectionHandler.processConnection(HttpConnectionHandler.java:210)

 at
org.apache.tomcat.service.TcpWorkerThread.runIt(PoolTcpEndpoint.java:416)

 at
org.apache.tomcat.util.ThreadPool$ControlRunnable.run(ThreadPool.java:498)

 at java.lang.Thread.run(Thread.java:484)

======================================================================================================

When processing this file:
======================================================================================================

<!-- Example Composition Schema

<composition label="" name="" className="" width="" height="">
 <description></description>
 <layer label="" name="" className="">
  <description></description>
  <property label="" name="" value="" className="">
   <description></description>
  </property>
 </layer>
</composition>

-->

<composition label="GLF Demo One" name="demoOne"
       className="com.sun.glf.demos.GLFWebDemoOne"
       width="650" height="450">
 <description></description>

 <layer label="Top Background" name="topBackground"
     className="com.sun.glf.ShapeLayer">
  <description></description>
  <property label="Top Color" name="backgroundTopColor"
       value="ecb600ff" className="java.awt.Color">
   <description></description>
  </property>
  <property label="Bottom Color" name="backgroundBottomColor"
       value="e0cc95ff" className="java.awt.Color">
   <description></description>
  </property>
 </layer>

 <layer label="Top Text Shadow" name="topTextShadowLayer"
     className="com.sun.glf.ShapeLayer">
  <description></description>
  <property label="Top Color" name="topTextShadowTopColor"
       value="ec850000" className="java.awt.Color">
   <description></description>
  </property>
  <property label="Bottom Color" name="topTextShadowBottomColor"
       value="ec8500ff" className="java.awt.Color">
   <description></description>
  </property>
  <property label="Blur Radius" name="shadowBlurRadius"
       value="3" className="java.lang.Integer">
   <description></description>
  </property>
 </layer>

 <layer label="Top Text Depth" name="topTextLayerDepth"
     className="com.sun.glf.ShapeLayer">
  <description></description>
  <property label="Depth" name="topTextDepth"
       value="5" className="java.lang.Integer">
   <description></description>
  </property>
 </layer>

 <layer label="Top Text" name="topTextLayer"
     className="com.sun.glf.ShapeLayer">
  <description></description>
  <property label="Text" name="topText"
       value="Hot and" className="java.lang.String">
   <description></description>
  </property>
  <property label="Font" name="textFont"
       value="serif/PLAIN/150" className="java.awt.Font">
   <description></description>
  </property>
  <property label="Color" name="textColor"
       value="000000ff" className="java.awt.Color">
   <description></description>
  </property>
 </layer>

 <layer label="Waves" name="waveLayer"
     className="com.sun.glf.ShapeLayer">
  <description></description>
  <property label="Top Color" name="waveTopColor"
       value="4ca3e8ff" className="java.awt.Color">
   <description></description>
  </property>
  <property label="Bottom Color" name="waveBottomColor"
       value="008740ff" className="java.awt.Color">
   <description></description>
  </property>
  <property label="Number of Waves" name="numberOfWaves"
       value="4" className="java.lang.Integer">
   <description></description>
  </property>
  <property label="Number of Wavelets" name="numberOfWavelets"
       value="5" className="java.lang.Integer">
   <description></description>
  </property>
  <property label="Wave Stroke Width" name="waveStrokeWidth"
       value="5.0" className="java.lang.Float">
   <description></description>
  </property>
  <property label="Wave Overlap Ratio" name="waveOverlapRatio"
       value="0.33333334" className="java.lang.Float">
   <description></description>
  </property>
 </layer>

 <layer label="Bottom Text Depth" name="bottomTextLayerDepth"
     className="com.sun.glf.ShapeLayer">
  <description></description>
  <property label="Depth" name="topTextDepth"
       value="5" className="java.lang.Integer">
   <description>Shared with Top Text Depth</description>
  </property>
 </layer>

 <layer label="Bottom Text" name="bottomTextLayer"
     className="com.sun.glf.ShapeLayer">
  <description></description>
  <property label="Text" name="bottomText"
       value="Cool" className="java.lang.String">
   <description></description>
  </property>
  <property label="Font" name="textFont"
       value="serif/PLAIN/150" className="java.awt.Font">
   <description>Shared with Top Text</description>
  </property>
  <property label="Color" name="textColor"
       value="000000ff" className="java.awt.Color">
   <description>Shared with Top Text</description>
  </property>
  <property label="Text-Wave Index" name="textWaveIndex"
       value="2" className="java.lang.Integer">
   <description>Under which wave the text is inserted</description>
  </property>
 </layer>

</composition>

======================================================================================================

With the Digester configured like this:
======================================================================================================

 protected Digester initDigester(CompositionSchema comp, int detail) {

  getServlet().log("In initDigester");

  // Initialize a new Digester instance
  Digester digester = new Digester();
//  digester.push(comp);
  digester.push(this);
  digester.setDebug(detail);
  digester.setValidating(false);

  // Configure the processing rules

  // Populate the CompositionSchema on top of the stack
  digester.addObjectCreate("/composition",
               "com.javawebguy.jig.beans.CompositionSchema");
  digester.addSetProperties("/composition");
  digester.addSetNext("/composition", "setComposition",
            "com.javawebguy.jig.beans.CompositionSchema");

  // Create LayerSchema
  digester.addObjectCreate("/composition/layer",
               "com.javawebguy.jig.beans.LayerSchema");
  digester.addSetProperties("/composition/layer");
  digester.addSetNext("/composition/layer", "addLayer",
            "com.javawebguy.jig.beans.LayerSchema");

  // Create PropertySchema
  digester.addObjectCreate("/composition/layer/property",
               "com.javawebguy.jig.beans.PropertySchema");
  digester.addSetProperties("/composition/layer/property");
  digester.addSetNext("/composition/layer/property", "addProperty",
            "com.javawebguy.jig.beans.PropertySchema");

  // Add description to parent
  digester.addCallMethod("*/description", "setDesc", 1, new String[]
{"java.lang.String"});
  digester.addCallParam("*/description", 0);

  getServlet().log("Out initDigester");
  return (digester);

 }





Re: SAXException when using Digester -- HELP!

Posted by Nathan Eric Probst <pr...@pond.net>.
Success

=======

Would you believe that all that trouble was caused by (erroneously) prepending a '/' to the pattern?

For example...

digester.addSetProperties("/composition/layer");

...should have been this...

digester.addSetProperties("composition/layer");

I guess that's what you get for relying on intuition!

Thanks for your help,
Nathan



Re: SAXException when using Digester -- HELP!

Posted by Nathan Eric Probst <pr...@pond.net>.
Addendum
========

Oh, I forgot to mention that I have verified that my XML is well-formed.

As a followup question, now that I've snagged some sleep:
Is there a recommended technique for debugging Digester usage?
Looking at the source, it seems that much of the debug code has been commented out!

Your help is appreciated,
Nathan

Nathan Eric Probst wrote:

> This is my first time posting to this list, so if I'm not following
> protocol, or am being stupid, please forgive (and correct) me.
>
> Below is the pertinent information, I think.  Thanks for your help!
>
> Nathan Probst
>
> ======================================================================================================
>
> I get this error:
> ======================================================================================================
>
> Internal Servlet Error:
>
> javax.servlet.ServletException: Error while Digesting:
> /WEB-INF/res/compositions/demoOne-schema.xml
>  at
> com.javawebguy.jig.actions.ConfigureCompositionAction.perform(ConfigureCompositionAction.java:89)
>
>  at
> org.apache.struts.action.ActionServlet.processActionPerform(ActionServlet.java:1621)
>
>  at
> org.apache.struts.action.ActionServlet.process(ActionServlet.java:1431)
>  at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:464)
>
>  at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
>  at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
>  at
> org.apache.tomcat.core.ServletWrapper.doService(ServletWrapper.java:404)
>
>  at org.apache.tomcat.core.Handler.service(Handler.java:286)
>  at
> org.apache.tomcat.core.ServletWrapper.service(ServletWrapper.java:372)
>  at
> org.apache.tomcat.core.ContextManager.internalService(ContextManager.java:797)
>
>  at
> org.apache.tomcat.core.ContextManager.service(ContextManager.java:743)
>  at
> org.apache.tomcat.service.http.HttpConnectionHandler.processConnection(HttpConnectionHandler.java:210)
>
>  at
> org.apache.tomcat.service.TcpWorkerThread.runIt(PoolTcpEndpoint.java:416)
>
>  at
> org.apache.tomcat.util.ThreadPool$ControlRunnable.run(ThreadPool.java:498)
>
>  at java.lang.Thread.run(Thread.java:484)
> Root cause:
>
> org.xml.sax.SAXException
>  at org.apache.struts.digester.Digester.endElement(Digester.java:382)
>  at com.sun.xml.parser.Parser.maybeElement(Parser.java:1413)
>  at com.sun.xml.parser.Parser.content(Parser.java:1499)
>  at com.sun.xml.parser.Parser.maybeElement(Parser.java:1400)
>  at com.sun.xml.parser.Parser.parseInternal(Parser.java:492)
>  at com.sun.xml.parser.Parser.parse(Parser.java:284)
>  at javax.xml.parsers.SAXParser.parse(SAXParser.java:155)
>  at javax.xml.parsers.SAXParser.parse(SAXParser.java:77)
>  at org.apache.struts.digester.Digester.parse(Digester.java:716)
>  at
> com.javawebguy.jig.actions.ConfigureCompositionAction.perform(ConfigureCompositionAction.java:86)
>
>  at
> org.apache.struts.action.ActionServlet.processActionPerform(ActionServlet.java:1621)
>
>  at
> org.apache.struts.action.ActionServlet.process(ActionServlet.java:1431)
>  at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:464)
>
>  at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
>  at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
>  at
> org.apache.tomcat.core.ServletWrapper.doService(ServletWrapper.java:404)
>
>  at org.apache.tomcat.core.Handler.service(Handler.java:286)
>  at
> org.apache.tomcat.core.ServletWrapper.service(ServletWrapper.java:372)
>  at
> org.apache.tomcat.core.ContextManager.internalService(ContextManager.java:797)
>
>  at
> org.apache.tomcat.core.ContextManager.service(ContextManager.java:743)
>  at
> org.apache.tomcat.service.http.HttpConnectionHandler.processConnection(HttpConnectionHandler.java:210)
>
>  at
> org.apache.tomcat.service.TcpWorkerThread.runIt(PoolTcpEndpoint.java:416)
>
>  at
> org.apache.tomcat.util.ThreadPool$ControlRunnable.run(ThreadPool.java:498)
>
>  at java.lang.Thread.run(Thread.java:484)
>
> ======================================================================================================
>
> When processing this file:
> ======================================================================================================
>
> <!-- Example Composition Schema
>
> <composition label="" name="" className="" width="" height="">
>  <description></description>
>  <layer label="" name="" className="">
>   <description></description>
>   <property label="" name="" value="" className="">
>    <description></description>
>   </property>
>  </layer>
> </composition>
>
> -->
>
> <composition label="GLF Demo One" name="demoOne"
>        className="com.sun.glf.demos.GLFWebDemoOne"
>        width="650" height="450">
>  <description></description>
>
>  <layer label="Top Background" name="topBackground"
>      className="com.sun.glf.ShapeLayer">
>   <description></description>
>   <property label="Top Color" name="backgroundTopColor"
>        value="ecb600ff" className="java.awt.Color">
>    <description></description>
>   </property>
>   <property label="Bottom Color" name="backgroundBottomColor"
>        value="e0cc95ff" className="java.awt.Color">
>    <description></description>
>   </property>
>  </layer>
>
>  <layer label="Top Text Shadow" name="topTextShadowLayer"
>      className="com.sun.glf.ShapeLayer">
>   <description></description>
>   <property label="Top Color" name="topTextShadowTopColor"
>        value="ec850000" className="java.awt.Color">
>    <description></description>
>   </property>
>   <property label="Bottom Color" name="topTextShadowBottomColor"
>        value="ec8500ff" className="java.awt.Color">
>    <description></description>
>   </property>
>   <property label="Blur Radius" name="shadowBlurRadius"
>        value="3" className="java.lang.Integer">
>    <description></description>
>   </property>
>  </layer>
>
>  <layer label="Top Text Depth" name="topTextLayerDepth"
>      className="com.sun.glf.ShapeLayer">
>   <description></description>
>   <property label="Depth" name="topTextDepth"
>        value="5" className="java.lang.Integer">
>    <description></description>
>   </property>
>  </layer>
>
>  <layer label="Top Text" name="topTextLayer"
>      className="com.sun.glf.ShapeLayer">
>   <description></description>
>   <property label="Text" name="topText"
>        value="Hot and" className="java.lang.String">
>    <description></description>
>   </property>
>   <property label="Font" name="textFont"
>        value="serif/PLAIN/150" className="java.awt.Font">
>    <description></description>
>   </property>
>   <property label="Color" name="textColor"
>        value="000000ff" className="java.awt.Color">
>    <description></description>
>   </property>
>  </layer>
>
>  <layer label="Waves" name="waveLayer"
>      className="com.sun.glf.ShapeLayer">
>   <description></description>
>   <property label="Top Color" name="waveTopColor"
>        value="4ca3e8ff" className="java.awt.Color">
>    <description></description>
>   </property>
>   <property label="Bottom Color" name="waveBottomColor"
>        value="008740ff" className="java.awt.Color">
>    <description></description>
>   </property>
>   <property label="Number of Waves" name="numberOfWaves"
>        value="4" className="java.lang.Integer">
>    <description></description>
>   </property>
>   <property label="Number of Wavelets" name="numberOfWavelets"
>        value="5" className="java.lang.Integer">
>    <description></description>
>   </property>
>   <property label="Wave Stroke Width" name="waveStrokeWidth"
>        value="5.0" className="java.lang.Float">
>    <description></description>
>   </property>
>   <property label="Wave Overlap Ratio" name="waveOverlapRatio"
>        value="0.33333334" className="java.lang.Float">
>    <description></description>
>   </property>
>  </layer>
>
>  <layer label="Bottom Text Depth" name="bottomTextLayerDepth"
>      className="com.sun.glf.ShapeLayer">
>   <description></description>
>   <property label="Depth" name="topTextDepth"
>        value="5" className="java.lang.Integer">
>    <description>Shared with Top Text Depth</description>
>   </property>
>  </layer>
>
>  <layer label="Bottom Text" name="bottomTextLayer"
>      className="com.sun.glf.ShapeLayer">
>   <description></description>
>   <property label="Text" name="bottomText"
>        value="Cool" className="java.lang.String">
>    <description></description>
>   </property>
>   <property label="Font" name="textFont"
>        value="serif/PLAIN/150" className="java.awt.Font">
>    <description>Shared with Top Text</description>
>   </property>
>   <property label="Color" name="textColor"
>        value="000000ff" className="java.awt.Color">
>    <description>Shared with Top Text</description>
>   </property>
>   <property label="Text-Wave Index" name="textWaveIndex"
>        value="2" className="java.lang.Integer">
>    <description>Under which wave the text is inserted</description>
>   </property>
>  </layer>
>
> </composition>
>
> ======================================================================================================
>
> With the Digester configured like this:
> ======================================================================================================
>
>  protected Digester initDigester(CompositionSchema comp, int detail) {
>
>   getServlet().log("In initDigester");
>
>   // Initialize a new Digester instance
>   Digester digester = new Digester();
> //  digester.push(comp);
>   digester.push(this);
>   digester.setDebug(detail);
>   digester.setValidating(false);
>
>   // Configure the processing rules
>
>   // Populate the CompositionSchema on top of the stack
>   digester.addObjectCreate("/composition",
>                "com.javawebguy.jig.beans.CompositionSchema");
>   digester.addSetProperties("/composition");
>   digester.addSetNext("/composition", "setComposition",
>             "com.javawebguy.jig.beans.CompositionSchema");
>
>   // Create LayerSchema
>   digester.addObjectCreate("/composition/layer",
>                "com.javawebguy.jig.beans.LayerSchema");
>   digester.addSetProperties("/composition/layer");
>   digester.addSetNext("/composition/layer", "addLayer",
>             "com.javawebguy.jig.beans.LayerSchema");
>
>   // Create PropertySchema
>   digester.addObjectCreate("/composition/layer/property",
>                "com.javawebguy.jig.beans.PropertySchema");
>   digester.addSetProperties("/composition/layer/property");
>   digester.addSetNext("/composition/layer/property", "addProperty",
>             "com.javawebguy.jig.beans.PropertySchema");
>
>   // Add description to parent
>   digester.addCallMethod("*/description", "setDesc", 1, new String[]
> {"java.lang.String"});
>   digester.addCallParam("*/description", 0);
>
>   getServlet().log("Out initDigester");
>   return (digester);
>
>  }