gdaniels 2002/06/21 13:50:16 Modified: java/src/org/apache/axis/message SOAPHandler.java HeaderBuilder.java BodyBuilder.java Removed: java/src/org/apache/axis/message HeaderElementBuilder.java Log: Simplify, simplify... Redo the fix dims made, but without the extra class. The problem was that SOAPHandler wasn't pushing the associated MessageElement during startElement() if it existed prior to the startElement() call. Now we always do it, which also eliminated the need to manually push the BodyElement in BodyBuilder.onStartChild(). Eventually, this mechanism (pushing new MessageElements) might move entirely out of the SOAPHandler's realm of responsibility, so that the framework (DeserializaitonContextImpl) just deals with it. Revision Changes Path 1.8 +1 -1 xml-axis/java/src/org/apache/axis/message/SOAPHandler.java Index: SOAPHandler.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/message/SOAPHandler.java,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- SOAPHandler.java 24 May 2002 18:20:43 -0000 1.7 +++ SOAPHandler.java 21 Jun 2002 20:50:16 -0000 1.8 @@ -77,8 +77,8 @@ if (!context.isDoneParsing()) { if (myElement == null) { myElement = makeNewElement(namespace, localName, qName, attributes, context); - context.pushNewElement(myElement); } + context.pushNewElement(myElement); } } 1.13 +25 -9 xml-axis/java/src/org/apache/axis/message/HeaderBuilder.java Index: HeaderBuilder.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/message/HeaderBuilder.java,v retrieving revision 1.12 retrieving revision 1.13 diff -u -r1.12 -r1.13 --- HeaderBuilder.java 21 Jun 2002 13:00:37 -0000 1.12 +++ HeaderBuilder.java 21 Jun 2002 20:50:16 -0000 1.13 @@ -66,26 +66,30 @@ import org.xml.sax.Attributes; import org.xml.sax.SAXException; -public class HeaderBuilder extends SOAPHandler { +public class HeaderBuilder extends SOAPHandler +{ protected static Log log = - LogFactory.getLog(HeaderBuilder.class.getName()); + LogFactory.getLog(HeaderBuilder.class.getName()); + private SOAPHeaderElement header; private SOAPEnvelope envelope; - HeaderBuilder(SOAPEnvelope envelope) { + HeaderBuilder(SOAPEnvelope envelope) + { this.envelope = envelope; } public void startElement(String namespace, String localName, String qName, Attributes attributes, DeserializationContext context) - throws SAXException { + throws SAXException + { if (!context.isDoneParsing()) { if (myElement == null) { myElement = new SOAPHeader(namespace, localName, qName, - attributes, context, - envelope.getSOAPConstants()); - envelope.setHeader((SOAPHeader) myElement); + attributes, context, + envelope.getSOAPConstants()); + envelope.setHeader((SOAPHeader)myElement); } context.pushNewElement(myElement); } @@ -96,8 +100,20 @@ String prefix, Attributes attributes, DeserializationContext context) - throws SAXException { - HeaderElementBuilder handler = new HeaderElementBuilder((SOAPHeader) myElement); + throws SAXException + { + header = new SOAPHeaderElement(namespace, localName, prefix, + attributes, context); + + SOAPHandler handler = new SOAPHandler(); + handler.myElement = header; + return handler; + } + + public void onEndChild(String namespace, String localName, + DeserializationContext context) + { + envelope.addHeader(header); } } 1.38 +1 -1 xml-axis/java/src/org/apache/axis/message/BodyBuilder.java Index: BodyBuilder.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/message/BodyBuilder.java,v retrieving revision 1.37 retrieving revision 1.38 diff -u -r1.37 -r1.38 --- BodyBuilder.java 21 Jun 2002 19:48:40 -0000 1.37 +++ BodyBuilder.java 21 Jun 2002 20:50:16 -0000 1.38 @@ -202,7 +202,7 @@ handler.myElement = element; - context.pushNewElement(element); + //context.pushNewElement(element); if (log.isDebugEnabled()) { log.debug("Exit: BodyBuilder::onStartChild()");