gdaniels 2002/10/15 14:15:44 Modified: java/samples/echo TestClient.java java/src/org/apache/axis/message EnvelopeBuilder.java RPCHandler.java SOAPEnvelope.java SOAPHeader.java SOAPHeaderElement.java java/src/org/apache/axis/providers/java RPCProvider.java java/src/org/apache/axis/server AxisServer.java java/src/org/apache/axis/transport/local LocalResponder.java LocalSender.java java/test/soap PackageTests.java TestHeaderAttrs.java Log: Improve SOAP 1.2 support. * Propagate the SOAPConstants better when creating headers/ envelopes * Fix support for the <rpc:result> element, which is actually the result itself, not another parameter * Add a SOAP1.2 version of the header attributes test, to make sure "role" works instead of "actor", etc. (this just tests round-tripping, need to add separate tests to check serialization) * Bits of import cleanup along the way Revision Changes Path 1.69 +0 -1 xml-axis/java/samples/echo/TestClient.java Index: TestClient.java =================================================================== RCS file: /home/cvs/xml-axis/java/samples/echo/TestClient.java,v retrieving revision 1.68 retrieving revision 1.69 diff -u -r1.68 -r1.69 --- TestClient.java 15 Sep 2002 19:16:16 -0000 1.68 +++ TestClient.java 15 Oct 2002 21:15:42 -0000 1.69 @@ -74,7 +74,6 @@ import java.lang.reflect.Array; import java.math.BigDecimal; -import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.HashMap; 1.29 +1 -0 xml-axis/java/src/org/apache/axis/message/EnvelopeBuilder.java Index: EnvelopeBuilder.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/message/EnvelopeBuilder.java,v retrieving revision 1.28 retrieving revision 1.29 diff -u -r1.28 -r1.29 --- EnvelopeBuilder.java 18 Sep 2002 16:10:28 -0000 1.28 +++ EnvelopeBuilder.java 15 Oct 2002 21:15:42 -0000 1.29 @@ -126,6 +126,7 @@ envelope.setPrefix(prefix); envelope.setNamespaceURI(namespace); envelope.setNSMappings(context.getCurrentNSMappings()); + envelope.setSoapConstants(soapConstants); context.pushNewElement(envelope); } 1.67 +0 -3 xml-axis/java/src/org/apache/axis/message/RPCHandler.java Index: RPCHandler.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/message/RPCHandler.java,v retrieving revision 1.66 retrieving revision 1.67 diff -u -r1.66 -r1.67 --- RPCHandler.java 9 Oct 2002 19:06:31 -0000 1.66 +++ RPCHandler.java 15 Oct 2002 21:15:42 -0000 1.67 @@ -178,9 +178,6 @@ Vector params = rpcElem.getParams(); - // SAR: for now, ignore RPC Result elements - if (qname.equals(Constants.QNAME_RPC_RESULT)) return this; - // Create a new param if not the same element if (currentParam == null || !currentParam.getQName().getNamespaceURI().equals(namespace) || 1.81 +4 -0 xml-axis/java/src/org/apache/axis/message/SOAPEnvelope.java Index: SOAPEnvelope.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/message/SOAPEnvelope.java,v retrieving revision 1.80 retrieving revision 1.81 diff -u -r1.80 -r1.81 --- SOAPEnvelope.java 18 Sep 2002 16:10:28 -0000 1.80 +++ SOAPEnvelope.java 15 Oct 2002 21:15:42 -0000 1.81 @@ -419,6 +419,10 @@ return soapConstants; } + public void setSoapConstants(SOAPConstants soapConstants) { + this.soapConstants = soapConstants; + } + // JAXM methods public javax.xml.soap.SOAPBody addBody() throws SOAPException { 1.61 +2 -1 xml-axis/java/src/org/apache/axis/message/SOAPHeader.java Index: SOAPHeader.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/message/SOAPHeader.java,v retrieving revision 1.60 retrieving revision 1.61 diff -u -r1.60 -r1.61 --- SOAPHeader.java 18 Sep 2002 16:10:28 -0000 1.60 +++ SOAPHeader.java 15 Oct 2002 21:15:42 -0000 1.61 @@ -60,7 +60,6 @@ import org.apache.axis.soap.SOAPConstants; import org.apache.axis.encoding.DeserializationContext; import org.apache.axis.encoding.SerializationContext; -import org.apache.axis.utils.JavaUtils; import org.apache.axis.utils.Messages; import org.apache.axis.handlers.soap.SOAPService; @@ -98,6 +97,7 @@ soapConstants = soapConsts; try { setParentElement(env); + setEnvelope(env); } catch (SOAPException ex) { // class cast should never fail when parent is a SOAPEnvelope log.fatal(Messages.getMessage("exception00"), ex); @@ -130,6 +130,7 @@ public javax.xml.soap.SOAPHeaderElement addHeaderElement(Name name) throws SOAPException { SOAPHeaderElement headerElement = new SOAPHeaderElement(name); + headerElement.setEnvelope(getEnvelope()); addHeader(headerElement); return headerElement; } 1.14 +24 -13 xml-axis/java/src/org/apache/axis/message/SOAPHeaderElement.java Index: SOAPHeaderElement.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/message/SOAPHeaderElement.java,v retrieving revision 1.13 retrieving revision 1.14 diff -u -r1.13 -r1.14 --- SOAPHeaderElement.java 22 Sep 2002 17:26:29 -0000 1.13 +++ SOAPHeaderElement.java 15 Oct 2002 21:15:42 -0000 1.14 @@ -57,7 +57,7 @@ import org.apache.axis.Constants; import org.apache.axis.soap.SOAPConstants; import org.apache.axis.encoding.DeserializationContext; -import org.apache.axis.utils.JavaUtils; +import org.apache.axis.encoding.SerializationContext; import org.apache.axis.utils.Messages; import org.w3c.dom.Element; import org.xml.sax.Attributes; @@ -154,28 +154,17 @@ } processed = false; + alreadySerialized = true; } public boolean getMustUnderstand() { return( mustUnderstand ); } public void setMustUnderstand(boolean b) { mustUnderstand = b ; - String val = b ? "1" : "0"; - - // Instead of doing this can we hang out until serialization time - // and do it there, so that we can then resolve SOAP version? - setAttribute(Constants.URI_SOAP11_ENV, - Constants.ATTR_MUST_UNDERSTAND, - val); } public String getActor() { return( actor ); } public void setActor(String a) { actor = a ; - - // FIXME - // Instead of doing this can we hang out until serialization time - // and do it there, so that we can then resolve SOAP version? - setAttribute(Constants.URI_SOAP11_ENV, Constants.ATTR_ACTOR, a); } public void setProcessed(boolean value) { @@ -184,5 +173,27 @@ public boolean isProcessed() { return( processed ); + } + + boolean alreadySerialized = false; + + /** Subclasses can override + */ + protected void outputImpl(SerializationContext context) throws Exception { + if (!alreadySerialized) { + SOAPConstants soapVer = getEnvelope().getSOAPConstants(); + QName roleQName = soapVer.getRoleAttributeQName(); + + setAttribute(roleQName.getNamespaceURI(), + roleQName.getLocalPart(), actor); + + String val = mustUnderstand ? "1" : "0"; + + setAttribute(soapVer.getEnvelopeURI(), + Constants.ATTR_MUST_UNDERSTAND, + val); + } + + super.outputImpl(context); } } 1.98 +1 -8 xml-axis/java/src/org/apache/axis/providers/java/RPCProvider.java Index: RPCProvider.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/providers/java/RPCProvider.java,v retrieving revision 1.97 retrieving revision 1.98 diff -u -r1.97 -r1.98 --- RPCProvider.java 9 Oct 2002 19:06:32 -0000 1.97 +++ RPCProvider.java 15 Oct 2002 21:15:42 -0000 1.98 @@ -333,14 +333,7 @@ if (msgContext.getSOAPConstants() == SOAPConstants.SOAP12_CONSTANTS) { - RPCParam result = new RPCParam - (Constants.QNAME_RPC_RESULT, returnQName.getLocalPart()); - if (!operation.isReturnHeader()) { - resBody.addParam(result); - } else { - resEnv.addHeader(new RPCHeaderParam(result)); - } - + returnQName = Constants.QNAME_RPC_RESULT; } RPCParam param = new RPCParam(returnQName, objRes); 1.84 +0 -1 xml-axis/java/src/org/apache/axis/server/AxisServer.java Index: AxisServer.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/server/AxisServer.java,v retrieving revision 1.83 retrieving revision 1.84 diff -u -r1.83 -r1.84 --- AxisServer.java 18 Sep 2002 16:10:39 -0000 1.83 +++ AxisServer.java 15 Oct 2002 21:15:43 -0000 1.84 @@ -67,7 +67,6 @@ import org.apache.axis.client.AxisClient; import org.apache.axis.configuration.EngineConfigurationFactoryFinder; import org.apache.axis.utils.ClassUtils; -import org.apache.axis.utils.JavaUtils; import org.apache.axis.utils.Messages; import org.apache.axis.components.logger.LogFactory; 1.21 +3 -1 xml-axis/java/src/org/apache/axis/transport/local/LocalResponder.java Index: LocalResponder.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/transport/local/LocalResponder.java,v retrieving revision 1.20 retrieving revision 1.21 diff -u -r1.20 -r1.21 --- LocalResponder.java 12 Aug 2002 22:53:09 -0000 1.20 +++ LocalResponder.java 15 Oct 2002 21:15:43 -0000 1.21 @@ -79,9 +79,11 @@ log.debug("Enter: LocalResponder::invoke"); } - msgContext.getResponseMessage().getSOAPPartAsString(); + String msgStr = msgContext.getResponseMessage().getSOAPPartAsString(); if (log.isDebugEnabled()) { + log.debug(msgStr); + log.debug("Exit: LocalResponder::invoke"); } } 1.42 +0 -1 xml-axis/java/src/org/apache/axis/transport/local/LocalSender.java Index: LocalSender.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/transport/local/LocalSender.java,v retrieving revision 1.41 retrieving revision 1.42 diff -u -r1.41 -r1.42 --- LocalSender.java 18 Sep 2002 16:10:44 -0000 1.41 +++ LocalSender.java 15 Oct 2002 21:15:43 -0000 1.42 @@ -63,7 +63,6 @@ import org.apache.axis.message.SOAPEnvelope; import org.apache.axis.message.SOAPFault; import org.apache.axis.server.AxisServer; -import org.apache.axis.utils.JavaUtils; import org.apache.axis.utils.Messages; import org.apache.axis.components.logger.LogFactory; 1.4 +1 -1 xml-axis/java/test/soap/PackageTests.java Index: PackageTests.java =================================================================== RCS file: /home/cvs/xml-axis/java/test/soap/PackageTests.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- PackageTests.java 25 Sep 2002 21:28:59 -0000 1.3 +++ PackageTests.java 15 Oct 2002 21:15:44 -0000 1.4 @@ -69,7 +69,7 @@ { TestSuite suite = new TestSuite("All axis.soap tests"); - suite.addTest(TestHeaderAttrs.suite()); + suite.addTestSuite(TestHeaderAttrs.class); suite.addTestSuite(TestOnFaultHeaders.class); return suite; 1.8 +11 -13 xml-axis/java/test/soap/TestHeaderAttrs.java Index: TestHeaderAttrs.java =================================================================== RCS file: /home/cvs/xml-axis/java/test/soap/TestHeaderAttrs.java,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- TestHeaderAttrs.java 25 Sep 2002 21:28:59 -0000 1.7 +++ TestHeaderAttrs.java 15 Oct 2002 21:15:44 -0000 1.8 @@ -60,9 +60,12 @@ import junit.framework.Test; import org.apache.axis.AxisFault; import org.apache.axis.Constants; +import org.apache.axis.SimpleTargetedChain; +import org.apache.axis.soap.SOAPConstants; import org.apache.axis.configuration.SimpleProvider; import org.apache.axis.providers.java.RPCProvider; import org.apache.axis.transport.local.LocalTransport; +import org.apache.axis.transport.local.LocalResponder; import org.apache.axis.client.Call; import org.apache.axis.handlers.soap.SOAPService; import org.apache.axis.message.SOAPHeaderElement; @@ -103,10 +106,9 @@ static final String localURL = "local:///testService"; - public static Test suite() { - return new TestSuite(TestHeaderAttrs.class); - } - + // Which SOAP version are we using? Default to SOAP 1.1 + protected SOAPConstants soapVersion = SOAPConstants.SOAP11_CONSTANTS; + public TestHeaderAttrs(String name) { super(name); } @@ -127,6 +129,10 @@ service.setOption("allowedMethods", "*"); provider.deployService("testService", service); + + SimpleTargetedChain serverTransport = + new SimpleTargetedChain(null, null, new LocalResponder()); + provider.deployTransport("local", serverTransport); } /** @@ -215,6 +221,7 @@ boolean doubled) throws Exception { Call call = new Call(new Service()); + call.setSOAPVersion(soapVersion); call.setTransport(localTransport); call.addHeader(header); @@ -231,14 +238,5 @@ if (doubled) desiredResult = desiredResult * 2; return (i.intValue() == desiredResult); - } - - public static void main(String[] args) throws Exception { - TestHeaderAttrs tester = new TestHeaderAttrs("test"); - tester.setUp(); - tester.testMUBadHeader(); - tester.testNonMUBadHeader(); - tester.testGoodHeader(); - tester.testGoodHeaderWithActors(); } }