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()");