gdaniels 2002/10/07 16:04:36 Modified: java/src/org/apache/axis/encoding Tag: interop4 DeserializationContext.java DeserializationContextImpl.java DeserializerImpl.java java/src/org/apache/axis/message Tag: interop4 SOAPHandler.java Log: Keep track of when we're processing multirefs, and don't push the MessageElement stack when doing so. Revision Changes Path No revision No revision 1.50.2.1 +14 -0 xml-axis/java/src/org/apache/axis/encoding/DeserializationContext.java Index: DeserializationContext.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/DeserializationContext.java,v retrieving revision 1.50 retrieving revision 1.50.2.1 diff -u -r1.50 -r1.50.2.1 --- DeserializationContext.java 4 Sep 2002 21:48:15 -0000 1.50 +++ DeserializationContext.java 7 Oct 2002 23:04:35 -0000 1.50.2.1 @@ -282,6 +282,20 @@ * Return if done parsing document. */ public boolean isDoneParsing(); + + /** + * Indicate if we're in the midst of processing an href target, in which + * case we shouldn't be pushing the element stack. + * @param ref + */ + void setProcessingRef(boolean ref); + + /** + * Are we in the midst of processing an href target? If so, we shouldn't + * be pushing the element stack... + * @return + */ + boolean isProcessingRef(); } 1.64.2.2 +8 -0 xml-axis/java/src/org/apache/axis/encoding/DeserializationContextImpl.java Index: DeserializationContextImpl.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/DeserializationContextImpl.java,v retrieving revision 1.64.2.1 retrieving revision 1.64.2.2 diff -u -r1.64.2.1 -r1.64.2.2 --- DeserializationContextImpl.java 1 Oct 2002 20:38:51 -0000 1.64.2.1 +++ DeserializationContextImpl.java 7 Oct 2002 23:04:35 -0000 1.64.2.2 @@ -734,6 +734,14 @@ return result; } + boolean processingRef = false; + public void setProcessingRef(boolean ref) { + processingRef = ref; + } + public boolean isProcessingRef() { + return processingRef; + } + /**************************************************************** * SAX event handlers */ 1.30.2.8 +3 -0 xml-axis/java/src/org/apache/axis/encoding/DeserializerImpl.java Index: DeserializerImpl.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/DeserializerImpl.java,v retrieving revision 1.30.2.7 retrieving revision 1.30.2.8 diff -u -r1.30.2.7 -r1.30.2.8 --- DeserializerImpl.java 7 Oct 2002 20:52:19 -0000 1.30.2.7 +++ DeserializerImpl.java 7 Oct 2002 23:04:36 -0000 1.30.2.8 @@ -476,8 +476,11 @@ dser.moveValueTargets(this); context.replaceElementHandler((SOAPHandler) dser); // And don't forget to give it the start event... + boolean isRef = context.isProcessingRef(); + context.setProcessingRef(true); dser.startElement(namespace, localName, prefix, attributes, context); + context.setProcessingRef(isRef); } else { throw new SAXException( Messages.getMessage("noDeser00", "" + type)); No revision No revision 1.9.4.1 +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.9 retrieving revision 1.9.4.1 diff -u -r1.9 -r1.9.4.1 --- SOAPHandler.java 3 Aug 2002 21:25:25 -0000 1.9 +++ SOAPHandler.java 7 Oct 2002 23:04:36 -0000 1.9.4.1 @@ -74,7 +74,7 @@ throws SAXException { // By default, make a new element - if (!context.isDoneParsing()) { + if (!context.isDoneParsing() && !context.isProcessingRef()) { if (myElement == null) { myElement = makeNewElement(namespace, localName, prefix, attributes, context);