gdaniels 2003/01/31 15:04:13 Modified: java/src/org/apache/axis/message SOAPFaultCodeBuilder.java Added: java/src/org/apache/axis/message SOAPFaultReasonBuilder.java Log: Use QName deserializer for fault codes, and introduce a handler to deal with <Text> elements inside <Reason> elements. Needs more work - checkin in so I can finish from home later. Revision Changes Path 1.3 +4 -11 xml-axis/java/src/org/apache/axis/message/SOAPFaultCodeBuilder.java Index: SOAPFaultCodeBuilder.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/message/SOAPFaultCodeBuilder.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- SOAPFaultCodeBuilder.java 11 Dec 2002 22:38:20 -0000 1.2 +++ SOAPFaultCodeBuilder.java 31 Jan 2003 23:04:13 -0000 1.3 @@ -76,10 +76,8 @@ // Fault data protected QName faultCode = null; protected SOAPFaultCodeBuilder next = null; - protected DeserializationContext context; - public SOAPFaultCodeBuilder(DeserializationContext context) { - this.context = context; + public SOAPFaultCodeBuilder() { } public QName getFaultCode() { @@ -101,13 +99,13 @@ QName thisQName = new QName(namespace, name); if (thisQName.equals(Constants.QNAME_FAULTVALUE_SOAP12)) { Deserializer currentDeser = null; - currentDeser = context.getDeserializerForType(Constants.XSD_STRING); + currentDeser = context.getDeserializerForType(Constants.XSD_QNAME); if (currentDeser != null) { currentDeser.registerValueTarget(new CallbackTarget(this, thisQName)); } return (SOAPHandler)currentDeser; } else if (thisQName.equals(Constants.QNAME_FAULTSUBCODE_SOAP12)) { - return (next = new SOAPFaultCodeBuilder(context)); + return (next = new SOAPFaultCodeBuilder()); } else return null; } @@ -121,12 +119,7 @@ public void setValue(Object value, Object hint) { QName thisQName = (QName)hint; if (thisQName.equals(Constants.QNAME_FAULTVALUE_SOAP12)) { - QName qname = context.getQNameFromString((String)value); - if (qname != null) { - faultCode = qname; - } else { - faultCode = new QName("",(String) value); - } + faultCode = (QName)value; } } } 1.1 xml-axis/java/src/org/apache/axis/message/SOAPFaultReasonBuilder.java Index: SOAPFaultReasonBuilder.java =================================================================== package org.apache.axis.message; import org.apache.axis.encoding.DeserializationContext; import org.apache.axis.encoding.Deserializer; import org.apache.axis.encoding.CallbackTarget; import org.apache.axis.encoding.Callback; import org.apache.axis.Constants; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import javax.xml.namespace.QName; import java.util.ArrayList; /* * The Apache Software License, Version 1.1 * * Copyright (c) 2002 The Apache Software Foundation. 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 following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, * if any, must include the following acknowledgment: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowledgment may appear in the software itself, * if and wherever such third-party acknowledgments normally appear. * * 4. The names "Axis" and "Apache Software Foundation" must * not be used to endorse or promote products derived from this * software without prior written permission. For written * permission, please contact [EMAIL PROTECTED] * * 5. Products derived from this software may not be called "Apache", * nor may "Apache" appear in their name, without prior written * permission of the Apache Software Foundation. * * 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 APACHE SOFTWARE FOUNDATION OR * ITS 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 Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. */ /** * Parser for the fault Reason element and its associated Text elements. * * @author Glen Daniels ([EMAIL PROTECTED]) */ public class SOAPFaultReasonBuilder extends SOAPHandler implements Callback { /** Storage for the actual text */ private ArrayList text = new ArrayList(); public SOAPFaultReasonBuilder() { } public SOAPHandler onStartChild(String namespace, String name, String prefix, Attributes attributes, DeserializationContext context) throws SAXException { QName thisQName = new QName(namespace, name); if (thisQName.equals(Constants.QNAME_TEXT_SOAP12)) { Deserializer currentDeser = null; currentDeser = context.getDeserializerForType(Constants.XSD_STRING); if (currentDeser != null) { currentDeser.registerValueTarget(new CallbackTarget(this, null)); } return (SOAPHandler)currentDeser; } else { return null; } } /** * Defined by Callback. * This method gets control when the callback is invoked, which happens * each time we get a deserialized Text string. * * @param value the deserialized value * @param hint (unused) provides additional hint information. */ public void setValue(Object value, Object hint) { text.add(value); } public ArrayList getText() { return text; } }