Return-Path: Delivered-To: apmail-xml-axis-dev-archive@xml.apache.org Received: (qmail 68428 invoked by uid 500); 28 Jan 2002 06:43:11 -0000 Mailing-List: contact axis-dev-help@xml.apache.org; run by ezmlm Precedence: bulk Reply-To: axis-dev@xml.apache.org list-help: list-unsubscribe: list-post: Delivered-To: mailing list axis-dev@xml.apache.org Received: (qmail 68412 invoked by uid 500); 28 Jan 2002 06:43:10 -0000 Delivered-To: apmail-xml-axis-cvs@apache.org Date: 28 Jan 2002 06:43:09 -0000 Message-ID: <20020128064309.73924.qmail@icarus.apache.org> From: gdaniels@apache.org To: xml-axis-cvs@apache.org Subject: cvs commit: xml-axis/java/test/wsdl/types ComprehensiveTypes.wsdl VerifyTestCase.java X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N gdaniels 02/01/27 22:43:08 Modified: java Tag: config-work TODO.txt build.xml java/samples/attachments Tag: config-work EchoAttachment.java java/samples/bidbuy Tag: config-work TestClient.java v3.java java/samples/echo Tag: config-work TestClient.java deploy.wsdd java/samples/encoding Tag: config-work DataSer.java TestSer.java java/samples/proxy Tag: config-work ProxyService.java java/samples/security Tag: config-work LogHandler.java SignedSOAPEnvelope.java java/samples/transport Tag: config-work FileTest.java testit.cmd java/samples/transport/tcp Tag: config-work AdminClient.java GetQuote.java TCPListener.java java/samples/userguide/example5 Tag: config-work Client.java java/samples/userguide/example6 Tag: config-work WidgetPriceServiceTestCase.java java/src/javax/xml/rpc Tag: config-work Service.java java/src/javax/xml/rpc/encoding Tag: config-work TypeMappingRegistry.java java/src/org/apache/axis Tag: config-work AxisEngine.java Constants.java EngineConfiguration.java SOAPPart.java java/src/org/apache/axis/client Tag: config-work AdminClient.java Call.java Service.java ServiceClient.java ServiceFactory.java java/src/org/apache/axis/configuration Tag: config-work FileProvider.java NullProvider.java XMLStringProvider.java java/src/org/apache/axis/deployment Tag: config-work DeployableItem.java DeploymentRegistry.java java/src/org/apache/axis/deployment/v2dd Tag: config-work V2DDDeployableItem.java java/src/org/apache/axis/deployment/wsdd Tag: config-work WSDDBeanMapping.java WSDDChain.java WSDDDeployableItem.java WSDDDeployment.java WSDDDocument.java WSDDGlobalConfiguration.java WSDDProvider.java WSDDService.java WSDDTargetedChain.java WSDDTypeMapping.java WSDDTypeMappingContainer.java WSDDUndeployment.java java/src/org/apache/axis/deployment/wsdd/providers Tag: config-work WSDDBsfProvider.java WSDDComProvider.java WSDDHandlerProvider.java WSDDJavaEJBProvider.java WSDDJavaMsgProvider.java WSDDJavaRPCProvider.java java/src/org/apache/axis/deployment/wsml Tag: config-work WSMLDeployableItem.java java/src/org/apache/axis/encoding Tag: config-work DeserializationContext.java Deserializer.java DeserializerFactory.java SerializationContext.java Serializer.java ServiceDescription.java TypeMappingRegistry.java XMLType.java java/src/org/apache/axis/handlers Tag: config-work DebugHandler.java SimpleSessionHandler.java java/src/org/apache/axis/handlers/soap Tag: config-work SOAPService.java java/src/org/apache/axis/message Tag: config-work BodyBuilder.java MessageElement.java RPCElement.java RPCHandler.java RPCParam.java SOAPEnvelope.java SOAPFaultBuilder.java SOAPHandler.java SOAPHeader.java java/src/org/apache/axis/providers/java Tag: config-work RPCProvider.java java/src/org/apache/axis/server Tag: config-work server-config.wsdd java/src/org/apache/axis/utils Tag: config-work Admin.java JavaUtils.java resources.properties java/src/org/apache/axis/wsdl/fromJava Tag: config-work Emitter.java Types.java todo.txt java/src/org/apache/axis/wsdl/toJava Tag: config-work BindingEntry.java Emitter.java JavaBindingWriter.java JavaDeployWriter.java JavaHolderWriter.java JavaImplWriter.java JavaInterfaceWriter.java JavaServiceImplWriter.java JavaSkelWriter.java JavaStubWriter.java JavaTestCaseWriter.java JavaTypeWriter.java JavaWriterFactory.java PortTypeEntry.java SymbolTable.java TypeEntry.java Utils.java java/test/RPCDispatch Tag: config-work TestRPC.java TestSerializedRPC.java java/test/encoding Tag: config-work DataSer.java TestArrayListConversions.java TestBody.java TestDeser.java TestSer.java TestString.java TestXsiType.java java/test/functional Tag: config-work TestTCPTransportSample.java TestTransportSample.java java/test/outparams Tag: config-work TestOutParams.java java/test/session Tag: config-work TestSimpleSession.java java/test/soap Tag: config-work TestHeaderAttrs.java java/test/wsdd Tag: config-work TestUndeployment.java java/test/wsdl Tag: config-work Java2WsdlAntTask.java Wsdl2javaAntTask.java Wsdl2javaTestSuite.xml java/test/wsdl/arrays Tag: config-work PersonalInfoBookServiceTestCase.java java/test/wsdl/faults Tag: config-work FaultServiceTestCase.java java/test/wsdl/inout Tag: config-work DetailedInoutTestCase.java java/test/wsdl/marrays Tag: config-work MArrayTestsServiceTestCase.java java/test/wsdl/multithread Tag: config-work AddressBook.wsdl MultithreadTestCase.java java/test/wsdl/parameterOrder Tag: config-work VerifyTestCase.java java/test/wsdl/refattr Tag: config-work RefTestServiceTestCase.java refattr.wsdl java/test/wsdl/sequence Tag: config-work SequenceTestServiceTestCase.java java/test/wsdl/types Tag: config-work ComprehensiveTypes.wsdl VerifyTestCase.java Added: java/samples/encoding Tag: config-work DataDeser.java DataDeserFactory.java DataSerFactory.java java/samples/transport Tag: config-work client_deploy.wsdd deploy.wsdd java/samples/transport/tcp Tag: config-work client_deploy.wsdd deploy.wsdd java/src/javax/xml/messaging Tag: config-work Endpoint.java URLEndpoint.java java/src/javax/xml/soap Tag: config-work AttachmentPart.java Detail.java DetailEntry.java FactoryFinder.java MessageFactory.java MimeHeader.java MimeHeaders.java Name.java Node.java SOAPBody.java SOAPBodyElement.java SOAPConnection.java SOAPConnectionFactory.java SOAPConstants.java SOAPElement.java SOAPElementFactory.java SOAPEnvelope.java SOAPException.java SOAPFault.java SOAPFaultElement.java SOAPHeader.java SOAPHeaderElement.java SOAPMessage.java SOAPPart.java Text.java java/src/javax/xml/transform Tag: config-work Source.java java/src/org/apache/axis/configuration Tag: config-work SimpleProvider.java java/src/org/apache/axis/encoding Tag: config-work Callback.java CallbackTarget.java DefaultTypeMappingImpl.java DeserializationContextImpl.java DeserializerImpl.java DeserializerTarget.java FieldTarget.java MethodTarget.java SerializationContextImpl.java SerializerFactory.java Target.java TypeMapping.java TypeMappingImpl.java TypeMappingRegistryImpl.java java/src/org/apache/axis/encoding/ser Tag: config-work ArrayDeserializer.java ArrayDeserializerFactory.java ArraySerializer.java ArraySerializerFactory.java Base64Deserializer.java Base64DeserializerFactory.java Base64Serializer.java Base64SerializerFactory.java BaseDeserializerFactory.java BaseSerializerFactory.java BeanDeserializer.java BeanDeserializerFactory.java BeanPropertyDescriptor.java BeanPropertyTarget.java BeanSerializer.java BeanSerializerFactory.java DateDeserializer.java DateDeserializerFactory.java DateSerializer.java DateSerializerFactory.java ElementDeserializer.java ElementDeserializerFactory.java ElementSerializer.java ElementSerializerFactory.java EnumDeserializer.java EnumDeserializerFactory.java EnumSerializer.java EnumSerializerFactory.java HexDeserializer.java HexDeserializerFactory.java HexSerializer.java HexSerializerFactory.java JAFDataHandlerDeserializer.java JAFDataHandlerDeserializerFactory.java JAFDataHandlerSerializer.java JAFDataHandlerSerializerFactory.java MapDeserializer.java MapDeserializerFactory.java MapSerializer.java MapSerializerFactory.java SimpleDeserializer.java SimpleDeserializerFactory.java SimpleNonPrimitiveSerializerFactory.java SimplePrimitiveSerializerFactory.java SimpleSerializer.java VectorDeserializer.java VectorDeserializerFactory.java java/test/encoding Tag: config-work DataDeser.java DataDeserFactory.java DataSerFactory.java java/test/wsdl/literal Tag: config-work SalesRankNPrice.wsdl SalesRankNPrice_ServiceTestCase.java Removed: java/src/org/apache/axis/deployment Tag: config-work BasicEngineConfiguration.java SimpleDeploymentManager.java java/src/org/apache/axis/deployment/wsdd Tag: config-work SimpleWsddDeploymentManager.java java/src/org/apache/axis/encoding Tag: config-work ArraySerializer.java Base64Serializer.java BasicDeserializer.java BeanSerializer.java BooleanDeserializerFactory.java DateSerializer.java ElementSerializer.java EnumSerializer.java FloatSerializer.java HexSerializer.java JAFDataHandlerDeserializer.java JAFDataHandlerSerializer.java MapSerializer.java SOAPEncoding.java SOAPTypeMappingRegistry.java ValueReceiver.java VectorDeserializer.java java/src/org/apache/axis/wsdl/toJava Tag: config-work JavaPortTypeWriter.java Log: Next round of updates for config-work. There are a lot of changes here because I merged in Rich's encoding stuff at the same time I was working on the engine configuration to avoid duplicating work. Some cleanup still needs doing. The main substantive changes are as follows: 1) a WSDDDeployment is now an EngineConfiguration, and FileProvider is a thin shim which now just delegates to the deployment. The only bits of code which care about the WSDD specific aspects are now the admin service and people directly using the WSDD classes. 2) the DeploymentRegistry is mostly gone, replaced with direct references to EngineConfigurations, which act as suppliers for components. 3) introduced a "SimpleProvider" for programatically dropping Handlers/ Services/Transports into an engine, and use this several times in the tests. 4) removed a bunch of unused code, and as we continue we may end up pulling a bunch of the stuff at the org.apache.axis.deployment level (DeploymentItem, etc) if we maintain the abstraction boundary between the different kinds of EngineConfiguration. 5) remove the direct config/deployment APIs from the AxisEngine, in favor of using the interface to your EngineConfiguration to do config and deployment. We need to decide what the relationship is here - should we be able to modify the configuration of a running engine while it's in use, or do we provide a way to simply change out the entire EngineConfiguration wholesale? We also need to decide if we like this approach. As it stands, we can't use WSDD to deploy into a non-WSDD EngineConfiguration. The other alternative seems to be to introduce "generic" descriptors for handlers/ chains/etc. and make the WSDD subsystem simply a serialization mechanism for those. That way you could squirt components into the AdminService using WSDD, and still write out the configuration in some other format. All the tests run with this codebase. Ideally, I'd like us to merge this stuff back onto the main branch as soon as we're feeling mostly comfortable with the direction, especially in light of the ongoing work on other parts of the package. Glyn, let's try to talk about this on Monday? Revision Changes Path No revision No revision 1.9.2.1 +10 -5 xml-axis/java/TODO.txt Index: TODO.txt =================================================================== RCS file: /home/cvs/xml-axis/java/TODO.txt,v retrieving revision 1.9 retrieving revision 1.9.2.1 diff -u -r1.9 -r1.9.2.1 --- TODO.txt 16 Jan 2002 20:53:31 -0000 1.9 +++ TODO.txt 28 Jan 2002 06:42:55 -0000 1.9.2.1 @@ -10,23 +10,23 @@ MESSAGE PARSING / ENCODING -------------------------- -! Finish support for different encodingStyles +* Support different encodingStyles ! <> Support literalxml encodingStyle -! <> Multi-dimensional array support +X Multi-dimensional array support CLIENT API ---------- JAX-RPC COMPATIBILITY --------------------- -! Implement serializer/deserializer framework compliance +* Implement serializer/deserializer framework compliance PERFORMANCE ----------- DOCUMENTATION ------------- -* Architecture doc +* Architecture doc SOAP SPEC COMPLIANCE -------------------- @@ -77,7 +77,8 @@ Java2WSDL --------- -! <> Plug new framework into autogen mechanism +X <> Plug new framework into autogen mechanism + ! Java2WSDL "void op(boolean b1, Boolean b2)" maps to @@ -89,7 +90,11 @@ +! <> Support generating schema for custom serializers GENERAL / UNCATEGORIZED ----------------------- +! <> Reorganize resources.properties into packages +! <> Remove search-for-first-MessageContext-arg code +! <> Remove ServiceClient 1.98.2.1 +2 -0 xml-axis/java/build.xml Index: build.xml =================================================================== RCS file: /home/cvs/xml-axis/java/build.xml,v retrieving revision 1.98 retrieving revision 1.98.2.1 diff -u -r1.98 -r1.98.2.1 --- build.xml 11 Jan 2002 18:44:06 -0000 1.98 +++ build.xml 28 Jan 2002 06:42:55 -0000 1.98.2.1 @@ -205,7 +205,9 @@ + + + serializer="org.apache.axis.encoding.ser.BeanSerializerFactory" deserializer="org.apache.axis.encoding.ser.BeanSerializerFactory"/> No revision No revision 1.13.2.1 +15 -59 xml-axis/java/samples/encoding/DataSer.java Index: DataSer.java =================================================================== RCS file: /home/cvs/xml-axis/java/samples/encoding/DataSer.java,v retrieving revision 1.13 retrieving revision 1.13.2.1 diff -u -r1.13 -r1.13.2.1 --- DataSer.java 23 Dec 2001 12:33:31 -0000 1.13 +++ DataSer.java 28 Jan 2002 06:42:56 -0000 1.13.2.1 @@ -1,79 +1,34 @@ package samples.encoding; -import org.apache.axis.encoding.DeserializationContext; -import org.apache.axis.encoding.Deserializer; -import org.apache.axis.encoding.DeserializerFactory; -import org.apache.axis.encoding.SOAPTypeMappingRegistry; import org.apache.axis.encoding.SerializationContext; import org.apache.axis.encoding.Serializer; import org.apache.axis.message.SOAPHandler; +import org.apache.axis.Constants; import org.xml.sax.Attributes; import org.xml.sax.SAXException; +import org.apache.axis.Constants; import javax.xml.rpc.namespace.QName; import java.io.IOException; import java.util.Hashtable; -public class DataSer extends Deserializer implements Serializer +public class DataSer implements Serializer { public static final String STRINGMEMBER = "stringMember"; public static final String FLOATMEMBER = "floatMember"; public static final String DATAMEMBER = "dataMember"; public static final QName myTypeQName = new QName("typeNS", "Data"); - public static class DataSerFactory implements DeserializerFactory { - public void setJavaClass(Class cls) {} - public Deserializer getDeserializer() { - return new DataSer(); - } - } - public static DeserializerFactory getFactory() - { - return new DataSerFactory(); - } - - private Hashtable typesByMemberName = new Hashtable(); - - public DataSer() - { - typesByMemberName.put(STRINGMEMBER, SOAPTypeMappingRegistry.XSD_STRING); - typesByMemberName.put(FLOATMEMBER, SOAPTypeMappingRegistry.XSD_FLOAT); - typesByMemberName.put(DATAMEMBER, myTypeQName); - value = new Data(); - } - - /** DESERIALIZER STUFF - event handlers - */ - - public SOAPHandler onStartChild(String namespace, - String localName, - String prefix, - Attributes attributes, - DeserializationContext context) - throws SAXException - { - QName typeQName = (QName)typesByMemberName.get(localName); - if (typeQName == null) - throw new SAXException("Invalid element in Data struct - " + localName); - - // These can come in either order. - Deserializer dSer = context.getTypeMappingRegistry(). - getDeserializer(typeQName); - try { - dSer.registerValueTarget(value, localName); - } catch (NoSuchFieldException e) { - throw new SAXException(e); - } - - if (dSer == null) - throw new SAXException("No deserializer for a " + typeQName + "???"); - - return dSer; - } - /** SERIALIZER STUFF */ - + /** + * Serialize an element named name, with the indicated attributes + * and value. + * @param name is the element name + * @param attributes are the attributes...serialize is free to add more. + * @param value is the value + * @param context is the SerializationContext + */ public void serialize(QName name, Attributes attributes, Object value, SerializationContext context) throws IOException @@ -83,9 +38,10 @@ Data data = (Data)value; context.startElement(name, attributes); - context.serialize(new QName("", STRINGMEMBER), null, data.stringMember); - context.serialize(new QName("", FLOATMEMBER), null, data.floatMember); - context.serialize(new QName("", DATAMEMBER), null, data.dataMember); + context.serialize(new QName("", STRINGMEMBER), null, data.stringMember, String.class); + context.serialize(new QName("", FLOATMEMBER), null, data.floatMember, float.class); + context.serialize(new QName("", DATAMEMBER), null, data.dataMember, Data.class); context.endElement(); } + public String getMechanismType() { return Constants.AXIS_SAX; } } 1.18.4.1 +12 -7 xml-axis/java/samples/encoding/TestSer.java Index: TestSer.java =================================================================== RCS file: /home/cvs/xml-axis/java/samples/encoding/TestSer.java,v retrieving revision 1.18 retrieving revision 1.18.4.1 diff -u -r1.18 -r1.18.4.1 --- TestSer.java 26 Oct 2001 18:18:57 -0000 1.18 +++ TestSer.java 28 Jan 2002 06:42:56 -0000 1.18.4.1 @@ -2,8 +2,12 @@ import org.apache.axis.MessageContext; import org.apache.axis.encoding.DeserializationContext; +import org.apache.axis.encoding.DeserializationContextImpl; import org.apache.axis.encoding.SerializationContext; +import org.apache.axis.encoding.SerializationContextImpl; import org.apache.axis.encoding.TypeMappingRegistry; +import org.apache.axis.encoding.TypeMapping; +import org.apache.axis.Constants; import org.apache.axis.message.RPCElement; import org.apache.axis.message.RPCParam; import org.apache.axis.message.SOAPEnvelope; @@ -48,11 +52,15 @@ if (args.length == 0) { Writer stringWriter = new StringWriter(); - SerializationContext context = new SerializationContext(stringWriter, msgContext); + SerializationContext context = new SerializationContextImpl(stringWriter, msgContext); TypeMappingRegistry reg = context.getTypeMappingRegistry(); - - reg.addSerializer(Data.class, dataQName, new DataSer()); + TypeMapping tm = (TypeMapping) reg.getTypeMapping(Constants.URI_SOAP_ENC); + if (tm == null) { + tm = (TypeMapping) reg.createTypeMapping(); + reg.register(tm, new String[] {Constants.URI_SOAP_ENC}); + } + tm.register(Data.class, dataQName, new DataSerFactory(), new DataDeserFactory()); msg.output(context); @@ -68,10 +76,7 @@ reader = new FileReader(args[0]); } - TypeMappingRegistry reg = msgContext.getTypeMappingRegistry(); - reg.addDeserializerFactory(dataQName, Data.class, DataSer.getFactory()); - - DeserializationContext dser = new DeserializationContext( + DeserializationContext dser = new DeserializationContextImpl( new InputSource(reader), msgContext, org.apache.axis.Message.REQUEST); dser.parse(); SOAPEnvelope env = dser.getEnvelope(); No revision No revision 1.1.2.1 +0 -0 xml-axis/java/samples/encoding/DataDeser.java Index: DataDeser.java =================================================================== RCS file: /home/cvs/xml-axis/java/samples/encoding/DataDeser.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/samples/encoding/DataDeserFactory.java Index: DataDeserFactory.java =================================================================== RCS file: /home/cvs/xml-axis/java/samples/encoding/DataDeserFactory.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/samples/encoding/DataSerFactory.java Index: DataSerFactory.java =================================================================== RCS file: /home/cvs/xml-axis/java/samples/encoding/DataSerFactory.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 No revision No revision 1.11.2.1 +2 -1 xml-axis/java/samples/proxy/ProxyService.java Index: ProxyService.java =================================================================== RCS file: /home/cvs/xml-axis/java/samples/proxy/ProxyService.java,v retrieving revision 1.11 retrieving revision 1.11.2.1 diff -u -r1.11 -r1.11.2.1 --- ProxyService.java 3 Jan 2002 18:08:28 -0000 1.11 +++ ProxyService.java 28 Jan 2002 06:42:56 -0000 1.11.2.1 @@ -95,7 +95,8 @@ Call call = (Call) service.createCall(); SimpleTargetedChain c = new SimpleTargetedChain(new TCPSender()); - service.getEngine().deployTransport("tcp", c); + // !!! FIXME + //service.getEngine().deployTransport("tcp", c); // add TCP for proxy testing call.addTransportPackage("samples.transport"); No revision No revision 1.2.2.1 +20 -4 xml-axis/java/samples/security/LogHandler.java Index: LogHandler.java =================================================================== RCS file: /home/cvs/xml-axis/java/samples/security/LogHandler.java,v retrieving revision 1.2 retrieving revision 1.2.2.1 diff -u -r1.2 -r1.2.2.1 --- LogHandler.java 14 Jan 2002 14:21:02 -0000 1.2 +++ LogHandler.java 28 Jan 2002 06:42:56 -0000 1.2.2.1 @@ -89,8 +89,10 @@ /** Log an access each time we get invoked. */ try { +System.out.println("Starting Server verification"); Handler serviceHandler = msgContext.getServiceHandler(); String filename = (String)getOption("filename"); + if ((filename == null) || (filename.equals(""))) throw new AxisFault("Server.NoLogFile", "No log file configured for the LogHandler!", @@ -99,13 +101,19 @@ PrintWriter writer = new PrintWriter(fos); - Integer numAccesses = - (Integer)serviceHandler.getOption("accesses"); + Integer numAccesses = null; + + try { + numAccesses = (Integer)serviceHandler.getOption("accesses"); + } catch (ClassCastException cce) { + } catch (Exception e) { + e.printStackTrace(); + } if (numAccesses == null) numAccesses = new Integer(0); numAccesses = new Integer(numAccesses.intValue() + 1); - + Date date = new Date(); String result = date + ": service " + msgContext.getTargetService() + @@ -124,12 +132,20 @@ Element nsctx = doc.createElement("nsctx"); nsctx.setAttribute("xmlns:ds", Constants.SignatureSpecNS); - + Element signatureElem = (Element) xpathAPI.selectSingleNode(doc, "//ds:Signature", nsctx); + + // check to make sure that the document claims to have been signed + if (signatureElem == null) { + writer.println("The document is not signed"); writer.flush(); + return; + } + XMLSignature sig = new XMLSignature(signatureElem, BaseURI); boolean verify = sig.checkSignatureValue(sig.getKeyInfo().getPublicKey()); +System.out.println("Server verification complete."); writer.println("The signature is" + (verify ? " " 1.3.2.1 +15 -7 xml-axis/java/samples/security/SignedSOAPEnvelope.java Index: SignedSOAPEnvelope.java =================================================================== RCS file: /home/cvs/xml-axis/java/samples/security/SignedSOAPEnvelope.java,v retrieving revision 1.3 retrieving revision 1.3.2.1 diff -u -r1.3 -r1.3.2.1 --- SignedSOAPEnvelope.java 22 Jan 2002 15:11:12 -0000 1.3 +++ SignedSOAPEnvelope.java 28 Jan 2002 06:42:56 -0000 1.3.2.1 @@ -66,7 +66,7 @@ import org.apache.axis.*; import org.apache.axis.configuration.NullProvider; -import org.apache.axis.encoding.DeserializationContext; +import org.apache.axis.encoding.DeserializationContextImpl; import org.apache.axis.message.SOAPEnvelope; import org.apache.axis.message.SOAPBodyElement; import org.apache.axis.message.MessageElement; @@ -76,6 +76,7 @@ import org.apache.axis.transport.http.HTTPTransport ; import org.apache.axis.utils.*; import org.apache.xml.security.signature.XMLSignature; +import org.apache.xml.security.c14n.Canonicalizer; import org.w3c.dom.Element; import org.w3c.dom.Document; import org.xml.sax.InputSource; @@ -106,6 +107,7 @@ private void init (SOAPEnvelope env, String baseURI, String keystoreFile) { try { +System.out.println("Beginning Client signing..."); env.addMapping(new Mapping(SOAPSECNS,SOAPSECprefix)); env.addAttribute(Constants.URI_SOAP_ENV,"actor","some-uri"); env.addAttribute(Constants.URI_SOAP_ENV,"mustUnderstand","1"); @@ -113,7 +115,7 @@ SOAPHeader header = new SOAPHeader(XMLUtils.StringToElement(SOAPSECNS,"Signature", "")); env.addHeader(header); - Document doc = env.getAsDocument(); + Document doc = env.getAsDocument(); KeyStore ks = KeyStore.getInstance(keystoreType); FileInputStream fis = new FileInputStream(keystoreFile); @@ -125,28 +127,34 @@ Element soapHeaderElement = (Element)((Element)doc.getFirstChild()).getElementsByTagNameNS("*","Header").item(0); Element soapSignatureElement = (Element)soapHeaderElement.getElementsByTagNameNS("*","Signature").item(0); + XMLSignature sig = new XMLSignature(doc, baseURI, XMLSignature.ALGO_ID_SIGNATURE_DSA); + soapSignatureElement.appendChild(sig.getElement()); sig.addDocument("#Body"); + X509Certificate cert = (X509Certificate) ks.getCertificate(certificateAlias); + sig.addKeyInfo(cert); sig.addKeyInfo(cert.getPublicKey()); sig.sign(privateKey); - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - org.apache.xml.security.utils.XMLUtils.outputDOMc14nWithComments(doc, baos); + Canonicalizer c14n = Canonicalizer.getInstance(Canonicalizer.ALGO_ID_C14N_WITH_COMMENTS); + byte[] canonicalMessage = c14n.canonicalizeDocument(doc); - InputSource is = new InputSource(new java.io.ByteArrayInputStream(baos.toByteArray())); - DeserializationContext dser = null ; + InputSource is = new InputSource(new java.io.ByteArrayInputStream(canonicalMessage)); + DeserializationContextImpl dser = null ; AxisClient tmpEngine = new AxisClient(new NullProvider()); MessageContext msgContext = new MessageContext(tmpEngine); - dser = new DeserializationContext(is, msgContext, + dser = new DeserializationContextImpl(is, msgContext, Message.REQUEST, this ); + dser.parse(); +System.out.println("Client signing complete."); } catch( Exception e ) { e.printStackTrace(); No revision No revision 1.23.2.1 +13 -7 xml-axis/java/samples/transport/FileTest.java Index: FileTest.java =================================================================== RCS file: /home/cvs/xml-axis/java/samples/transport/FileTest.java,v retrieving revision 1.23 retrieving revision 1.23.2.1 diff -u -r1.23 -r1.23.2.1 --- FileTest.java 11 Jan 2002 21:42:10 -0000 1.23 +++ FileTest.java 28 Jan 2002 06:42:56 -0000 1.23.2.1 @@ -2,6 +2,8 @@ import org.apache.axis.AxisEngine; import org.apache.axis.SimpleTargetedChain; +import org.apache.axis.configuration.XMLStringProvider; +import org.apache.axis.deployment.wsdd.WSDDConstants; import org.apache.axis.client.Call; import org.apache.axis.client.Service; import org.apache.axis.client.Transport; @@ -19,6 +21,16 @@ */ public class FileTest { + static final String wsdd = + "\n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + ""; + public static void main(String args[]) throws Exception { FileReader reader = new FileReader(); reader.setDaemon(true); @@ -34,14 +46,8 @@ } String symbol = args[0] ; - Service service = new Service(); + Service service = new Service(new XMLStringProvider(wsdd)); Call call = (Call) service.createCall(); - - AxisEngine engine = service.getEngine(); - - // Manually deploy file sender and file transport for this example - SimpleTargetedChain c = new SimpleTargetedChain(new FileSender()); - engine.deployTransport("FileTransport", c); call.setOperationName( new QName("urn:xmltoday-delayed-quotes", "getQuote") ); call.addParameter( "symbol", XMLType.XSD_STRING, ParameterMode.PARAM_MODE_IN ); 1.2.4.1 +1 -1 xml-axis/java/samples/transport/testit.cmd Index: testit.cmd =================================================================== RCS file: /home/cvs/xml-axis/java/samples/transport/testit.cmd,v retrieving revision 1.2 retrieving revision 1.2.4.1 diff -u -r1.2 -r1.2.4.1 --- testit.cmd 17 Oct 2001 21:12:58 -0000 1.2 +++ testit.cmd 28 Jan 2002 06:42:56 -0000 1.2.4.1 @@ -1,2 +1,2 @@ -java org.apache.axis.utils.Admin server deploy.xml +java org.apache.axis.utils.Admin server deploy.wsdd java samples.transport.FileTest XXX No revision No revision 1.1.2.1 +11 -0 xml-axis/java/samples/transport/Attic/client_deploy.wsdd 1.1.2.1 +14 -0 xml-axis/java/samples/transport/Attic/deploy.wsdd No revision No revision 1.12.2.1 +11 -4 xml-axis/java/samples/transport/tcp/AdminClient.java Index: AdminClient.java =================================================================== RCS file: /home/cvs/xml-axis/java/samples/transport/tcp/AdminClient.java,v retrieving revision 1.12 retrieving revision 1.12.2.1 diff -u -r1.12 -r1.12.2.1 --- AdminClient.java 3 Jan 2002 18:08:28 -0000 1.12 +++ AdminClient.java 28 Jan 2002 06:42:56 -0000 1.12.2.1 @@ -57,6 +57,9 @@ import org.apache.axis.client.Call; import org.apache.axis.SimpleTargetedChain; +import org.apache.axis.Constants; +import org.apache.axis.configuration.SimpleProvider; +import org.apache.axis.configuration.FileProvider; /** * An admin client object, which will work with the TCP transport. @@ -67,18 +70,22 @@ */ public class AdminClient extends org.apache.axis.client.AdminClient { - public static void main(String args[]) { Call.addTransportPackage("samples.transport"); Call.setTransportForProtocol("tcp", TCPTransport.class); + SimpleProvider provider = + new SimpleProvider( + new FileProvider(Constants.CLIENT_CONFIG_FILE)); + SimpleTargetedChain c = new SimpleTargetedChain(new TCPSender()); + provider.deployTransport("tcp", c); + + AdminClient.setDefaultConfiguration(provider); + try { org.apache.axis.client.AdminClient client = new org.apache.axis.client.AdminClient(System.err); - - SimpleTargetedChain c = new SimpleTargetedChain(new TCPSender()); - client.getCall().getService().getEngine().deployTransport("tcp", c); System.out.println(client.process(args)); } 1.16.2.1 +11 -5 xml-axis/java/samples/transport/tcp/GetQuote.java Index: GetQuote.java =================================================================== RCS file: /home/cvs/xml-axis/java/samples/transport/tcp/GetQuote.java,v retrieving revision 1.16 retrieving revision 1.16.2.1 diff -u -r1.16 -r1.16.2.1 --- GetQuote.java 11 Jan 2002 21:42:11 -0000 1.16 +++ GetQuote.java 28 Jan 2002 06:42:56 -0000 1.16.2.1 @@ -57,6 +57,9 @@ import org.apache.axis.AxisFault; import org.apache.axis.SimpleTargetedChain; +import org.apache.axis.Constants; +import org.apache.axis.configuration.SimpleProvider; +import org.apache.axis.configuration.FileProvider; import org.apache.axis.client.Call; import org.apache.axis.client.Service; import org.apache.axis.client.Transport; @@ -92,12 +95,15 @@ String namespace = "urn:xmltoday-delayed-quotes"; symbol = args[0] ; - - Service service = new Service(); - Call call = (Call)service.createCall(); - + + SimpleProvider provider = + new SimpleProvider( + new FileProvider(Constants.CLIENT_CONFIG_FILE)); SimpleTargetedChain c = new SimpleTargetedChain(new TCPSender()); - service.getEngine().deployTransport("tcp", c); + provider.deployTransport("tcp", c); + + Service service = new Service(provider); + Call call = (Call)service.createCall(); call.setTransport(new TCPTransport()); 1.14.2.2 +18 -10 xml-axis/java/samples/transport/tcp/TCPListener.java Index: TCPListener.java =================================================================== RCS file: /home/cvs/xml-axis/java/samples/transport/tcp/TCPListener.java,v retrieving revision 1.14.2.1 retrieving revision 1.14.2.2 diff -u -r1.14.2.1 -r1.14.2.2 --- TCPListener.java 25 Jan 2002 14:55:47 -0000 1.14.2.1 +++ TCPListener.java 28 Jan 2002 06:42:56 -0000 1.14.2.2 @@ -61,10 +61,16 @@ import org.apache.axis.MessageContext; import org.apache.axis.SimpleTargetedChain; import org.apache.axis.ConfigurationException; +import org.apache.axis.deployment.wsdd.WSDDConstants; +import org.apache.axis.providers.java.MsgProvider; +import org.apache.axis.handlers.soap.SOAPService; +import org.apache.axis.configuration.SimpleProvider; +import org.apache.axis.configuration.XMLStringProvider; import org.apache.axis.server.AxisServer; import org.apache.axis.utils.Options; import org.apache.log4j.Category; +import javax.xml.rpc.namespace.QName; import java.io.BufferedOutputStream; import java.io.ByteArrayInputStream; import java.io.IOException; @@ -99,6 +105,16 @@ // becomes true when we want to quit private boolean done = false; + static final String wsdd = + "\n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + ""; + public static void main (String args[]) { new TCPListener(args).run(); } @@ -152,17 +168,9 @@ public void run () { // get the input stream if ( engine == null ) { - engine = new AxisServer(); + XMLStringProvider provider = new XMLStringProvider(wsdd); + engine = new AxisServer(provider); engine.init(); - - SimpleTargetedChain c = new SimpleTargetedChain(new TCPSender()); - - try { - engine.deployTransport(transportName, c); - } catch (ConfigurationException e) { - // !!! We're toast. What to do about it? - System.exit(-1); - } } /* Place the Request message in the MessagContext object - notice */ No revision No revision 1.1.2.1 +11 -0 xml-axis/java/samples/transport/tcp/Attic/client_deploy.wsdd 1.1.2.1 +5 -0 xml-axis/java/samples/transport/tcp/Attic/deploy.wsdd No revision No revision 1.12.2.1 +3 -3 xml-axis/java/samples/userguide/example5/Client.java Index: Client.java =================================================================== RCS file: /home/cvs/xml-axis/java/samples/userguide/example5/Client.java,v retrieving revision 1.12 retrieving revision 1.12.2.1 diff -u -r1.12 -r1.12.2.1 --- Client.java 11 Jan 2002 21:42:11 -0000 1.12 +++ Client.java 28 Jan 2002 06:42:57 -0000 1.12.2.1 @@ -83,9 +83,9 @@ Call call = (Call) service.createCall(); QName qn = new QName( "urn:BeanService", "Order" ); - call.addSerializer(Order.class, qn, - new org.apache.axis.encoding.BeanSerializer(Order.class)); - + call.registerTypeMapping(Order.class, qn, + new org.apache.axis.encoding.ser.BeanSerializerFactory(Order.class, qn), + new org.apache.axis.encoding.ser.BeanDeserializerFactory(Order.class, qn)); String result; try { call.setTargetEndpointAddress( new java.net.URL(options.getURL()) ); No revision No revision 1.1.2.1 +6 -1 xml-axis/java/samples/userguide/example6/WidgetPriceServiceTestCase.java Index: WidgetPriceServiceTestCase.java =================================================================== RCS file: /home/cvs/xml-axis/java/samples/userguide/example6/WidgetPriceServiceTestCase.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 --- WidgetPriceServiceTestCase.java 10 Dec 2001 23:24:11 -0000 1.1 +++ WidgetPriceServiceTestCase.java 28 Jan 2002 06:42:57 -0000 1.1.2.1 @@ -66,7 +66,12 @@ } public void testWidgetPrice() { - samples.userguide.example6.WidgetPrice binding = new WidgetPriceService().getWidgetPrice(); + samples.userguide.example6.WidgetPrice binding; + try { + binding = new WidgetPriceService().getWidgetPrice(); + } catch (javax.xml.rpc.JAXRPCException jre) { + throw new junit.framework.AssertionFailedError("JAX-RPC Exception caught: " + jre ); + } ((WidgetPriceSoapBindingStub)binding).setMaintainSession(true); assertTrue("binding is null", binding != null); try { No revision No revision 1.1.2.1 +0 -0 xml-axis/java/src/javax/xml/messaging/Endpoint.java Index: Endpoint.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/javax/xml/messaging/Endpoint.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/javax/xml/messaging/URLEndpoint.java Index: URLEndpoint.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/javax/xml/messaging/URLEndpoint.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 No revision No revision 1.5.4.1 +27 -0 xml-axis/java/src/javax/xml/rpc/Service.java Index: Service.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/javax/xml/rpc/Service.java,v retrieving revision 1.5 retrieving revision 1.5.4.1 diff -u -r1.5 -r1.5.4.1 --- Service.java 30 Oct 2001 16:46:33 -0000 1.5 +++ Service.java 28 Jan 2002 06:42:57 -0000 1.5.4.1 @@ -94,6 +94,20 @@ throws JAXRPCException; /** + * The getPort method returns a dynamic proxy for a default service port. A service client uses this dynamic + * proxy to invoke operations on the target service port. The serviceDefInterface specifies the service definition + * interface that is supported by the created dynamic proxy. + * + * @param serviceDefInterface - Service definition interface supported by the dynamic proxy + * + * @return Dynamic proxy object that supports the service definition interface that extends the java.rmi.Remote + * + * @throws JAXRPCException - If the service class fails to create a dynamic proxy + */ + public java.rmi.Remote getPort(Class serviceDefInterface) + throws JAXRPCException; + + /** * Creates a Call instance. * * @param - The qualified name for the target service port @@ -115,6 +129,19 @@ * @throws JAXRPCException - If the Service class fails to create a Call object */ public Call createCall(QName portName, String operationName) + throws JAXRPCException; + + /** + * Creates a Call instance. + * + * @param portName - The qualified name for the target service port + * @param operationName - QName of the operation for which this Call object is created. + * + * @return Call object + * + * @throws JAXRPCException - If the Service class fails to create a Call object + */ + public Call createCall(QName portName, QName operationName) throws JAXRPCException; /** No revision No revision 1.7.2.1 +5 -5 xml-axis/java/src/javax/xml/rpc/encoding/TypeMappingRegistry.java Index: TypeMappingRegistry.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/javax/xml/rpc/encoding/TypeMappingRegistry.java,v retrieving revision 1.7 retrieving revision 1.7.2.1 diff -u -r1.7 -r1.7.2.1 --- TypeMappingRegistry.java 16 Jan 2002 16:41:36 -0000 1.7 +++ TypeMappingRegistry.java 28 Jan 2002 06:42:57 -0000 1.7.2.1 @@ -69,10 +69,10 @@ /** * The method register adds a TypeMapping instance for a specific - * web service namespace. + * namespace * * @param mapping - TypeMapping for specific type namespaces - * @param namespaceURIs - Web service namespace + * @param namespaceURIs * * @throws JAXRPCException - If there is any error in the registration * of the TypeMapping for the specified namespace URI @@ -95,10 +95,10 @@ throws JAXRPCException; /** - * Gets the TypeMapping for the Web Service namespace. If not found, the default TypeMapping + * Gets the TypeMapping namespace. If not found, the default TypeMapping * is returned. * - * @param namespaceURI - The namespace URI of a Web Service + * @param namespaceURI - The namespace URI * @return The registered TypeMapping (which may be the default TypeMapping) or null. */ public TypeMapping getTypeMapping(String namespaceURI); @@ -106,7 +106,7 @@ /** * Removes the TypeMapping for the namespace. * - * @param namespaceURI - The namespace URI of a type + * @param namespaceURI - The namespace URI * @return The registered TypeMapping or null. */ public TypeMapping removeTypeMapping(String namespaceURI); No revision No revision 1.1.2.1 +0 -0 xml-axis/java/src/javax/xml/soap/AttachmentPart.java Index: AttachmentPart.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/javax/xml/soap/AttachmentPart.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/javax/xml/soap/Detail.java Index: Detail.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/javax/xml/soap/Detail.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/javax/xml/soap/DetailEntry.java Index: DetailEntry.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/javax/xml/soap/DetailEntry.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/javax/xml/soap/FactoryFinder.java Index: FactoryFinder.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/javax/xml/soap/FactoryFinder.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/javax/xml/soap/MessageFactory.java Index: MessageFactory.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/javax/xml/soap/MessageFactory.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/javax/xml/soap/MimeHeader.java Index: MimeHeader.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/javax/xml/soap/MimeHeader.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/javax/xml/soap/MimeHeaders.java Index: MimeHeaders.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/javax/xml/soap/MimeHeaders.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/javax/xml/soap/Name.java Index: Name.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/javax/xml/soap/Name.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/javax/xml/soap/Node.java Index: Node.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/javax/xml/soap/Node.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/javax/xml/soap/SOAPBody.java Index: SOAPBody.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/javax/xml/soap/SOAPBody.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/javax/xml/soap/SOAPBodyElement.java Index: SOAPBodyElement.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/javax/xml/soap/SOAPBodyElement.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/javax/xml/soap/SOAPConnection.java Index: SOAPConnection.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/javax/xml/soap/SOAPConnection.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/javax/xml/soap/SOAPConnectionFactory.java Index: SOAPConnectionFactory.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/javax/xml/soap/SOAPConnectionFactory.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/javax/xml/soap/SOAPConstants.java Index: SOAPConstants.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/javax/xml/soap/SOAPConstants.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/javax/xml/soap/SOAPElement.java Index: SOAPElement.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/javax/xml/soap/SOAPElement.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/javax/xml/soap/SOAPElementFactory.java Index: SOAPElementFactory.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/javax/xml/soap/SOAPElementFactory.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/javax/xml/soap/SOAPEnvelope.java Index: SOAPEnvelope.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/javax/xml/soap/SOAPEnvelope.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/javax/xml/soap/SOAPException.java Index: SOAPException.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/javax/xml/soap/SOAPException.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/javax/xml/soap/SOAPFault.java Index: SOAPFault.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/javax/xml/soap/SOAPFault.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/javax/xml/soap/SOAPFaultElement.java Index: SOAPFaultElement.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/javax/xml/soap/SOAPFaultElement.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/javax/xml/soap/SOAPHeader.java Index: SOAPHeader.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/javax/xml/soap/SOAPHeader.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/javax/xml/soap/SOAPHeaderElement.java Index: SOAPHeaderElement.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/javax/xml/soap/SOAPHeaderElement.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/javax/xml/soap/SOAPMessage.java Index: SOAPMessage.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/javax/xml/soap/SOAPMessage.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/javax/xml/soap/SOAPPart.java Index: SOAPPart.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/javax/xml/soap/SOAPPart.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/javax/xml/soap/Text.java Index: Text.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/javax/xml/soap/Text.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 No revision No revision 1.1.2.1 +0 -0 xml-axis/java/src/javax/xml/transform/Source.java Index: Source.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/javax/xml/transform/Source.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 No revision No revision 1.63.2.4 +28 -106 xml-axis/java/src/org/apache/axis/AxisEngine.java Index: AxisEngine.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/AxisEngine.java,v retrieving revision 1.63.2.3 retrieving revision 1.63.2.4 diff -u -r1.63.2.3 -r1.63.2.4 --- AxisEngine.java 25 Jan 2002 14:55:47 -0000 1.63.2.3 +++ AxisEngine.java 28 Jan 2002 06:42:58 -0000 1.63.2.4 @@ -59,9 +59,10 @@ import org.apache.axis.deployment.DeploymentException; import org.apache.axis.deployment.wsdd.*; import org.apache.axis.encoding.DeserializerFactory; -import org.apache.axis.encoding.SOAPTypeMappingRegistry; +import org.apache.axis.encoding.TypeMapping; import org.apache.axis.encoding.Serializer; import org.apache.axis.encoding.TypeMappingRegistry; +import org.apache.axis.encoding.TypeMappingRegistryImpl; import org.apache.axis.handlers.BasicHandler; import org.apache.axis.handlers.soap.SOAPService; import org.apache.axis.InternalException; @@ -119,10 +120,10 @@ * scope", have it store things in this Session. */ private Session session = new SimpleSession(); - + /** * What actor URIs hold for the entire engine? - */ + */ private ArrayList actorURIs = new ArrayList(); /** @@ -132,7 +133,7 @@ private static ThreadLocal currentMessageContext = new ThreadLocal(); /** - * Set the active message context. + * Set the active message context. * * @param mc - the new active message context. */ @@ -141,7 +142,7 @@ } /** - * Get the active message context. + * Get the active message context. * * @return the current active message context */ @@ -174,14 +175,15 @@ category.debug(JavaUtils.getMessage("enter00", "AxisEngine::init")); } - getTypeMappingRegistry().setParent(SOAPTypeMappingRegistry.getSingleton()); + // The SOAP/XSD stuff is in the default TypeMapping of the TypeMappingRegistry. + //getTypeMappingRegistry().setParent(SOAPTypeMappingRegistry.getSingleton()); try { config.configureEngine(this); } catch (Exception e) { throw new InternalException(e); } - + if (category.isDebugEnabled()) { category.debug(JavaUtils.getMessage("exit00", "AxisEngine::init")); } @@ -202,6 +204,10 @@ } } + public EngineConfiguration getConfig() { + return config; + } + public boolean hasSafePassword() { return _hasSafePassword; @@ -218,7 +224,7 @@ { this.shouldSaveConfig = shouldSaveConfig; } - + public Handler getHandler(String name) throws AxisFault { try { @@ -227,7 +233,7 @@ throw new AxisFault(e); } } - + public Handler getService(String name) throws AxisFault { try { @@ -236,7 +242,7 @@ throw new AxisFault(e); } } - + public Handler getTransport(String name) throws AxisFault { try { @@ -246,49 +252,40 @@ } } - public DeploymentRegistry getDeploymentRegistry() - { - return config.getDeploymentRegistry(); - } - public TypeMappingRegistry getTypeMappingRegistry() { TypeMappingRegistry tmr = null; try { - tmr = config.getTypeMappingRegistry(""); - if (tmr == null) { - tmr = new TypeMappingRegistry(); - config.getDeploymentRegistry().addTypeMappingRegistry("", tmr); - } + tmr = config.getTypeMappingRegistry(); } catch (ConfigurationException e) { category.error(e); } - + return tmr; } - + public Handler getGlobalRequest() throws ConfigurationException { return config.getGlobalRequest(); } - + public Handler getGlobalResponse() throws ConfigurationException { return config.getGlobalResponse(); } - + public ArrayList getActorURIs() { return actorURIs; } - + public void addActorURI(String uri) { actorURIs.add(uri); } - + public void removeActorURI(String uri) { actorURIs.remove(uri); @@ -300,7 +297,7 @@ * An AxisEngine may define another specific AxisEngine to be used * by newly created Clients. For instance, a server may * create an AxisClient and allow deployment to it. Then - * the server's services may access the AxisClient's deployed + * the server's services may access the AxisClient's deployed * handlers and transports. ********************************************************************* */ @@ -317,38 +314,10 @@ */ /** - * Register a new global type mapping - */ - public void registerTypeMapping(QName qName, - Class cls, - DeserializerFactory deserFactory, - Serializer serializer) - throws IntrospectionException - { - category.info(JavaUtils.getMessage("registerTypeMap00", - qName.toString(), cls.getName())); - if (deserFactory != null) - getTypeMappingRegistry().addDeserializerFactory(qName, - cls, - deserFactory); - if (serializer != null) - getTypeMappingRegistry().addSerializer(cls, qName, serializer); - } - - /** - * Unregister a global type mapping - */ - public void unregisterTypeMapping(QName qName, Class cls) - { - getTypeMappingRegistry().removeDeserializer(qName); - getTypeMappingRegistry().removeSerializer(cls); - } - - /** * List of options which should be converted from Strings to Booleans * automatically. Note that these options are common to all XML * web services. - */ + */ private static final String [] BOOLEAN_OPTIONS = new String [] { PROP_DOMULTIREFS, PROP_SEND_XSI, PROP_XML_DECL }; @@ -363,7 +332,7 @@ private void normaliseOptions() { // Convert boolean options to Booleans so we don't need to use // string comparisons. Default is "true". - + for (int i = 0; i < BOOLEAN_OPTIONS.length; i++) { Object val = getOption(BOOLEAN_OPTIONS[i]); if (val != null) { @@ -378,7 +347,7 @@ // If it was null or not "false"... setOption(BOOLEAN_OPTIONS[i], Boolean.TRUE); } - + // Deal with admin password's default value. if (getOption(PROP_PASSWORD) == null) { setOption(PROP_PASSWORD, DEFAULT_ADMIN_PASSWORD); @@ -404,53 +373,7 @@ public void deployHandler(String key, Handler handler) throws ConfigurationException { - config.getDeploymentRegistry().deployHandler(key, handler); - } - - /** - * Undeploy (remove) a Handler from our handler registry. - */ - public void undeployHandler(String key) - throws ConfigurationException - { - config.getDeploymentRegistry().undeployHandler(key); - } - - /** - * Deploy a Service into our service registry - */ - public void deployService(String key, SOAPService service) - throws ConfigurationException - { - service.setEngine(this); - config.getDeploymentRegistry().deployService(key, service); - } - - /** - * Undeploy (remove) a Service from the handler registry - */ - public void undeployService(String key) - throws ConfigurationException - { - config.getDeploymentRegistry().undeployService(key); - } - - /** - * Deploy a Transport - */ - public void deployTransport(String key, SimpleTargetedChain transport) - throws ConfigurationException - { - config.getDeploymentRegistry().deployTransport(key, transport); - } - - /** - * Undeploy (remove) a client Transport - */ - public void undeployTransport(String key) - throws ConfigurationException - { - config.getDeploymentRegistry().undeployTransport(key); +// config.getDeploymentRegistry().deployHandler(key, handler); } /** @@ -461,5 +384,4 @@ public Session getApplicationSession () { return session; } - }; 1.45.2.1 +75 -1 xml-axis/java/src/org/apache/axis/Constants.java Index: Constants.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/Constants.java,v retrieving revision 1.45 retrieving revision 1.45.2.1 diff -u -r1.45 -r1.45.2.1 --- Constants.java 3 Jan 2002 17:12:36 -0000 1.45 +++ Constants.java 28 Jan 2002 06:42:58 -0000 1.45.2.1 @@ -56,7 +56,7 @@ package org.apache.axis; import org.apache.axis.utils.QFault; - +import org.xml.sax.Attributes; import javax.xml.rpc.namespace.QName; public class Constants { @@ -138,6 +138,40 @@ return false; } + /** + * getValue + * This utility routine returns the value of the attribute represented by the qname + * namespaceURI:localPart. If the namespaceURI is one of the current known namespaces + * (like URI_CURRENT_SCHEMA_XSD), then all of the known qnames for this item are + * searched. + * @param attributes are the attributes to search + * @param namespaceURI is the current known namespace for the attribute name + * @param localPart is the local part of the attribute name + * @return the value of the attribute or null + */ + public static String getValue(Attributes attributes, String namespaceURI, String localPart) { + if (attributes == null || namespaceURI == null || localPart == null) + return null; + String[] search = null; + if (namespaceURI.equals(URI_CURRENT_SOAP_ENC)) + search = URIS_SOAP_ENC; + else if (namespaceURI.equals(URI_CURRENT_SOAP_ENV)) + search = URIS_SOAP_ENV; + else if (namespaceURI.equals(URI_CURRENT_SCHEMA_XSD)) + search = URIS_SCHEMA_XSD; + else if (namespaceURI.equals(URI_CURRENT_SCHEMA_XSI)) + search = URIS_SCHEMA_XSI; + else + search = new String[] {namespaceURI}; + // Now look for an attribute value + for (int i=0; i < search.length; i++) { + String value = attributes.getValue(search[i], localPart); + if (value != null) { + return value; + } + } + return null; + } // Misc SOAP Namespaces public static final String URI_NEXT_ACTOR = @@ -278,6 +312,8 @@ return false; } + // Axis Mechanism Type + public static final String AXIS_SAX = "Axis SAX Mechanism"; public static final String ELEM_ENVELOPE = "Envelope" ; public static final String ELEM_HEADER = "Header" ; @@ -327,6 +363,44 @@ new QName(URI_SOAP_ENV, ELEM_FAULT_ACTOR); public static final QName QNAME_FAULTDETAILS = new QName(URI_SOAP_ENV, ELEM_FAULT_DETAIL); + + + // Define qnames for the all of the XSD and SOAP-ENC encodings + public static final QName XSD_STRING = new QName(Constants.URI_CURRENT_SCHEMA_XSD, "string"); + public static final QName XSD_BOOLEAN = new QName(Constants.URI_CURRENT_SCHEMA_XSD, "boolean"); + public static final QName XSD_DOUBLE = new QName(Constants.URI_CURRENT_SCHEMA_XSD, "double"); + public static final QName XSD_FLOAT = new QName(Constants.URI_CURRENT_SCHEMA_XSD, "float"); + public static final QName XSD_INT = new QName(Constants.URI_CURRENT_SCHEMA_XSD, "int"); + public static final QName XSD_INTEGER = new QName(Constants.URI_CURRENT_SCHEMA_XSD, "integer"); + public static final QName XSD_LONG = new QName(Constants.URI_CURRENT_SCHEMA_XSD, "long"); + public static final QName XSD_SHORT = new QName(Constants.URI_CURRENT_SCHEMA_XSD, "short"); + public static final QName XSD_BYTE = new QName(Constants.URI_CURRENT_SCHEMA_XSD, "byte"); + public static final QName XSD_DECIMAL = new QName(Constants.URI_CURRENT_SCHEMA_XSD, "decimal"); + public static final QName XSD_BASE64 = new QName(Constants.URI_2001_SCHEMA_XSD, "base64Binary"); + public static final QName XSD_HEXBIN = new QName(Constants.URI_2001_SCHEMA_XSD, "hexBinary"); + public static final QName XSD_ANYTYPE = new QName(Constants.URI_2001_SCHEMA_XSD, "anyType"); + public static final QName XSD_QNAME = new QName(Constants.URI_2001_SCHEMA_XSD, "QName"); + public static final QName SOAP_BASE64 = new QName(Constants.URI_CURRENT_SOAP_ENC, "base64"); + + public static final QName SOAP_STRING = new QName(Constants.URI_CURRENT_SOAP_ENC, "string"); + public static final QName SOAP_BOOLEAN = new QName(Constants.URI_CURRENT_SOAP_ENC, "boolean"); + public static final QName SOAP_DOUBLE = new QName(Constants.URI_CURRENT_SOAP_ENC, "double"); + public static final QName SOAP_FLOAT = new QName(Constants.URI_CURRENT_SOAP_ENC, "float"); + public static final QName SOAP_INT = new QName(Constants.URI_CURRENT_SOAP_ENC, "int"); + public static final QName SOAP_LONG = new QName(Constants.URI_CURRENT_SOAP_ENC, "long"); + public static final QName SOAP_SHORT = new QName(Constants.URI_CURRENT_SOAP_ENC, "short"); + public static final QName SOAP_BYTE = new QName(Constants.URI_CURRENT_SOAP_ENC, "byte"); + public static final QName SOAP_INTEGER = new QName(Constants.URI_CURRENT_SOAP_ENC, "integer"); + public static final QName SOAP_DECIMAL = new QName(Constants.URI_CURRENT_SOAP_ENC, "decimal"); + public static final QName SOAP_ARRAY = new QName(Constants.URI_CURRENT_SOAP_ENC, "Array"); + + public static final QName SOAP_MAP = new QName("http://xml.apache.org/xml-soap", "Map"); + public static final QName SOAP_ELEMENT = new QName("http://xml.apache.org/xml-soap", "Element"); + public static final QName SOAP_VECTOR = new QName("http://xml.apache.org/xml-soap", "Vector"); + + public static QName XSD_DATE = new QName(Constants.URI_CURRENT_SCHEMA_XSD, "dateTime"); + public static QName XSD_DATE2= new QName(Constants.URI_1999_SCHEMA_XSD, "timeInstant"); + public static QName XSD_DATE3= new QName(Constants.URI_2000_SCHEMA_XSD, "timeInstant"); // Misc Strings ////////////////////////////////////////////////////////////////////////// 1.1.2.2 +4 -12 xml-axis/java/src/org/apache/axis/Attic/EngineConfiguration.java Index: EngineConfiguration.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/Attic/EngineConfiguration.java,v retrieving revision 1.1.2.1 retrieving revision 1.1.2.2 diff -u -r1.1.2.1 -r1.1.2.2 --- EngineConfiguration.java 25 Jan 2002 14:55:47 -0000 1.1.2.1 +++ EngineConfiguration.java 28 Jan 2002 06:42:58 -0000 1.1.2.2 @@ -57,6 +57,8 @@ import javax.xml.rpc.namespace.QName; import org.apache.axis.encoding.TypeMappingRegistry; +import org.apache.axis.encoding.TypeMapping; + import java.util.Hashtable; // temporary... @@ -77,13 +79,6 @@ * @author Glen Daniels (gdaniels@macromedia.com) */ public interface EngineConfiguration { - - /* - * @deprecated This is a temporary method for use only during the WSDD refactoring - * Remember to delete the DeploymentRegistry import when removing this method. - */ - public DeploymentRegistry getDeploymentRegistry(); - /** * Configure this AxisEngine using whatever data source we have. * @@ -125,12 +120,9 @@ public Handler getTransport(QName qname) throws ConfigurationException; /** - * retrieve an instance of the named mapping registry - * @param encodingStyle XXX - * @return XXX - * @throws ConfigurationException XXX + * Retrieve the TypeMappingRegistry for this engine */ - public TypeMappingRegistry getTypeMappingRegistry(String encodingStyle) + public TypeMappingRegistry getTypeMappingRegistry() throws ConfigurationException; /** 1.5.2.1 +5 -3 xml-axis/java/src/org/apache/axis/SOAPPart.java Index: SOAPPart.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/SOAPPart.java,v retrieving revision 1.5 retrieving revision 1.5.2.1 diff -u -r1.5 -r1.5.2.1 --- SOAPPart.java 10 Dec 2001 17:28:03 -0000 1.5 +++ SOAPPart.java 28 Jan 2002 06:42:58 -0000 1.5.2.1 @@ -56,7 +56,9 @@ package org.apache.axis ; import org.apache.axis.encoding.DeserializationContext; +import org.apache.axis.encoding.DeserializationContextImpl; import org.apache.axis.encoding.SerializationContext; +import org.apache.axis.encoding.SerializationContextImpl; import org.apache.axis.message.InputStreamBody; import org.apache.axis.message.SOAPEnvelope; import org.apache.log4j.Category; @@ -313,7 +315,7 @@ StringWriter writer = new StringWriter(); AxisFault env = (AxisFault)currentMessage; try { - env.output(new SerializationContext(writer, getMessage().getMessageContext())); + env.output(new SerializationContextImpl(writer, getMessage().getMessageContext())); } catch (Exception e) { e.printStackTrace(); return null; @@ -326,7 +328,7 @@ StringWriter writer = new StringWriter(); SOAPEnvelope env = (SOAPEnvelope)currentMessage; try { - env.output(new SerializationContext(writer, getMessage().getMessageContext())); + env.output(new SerializationContextImpl(writer, getMessage().getMessageContext())); } catch (Exception e) { e.printStackTrace(); return null; @@ -371,7 +373,7 @@ is = new InputSource(new StringReader(getAsString())); } DeserializationContext dser = - new DeserializationContext(is, getMessage().getMessageContext(), getMessage().getMessageType()); + new DeserializationContextImpl(is, getMessage().getMessageContext(), getMessage().getMessageType()); // This may throw a SAXException try { No revision No revision 1.49.4.1 +27 -1 xml-axis/java/src/org/apache/axis/client/AdminClient.java Index: AdminClient.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/client/AdminClient.java,v retrieving revision 1.49 retrieving revision 1.49.4.1 diff -u -r1.49 -r1.49.4.1 --- AdminClient.java 3 Dec 2001 23:53:12 -0000 1.49 +++ AdminClient.java 28 Jan 2002 06:42:58 -0000 1.49.4.1 @@ -56,6 +56,7 @@ package org.apache.axis.client ; import org.apache.axis.AxisFault; +import org.apache.axis.EngineConfiguration; import org.apache.axis.message.SOAPBodyElement; import org.apache.axis.transport.http.HTTPConstants; import org.apache.axis.utils.JavaUtils; @@ -89,6 +90,21 @@ static Category category = Category.getInstance(AdminClient.class.getName()); + private static ThreadLocal defaultConfiguration = new ThreadLocal(); + + /** + * If the user calls this with an EngineConfiguration object, all + * AdminClients on this thread will use that EngineConfiguration + * rather than the default one. This is primarily to enable the + * deployment of custom transports and handlers. + * + * @param config the EngineConfiguration which should be used + */ + public static void setDefaultConfiguration(EngineConfiguration config) + { + defaultConfiguration.set(config); + } + protected PrintWriter _log; protected Call call; @@ -98,7 +114,17 @@ public AdminClient() { try { - Service service = new Service(); + // Initialize our Service - allow the user to override the + // default configuration with a thread-local version (see + // setDefaultConfiguration() above) + EngineConfiguration config = + (EngineConfiguration)defaultConfiguration.get(); + Service service; + if (config != null) { + service = new Service(config); + } else { + service = new Service(); + } call = (Call) service.createCall(); } catch (JAXRPCException e) { category.fatal(JavaUtils.getMessage("couldntCall00"), e); 1.62.2.1 +53 -17 xml-axis/java/src/org/apache/axis/client/Call.java Index: Call.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/client/Call.java,v retrieving revision 1.62 retrieving revision 1.62.2.1 diff -u -r1.62 -r1.62.2.1 --- Call.java 17 Jan 2002 20:19:52 -0000 1.62 +++ Call.java 28 Jan 2002 06:42:58 -0000 1.62.2.1 @@ -62,9 +62,14 @@ import org.apache.axis.SOAPPart; import org.apache.axis.configuration.FileProvider; import org.apache.axis.encoding.DeserializerFactory; +import org.apache.axis.encoding.SerializerFactory; +import org.apache.axis.encoding.ser.BaseSerializerFactory; +import org.apache.axis.encoding.ser.BaseDeserializerFactory; import org.apache.axis.encoding.SerializationContext; +import org.apache.axis.encoding.SerializationContextImpl; import org.apache.axis.encoding.Serializer; import org.apache.axis.encoding.TypeMappingRegistry; +import org.apache.axis.encoding.TypeMapping; import org.apache.axis.message.RPCElement; import org.apache.axis.message.RPCParam; import org.apache.axis.message.SOAPBodyElement; @@ -138,7 +143,7 @@ private Vector paramNames = null ; private Vector paramTypes = null ; private Vector paramModes = null ; - private String encodingStyle = Constants.URI_SOAP_ENC ; + private String encodingStyle = Constants.URI_CURRENT_SOAP_ENC ; private QName returnType = null ; private MessageContext msgContext = null ; @@ -449,6 +454,9 @@ list = sBody.getEncodingStyles(); if ( list != null && list.size() > 0 ) this.setEncodingStyle( (String) list.get(0) ); + String ns = sBody.getNamespaceURI(); + if (ns != null && !ns.equals("")) + setOperationName( new QName( ns, opName ) ); break ; } } @@ -1060,18 +1068,53 @@ } /** - * Map a type for serialization. + * Register type mapping information for serialization/deserialization * * Note: Not part of JAX-RPC specification. * - * @param _class the Java class of the data type. - * @param qName the xsi:type QName of the associated XML type. - * @param serializer a Serializer which will be used to write the XML. + * @param javaType is the Java class of the data type. + * @param xmlType the xsi:type QName of the associated XML type. + * @param sf/df are the factories (or the Class objects of the factory). + * @param force Indicates whether to add the information if already registered. */ - public void addSerializer(Class _class, QName qName, - Serializer serializer){ - TypeMappingRegistry typeMap = msgContext.getTypeMappingRegistry(); - typeMap.addSerializer(_class, qName, serializer); + public void registerTypeMapping(Class javaType, QName xmlType, + SerializerFactory sf, + DeserializerFactory df) { + registerTypeMapping(javaType, xmlType, sf, df, true); + } + public void registerTypeMapping(Class javaType, QName xmlType, + SerializerFactory sf, + DeserializerFactory df, + boolean force) { + // Get the TypeMappingRegistry + TypeMappingRegistry tmr = msgContext.getTypeMappingRegistry(); + + // If a TypeMapping is not available, add one. + TypeMapping tm = (TypeMapping) tmr.getTypeMapping(Constants.URI_CURRENT_SOAP_ENC); + try { + if (tm == null) { + tm = (TypeMapping) tmr.createTypeMapping(); + tmr.register(tm, new String[] {Constants.URI_CURRENT_SOAP_ENC}); + } + if (!force && tm.getClassForQName(xmlType) != null) + return; + + // Register the information + tm.register(javaType, xmlType, sf, df); + } catch (Exception e) {} + } + public void registerTypeMapping(Class javaType, QName xmlType, + Class sfClass, Class dfClass) { + registerTypeMapping(javaType, xmlType, sfClass, dfClass, true); + } + public void registerTypeMapping(Class javaType, QName xmlType, + Class sfClass, Class dfClass, boolean force){ + // Instantiate the factory using introspection. + SerializerFactory sf = BaseSerializerFactory.createFactory (sfClass, javaType, xmlType); + DeserializerFactory df = BaseDeserializerFactory.createFactory(dfClass, javaType, xmlType); + if (sf != null || df != null) { + registerTypeMapping(javaType, xmlType, sf, df, force); + } } /** @@ -1086,13 +1129,6 @@ * @throws IntrospectionException _class is not compatible with the * specified deserializer. */ - public void addDeserializerFactory(QName qName, Class _class, - DeserializerFactory deserFactory) - throws IntrospectionException - { - TypeMappingRegistry typeMap = msgContext.getTypeMappingRegistry(); - typeMap.addDeserializerFactory(qName, _class, deserFactory); - } /************************************************ * Invocation @@ -1367,7 +1403,7 @@ if (category.isDebugEnabled()) { StringWriter writer = new StringWriter(); try { - SerializationContext ctx = new SerializationContext(writer, + SerializationContext ctx = new SerializationContextImpl(writer, msgContext); reqEnv.output(ctx); writer.close(); 1.34.2.2 +33 -1 xml-axis/java/src/org/apache/axis/client/Service.java Index: Service.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/client/Service.java,v retrieving revision 1.34.2.1 retrieving revision 1.34.2.2 diff -u -r1.34.2.1 -r1.34.2.2 --- Service.java 25 Jan 2002 14:55:47 -0000 1.34.2.1 +++ Service.java 28 Jan 2002 06:42:58 -0000 1.34.2.2 @@ -211,7 +211,8 @@ // Start by reading in the WSDL using WSDL4J WSDLReader reader = WSDLFactory.newInstance() .newWSDLReader(); - reader.setFeature("verbose", false); + // No longer supported + //reader.setFeature("verbose", false); Definition def = reader.readWSDL( null, doc ); this.wsdlLocation = null ; @@ -247,6 +248,18 @@ } /** + * Not implemented yet + * + * @param proxyInterface ... + * @return java.rmi.Remote ... + * @throws JAXRPCException If there's an error + */ + public java.rmi.Remote getPort(Class proxyInterface) + throws JAXRPCException { + return null; + } + + /** * Return an object which acts as a dynamic proxy for the passed * interface class. This is a more "dynamic" version in that it * doesn't actually require WSDL, simply an endpoint address. @@ -345,6 +358,25 @@ org.apache.axis.client.Call call=new org.apache.axis.client.Call(this); call.setOperation( portName, operationName ); + return( call ); + } + + /** + * Creates a new Call object - will prefill as much info from the WSDL + * as it can. Right now it's target URL, SOAPAction, Parameter types, + * and return type of the Web Service. + * + * @param portName PortName in the WSDL doc to search for + * @param operationName Operation(method) that's going to be invoked + * @return Call Used for invoking the Web Service + * @throws JAXRPCException If there's an error + */ + public javax.xml.rpc.Call createCall(QName portName, + QName operationName) + throws JAXRPCException { + + org.apache.axis.client.Call call=new org.apache.axis.client.Call(this); + call.setOperation( portName, operationName.getLocalPart() ); return( call ); } 1.72.2.1 +0 -31 xml-axis/java/src/org/apache/axis/client/ServiceClient.java Index: ServiceClient.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/client/ServiceClient.java,v retrieving revision 1.72 retrieving revision 1.72.2.1 diff -u -r1.72 -r1.72.2.1 --- ServiceClient.java 10 Jan 2002 20:28:35 -0000 1.72 +++ ServiceClient.java 28 Jan 2002 06:42:58 -0000 1.72.2.1 @@ -380,37 +380,6 @@ call.clearHeaders(); } - /** - * Map a type for serialization. - * - * @param _class the Java class of the data type. - * @param qName the xsi:type QName of the associated XML type. - * @param serializer a Serializer which will be used to write the XML. - */ - public void addSerializer(Class _class, - QName qName, - Serializer serializer) { - call.addSerializer(_class, qName, serializer); - } - - /** - * Map a type for deserialization. - * - * @param qName the xsi:type QName of an XML Schema type. - * @param _class the class of the associated Java data type. - * @param deserializerFactory a factory which can create deserializer - * instances for this type. - * @throws IntrospectionException _class is not compatible with the - * specified deserializer. - */ - public void addDeserializerFactory(QName qName, - Class _class, - DeserializerFactory deserializerFactory) - throws IntrospectionException - { - call.addDeserializerFactory(qName, _class, deserializerFactory); - } - /************************************************ * Invocation */ 1.1.4.2 +9 -0 xml-axis/java/src/org/apache/axis/client/ServiceFactory.java Index: ServiceFactory.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/client/ServiceFactory.java,v retrieving revision 1.1.4.1 retrieving revision 1.1.4.2 diff -u -r1.1.4.1 -r1.1.4.2 --- ServiceFactory.java 25 Jan 2002 14:55:47 -0000 1.1.4.1 +++ ServiceFactory.java 28 Jan 2002 06:42:58 -0000 1.1.4.2 @@ -21,6 +21,12 @@ public class ServiceFactory { private static FileProvider defaultEngineConfig = new FileProvider(Constants.CLIENT_CONFIG_FILE); + private static ThreadLocal threadDefaultConfig = new ThreadLocal(); + + public static void setThreadDefaultConfig(EngineConfiguration config) + { + threadDefaultConfig.set(config); + } /** * Obtain an AxisClient reference, using JNDI if possible, otherwise @@ -41,6 +47,9 @@ EngineConfiguration configProvider = (EngineConfiguration)environment.get("engineConfig"); + if (configProvider == null) + configProvider = (EngineConfiguration)threadDefaultConfig.get(); + if (configProvider == null) configProvider = defaultEngineConfig; No revision No revision 1.14.2.4 +103 -38 xml-axis/java/src/org/apache/axis/configuration/FileProvider.java Index: FileProvider.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/configuration/FileProvider.java,v retrieving revision 1.14.2.3 retrieving revision 1.14.2.4 diff -u -r1.14.2.3 -r1.14.2.4 --- FileProvider.java 25 Jan 2002 14:55:47 -0000 1.14.2.3 +++ FileProvider.java 28 Jan 2002 06:42:59 -0000 1.14.2.4 @@ -53,23 +53,26 @@ * . */ - package org.apache.axis.configuration; +package org.apache.axis.configuration; import org.apache.axis.AxisEngine; -import org.apache.axis.deployment.BasicEngineConfiguration; import org.apache.axis.ConfigurationException; +import org.apache.axis.EngineConfiguration; +import org.apache.axis.Handler; +import org.apache.axis.deployment.wsdd.WSDDDeployment; import org.apache.axis.deployment.wsdd.WSDDDocument; -import org.apache.axis.deployment.DeploymentRegistry; +import org.apache.axis.deployment.wsdd.WSDDGlobalConfiguration; +import org.apache.axis.encoding.TypeMappingRegistry; import org.apache.axis.utils.Admin; import org.apache.axis.utils.XMLUtils; import org.w3c.dom.Document; -import java.io.File; +import javax.xml.rpc.namespace.QName; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.io.StringWriter; -import java.util.Properties; +import java.util.Hashtable; /** * A simple ConfigurationProvider that uses the Admin class to read + @@ -77,27 +80,25 @@ * * @author Glen Daniels (gdaniels@macromedia.com) */ -public class FileProvider extends BasicEngineConfiguration -{ +public class FileProvider implements EngineConfiguration { protected String sep = System.getProperty("file.separator"); + protected WSDDDeployment deployment = null; + String basepath = "."; String filename; - + InputStream myInputStream = null; - + // Should we search the classpath for the file if we don't find it in // the specified location? boolean searchClasspath = true; - private DeploymentRegistry deploymentRegistry; - /** * Constructor which accesses a file in the current directory of the * engine. */ - public FileProvider(String filename) - { + public FileProvider(String filename) { this.filename = filename; } @@ -105,54 +106,59 @@ * Constructor which accesses a file relative to a specific base * path. */ - public FileProvider(String basepath, String filename) - { + public FileProvider(String basepath, String filename) { this.basepath = basepath; this.filename = filename; } - + /** * Constructor which takes an input stream directly. * Note: The configuration will be read-only in this case! - */ - public FileProvider(InputStream is) - { + */ + public FileProvider(InputStream is) { myInputStream = is; } - + + public WSDDDeployment getDeployment() { + return deployment; + } + + public void setDeployment(WSDDDeployment deployment) { + this.deployment = deployment; + } + /** - * Determine whether or not we will look for a "server-config.wsdd" file + * Determine whether or not we will look for a "*-config.wsdd" file * on the classpath if we don't find it in the specified location. - * + * * @param searchClasspath true if we should search the classpath - */ - public void setSearchClasspath(boolean searchClasspath) - { + */ + public void setSearchClasspath(boolean searchClasspath) { this.searchClasspath = searchClasspath; } - public void configureEngine(AxisEngine engine) throws ConfigurationException - { + public void configureEngine(AxisEngine engine) throws ConfigurationException { try { if (myInputStream == null) { try { myInputStream = new FileInputStream(basepath + sep + filename); } catch (Exception e) { if (searchClasspath) { - myInputStream = engine. - getClass().getResourceAsStream(filename); + myInputStream = engine.getClass().getResourceAsStream(filename); } } } - + if (myInputStream == null) { throw new ConfigurationException("No engine configuration file - aborting!"); } - + WSDDDocument doc = new WSDDDocument(XMLUtils.newDocument(myInputStream)); - engine.getDeploymentRegistry().deploy(doc); + deployment = doc.getDeployment(); + + deployment.configureEngine(engine); engine.refreshGlobalOptions(); - + myInputStream = null; } catch (Exception e) { throw new ConfigurationException(e); @@ -163,14 +169,13 @@ * Save the engine configuration. In case there's a problem, we * write it to a string before saving it out to the actual file so * we don't screw up the file. - */ - public void writeEngineConfig(AxisEngine engine) throws ConfigurationException - { + */ + public void writeEngineConfig(AxisEngine engine) throws ConfigurationException { try { // If there's no filename then we must have created this with just // an InputStream - in which case the config stuff is read-only - if ( filename == null ) return ; - + if (filename == null) return; + Document doc = Admin.listConfig(engine); StringWriter writer = new StringWriter(); XMLUtils.DocumentToWriter(doc, writer); @@ -182,4 +187,64 @@ throw new ConfigurationException(e); } } + + /** + * retrieve an instance of the named handler + * @param qname XXX + * @return XXX + * @throws ConfigurationException XXX + */ + public Handler getHandler(QName qname) throws ConfigurationException { + return deployment.getHandler(qname); + } + + /** + * retrieve an instance of the named service + * @param qname XXX + * @return XXX + * @throws ConfigurationException XXX + */ + public Handler getService(QName qname) throws ConfigurationException { + return deployment.getService(qname); + } + + /** + * retrieve an instance of the named transport + * @param qname XXX + * @return XXX + * @throws ConfigurationException XXX + */ + public Handler getTransport(QName qname) throws ConfigurationException { + return deployment.getTransport(qname); + } + + public TypeMappingRegistry getTypeMappingRegistry() throws ConfigurationException { + return deployment.getTypeMappingRegistry(); + } + + /** + * Returns a global request handler. + */ + public Handler getGlobalRequest() throws ConfigurationException { + return deployment.getGlobalRequest(); + } + + /** + * Returns a global response handler. + */ + public Handler getGlobalResponse() throws ConfigurationException { + return deployment.getGlobalResponse(); + } + + /** + * Returns the global configuration options. + */ + public Hashtable getGlobalOptions() throws ConfigurationException { + WSDDGlobalConfiguration globalConfig = deployment.getGlobalConfiguration(); + if (globalConfig != null) + return globalConfig.getParametersTable(); + + return null; + } + } 1.1.4.4 +40 -2 xml-axis/java/src/org/apache/axis/configuration/NullProvider.java Index: NullProvider.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/configuration/NullProvider.java,v retrieving revision 1.1.4.3 retrieving revision 1.1.4.4 diff -u -r1.1.4.3 -r1.1.4.4 --- NullProvider.java 25 Jan 2002 14:55:47 -0000 1.1.4.3 +++ NullProvider.java 28 Jan 2002 06:42:59 -0000 1.1.4.4 @@ -56,15 +56,21 @@ package org.apache.axis.configuration; import org.apache.axis.AxisEngine; -import org.apache.axis.deployment.BasicEngineConfiguration; import org.apache.axis.ConfigurationException; +import org.apache.axis.EngineConfiguration; +import org.apache.axis.Handler; +import org.apache.axis.encoding.TypeMapping; +import org.apache.axis.encoding.TypeMappingRegistry; + +import javax.xml.rpc.namespace.QName; +import java.util.Hashtable; /** * A do-nothing ConfigurationProvider * * @author Glen Daniels (gdaniels@macromedia.com) */ -public class NullProvider extends BasicEngineConfiguration +public class NullProvider implements EngineConfiguration { public void configureEngine(AxisEngine engine) throws ConfigurationException { @@ -72,5 +78,37 @@ public void writeEngineConfig(AxisEngine engine) throws ConfigurationException { + } + + public Hashtable getGlobalOptions() throws ConfigurationException { + return null; + } + + public Handler getGlobalResponse() throws ConfigurationException { + return null; + } + + public Handler getGlobalRequest() throws ConfigurationException { + return null; + } + + public TypeMappingRegistry getTypeMappingRegistry() throws ConfigurationException { + return null; + } + + public TypeMapping getTypeMapping(String encodingStyle) throws ConfigurationException { + return null; + } + + public Handler getTransport(QName qname) throws ConfigurationException { + return null; + } + + public Handler getService(QName qname) throws ConfigurationException { + return null; + } + + public Handler getHandler(QName qname) throws ConfigurationException { + return null; } } 1.4.4.4 +9 -16 xml-axis/java/src/org/apache/axis/configuration/XMLStringProvider.java Index: XMLStringProvider.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/configuration/XMLStringProvider.java,v retrieving revision 1.4.4.3 retrieving revision 1.4.4.4 diff -u -r1.4.4.3 -r1.4.4.4 --- XMLStringProvider.java 25 Jan 2002 14:55:47 -0000 1.4.4.3 +++ XMLStringProvider.java 28 Jan 2002 06:42:59 -0000 1.4.4.4 @@ -56,7 +56,6 @@ package org.apache.axis.configuration; import org.apache.axis.AxisEngine; -import org.apache.axis.deployment.BasicEngineConfiguration; import org.apache.axis.ConfigurationException; import org.apache.axis.deployment.DeploymentRegistry; import org.apache.axis.utils.Admin; @@ -65,6 +64,7 @@ import org.xml.sax.InputSource; import java.io.StringReader; +import java.io.ByteArrayInputStream; /** * A simple ConfigurationProvider that uses the Admin class to @@ -74,7 +74,7 @@ * * @author Glen Daniels (gdaniels@macromedia.com) */ -public class XMLStringProvider extends BasicEngineConfiguration +public class XMLStringProvider extends FileProvider { String xmlConfiguration; @@ -86,24 +86,17 @@ */ public XMLStringProvider(String xmlConfiguration) { + super(new ByteArrayInputStream(xmlConfiguration.getBytes())); this.xmlConfiguration = xmlConfiguration; } - public void configureEngine(AxisEngine engine) throws ConfigurationException - { - try { - InputSource is = new InputSource(new StringReader(xmlConfiguration)); - - Document doc = XMLUtils.newDocument(is); - - Admin.processEngineConfig(doc, engine); - } catch (Exception e) { - throw new ConfigurationException(e); - } + public void writeEngineConfig(AxisEngine engine) + throws ConfigurationException { + // NOOP } - public void writeEngineConfig(AxisEngine engine) throws ConfigurationException - { - // NOOP + public void configureEngine(AxisEngine engine) throws ConfigurationException { + myInputStream = new ByteArrayInputStream(xmlConfiguration.getBytes()); + super.configureEngine(engine); } } No revision No revision 1.1.2.1 +238 -0 xml-axis/java/src/org/apache/axis/configuration/Attic/SimpleProvider.java No revision No revision 1.13.4.1 +2 -4 xml-axis/java/src/org/apache/axis/deployment/DeployableItem.java Index: DeployableItem.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/DeployableItem.java,v retrieving revision 1.13 retrieving revision 1.13.4.1 diff -u -r1.13 -r1.13.4.1 --- DeployableItem.java 14 Nov 2001 17:26:18 -0000 1.13 +++ DeployableItem.java 28 Jan 2002 06:42:59 -0000 1.13.4.1 @@ -55,6 +55,7 @@ package org.apache.axis.deployment; import org.apache.axis.Handler; +import org.apache.axis.EngineConfiguration; import javax.xml.rpc.namespace.QName; @@ -80,9 +81,6 @@ * @return a Handler which is assumedly the correct type * @throws Exception (!!! probably should be more specific) */ - public Handler getInstance(DeploymentRegistry registry) + public Handler getInstance(EngineConfiguration registry) throws Exception; - - public void deployToRegistry(DeploymentRegistry registry) - throws DeploymentException; } 1.19.2.4 +14 -8 xml-axis/java/src/org/apache/axis/deployment/DeploymentRegistry.java Index: DeploymentRegistry.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/DeploymentRegistry.java,v retrieving revision 1.19.2.3 retrieving revision 1.19.2.4 diff -u -r1.19.2.3 -r1.19.2.4 --- DeploymentRegistry.java 25 Jan 2002 14:55:48 -0000 1.19.2.3 +++ DeploymentRegistry.java 28 Jan 2002 06:42:59 -0000 1.19.2.4 @@ -59,6 +59,7 @@ import org.apache.axis.handlers.soap.SOAPService; import org.apache.axis.deployment.wsdd.WSDDGlobalConfiguration; import org.apache.axis.deployment.wsdd.WSDDDocument; +import org.apache.axis.encoding.TypeMapping; import org.apache.axis.encoding.TypeMappingRegistry; import org.apache.axis.encoding.SerializationContext; import org.w3c.dom.Document; @@ -85,9 +86,6 @@ public abstract class DeploymentRegistry implements Serializable { - public abstract DeploymentDocument getConfigDocument() - throws DeploymentException; - /** * retrieve an instance of the named handler * @param qname XXX @@ -143,12 +141,20 @@ throws DeploymentException; /** - * retrieve an instance of the named mapping registry + * retrieve an instance of the named type mapping registry + * @return TypeMappingRegistery + */ + public abstract TypeMappingRegistry getTypeMappingRegistry(); + + + + /** + * retrieve an instance of the named type mapping * @param encodingStyle XXX * @return XXX * @throws DeploymentException XXX */ - public abstract TypeMappingRegistry getTypeMappingRegistry( + public abstract TypeMapping getTypeMapping( String encodingStyle) throws DeploymentException; @@ -158,8 +164,8 @@ * @param tmr XXX * @throws DeploymentException XXX */ - public abstract void addTypeMappingRegistry(String encodingStyle, - TypeMappingRegistry tmr) + public abstract void addTypeMapping(String encodingStyle, + TypeMapping tm) throws DeploymentException; /** @@ -167,7 +173,7 @@ * @param encodingStyle XXX * @throws DeploymentException XXX */ - public abstract void removeTypeMappingRegistry(String encodingStyle) + public abstract void removeTypeMapping(String encodingStyle) throws DeploymentException; /** No revision No revision 1.16.2.1 +2 -1 xml-axis/java/src/org/apache/axis/deployment/v2dd/V2DDDeployableItem.java Index: V2DDDeployableItem.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/v2dd/V2DDDeployableItem.java,v retrieving revision 1.16 retrieving revision 1.16.2.1 diff -u -r1.16 -r1.16.2.1 --- V2DDDeployableItem.java 3 Jan 2002 18:08:28 -0000 1.16 +++ V2DDDeployableItem.java 28 Jan 2002 06:42:59 -0000 1.16.2.1 @@ -55,6 +55,7 @@ package org.apache.axis.deployment.v2dd; import org.apache.axis.Handler; +import org.apache.axis.EngineConfiguration; import org.apache.axis.deployment.DeployableItem; import org.apache.axis.deployment.DeploymentRegistry; import org.apache.axis.deployment.DeploymentException; @@ -91,7 +92,7 @@ return qname; } - public Handler getInstance(DeploymentRegistry registry) { + public Handler getInstance(EngineConfiguration registry) { // we would create an instance of the SOAP v2.x // compatible handler here using the service No revision No revision 1.2.2.1 +17 -2 xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDBeanMapping.java Index: WSDDBeanMapping.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDBeanMapping.java,v retrieving revision 1.2 retrieving revision 1.2.2.1 diff -u -r1.2 -r1.2.2.1 --- WSDDBeanMapping.java 20 Dec 2001 19:51:31 -0000 1.2 +++ WSDDBeanMapping.java 28 Jan 2002 06:42:59 -0000 1.2.2.1 @@ -60,6 +60,7 @@ import org.apache.axis.utils.XMLUtils; import org.apache.axis.utils.JavaUtils; import org.apache.axis.encoding.SerializationContext; +import org.apache.axis.Constants; import org.xml.sax.helpers.AttributesImpl; import javax.xml.rpc.namespace.QName; @@ -93,14 +94,28 @@ { super(e, true); - serializer = "org.apache.axis.encoding.BeanSerializer"; - deserializer = "org.apache.axis.encoding.BeanSerializer$BeanDeserFactory"; + serializer = "org.apache.axis.encoding.ser.BeanSerializerFactory"; + deserializer = "org.apache.axis.encoding.ser.BeanDeserializerFactory"; + encodingStyle = Constants.URI_CURRENT_SOAP_ENC; } protected QName getElementName() { return WSDDConstants.BEANMAPPING_QNAME; } + public void writeToContext(SerializationContext context) throws IOException { + AttributesImpl attrs = new AttributesImpl(); + + String typeStr = context.qName2String(typeQName); + attrs.addAttribute("", "languageSpecificType", + "languageSpecificType", "CDATA", typeStr); + + String qnameStr = context.qName2String(qname); + attrs.addAttribute("", "qname", "qname", "CDATA", qnameStr); + + context.startElement(WSDDConstants.BEANMAPPING_QNAME, attrs); + context.endElement(); + } } 1.20.2.1 +4 -2 xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDChain.java Index: WSDDChain.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDChain.java,v retrieving revision 1.20 retrieving revision 1.20.2.1 diff -u -r1.20 -r1.20.2.1 --- WSDDChain.java 6 Dec 2001 16:55:43 -0000 1.20 +++ WSDDChain.java 28 Jan 2002 06:42:59 -0000 1.20.2.1 @@ -56,6 +56,8 @@ import org.apache.axis.Chain; import org.apache.axis.Handler; +import org.apache.axis.EngineConfiguration; +import org.apache.axis.ConfigurationException; import org.apache.axis.utils.JavaUtils; import org.apache.axis.encoding.SerializationContext; import org.apache.axis.deployment.DeploymentRegistry; @@ -160,8 +162,8 @@ * @return XXX * @throws Exception XXX */ - public Handler makeNewInstance(DeploymentRegistry registry) - throws Exception + public Handler makeNewInstance(EngineConfiguration registry) + throws ConfigurationException { Chain c = new org.apache.axis.SimpleChain(); 1.23.2.1 +23 -12 xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDDeployableItem.java Index: WSDDDeployableItem.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDDeployableItem.java,v retrieving revision 1.23 retrieving revision 1.23.2.1 diff -u -r1.23 -r1.23.2.1 --- WSDDDeployableItem.java 16 Dec 2001 18:07:43 -0000 1.23 +++ WSDDDeployableItem.java 28 Jan 2002 06:42:59 -0000 1.23.2.1 @@ -55,6 +55,8 @@ package org.apache.axis.deployment.wsdd; import org.apache.axis.Handler; +import org.apache.axis.EngineConfiguration; +import org.apache.axis.ConfigurationException; import org.apache.axis.encoding.SerializationContext; import org.apache.axis.deployment.DeployableItem; import org.apache.axis.deployment.DeploymentRegistry; @@ -127,8 +129,6 @@ qname = new QName("", name); } - //!!! default namespace? - String typeStr = e.getAttribute("type"); if (typeStr != null && !typeStr.equals("")) { type = XMLUtils.getQNameFromString(typeStr, e); @@ -276,7 +276,7 @@ */ public void removeParameter(String name) { - // !!! FILL IN + parameters.remove(name); } /** @@ -285,8 +285,8 @@ * @return XXX * @throws Exception XXX */ - public final Handler getInstance(DeploymentRegistry registry) - throws Exception + public final Handler getInstance(EngineConfiguration registry) + throws ConfigurationException { if (scope == SCOPE_SINGLETON) { synchronized (this) { @@ -307,15 +307,26 @@ * @return XXX * @throws Exception XXX */ - protected Handler makeNewInstance(DeploymentRegistry registry) - throws Exception + protected Handler makeNewInstance(EngineConfiguration registry) + throws ConfigurationException { - Class c = getJavaClass(); + Class c = null; Handler h = null; - + + try { + c = getJavaClass(); + } catch (ClassNotFoundException e) { + throw new ConfigurationException(e); + } + if (c != null) { - h = (Handler)createInstance(c); - + + try { + h = (Handler)createInstance(c); + } catch (Exception e) { + throw new ConfigurationException(e); + } + if (h != null) { if ( qname != null ) h.setName(qname.getLocalPart()); @@ -335,7 +346,7 @@ * @throws Exception XXX */ Object createInstance(Class _class) - throws Exception + throws InstantiationException, IllegalAccessException { return _class.newInstance(); } 1.16.4.1 +202 -134 xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDDeployment.java Index: WSDDDeployment.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDDeployment.java,v retrieving revision 1.16 retrieving revision 1.16.4.1 diff -u -r1.16 -r1.16.4.1 --- WSDDDeployment.java 3 Dec 2001 22:49:23 -0000 1.16 +++ WSDDDeployment.java 28 Jan 2002 06:42:59 -0000 1.16.4.1 @@ -57,14 +57,18 @@ import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; -import org.apache.axis.Constants; +import org.apache.axis.*; import org.apache.axis.deployment.DeploymentRegistry; import org.apache.axis.deployment.DeploymentException; +import org.apache.axis.encoding.ser.BaseSerializerFactory; +import org.apache.axis.encoding.ser.BaseDeserializerFactory; import org.apache.axis.encoding.*; import javax.xml.rpc.namespace.QName; -import java.util.Vector; +import java.util.HashMap; import java.util.Iterator; +import java.util.Hashtable; +import java.util.Vector; import java.io.IOException; @@ -72,45 +76,92 @@ * WSDD deployment element * * @author James Snell + * @author Glen Daniels (gdaniels@apache.org) */ public class WSDDDeployment extends WSDDElement - implements WSDDTypeMappingContainer + implements WSDDTypeMappingContainer, EngineConfiguration { - private Vector handlers = new Vector(); - private Vector services = new Vector(); - private Vector transports = new Vector(); + private HashMap handlers = new HashMap(); + private HashMap services = new HashMap(); + private HashMap transports = new HashMap(); private Vector typeMappings = new Vector(); - private WSDDGlobalConfiguration globalConfig = null; - - public void addHandler(WSDDHandler handler) + private WSDDGlobalConfiguration globalConfig = null; + + /** + * Put a WSDDHandler into this deployment, replacing any other + * WSDDHandler which might already be present with the same QName. + * + * @param handler a WSDDHandler to insert in this deployment + */ + public void deployHandler(WSDDHandler handler) { - handlers.add(handler); + handlers.put(handler.getQName(), handler); } - - public void addTransport(WSDDTransport transport) + + /** + * Put a WSDDTransport into this deployment, replacing any other + * WSDDTransport which might already be present with the same QName. + * + * @param transport a WSDDTransport to insert in this deployment + */ + public void deployTransport(WSDDTransport transport) + { + transports.put(transport.getQName(), transport); + } + + /** + * Put a WSDDHandler into this deployment, replacing any other + * WSDDHandler which might already be present with the same QName. + * + * @param handler a WSDDHandler to insert in this deployment + */ + public void deployService(WSDDService service) + { + services.put(service.getQName(), service); + } + + /** + * Remove a named handler + * @param qname the QName of the handler to remove + */ + public void undeployHandler(QName qname) + { + handlers.remove(qname); + } + + /** + * Remove a named service + * @param qname the QName of the service to remove + */ + public void undeployService(QName qname) { - transports.add(transport); + services.remove(qname); } - - public void addService(WSDDService service) + + /** + * Remove a named transport + * @param qname the QName of the transport to remove + */ + public void undeployTransport(QName qname) { - services.add(service); + transports.remove(qname); } - - public void addTypeMapping(WSDDTypeMapping typeMapping) + + public void deployTypeMapping(WSDDTypeMapping typeMapping) throws WSDDException { typeMappings.add(typeMapping); + deployMapping(typeMapping); } /** * Default constructor - */ + */ public WSDDDeployment() { } - + /** * Create an element in WSDD that wraps an extant DOM element * @param e (Element) XXX @@ -120,43 +171,43 @@ throws WSDDException { super(e); - + Element [] elements = getChildElements(e, "handler"); int i; for (i = 0; i < elements.length; i++) { WSDDHandler handler = new WSDDHandler(elements[i]); - addHandler(handler); + deployHandler(handler); } elements = getChildElements(e, "chain"); for (i = 0; i < elements.length; i++) { WSDDChain chain = new WSDDChain(elements[i]); - addHandler(chain); + deployHandler(chain); } - + elements = getChildElements(e, "transport"); for (i = 0; i < elements.length; i++) { WSDDTransport transport = new WSDDTransport(elements[i]); - addTransport(transport); + deployTransport(transport); } - + elements = getChildElements(e, "service"); for (i = 0; i < elements.length; i++) { WSDDService service = new WSDDService(elements[i]); - addService(service); + deployService(service); } - + elements = getChildElements(e, "typeMapping"); for (i = 0; i < elements.length; i++) { WSDDTypeMapping mapping = new WSDDTypeMapping(elements[i]); - addTypeMapping(mapping); + deployTypeMapping(mapping); } elements = getChildElements(e, "beanMapping"); for (i = 0; i < elements.length; i++) { WSDDBeanMapping mapping = new WSDDBeanMapping(elements[i]); - addTypeMapping(mapping); + deployTypeMapping(mapping); } Element el = getChildElement(e, "globalConfiguration"); @@ -169,74 +220,91 @@ return WSDDConstants.DEPLOY_QNAME; } - public void deployToRegistry(DeploymentRegistry registry) + public void deployToRegistry(WSDDDeployment target) throws DeploymentException { + WSDDGlobalConfiguration global = getGlobalConfiguration(); if (global != null) { - registry.setGlobalConfiguration(global); + target.setGlobalConfiguration(global); } - WSDDHandler[] handlers = getHandlers(); - WSDDTransport[] transports = getTransports(); - WSDDService[] services = getServices(); - WSDDTypeMapping[] mappings = getTypeMappings(); - - for (int n = 0; n < handlers.length; n++) { - handlers[n].deployToRegistry(registry); + Iterator i = handlers.values().iterator(); + while (i.hasNext()) { + WSDDHandler handler = (WSDDHandler) i.next(); + target.deployHandler(handler); } - for (int n = 0; n < transports.length; n++) { - transports[n].deployToRegistry(registry); + i = transports.values().iterator(); + while (i.hasNext()) { + WSDDTransport transport = (WSDDTransport) i.next(); + target.deployTransport(transport); } - for (int n = 0; n < services.length; n++) { - services[n].deployToRegistry(registry); + i = services.values().iterator(); + while (i.hasNext()) { + WSDDService service = (WSDDService) i.next(); + target.deployService(service); } - for (int n = 0; n < mappings.length; n++) { - WSDDTypeMapping mapping = mappings[n]; - deployMappingToRegistry(mapping, registry); + i = typeMappings.iterator(); + while (i.hasNext()) { + WSDDTypeMapping mapping = (WSDDTypeMapping) i.next(); + target.deployTypeMapping(mapping); } } - public static void deployMappingToRegistry(WSDDTypeMapping mapping, - DeploymentRegistry registry) - throws DeploymentException + public void deployMapping(WSDDTypeMapping mapping) + throws WSDDException { - TypeMappingRegistry tmr = - registry.getTypeMappingRegistry(mapping.getEncodingStyle()); - - if (tmr == null) { - tmr = new TypeMappingRegistry(); - tmr.setParent(SOAPTypeMappingRegistry.getSingleton()); + try { + TypeMappingRegistry tmr = getTypeMappingRegistry(); - registry.addTypeMappingRegistry(mapping.getEncodingStyle(), - tmr); - } + TypeMapping tm = (TypeMapping) tmr.getTypeMapping(mapping.getEncodingStyle()); + TypeMapping df = (TypeMapping) tmr.getDefaultTypeMapping(); + if (tm == null || tm == df) { + tm = (TypeMapping) tmr.createTypeMapping(); + String namespace = mapping.getEncodingStyle(); + if (mapping.getEncodingStyle() == null) { + namespace = Constants.URI_CURRENT_SOAP_ENC; + } + tm.setSupportedEncodings(new String[] {namespace}); + tmr.register(tm, new String[] {namespace}); + } - Serializer ser = null; - DeserializerFactory deser = null; + SerializerFactory ser = null; + DeserializerFactory deser = null; - try { - ser = (Serializer) mapping.getSerializer().newInstance(); - deser = - (DeserializerFactory) mapping.getDeserializer() - .newInstance(); - - if (ser != null) { - tmr.addSerializer(mapping.getLanguageSpecificType(), - mapping.getQName(), ser); + // Try to construct a serializerFactory by introspecting for the + // following: + // public static create(Class javaType, QName xmlType) + // public (Class javaType, QName xmlType) + // public () + // + // The BaseSerializerFactory createFactory() method is a utility + // that does this for us. + //System.out.println("start creating sf and df"); + if (mapping.getSerializerName() != null && + !mapping.getSerializerName().equals("")) { + ser = BaseSerializerFactory.createFactory(mapping.getSerializer(), + mapping.getLanguageSpecificType(), + mapping.getQName()); } + //System.out.println("set ser factory"); - if (deser != null) { - tmr.addDeserializerFactory(mapping.getQName(), mapping - .getLanguageSpecificType(), deser); + if (mapping.getDeserializerName() != null && + !mapping.getDeserializerName().equals("")) { + deser = BaseDeserializerFactory.createFactory(mapping.getDeserializer(), + mapping.getLanguageSpecificType(), + mapping.getQName()); } + //System.out.println("set dser factory"); + tm.register( mapping.getLanguageSpecificType(), mapping.getQName(), ser, deser); + //System.out.println("registered"); } catch (Exception e) { - throw new DeploymentException(e); + throw new WSDDException(e); } } @@ -247,29 +315,29 @@ context.registerPrefixForURI("java", WSDDConstants.WSDD_JAVA); context.startElement(new QName(WSDDConstants.WSDD_NS, "deployment"), null); - + if (globalConfig != null) { globalConfig.writeToContext(context); } - - Iterator i = handlers.iterator(); + + Iterator i = handlers.values().iterator(); while (i.hasNext()) { WSDDHandler handler = (WSDDHandler)i.next(); handler.writeToContext(context); } - - i = services.iterator(); + + i = services.values().iterator(); while (i.hasNext()) { WSDDService service = (WSDDService)i.next(); service.writeToContext(context); } - - i = transports.iterator(); + + i = transports.values().iterator(); while (i.hasNext()) { WSDDTransport transport = (WSDDTransport)i.next(); transport.writeToContext(context); } - + i = typeMappings.iterator(); while (i.hasNext()) { WSDDTypeMapping mapping = (WSDDTypeMapping)i.next(); @@ -277,10 +345,10 @@ } context.endElement(); } - + /** * Get our global configuration - * + * * @return XXX */ public WSDDGlobalConfiguration getGlobalConfiguration() @@ -288,6 +356,10 @@ return globalConfig; } + public void setGlobalConfiguration(WSDDGlobalConfiguration globalConfig) { + this.globalConfig = globalConfig; + } + /** * * @return XXX @@ -301,13 +373,17 @@ /** * + * @param name XXX * @return XXX */ - public WSDDHandler[] getHandlers() + public Handler getHandler(QName name) throws ConfigurationException { - WSDDHandler[] h = new WSDDHandler[handlers.size()]; - handlers.toArray(h); - return h; + WSDDHandler h = (WSDDHandler)handlers.get(name); + if (h != null) { + return h.getInstance(this); + } + + return null; } /** @@ -315,15 +391,11 @@ * @param name XXX * @return XXX */ - public WSDDHandler getHandler(QName name) + public Handler getTransport(QName name) throws ConfigurationException { - - WSDDHandler[] h = getHandlers(); - - for (int n = 0; n < h.length; n++) { - if (h[n].getQName().equals(name)) { - return h[n]; - } + WSDDTransport t = (WSDDTransport)transports.get(name); + if (t != null) { + return t.getInstance(this); } return null; @@ -331,61 +403,57 @@ /** * + * @param name XXX * @return XXX */ - public WSDDTransport[] getTransports() + public Handler getService(QName name) throws ConfigurationException { - WSDDTransport[] t = new WSDDTransport[transports.size()]; - transports.toArray(t); - return t; + WSDDService s = (WSDDService)services.get(name); + if (s != null) { + return s.getInstance(this); + } + + return null; } - /** - * - * @param name XXX - * @return XXX - */ - public WSDDTransport getTransport(QName name) - { + public void configureEngine(AxisEngine engine) + throws ConfigurationException { - WSDDTransport[] t = getTransports(); + } - for (int n = 0; n < t.length; n++) { - if (t[n].getQName().equals(name)) { - return t[n]; - } - } + public void writeEngineConfig(AxisEngine engine) throws ConfigurationException { + } - return null; + TypeMappingRegistry tmr = new TypeMappingRegistryImpl(); + public TypeMapping getTypeMapping(String encodingStyle) throws ConfigurationException { + return (TypeMapping)tmr.getTypeMapping(encodingStyle); } - /** - * - * @return XXX - */ - public WSDDService[] getServices() - { - WSDDService[] s = new WSDDService[services.size()]; - services.toArray(s); - return s; + public TypeMappingRegistry getTypeMappingRegistry() throws ConfigurationException { + return tmr; } - /** - * - * @param name XXX - * @return XXX - */ - public WSDDService getService(QName name) - { + public Handler getGlobalRequest() throws ConfigurationException { + if (globalConfig != null) { + WSDDRequestFlow reqFlow = globalConfig.getRequestFlow(); + if (reqFlow != null) + return reqFlow.getInstance(this); + } - WSDDService[] s = getServices(); + return null; + } - for (int n = 0; n < s.length; n++) { - if (s[n].getQName().equals(name)) { - return s[n]; - } + public Handler getGlobalResponse() throws ConfigurationException { + if (globalConfig != null) { + WSDDResponseFlow respFlow = globalConfig.getResponseFlow(); + if (respFlow != null) + return respFlow.getInstance(this); } return null; + } + + public Hashtable getGlobalOptions() throws ConfigurationException { + return globalConfig.getParametersTable(); } } 1.14.4.2 +5 -39 xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDDocument.java Index: WSDDDocument.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDDocument.java,v retrieving revision 1.14.4.1 retrieving revision 1.14.4.2 diff -u -r1.14.4.1 -r1.14.4.2 --- WSDDDocument.java 25 Jan 2002 14:55:48 -0000 1.14.4.1 +++ WSDDDocument.java 28 Jan 2002 06:42:59 -0000 1.14.4.2 @@ -74,7 +74,6 @@ * represents a WSDD Document (this is the top level object in this object model) */ public class WSDDDocument - implements DeploymentDocument { private Document doc; @@ -130,7 +129,7 @@ public Document getDOMDocument() throws DeploymentException { StringWriter writer = new StringWriter(); - SerializationContext context = new SerializationContext(writer, null); + SerializationContext context = new SerializationContextImpl(writer, null); context.setPretty(true); try { deployment.writeToContext(context); @@ -162,48 +161,15 @@ deployment = null; } - /** - * - */ - public void deploy(DeploymentRegistry registry) - throws DeploymentException - { + public void deploy(WSDDDeployment registry) throws DeploymentException { if (deployment != null) { deployment.deployToRegistry(registry); - } else { + } + if (undeployment != null) { undeployment.undeployFromRegistry(registry); } } - /** - * Undeploy the contents of this document from the given registry. - */ - public void undeploy(DeploymentRegistry registry) - throws DeploymentException { - - if (deployment == null) - throw new DeploymentException("No deployment"); - - WSDDHandler[] handlers = deployment.getHandlers(); - WSDDTransport[] transports = deployment.getTransports(); - WSDDService[] services = deployment.getServices(); - WSDDTypeMapping[] mappings = deployment.getTypeMappings(); - QName qname = null; - - for (int n = 0; n < handlers.length; n++) { - qname = handlers[n].getQName(); - if (qname != null) - registry.undeployHandler(qname); - } - for (int n = 0; n < transports.length; n++) { - qname = transports[n].getQName(); - if (qname != null) - registry.undeployTransport(qname); - } - for (int n = 0; n < services.length; n++) { - qname = services[n].getQName(); - if (qname != null) - registry.undeployService(qname); - } + public void undeploy(DeploymentRegistry registry) throws DeploymentException { } } 1.19.4.1 +2 -1 xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDGlobalConfiguration.java Index: WSDDGlobalConfiguration.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDGlobalConfiguration.java,v retrieving revision 1.19 retrieving revision 1.19.4.1 diff -u -r1.19 -r1.19.4.1 --- WSDDGlobalConfiguration.java 14 Nov 2001 18:03:13 -0000 1.19 +++ WSDDGlobalConfiguration.java 28 Jan 2002 06:42:59 -0000 1.19.4.1 @@ -55,6 +55,7 @@ package org.apache.axis.deployment.wsdd; import org.apache.axis.Handler; +import org.apache.axis.EngineConfiguration; import org.apache.axis.utils.JavaUtils; import org.apache.axis.encoding.SerializationContext; import org.apache.axis.deployment.DeploymentRegistry; @@ -192,7 +193,7 @@ * @param registry XXX * @return XXX */ - public Handler makeNewInstance(DeploymentRegistry registry) + public Handler makeNewInstance(EngineConfiguration registry) { return null; } 1.15.2.1 +3 -2 xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDProvider.java Index: WSDDProvider.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDProvider.java,v retrieving revision 1.15 retrieving revision 1.15.2.1 diff -u -r1.15 -r1.15.2.1 --- WSDDProvider.java 12 Dec 2001 18:57:11 -0000 1.15 +++ WSDDProvider.java 28 Jan 2002 06:42:59 -0000 1.15.2.1 @@ -55,6 +55,7 @@ package org.apache.axis.deployment.wsdd; import org.apache.axis.Handler; +import org.apache.axis.EngineConfiguration; import org.apache.axis.utils.JavaUtils; import org.apache.axis.deployment.DeploymentRegistry; import org.apache.axis.deployment.wsdd.providers.WSDDBsfProvider; @@ -136,7 +137,7 @@ */ public static Handler getInstance(QName providerType, WSDDService service, - DeploymentRegistry registry) + EngineConfiguration registry) throws Exception { if (providerType == null) @@ -158,6 +159,6 @@ * @throws Exception XXX */ public abstract Handler newProviderInstance(WSDDService service, - DeploymentRegistry registry) + EngineConfiguration registry) throws Exception; } 1.30.2.1 +57 -39 xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDService.java Index: WSDDService.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDService.java,v retrieving revision 1.30 retrieving revision 1.30.2.1 diff -u -r1.30 -r1.30.2.1 --- WSDDService.java 3 Jan 2002 18:08:28 -0000 1.30 +++ WSDDService.java 28 Jan 2002 06:42:59 -0000 1.30.2.1 @@ -54,13 +54,13 @@ */ package org.apache.axis.deployment.wsdd; -import org.apache.axis.Handler; -import org.apache.axis.TargetedChain; -import org.apache.axis.FaultableHandler; import org.apache.axis.utils.XMLUtils; import org.apache.axis.utils.JavaUtils; import org.apache.axis.handlers.soap.SOAPService; +import org.apache.axis.encoding.ser.BaseSerializerFactory; +import org.apache.axis.encoding.ser.BaseDeserializerFactory; import org.apache.axis.encoding.*; +import org.apache.axis.*; import org.apache.axis.deployment.DeploymentRegistry; import org.apache.axis.deployment.DeploymentException; import org.w3c.dom.Document; @@ -115,13 +115,13 @@ Element [] typeMappings = getChildElements(e, "typeMapping"); for (int i = 0; i < typeMappings.length; i++) { WSDDTypeMapping typeMapping = new WSDDTypeMapping(typeMappings[i]); - addTypeMapping(typeMapping); + deployTypeMapping(typeMapping); } Element [] beanMappings = getChildElements(e, "beanMapping"); for (int i = 0; i < beanMappings.length; i++) { WSDDBeanMapping beanMapping = new WSDDBeanMapping(beanMappings[i]); - addTypeMapping(beanMapping); + deployTypeMapping(beanMapping); } String typeStr = e.getAttribute("provider"); @@ -198,8 +198,8 @@ * @return XXX * @throws Exception XXX */ - public Handler makeNewInstance(DeploymentRegistry registry) - throws Exception + public Handler makeNewInstance(EngineConfiguration registry) + throws ConfigurationException { if (cachedService != null) { return cachedService; @@ -215,9 +215,13 @@ Handler providerHandler = null; if (providerQName != null) { - providerHandler = WSDDProvider.getInstance(providerQName, - this, - registry); + try { + providerHandler = WSDDProvider.getInstance(providerQName, + this, + registry); + } catch (Exception e) { + throw new ConfigurationException(e); + } if (providerHandler == null) throw new WSDDException( JavaUtils.getMessage("couldntConstructProvider00")); @@ -237,12 +241,7 @@ service.setName(getQName().getLocalPart()); service.setOptions(getParametersTable()); - if (tmr == null) { - tmr = new TypeMappingRegistry(); - } - service.setTypeMappingRegistry(tmr); - tmr.setParent(registry.getTypeMappingRegistry("")); WSDDFaultFlow [] faultFlows = getFaultFlows(); if (faultFlows != null && faultFlows.length > 0) { @@ -259,38 +258,55 @@ return service; } - public void addTypeMapping(WSDDTypeMapping mapping) + public void deployTypeMapping(WSDDTypeMapping mapping) throws WSDDException { - if (tmr == null) - tmr = new TypeMappingRegistry(); + if (tmr == null) { + tmr = new TypeMappingRegistryImpl(); + } try { - Serializer ser = null; + TypeMapping tm = (TypeMapping) tmr.getTypeMapping(mapping.getEncodingStyle()); + TypeMapping df = (TypeMapping) tmr.getDefaultTypeMapping(); + if (tm == null || tm == df) { + tm = (TypeMapping) tmr.createTypeMapping(); + String namespace = mapping.getEncodingStyle(); + if (mapping.getEncodingStyle() == null) { + namespace = Constants.URI_CURRENT_SOAP_ENC; + } + tm.setSupportedEncodings(new String[] {namespace}); + tmr.register(tm, new String[] {namespace}); + } + + SerializerFactory ser = null; DeserializerFactory deser = null; - - ser = (Serializer) mapping.getSerializer().newInstance(); - deser = - (DeserializerFactory) mapping.getDeserializer() - .newInstance(); - - if (ser != null) { - tmr.addSerializer(mapping.getLanguageSpecificType(), - mapping.getQName(), ser); + + // Try to construct a serializerFactory by introspecting for the + // following: + // public static create(Class javaType, QName xmlType) + // public (Class javaType, QName xmlType) + // public () + // + // The BaseSerializerFactory createFactory() method is a utility + // that does this for us. + if (mapping.getSerializerName() != null && + !mapping.getSerializerName().equals("")) { + ser = BaseSerializerFactory.createFactory(mapping.getSerializer(), + mapping.getLanguageSpecificType(), + mapping.getQName()); } - - if (deser != null) { - tmr.addDeserializerFactory(mapping.getQName(), mapping - .getLanguageSpecificType(), deser); + + if (mapping.getDeserializerName() != null && + !mapping.getDeserializerName().equals("")) { + deser = BaseDeserializerFactory.createFactory(mapping.getDeserializer(), + mapping.getLanguageSpecificType(), + mapping.getQName()); } - } catch (IntrospectionException e) { - throw new WSDDException(e); - } catch (InstantiationException e) { - throw new WSDDException(e); - } catch (IllegalAccessException e) { - throw new WSDDException(e); + tm.register( mapping.getLanguageSpecificType(), mapping.getQName(), ser, deser); } catch (ClassNotFoundException e) { throw new WSDDException(e); + } catch (Exception e) { + throw new WSDDException(e); } } @@ -315,7 +331,9 @@ writeParamsToContext(context); if (tmr != null) { - tmr.dumpToSerializationContext(context); + // RJS_TEMP + // Need to provide a writeTypeMappingsToContext + //tmr.dumpToSerializationContext(context); } context.endElement(); 1.4.2.1 +13 -3 xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDTargetedChain.java Index: WSDDTargetedChain.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDTargetedChain.java,v retrieving revision 1.4 retrieving revision 1.4.2.1 diff -u -r1.4 -r1.4.2.1 --- WSDDTargetedChain.java 3 Jan 2002 18:08:28 -0000 1.4 +++ WSDDTargetedChain.java 28 Jan 2002 06:42:59 -0000 1.4.2.1 @@ -56,6 +56,8 @@ import org.apache.axis.Handler; import org.apache.axis.TargetedChain; +import org.apache.axis.EngineConfiguration; +import org.apache.axis.ConfigurationException; import org.apache.axis.encoding.SerializationContext; import org.apache.axis.utils.XMLUtils; import org.apache.axis.transport.http.HTTPSender; @@ -182,8 +184,8 @@ * @return XXX * @throws Exception XXX */ - public Handler makeNewInstance(DeploymentRegistry registry) - throws Exception + public Handler makeNewInstance(EngineConfiguration registry) + throws ConfigurationException { Handler reqHandler = null; @@ -194,7 +196,15 @@ Handler pivot = null; if (pivotQName != null) { if (WSDDConstants.WSDD_JAVA.equals(pivotQName.getNamespaceURI())) { - pivot = (Handler)Class.forName(pivotQName.getLocalPart()).newInstance(); + try { + pivot = (Handler)Class.forName(pivotQName.getLocalPart()).newInstance(); + } catch (InstantiationException e) { + throw new ConfigurationException(e); + } catch (IllegalAccessException e) { + throw new ConfigurationException(e); + } catch (ClassNotFoundException e) { + throw new ConfigurationException(e); + } } else { pivot = registry.getHandler(pivotQName); } 1.16.4.1 +17 -0 xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDTypeMapping.java Index: WSDDTypeMapping.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDTypeMapping.java,v retrieving revision 1.16 retrieving revision 1.16.4.1 diff -u -r1.16 -r1.16.4.1 --- WSDDTypeMapping.java 25 Nov 2001 23:49:33 -0000 1.16 +++ WSDDTypeMapping.java 28 Jan 2002 06:42:59 -0000 1.16.4.1 @@ -242,6 +242,14 @@ /** * + * @return serializer factory name + */ + public String getSerializerName() + { + return serializer; + } + /** + * * @param ser XXX */ public void setSerializer(Class ser) @@ -258,6 +266,15 @@ throws ClassNotFoundException { return Class.forName(deserializer); + } + + /** + * + * @return deserializer factory name + */ + public String getDeserializerName() + { + return deserializer; } /** 1.2.4.1 +1 -1 xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDTypeMappingContainer.java Index: WSDDTypeMappingContainer.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDTypeMappingContainer.java,v retrieving revision 1.2 retrieving revision 1.2.4.1 diff -u -r1.2 -r1.2.4.1 --- WSDDTypeMappingContainer.java 7 Nov 2001 21:04:20 -0000 1.2 +++ WSDDTypeMappingContainer.java 28 Jan 2002 06:42:59 -0000 1.2.4.1 @@ -62,6 +62,6 @@ * @author Glen Daniels (gdaniels@macromedia.com) */ public interface WSDDTypeMappingContainer { - public void addTypeMapping(WSDDTypeMapping mapping) + public void deployTypeMapping(WSDDTypeMapping mapping) throws WSDDException; } 1.1.4.1 +5 -3 xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDUndeployment.java Index: WSDDUndeployment.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDUndeployment.java,v retrieving revision 1.1 retrieving revision 1.1.4.1 diff -u -r1.1 -r1.1.4.1 --- WSDDUndeployment.java 3 Dec 2001 03:31:31 -0000 1.1 +++ WSDDUndeployment.java 28 Jan 2002 06:42:59 -0000 1.1.4.1 @@ -106,7 +106,7 @@ services.add(service); } - public void addTypeMapping(WSDDTypeMapping typeMapping) + public void deployTypeMapping(WSDDTypeMapping typeMapping) throws WSDDException { typeMappings.add(typeMapping); @@ -182,7 +182,7 @@ return WSDDConstants.UNDEPLOY_QNAME; } - public void undeployFromRegistry(DeploymentRegistry registry) + public void undeployFromRegistry(WSDDDeployment registry) throws DeploymentException { QName qname; @@ -215,7 +215,9 @@ AttributesImpl attrs = new org.xml.sax.helpers.AttributesImpl(); attrs.addAttribute("", "name", "name", "CDATA", context.qName2String(qname)); - context.writeElement(elementQName, attrs); + + context.startElement(elementQName, attrs); + context.endElement(); } public void writeToContext(SerializationContext context) No revision No revision 1.16.4.1 +2 -1 xml-axis/java/src/org/apache/axis/deployment/wsdd/providers/WSDDBsfProvider.java Index: WSDDBsfProvider.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/wsdd/providers/WSDDBsfProvider.java,v retrieving revision 1.16 retrieving revision 1.16.4.1 diff -u -r1.16 -r1.16.4.1 --- WSDDBsfProvider.java 9 Nov 2001 23:13:01 -0000 1.16 +++ WSDDBsfProvider.java 28 Jan 2002 06:43:00 -0000 1.16.4.1 @@ -55,6 +55,7 @@ package org.apache.axis.deployment.wsdd.providers; import org.apache.axis.Handler; +import org.apache.axis.EngineConfiguration; import org.apache.axis.encoding.SerializationContext; import org.apache.axis.deployment.DeploymentRegistry; import org.apache.axis.deployment.wsdd.WSDDConstants; @@ -80,7 +81,7 @@ extends WSDDProvider { public Handler newProviderInstance(WSDDService service, - DeploymentRegistry registry) + EngineConfiguration registry) throws Exception { Handler provider = new org.apache.axis.providers.BSFProvider(); 1.16.4.1 +2 -1 xml-axis/java/src/org/apache/axis/deployment/wsdd/providers/WSDDComProvider.java Index: WSDDComProvider.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/wsdd/providers/WSDDComProvider.java,v retrieving revision 1.16 retrieving revision 1.16.4.1 diff -u -r1.16 -r1.16.4.1 --- WSDDComProvider.java 9 Nov 2001 23:13:01 -0000 1.16 +++ WSDDComProvider.java 28 Jan 2002 06:43:00 -0000 1.16.4.1 @@ -55,6 +55,7 @@ package org.apache.axis.deployment.wsdd.providers; import org.apache.axis.Handler; +import org.apache.axis.EngineConfiguration; import org.apache.axis.deployment.DeploymentRegistry; import org.apache.axis.deployment.wsdd.WSDDProvider; import org.apache.axis.deployment.wsdd.WSDDService; @@ -70,7 +71,7 @@ extends WSDDProvider { public Handler newProviderInstance(WSDDService service, - DeploymentRegistry registry) + EngineConfiguration registry) throws Exception { Class _class = Class.forName("org.apache.axis.handlers.providers.ComProvider"); 1.3.4.1 +2 -1 xml-axis/java/src/org/apache/axis/deployment/wsdd/providers/WSDDHandlerProvider.java Index: WSDDHandlerProvider.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/wsdd/providers/WSDDHandlerProvider.java,v retrieving revision 1.3 retrieving revision 1.3.4.1 diff -u -r1.3 -r1.3.4.1 --- WSDDHandlerProvider.java 13 Nov 2001 14:56:05 -0000 1.3 +++ WSDDHandlerProvider.java 28 Jan 2002 06:43:00 -0000 1.3.4.1 @@ -55,6 +55,7 @@ package org.apache.axis.deployment.wsdd.providers; import org.apache.axis.Handler; +import org.apache.axis.EngineConfiguration; import org.apache.axis.utils.JavaUtils; import org.apache.axis.deployment.DeploymentException; import org.apache.axis.deployment.DeploymentRegistry; @@ -72,7 +73,7 @@ extends WSDDProvider { public Handler newProviderInstance(WSDDService service, - DeploymentRegistry registry) + EngineConfiguration registry) throws Exception { String providerClass = service.getParameter("handlerClass"); 1.1.4.1 +2 -1 xml-axis/java/src/org/apache/axis/deployment/wsdd/providers/WSDDJavaEJBProvider.java Index: WSDDJavaEJBProvider.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/wsdd/providers/WSDDJavaEJBProvider.java,v retrieving revision 1.1 retrieving revision 1.1.4.1 diff -u -r1.1 -r1.1.4.1 --- WSDDJavaEJBProvider.java 13 Nov 2001 21:08:32 -0000 1.1 +++ WSDDJavaEJBProvider.java 28 Jan 2002 06:43:00 -0000 1.1.4.1 @@ -55,6 +55,7 @@ package org.apache.axis.deployment.wsdd.providers; import org.apache.axis.Handler; +import org.apache.axis.EngineConfiguration; import org.apache.axis.deployment.DeploymentRegistry; import org.apache.axis.deployment.wsdd.WSDDProvider; import org.apache.axis.deployment.wsdd.WSDDService; @@ -72,7 +73,7 @@ * */ public Handler newProviderInstance(WSDDService service, - DeploymentRegistry registry) + EngineConfiguration registry) throws Exception { return new org.apache.axis.providers.java.EJBProvider(); 1.1.4.1 +2 -1 xml-axis/java/src/org/apache/axis/deployment/wsdd/providers/WSDDJavaMsgProvider.java Index: WSDDJavaMsgProvider.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/wsdd/providers/WSDDJavaMsgProvider.java,v retrieving revision 1.1 retrieving revision 1.1.4.1 diff -u -r1.1 -r1.1.4.1 --- WSDDJavaMsgProvider.java 7 Nov 2001 21:04:21 -0000 1.1 +++ WSDDJavaMsgProvider.java 28 Jan 2002 06:43:00 -0000 1.1.4.1 @@ -55,6 +55,7 @@ package org.apache.axis.deployment.wsdd.providers; import org.apache.axis.Handler; +import org.apache.axis.EngineConfiguration; import org.apache.axis.deployment.DeploymentRegistry; import org.apache.axis.deployment.wsdd.WSDDProvider; import org.apache.axis.deployment.wsdd.WSDDService; @@ -70,7 +71,7 @@ * */ public Handler newProviderInstance(WSDDService service, - DeploymentRegistry registry) + EngineConfiguration registry) throws Exception { return new org.apache.axis.providers.java.MsgProvider(); 1.1.4.1 +2 -1 xml-axis/java/src/org/apache/axis/deployment/wsdd/providers/WSDDJavaRPCProvider.java Index: WSDDJavaRPCProvider.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/wsdd/providers/WSDDJavaRPCProvider.java,v retrieving revision 1.1 retrieving revision 1.1.4.1 diff -u -r1.1 -r1.1.4.1 --- WSDDJavaRPCProvider.java 7 Nov 2001 21:04:21 -0000 1.1 +++ WSDDJavaRPCProvider.java 28 Jan 2002 06:43:00 -0000 1.1.4.1 @@ -55,6 +55,7 @@ package org.apache.axis.deployment.wsdd.providers; import org.apache.axis.Handler; +import org.apache.axis.EngineConfiguration; import org.apache.axis.deployment.DeploymentRegistry; import org.apache.axis.deployment.wsdd.WSDDProvider; import org.apache.axis.deployment.wsdd.WSDDService; @@ -70,7 +71,7 @@ * */ public Handler newProviderInstance(WSDDService service, - DeploymentRegistry registry) + EngineConfiguration registry) throws Exception { return new org.apache.axis.providers.java.RPCProvider(); No revision No revision 1.8.4.1 +2 -1 xml-axis/java/src/org/apache/axis/deployment/wsml/WSMLDeployableItem.java Index: WSMLDeployableItem.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/wsml/WSMLDeployableItem.java,v retrieving revision 1.8 retrieving revision 1.8.4.1 diff -u -r1.8 -r1.8.4.1 --- WSMLDeployableItem.java 14 Nov 2001 17:26:18 -0000 1.8 +++ WSMLDeployableItem.java 28 Jan 2002 06:43:00 -0000 1.8.4.1 @@ -55,6 +55,7 @@ package org.apache.axis.deployment.wsml; import org.apache.axis.Handler; +import org.apache.axis.EngineConfiguration; import org.apache.axis.deployment.DeployableItem; import org.apache.axis.deployment.DeploymentRegistry; import org.apache.axis.deployment.DeploymentException; @@ -67,7 +68,7 @@ return null; } - public Handler getInstance(org.apache.axis.deployment.DeploymentRegistry registry) { + public Handler getInstance(EngineConfiguration registry) { return null; } No revision No revision 1.43.2.1 +183 -599 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.43 retrieving revision 1.43.2.1 diff -u -r1.43 -r1.43.2.1 --- DeserializationContext.java 18 Dec 2001 21:28:21 -0000 1.43 +++ DeserializationContext.java 28 Jan 2002 06:43:00 -0000 1.43.2.1 @@ -1,10 +1,8 @@ -package org.apache.axis.encoding; - /* * The Apache Software License, Version 1.1 * * - * Copyright (c) 2001 The Apache Software Foundation. All rights + * Copyright (c) 2001 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without @@ -12,7 +10,7 @@ * are met: * * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. + * 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 @@ -20,7 +18,7 @@ * distribution. * * 3. The end-user documentation included with the redistribution, - * if any, must include the following acknowledgment: + * 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, @@ -28,7 +26,7 @@ * * 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 + * software without prior written permission. For written * permission, please contact apache@apache.org. * * 5. Products derived from this software may not be called "Apache", @@ -55,28 +53,27 @@ * . */ -import org.apache.axis.attachments.Attachments; -import org.apache.axis.Constants; -import org.apache.axis.MessageContext; + +package org.apache.axis.encoding; + +import java.io.IOException; +import java.io.Writer; + import org.apache.axis.Message; -import org.apache.axis.message.EnvelopeBuilder; -import org.apache.axis.message.EnvelopeHandler; -import org.apache.axis.message.HandlerFactory; +import org.apache.axis.MessageContext; + + import org.apache.axis.message.IDResolver; import org.apache.axis.message.MessageElement; import org.apache.axis.message.SAX2EventRecorder; -import org.apache.axis.message.SOAPEnvelope; import org.apache.axis.message.SOAPHandler; import org.apache.axis.utils.NSStack; -import org.apache.axis.utils.JavaUtils; -import org.apache.axis.utils.XMLUtils; -import org.apache.log4j.Category; +import org.apache.axis.message.SOAPEnvelope; + +import org.w3c.dom.Element; + import org.xml.sax.Attributes; -import org.xml.sax.InputSource; -import org.xml.sax.Locator; import org.xml.sax.SAXException; -import org.xml.sax.helpers.DefaultHandler; -import org.apache.axis.AxisFault; import javax.xml.parsers.SAXParser; import javax.xml.rpc.namespace.QName; @@ -85,605 +82,192 @@ import java.util.HashMap; import java.util.Stack; -/** - * @author Glen Daniels (gdaniels@macromedia.com) +/** + * This interface describes the AXIS DeserializationContext, note that + * an AXIS compliant DeserializationContext must extend the org.xml.sax.helpers.DefaultHandler. */ -public class DeserializationContext extends DefaultHandler -{ - static Category category = - Category.getInstance(DeserializationContext.class.getName()); - - static class LocalIDResolver implements IDResolver - { - HashMap idMap = null; - - /** - * Add object associated with id - */ - public void addReferencedObject(String id, Object referent) - { - if (idMap == null) - idMap = new HashMap(); - - idMap.put(id, referent); - } - - /** - * Get object regferenced by href - */ - public Object getReferencedObject(String href) - { - if ((idMap == null) || (href == null)) - return null; - return idMap.get(href); - } - } - - private NSStack namespaces = new NSStack(); - - private Locator locator; - - Stack handlerStack = new Stack(); - - SAX2EventRecorder recorder = new SAX2EventRecorder(); - public SOAPEnvelope envelope; - - /** A map of IDs -> IDResolvers +public interface DeserializationContext extends javax.xml.rpc.encoding.DeserializationContext { + + /** + * Create a parser and parse the inputSource */ - HashMap idMap; - LocalIDResolver localIDs; - - HashMap fixups; - - static final SOAPHandler nullHandler = new SOAPHandler(); - - protected MessageContext msgContext; - - protected HandlerFactory initialFactory; - - public boolean doneParsing = false; - protected InputSource inputSource = null; - - public DeserializationContext(MessageContext ctx, EnvelopeBuilder initialHandler) - { - msgContext = ctx; - - envelope = initialHandler.getEnvelope(); - envelope.setRecorder(recorder); - - pushElementHandler(new EnvelopeHandler(initialHandler)); - } - - MessageElement curElement; + public void parse() throws SAXException; - public MessageElement getCurElement() { - return curElement; - } - - public void setCurElement(MessageElement el) - { - curElement = el; - } - - public DeserializationContext(InputSource is, MessageContext ctx, - String messageType) - { - EnvelopeBuilder builder = new EnvelopeBuilder(messageType); - - msgContext = ctx; - - envelope = builder.getEnvelope(); - envelope.setRecorder(recorder); - - pushElementHandler(new EnvelopeHandler(builder)); + /** + * Get current MessageElement + **/ + public MessageElement getCurElement(); - inputSource = is; - } - - public DeserializationContext(InputSource is, MessageContext ctx, - String messageType, SOAPEnvelope env) - { - EnvelopeBuilder builder = new EnvelopeBuilder(env, messageType); - - msgContext = ctx; - - envelope = builder.getEnvelope(); - envelope.setRecorder(recorder); - - pushElementHandler(new EnvelopeHandler(builder)); + /** + * Set current MessageElement + **/ + public void setCurElement(MessageElement el); - inputSource = is; - } - - public void parse() throws SAXException - { - if (inputSource != null) { - SAXParser parser = XMLUtils.getSAXParser(); - try { - parser.parse(inputSource, this); - - // only release the parser for reuse if there wasn't an - // error. While parsers should be reusable, don't trust - // parsers that died to clean up appropriately. - XMLUtils.releaseSAXParser(parser); - } catch (IOException e) { - throw new SAXException(e); - } - inputSource = null; - } - } - - public MessageContext getMessageContext() - { - return msgContext; - } - - public SOAPEnvelope getEnvelope() - { - return envelope; - } - - public SAX2EventRecorder getRecorder() - { - return recorder; - } + /** + * Get MessageContext + */ + public MessageContext getMessageContext(); - public ArrayList getCurrentNSMappings() - { - return (ArrayList)namespaces.peek().clone(); - } + /** + * Get Envelope + */ + public SOAPEnvelope getEnvelope(); - /** Grab a namespace prefix + /** + * Get Event Recorder */ - public String getNamespaceURI(String prefix) - { - if (curElement != null) - return curElement.getNamespaceURI(prefix); + public SAX2EventRecorder getRecorder(); - return namespaces.getNamespaceURI(prefix); - } - - public QName getQNameFromString(String qNameStr) - { - if (qNameStr == null) - return null; - - // OK, this is a QName, so look up the prefix in our current mappings. - - int i = qNameStr.indexOf(':'); - if (i == -1) - return null; - - String nsURI = getNamespaceURI(qNameStr.substring(0, i)); - - //System.out.println("namespace = " + nsURI); - - if (nsURI == null) - return null; - - return new QName(nsURI, qNameStr.substring(i + 1)); - } + /** + * Set Event Recorder + */ + public void setRecorder(SAX2EventRecorder recorder); + + /** + * Get the Namespace Mappings + **/ + public ArrayList getCurrentNSMappings(); + /** + * Get the Namespace for a particular prefix + */ + public String getNamespaceURI(String prefix); + + /** + * Construct a QName from a string of the form : + * @param qNameStr is the prefixed name from the xml text + * @return QName + */ + public QName getQNameFromString(String qNameStr); + + /** + * Create a QName for the type of the element defined by localName and + * namespace with the specified attributes. + * @param namespace of the element + * @param localName is the local name of the element + * @param attrs are the attributes on the element + */ public QName getTypeFromAttributes(String namespace, String localName, - Attributes attrs) - { - QName typeQName = null; - - if (typeQName == null) { - QName myQName = new QName(namespace, localName); - if (myQName.equals(SOAPTypeMappingRegistry.SOAP_ARRAY)) { - typeQName = SOAPTypeMappingRegistry.SOAP_ARRAY; - } else if (myQName.equals(SOAPTypeMappingRegistry.SOAP_STRING)) { - typeQName = SOAPTypeMappingRegistry.XSD_STRING; - } else if (myQName.equals(SOAPTypeMappingRegistry.SOAP_BOOLEAN)) { - typeQName = SOAPTypeMappingRegistry.XSD_BOOLEAN; - } else if (myQName.equals(SOAPTypeMappingRegistry.SOAP_DOUBLE)) { - typeQName = SOAPTypeMappingRegistry.XSD_DOUBLE; - } else if (myQName.equals(SOAPTypeMappingRegistry.SOAP_FLOAT)) { - typeQName = SOAPTypeMappingRegistry.XSD_FLOAT; - } else if (myQName.equals(SOAPTypeMappingRegistry.SOAP_INT)) { - typeQName = SOAPTypeMappingRegistry.XSD_INT; - } else if (myQName.equals(SOAPTypeMappingRegistry.SOAP_LONG)) { - typeQName = SOAPTypeMappingRegistry.XSD_LONG; - } else if (myQName.equals(SOAPTypeMappingRegistry.SOAP_SHORT)) { - typeQName = SOAPTypeMappingRegistry.XSD_SHORT; - } else if (myQName.equals(SOAPTypeMappingRegistry.SOAP_BYTE)) { - typeQName = SOAPTypeMappingRegistry.XSD_BYTE; - } - } - - if (typeQName != null) - return typeQName; - - if (attrs == null) - return null; - - // Check for type - String type = null; - for (int i=0; i + * may be encountered before the element defining id=id is + * read. In these cases, the getObjectByRef method above will + * return null. The deserializer is placed in a table keyed + * by href (a fixup table). After the element id is processed, + * the deserializer is informed of the value so that it can + * update its target(s) with the value. + * @param href (#id syntax) + * @param dser is the deserializer of the element */ - public void startDocument() throws SAXException { - // Should never receive this in the midst of a parse. - if (recorder != null) - recorder.startDocument(); - } - - public void endDocument() throws SAXException { - if (category.isDebugEnabled()) { - category.debug(JavaUtils.getMessage("endDoc00")); - } - if (recorder != null) - recorder.endDocument(); - - doneParsing = true; - } - - /** Record the current set of prefix mappings in the nsMappings table. - * - * !!! We probably want to have this mapping be associated with the - * MessageElements, since they may potentially need access to them - * long after the end of the prefix mapping here. (example: - * when we need to record a long string of events scanning forward - * in the document to find an element with a particular ID.) - */ - public void startPrefixMapping(String prefix, String uri) - throws SAXException - { - if (recorder != null) - recorder.startPrefixMapping(prefix, uri); - - if (startOfMappingsPos == -1) - startOfMappingsPos = getCurrentRecordPos(); - - if (prefix != null) { - namespaces.add(uri, prefix); - } else { - namespaces.add(uri, ""); - } - - if (category.isDebugEnabled()) { - category.debug(JavaUtils.getMessage("startPrefix00", prefix, uri)); - } - - SOAPHandler handler = getTopHandler(); - if (handler != null) - handler.startPrefixMapping(prefix, uri); - } - - public void endPrefixMapping(String prefix) - throws SAXException - { - if (category.isDebugEnabled()) { - category.debug(JavaUtils.getMessage("endPrefix00", prefix)); - } - - if (recorder != null) - recorder.endPrefixMapping(prefix); - - SOAPHandler handler = getTopHandler(); - if (handler != null) - handler.endPrefixMapping(prefix); - } - - public void setDocumentLocator(Locator locator) - { - if (recorder != null) - recorder.setDocumentLocator(locator); - this.locator = locator; - } - - public void characters(char[] p1, int p2, int p3) throws SAXException { - if (recorder != null) - recorder.characters(p1, p2, p3); - if (getTopHandler() != null) - getTopHandler().characters(p1, p2, p3); - } - - public void ignorableWhitespace(char[] p1, int p2, int p3) throws SAXException { - if (recorder != null) - recorder.ignorableWhitespace(p1, p2, p3); - if (getTopHandler() != null) - getTopHandler().ignorableWhitespace(p1, p2, p3); - } - - public void processingInstruction(String p1, String p2) throws SAXException { - // must throw an error since SOAP 1.1 doesn't allow - // processing instructions anywhere in the message - throw new SAXException(JavaUtils.getMessage("noInstructions00")); - } - - public void skippedEntity(String p1) throws SAXException { - if (recorder != null) - recorder.skippedEntity(p1); - getTopHandler().skippedEntity(p1); - } - - /** This is a big workhorse. Manage the state of the parser, check for - * basic SOAP compliance (envelope, then optional header, then body, etc). - * - * This guy also handles monitoring the recording depth if we're recording - * (so we know when to stop), and might eventually do things to help with - * ID/HREF management as well. - * - */ - public void startElement(String namespace, String localName, - String qName, Attributes attributes) - throws SAXException - { - SOAPHandler nextHandler = null; - - if (category.isDebugEnabled()) { - category.debug(JavaUtils.getMessage("startElem00", - "['" + namespace + "' " + localName + "]")); - } - - String prefix = ""; - int idx = qName.indexOf(":"); - if (idx > 0) - prefix = qName.substring(0, idx); - - if (!handlerStack.isEmpty()) { - nextHandler = getTopHandler().onStartChild(namespace, - localName, - prefix, - attributes, - this); - } - - if (nextHandler == null) { - nextHandler = new SOAPHandler(); - } - - pushElementHandler(nextHandler); - - nextHandler.startElement(namespace, localName, qName, - attributes, this); - - if (recorder != null) { - recorder.startElement(namespace, localName, qName, - attributes); - if (!doneParsing) - curElement.setContentsIndex(recorder.getLength()); - } - - namespaces.push(); - - startOfMappingsPos = -1; - } - - public void endElement(String namespace, String localName, String qName) - throws SAXException - { - if (category.isDebugEnabled()) { - category.debug(JavaUtils.getMessage("endElem00", - "['" + namespace + "' " + localName + "]")); - } - - if (recorder != null) - recorder.endElement(namespace, localName, qName); - - try { - SOAPHandler handler = popElementHandler(); - handler.endElement(namespace, localName, this); - - if (!handlerStack.isEmpty()) { - getTopHandler().onEndChild(namespace, localName, this); - } else { - // We should be done! - if (category.isDebugEnabled()) { - category.debug(JavaUtils.getMessage("endDoc01")); - } - } - - } finally { - if (curElement != null) - curElement = curElement.getParent(); - } - } + public void registerFixup(String href, Deserializer dser); + + + /** + * Register the MessageElement with this id (where id is id= form without the #) + * This routine is called when the MessageElement with an id is read. + * If there is a Deserializer in our fixup list (described above), + * the 'fixup' deserializer is given to the MessageElement. When the + * MessageElement is completed, the 'fixup' deserializer is informed and + * it can set its targets. + * @param id (id name without the #) + * @param elem is the MessageElement + */ + public void registerElementByID(String id, MessageElement elem); + + /** + * Each id can have its own kind of resolver. This registers a + * resolver for the id. + */ + public void registerResolverForID(String id, IDResolver resolver); + + /** + * Get the current position in the record. + */ + public int getCurrentRecordPos(); + + /** + * Get the start of the mapping position + */ + public int getStartOfMappingsPos(); + + /** + * Push the MessageElement into the recorder + */ + public void pushNewElement(MessageElement elem); + + /** + * Handler management methods + */ + public SOAPHandler getTopHandler(); + public void pushElementHandler(SOAPHandler handler); + public void replaceElementHandler(SOAPHandler handler); + public SOAPHandler popElementHandler(); + + /** + * Return if done parsing document. + */ + public boolean isDoneParsing(); } + 1.27.2.1 +220 -359 xml-axis/java/src/org/apache/axis/encoding/Deserializer.java Index: Deserializer.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/Deserializer.java,v retrieving revision 1.27 retrieving revision 1.27.2.1 diff -u -r1.27 -r1.27.2.1 --- Deserializer.java 31 Dec 2001 20:35:07 -0000 1.27 +++ Deserializer.java 28 Jan 2002 06:43:00 -0000 1.27.2.1 @@ -2,7 +2,7 @@ * The Apache Software License, Version 1.1 * * - * Copyright (c) 2001 The Apache Software Foundation. All rights + * Copyright (c) 2001 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without @@ -10,7 +10,7 @@ * are met: * * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. + * 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 @@ -18,7 +18,7 @@ * distribution. * * 3. The end-user documentation included with the redistribution, - * if any, must include the following acknowledgment: + * 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, @@ -26,7 +26,7 @@ * * 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 + * software without prior written permission. For written * permission, please contact apache@apache.org. * * 5. Products derived from this software may not be called "Apache", @@ -53,391 +53,252 @@ * . */ + package org.apache.axis.encoding; -import org.apache.axis.Constants; +import java.io.IOException; +import java.io.Writer; + +import org.apache.axis.Message; +import org.apache.axis.MessageContext; + +import org.apache.axis.encoding.Target; -import org.apache.axis.message.EnvelopeHandler; +import org.apache.axis.message.IDResolver; import org.apache.axis.message.MessageElement; import org.apache.axis.message.SAX2EventRecorder; -import org.apache.axis.message.SAXOutputter; import org.apache.axis.message.SOAPHandler; -import org.apache.axis.utils.JavaUtils; -import org.apache.log4j.Category; +import org.apache.axis.utils.NSStack; +import org.apache.axis.message.SOAPEnvelope; + +import org.w3c.dom.Element; + import org.xml.sax.Attributes; import org.xml.sax.SAXException; +import javax.xml.parsers.SAXParser; import javax.xml.rpc.namespace.QName; -import java.io.StringWriter; -import java.lang.reflect.Field; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.util.Enumeration; +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Stack; import java.util.Vector; -/** The Deserializer base class. +/** + * This interface describes the AXIS Deserializer. + * A compliant implementiation must extend either + * the AXIS SoapHandler (org.apache.axis.message.SOAPHandler) + * or the AXIS DeserializerImpl (org.apache.axis.encoding.DeserializerImpl) * - * Still needs some work. - * - * @author Glen Daniels (gdaniels@allaire.com) - */ + * The DeserializerImpl provides a lot of the default behavior including the + * support for id/href. So you may want to try extending it as opposed to + * extending SoapHandler. + * + * An Axis compliant Deserializer must provide one or more + * of the following methods: + * + * public (Class javaType, QName xmlType) + * public () + * + * This will allow for construction of generic factories that introspect the class + * to determine how to construct a deserializer. + * The xmlType, javaType arguments are filled in with the values known by the factory. +g */ +public interface Deserializer extends javax.xml.rpc.encoding.Deserializer, Callback { + + /** + * Get the deserialized value. + * @return Object representing deserialized value or null + */ + public Object getValue(); + + /** + * Set the deserialized value. + * @param Object representing deserialized value + */ + public void setValue(Object value); + + /** + * If the deserializer has component values (like ArrayDeserializer) + * this method gets the specific component via the hint. + * The default implementation returns null. + * @return Object representing deserialized value or null + */ + public Object getValue(Object hint); -public class Deserializer extends SOAPHandler -{ - static Category category = - Category.getInstance(Deserializer.class.getName()); + /** + * If the deserializer has component values (like ArrayDeserializer) + * this method sets the specific component via the hint. + * The default implementation does nothing. + * @param Object representing deserialized value or null + */ + public void setValue(Object value, Object hint) throws SAXException; - protected Object value = null; + /** + * For deserializers of non-primitives, the value may not be + * known until later (due to multi-referencing). In such + * cases the deserializer registers Target object(s). When + * the value is known, the set(value) will be invoked for + * each Target registered with the Deserializer. The Target + * object abstracts the function of setting a target with a + * value. See the Target interface for more info. + * @param Target + */ + public void registerValueTarget(Target target); - // isEnded is set when the endElement is called - protected boolean isEnded = false; + /** + * Get the Value Targets of the Deserializer. + * @return Vector of Target objects or null + */ + public Vector getValueTargets(); - protected Vector targets = null; - - public Object getValue() - { - return value; - } - public void setValue(Object value) - { - this.value = value; - } - - ///////////////////////////////////////////////////////////// - // Reflection-based insertion of values into target objects - // once deserialization is complete. - // - public interface Target { - public void set(Object value) throws SAXException; - - } - - public static class FieldTarget implements Target { - private Object targetObject; - private Field targetField; - - public FieldTarget(Object targetObject, Field targetField) - { - this.targetObject = targetObject; - this.targetField = targetField; - } - - public FieldTarget(Object targetObject, String fieldName) - throws NoSuchFieldException - { - Class cls = targetObject.getClass(); - targetField = cls.getField(fieldName); - this.targetObject = targetObject; - } - - public void set(Object value) throws SAXException { - try { - targetField.set(targetObject, value); - } catch (IllegalAccessException accEx) { - accEx.printStackTrace(); - throw new SAXException(accEx); - } catch (IllegalArgumentException argEx) { - argEx.printStackTrace(); - throw new SAXException(argEx); - } - } - } - - public static class MethodTarget implements Target { - private Object targetObject; - private Method targetMethod; - private static final Class [] objArg = new Class [] { Object.class }; - - public MethodTarget(Object targetObject, String methodName) - throws NoSuchMethodException - { - this.targetObject = targetObject; - Class cls = targetObject.getClass(); - targetMethod = cls.getMethod(methodName, objArg); - } - - public void set(Object value) throws SAXException { - try { - targetMethod.invoke(targetObject, new Object [] { value }); - } catch (IllegalAccessException accEx) { - accEx.printStackTrace(); - throw new SAXException(accEx); - } catch (IllegalArgumentException argEx) { - argEx.printStackTrace(); - throw new SAXException(argEx); - } catch (InvocationTargetException targetEx) { - targetEx.printStackTrace(); - throw new SAXException(targetEx); - } - } - } - - class CallbackTarget implements Target { - public ValueReceiver target; - public Object hint; - CallbackTarget(ValueReceiver target, Object hint) - { - this.target = target; - this.hint = hint; - } - - public void set(Object value) throws SAXException { - target.valueReady(value, hint); - } - } - - public void registerCallback(ValueReceiver target, Object hint) - { - if (target == null) - return; - - registerValueTarget(new CallbackTarget(target, hint)); - } - + /** + * Add someone else's targets to our own (see DeserializationContext) + * + * The DeserializationContext only allows one Deserializer to + * wait for a unknown multi-ref'ed value. So to ensure + * that all of the targets are updated, this method is invoked + * to copy the Target objects to the waiting Deserializer. + * @param other is the Deserializer to copy targets from. + */ + public void copyValueTargets(Deserializer other); - public void registerValueTarget(Target target) - { - if (targets == null) - targets = new Vector(); - - targets.addElement(target); - } - - public void registerValueTarget(Object target, String fieldName) - throws NoSuchFieldException - { - registerValueTarget(new FieldTarget(target, fieldName)); - } - - /** Add someone else's targets to our own (see DeserializationContext) - * + /** + * Some deserializers (ArrayDeserializer) require + * all of the component values to be known before the + * value is complete. + * (For the ArrayDeserializer this is important because + * the elements are stored in an ArrayList, and all values + * must be known before the ArrayList is converted into the + * expected array. + * + * This routine is used to indicate when the components are ready. + * The default (true) is useful for most Deserializers. */ - public void copyValueTargets(Deserializer other) - { - if ((other == null) || (other.targets == null)) - return; - - if (targets == null) - targets = new Vector(); - - Enumeration e = other.targets.elements(); - while (e.hasMoreElements()) { - targets.addElement(e.nextElement()); - } - } - + public boolean componentsReady(); + /** - * Store the value into the target + * The valueComplete() method is invoked when the + * end tag of the element is read. This results + * in the setting of all registered Targets (see + * registerValueTarget). + * Note that the valueComplete() only processes + * the Targets if componentReady() returns true. + * So if you override componentReady(), then your + * specific Deserializer will need to call valueComplete() + * when your components are ready (See ArrayDeserializer) */ - public void valueComplete() throws SAXException - { - if (componentsReady()) { - if (targets != null) { - Enumeration e = targets.elements(); - while (e.hasMoreElements()) { - Target target = (Target)e.nextElement(); - target.set(value); - if (category.isDebugEnabled()) { - category.debug(JavaUtils.getMessage("setValueInTarget00", - "" + value, "" + target)); - } - } - } - } - } - - private int startIdx = 0; - private int endIdx = -1; - protected boolean isHref = false; - protected boolean isNil = false; // xsd:nil attribute is set to true - protected String id = null; // Set to the id of the element - - /** Subclasses override this + public void valueComplete() throws SAXException; + + + /** + * The following are the SAX specific methods. + * DeserializationImpl provides default behaviour, which + * in most cases is appropriate. + */ + + /** + * This method is invoked when an element start tag is encountered. + * DeserializerImpl provides default behavior, which involves the following: + * - directly handling the deserialization of a nill value + * - handling the registration of the id value. + * - handling the registration of a fixup if this element is an href. + * - calling onStartElement to do the actual deserialization if not nill or href cases. + * @param namespace is the namespace of the element + * @param localName is the name of the element + * @param qName is the prefixed qName of the element + * @param attributes are the attributes on the element...used to get the type + * @param context is the DeserializationContext + * + * Normally a specific Deserializer (FooDeserializer) should extend DeserializerImpl. + * Here is the flow that will occur in such cases: + * 1) DeserializerImpl.startElement(...) will be called and do the id/href/nill stuff. + * 2) If real deserialization needs to take place DeserializerImpl.onStartElement will be + * invoked, which will attempt to install the specific Deserializer (FooDeserializer) + * 3) The FooDeserializer.startElement(...) will be called to do the Foo specific stuff. + * This results in a call to FooDeserializer.onStartElement(...) if startElement was + * not overridden. + * 4) The onChildElement(...) method is called for each child element. Nothing occurs + * if not overridden. The FooDeserializer.onStartChild(...) method should return + * the deserializer for the child element. + * 5) When the end tag is reached, the endElement(..) method is invoked. The default + * behavior is to handle hrefs/ids, call onEndElement and then call the Deserializer + * valueComplete method. + * + * So the methods that you potentially want to override are: + * onStartElement, onStartChild, componentsReady, set(object, hint) + * + * You probably should not override startElement or endElement. + * If you need specific behaviour at the end of the element consider overriding + * onEndElement. + * + * See the pre-existing Deserializers for more information. + */ + public void startElement(String namespace, String localName, + String qName, Attributes attributes, + DeserializationContext context) + throws SAXException; + + /** + * This method is invoked after startElement when the element requires + * deserialization (i.e. the element is not an href and the value is not nil.) + * DeserializerImpl provides default behavior, which simply + * involves obtaining a correct Deserializer and plugging its handler. + * @param namespace is the namespace of the element + * @param localName is the name of the element + * @param qName is the prefixed qname of the element + * @param attributes are the attributes on the element...used to get the type + * @param context is the DeserializationContext */ public void onStartElement(String namespace, String localName, String qName, Attributes attributes, DeserializationContext context) - throws SAXException - { - // If I'm the base class, try replacing myself with an - // appropriate deserializer gleaned from type info. - if (this.getClass().equals(Deserializer.class)) { - QName type = context.getTypeFromAttributes(namespace, - localName, - attributes); - - if (category.isDebugEnabled()) { - category.debug(JavaUtils.getMessage("gotType00", "Deser", "" + type)); - } - - // We know we're deserializing, and we can't seem to figure - // out a type... so let's give them a string. - // ??? Is this the right thing to do? - if (type != null) { - Deserializer dser = - context.getTypeMappingRegistry().getDeserializer(type); - if (dser != null) { - dser.copyValueTargets(this); - context.replaceElementHandler(dser); - // And don't forget to give it the start event... - dser.startElement(namespace, localName, qName, - attributes, context); - } - } else { - startIdx = context.getCurrentRecordPos(); - } - } - } - + throws SAXException; + + /** + * onStartChild is called on each child element. + * The default behavior supplied by DeserializationImpl is to do nothing. + * A specific deserializer may perform other tasks. For example a + * BeanDeserializer will construct a deserializer for the indicated + * property and return it. + * @param namespace is the namespace of the child element + * @param localName is the local name of the child element + * @param prefix is the prefix used on the name of the child element + * @param attributes are the attributes of the child element + * @param context is the deserialization context. + * @return is a Deserializer to use to deserialize a child (must be + * a derived class of SOAPHandler) or null if no deserialization should + * be performed. + */ public SOAPHandler onStartChild(String namespace, String localName, String prefix, Attributes attributes, DeserializationContext context) - throws SAXException - { - return null; - } - - public void startElement(String namespace, String localName, - String qName, Attributes attributes, - DeserializationContext context) - throws SAXException - { - // If the xsi:nil attribute, set the value to null and return since - // there is nothing to deserialize. - String nil = null; - for (int i = 0; i < Constants.URIS_SCHEMA_XSI.length && nil == null; i++) - nil = attributes.getValue(Constants.URIS_SCHEMA_XSI[i], "nil"); - if (nil != null && nil.equals("true")) { - value = null; - isNil = true; - return; - } - - // If this element has an id, then associate the value with the id. - // (Prior to this association, the MessageElement of the element is - // associated with the id. Failure to replace the MessageElement at this - // point will cause an infinite loop during deserialization if the - // current element contains child elements that cause an href back to this id.) - // Also note that that endElement() method is responsible for the final - // assoication of this id with the completed value. - id = attributes.getValue("id"); - if (id != null) { - context.addObjectById(id, value); - if (category.isDebugEnabled()) { - category.debug(JavaUtils.getMessage("deserInitPutValueDebug00", "" + value, id)); - } - } - - String href = attributes.getValue("href"); - if (href != null) { - isHref = true; - - Object ref = context.getObjectByRef(href); - if (category.isDebugEnabled()) { - category.debug(JavaUtils.getMessage( - "gotForID00", - new String[] {"" + ref, href, "" + ref.getClass()})); - } - - if (ref == null) { - // Nothing yet... register for later interest. - context.registerFixup(href, this); - } - - if (ref instanceof MessageElement) { - context.replaceElementHandler(new EnvelopeHandler(this)); - - SAX2EventRecorder r = context.recorder; - context.recorder = null; - ((MessageElement)ref).publishToHandler(context); - context.recorder = r; - } else { - // If the ref is not a MessageElement, then it must be an - // element that has already been deserialized. Use it directly. - value = ref; - valueComplete(); - } - - // !!! INSERT DEALING WITH ATTACHMENTS STUFF HERE? - } else { - isHref = false; - onStartElement(namespace, localName, qName, attributes, - context); - } - } - - /** - * Subclasses override this to do custom functionality at the - * end of their enclosing element. This will NOT be called - * for HREFs... - * + throws SAXException; + + /** + * endElement is called when the end element tag is reached. + * It handles href/id information for multi-ref processing + * and invokes the valueComplete() method of the deserializer + * which sets the targets with the deserialized value. + * @param namespace is the namespace of the child element + * @param localName is the local name of the child element + * @param context is the deserialization context */ - public void onEndElement(String namespace, String localName, + public void endElement(String namespace, String localName, DeserializationContext context) - throws SAXException - { - // If we only have SAX events, but someone really wanted a - // value, try sending them the contents of this element - // as a String... - // ??? Is this the right thing to do here? - - if (this.getClass().equals(Deserializer.class) && - targets != null && - !targets.isEmpty()) { - endIdx = context.getCurrentRecordPos(); - - StringWriter writer = new StringWriter(); - SerializationContext serContext = - new SerializationContext(writer, - context.getMessageContext()); - serContext.setSendDecl(false); - SAXOutputter so = new SAXOutputter(serContext); - context.curElement.publishContents(so); - - value = writer.getBuffer().toString(); - } - } - - public final void endElement(String namespace, String localName, - DeserializationContext context) - throws SAXException - { + throws SAXException; - isEnded = true; - if (!isHref) { - onEndElement(namespace, localName, context); - } - - // Time to call valueComplete to copy the value to - // the targets. First a call is made to componentsReady - // to ensure that all components are ready. - - if (componentsReady()) - valueComplete(); - - // If this element has an id, then associate the value with the id. - // Subsequent hrefs to the id will obtain the value directly. - // This is necessary for proper multi-reference deserialization. - if (id != null) { - context.addObjectById(id, value); - if (category.isDebugEnabled()) { - category.debug(JavaUtils.getMessage("deserPutValueDebug00", "" + value, id)); - } - } - } + /** + * onEndElement is called by endElement. It is not called + * if the element has an href. + * @param namespace is the namespace of the child element + * @param localName is the local name of the child element + * @param context is the deserialization context + */ + public void onEndElement(String namespace, String localName, + DeserializationContext context) + throws SAXException; - /** - * Return whether components are ready. - * Use the default componentsReady if the - * Deserializer value is used directly. For arrays, - * componentsReady is overridden (since the - * ArraySerializer value is an ArrayList which will - * be converted into an actual array). - * If componentsReady is overridden, the - * actual Deserializer is responsible for calling valueComplete - * when the value is ready. - */ - protected boolean componentsReady() { - return true; - } } + + 1.6.2.1 +19 -22 xml-axis/java/src/org/apache/axis/encoding/DeserializerFactory.java Index: DeserializerFactory.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/DeserializerFactory.java,v retrieving revision 1.6 retrieving revision 1.6.2.1 diff -u -r1.6 -r1.6.2.1 --- DeserializerFactory.java 23 Dec 2001 12:33:32 -0000 1.6 +++ DeserializerFactory.java 28 Jan 2002 06:43:00 -0000 1.6.2.1 @@ -2,7 +2,7 @@ * The Apache Software License, Version 1.1 * * - * Copyright (c) 2001 The Apache Software Foundation. All rights + * Copyright (c) 2001 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without @@ -10,7 +10,7 @@ * are met: * * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. + * 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 @@ -18,7 +18,7 @@ * distribution. * * 3. The end-user documentation included with the redistribution, - * if any, must include the following acknowledgment: + * 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, @@ -26,7 +26,7 @@ * * 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 + * software without prior written permission. For written * permission, please contact apache@apache.org. * * 5. Products derived from this software may not be called "Apache", @@ -53,27 +53,24 @@ * . */ -package org.apache.axis.encoding; -import java.beans.IntrospectionException; +package org.apache.axis.encoding; /** - * DeserializerFactories produce preconfigured deserializers designed - * to convert an XML Element into the desired Java Class. + * This interface describes the AXIS DeserializerFactory. + * + * An Axis compliant Serializer Factory must provide one or more + * of the following methods: + * + * public static create(Class javaType, QName xmlType) + * public (Class javaType, QName xmlType) + * public () + * + * The deployment code will attempt to invoke these methods in the above order. + * The xmlType, javaType arguments are filled in with the values supplied during the + * deployment registration of the factory. */ -public interface DeserializerFactory extends java.io.Serializable { +public interface DeserializerFactory extends javax.xml.rpc.encoding.DeserializerFactory { +} - /** - * Specifify the class to be returned by the deserializer produced - * by this factory. - * @param cls the desired class - * @exception IntrospectionException unable to introspect the desired - * class or the class has the wrong type signature for its intended use. - */ - public void setJavaClass(Class cls) throws IntrospectionException; - /** - * Obtain the desired deserializer. - */ - public Deserializer getDeserializer(); -} 1.71.2.1 +177 -593 xml-axis/java/src/org/apache/axis/encoding/SerializationContext.java Index: SerializationContext.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/SerializationContext.java,v retrieving revision 1.71 retrieving revision 1.71.2.1 diff -u -r1.71 -r1.71.2.1 --- SerializationContext.java 11 Jan 2002 18:15:19 -0000 1.71 +++ SerializationContext.java 28 Jan 2002 06:43:01 -0000 1.71.2.1 @@ -53,193 +53,112 @@ * . */ + package org.apache.axis.encoding; -import org.apache.axis.AxisEngine; -import org.apache.axis.Constants; +import java.io.IOException; +import java.io.Writer; + +import javax.xml.rpc.namespace.QName; + import org.apache.axis.Message; import org.apache.axis.MessageContext; -import org.apache.axis.attachments.Attachments; -import org.apache.axis.client.Call; -import org.apache.axis.utils.JavaUtils; -import org.apache.axis.utils.Mapping; -import org.apache.axis.utils.NSStack; -import org.apache.axis.utils.XMLUtils; -import org.apache.log4j.Category; -import org.w3c.dom.Attr; + import org.w3c.dom.Element; -import org.w3c.dom.NamedNodeMap; -import org.w3c.dom.Node; -import org.w3c.dom.NodeList; -import org.w3c.dom.Text; + import org.xml.sax.Attributes; -import org.xml.sax.helpers.AttributesImpl; -import javax.xml.rpc.namespace.QName; -import java.io.IOException; -import java.io.Writer; -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; -import java.util.Stack; - -/** Manage a serialization, including keeping track of namespace mappings - * and element stacks. - * - * @author Glen Daniels (gdaniels@macromedia.com) - * @author Rich Scheuerle +/** + * This interface describes the AXIS SerializationContext. */ -public class SerializationContext -{ - static Category category = - Category.getInstance(SerializationContext.class.getName()); - - public NSStack nsStack = new NSStack(); - - boolean writingStartTag = false; - boolean onlyXML = true; - int indent=0; - boolean startOfDocument = true; - - Stack elementStack = new Stack(); - Writer writer; - - int lastPrefixIndex = 1; - - private MessageContext msgContext; - - /** - * Should the XML be "pretty" printed on serialization? If false, the - * XML will be sent out verbatim. If true, ignorable white space may be - * inserted or removed. - */ - private boolean pretty = false; - - public boolean getPretty() { - return pretty; - } - - public void setPretty(boolean pretty) { - this.pretty = pretty; - } - - /** - * Should I write out objects as multi-refs? - * - * !!! For now, this is an all-or-nothing flag. Either ALL objects will - * be written in-place as hrefs with the full serialization at the end - * of the body, or we'll write everything inline (potentially repeating - * serializations of identical objects). - */ - private boolean doMultiRefs = false; - - /** - * Should I send an XML declaration? - */ - private boolean sendXMLDecl = true; - - /** - * Should I send xsi:type attributes? - */ - private boolean sendXSIType = true; - - /** - * A place to hold objects we cache for multi-ref serialization, and - * remember the IDs we assigned them. - */ - private HashMap multiRefValues = null; - private int multiRefIndex = -1; - - /** - * These three variables are necessary to process multi-level object graphs for multi-ref - * serialization. - * While writing out nested multi-ref objects (via outputMultiRef), we - * will fill the secondLevelObjects vector with any new objects encountered. - * The outputMultiRefsFlag indicates whether we are currently within the - * outputMultiRef() method (so that serialization() knows to update the - * secondLevelObjects vector). - * The forceSer variable is the trigger to force actual serialization of the indicated object. - */ - private HashSet secondLevelObjects = null; - private Object forceSer = null; - private boolean outputMultiRefsFlag = false; - - public SerializationContext(Writer writer) - { - this.writer = writer; - } - - public SerializationContext(Writer writer, MessageContext msgContext) - { - this.writer = writer; - this.msgContext = msgContext; - - AxisEngine engine = null ; - if ( msgContext != null ) { - engine = msgContext.getAxisEngine(); - Boolean shouldSendDecl = (Boolean)engine.getOption( - AxisEngine.PROP_XML_DECL); - if (shouldSendDecl != null) - sendXMLDecl = shouldSendDecl.booleanValue(); - - Boolean shouldSendMultiRefs = - (Boolean)msgContext.getProperty(AxisEngine.PROP_DOMULTIREFS); - - if (shouldSendMultiRefs == null) - shouldSendMultiRefs = - (Boolean)engine.getOption(AxisEngine.PROP_DOMULTIREFS); - - if (shouldSendMultiRefs != null) - doMultiRefs = shouldSendMultiRefs.booleanValue(); - - // The SEND_TYPE_ATTR and PROP_SEND_XSI options indicate - // whether the elements should have xsi:type attributes. - // Only turn this off is the user tells us to - if ( !msgContext.isPropertyTrue(Call.SEND_TYPE_ATTR, true )) - sendXSIType = false ; - - Boolean opt = (Boolean)engine.getOption(AxisEngine.PROP_SEND_XSI); - if ((opt != null) && (opt.equals(Boolean.FALSE))) { - sendXSIType = false; - } - } - } - +public interface SerializationContext extends javax.xml.rpc.encoding.SerializationContext { + + + /** + * Serialize the indicated value as an element named qName. The attributes object are + * additional attributes that will be serialized with the qName. The value + * could be serialized directly or could be serialized as an href (with the + * actual serialize taking place later) + * @param qName is the QName of the element + * @param attributes are additional attributes + * @param value is the object to serialize + * @param javaType is the "real" type of the value. For primitives, the value is the + * associated java.lang class. So the javaType is needed to know that the value + * is really a wrapped primitive. + */ + public void serialize(QName qName, Attributes attributes, Object value, Class javaType) + throws IOException; + + /** + * Invoked to do the actual serialization of the qName (called by serialize above). + * additional attributes that will be serialized with the qName. + * @param qName is the QName of the element + * @param attributes are additional attributes + * @param value is the object to serialize + * @param javaType is the "real" type of the value. For primitives, the value is the + * associated java.lang class. So the javaType is needed to know that the value + * is really a wrapped primitive. + */ + public void serializeActual(QName qName, Attributes attributes, Object value, Class javaType) + throws IOException; + + /** + * Obtains the type attribute that should be serialized and returns the new list of Attributes + * @param attributes of the qname + * @param type is the qname of the type + * @return new list of Attributes + */ + public Attributes setTypeAttribute(Attributes attributes, QName type); + + /** + * Convenience method to get the Serializer for a specific + * java type + * @param javaType is Class for a type to serialize + * @return Serializer + */ + public Serializer getSerializerForJavaType(Class javaType) ; + + /** + * Get whether the serialization should be pretty printed. + * @return true/false + */ + public boolean getPretty(); + + /** + * Indicate whether the serialization should be pretty printed. + * @param pretty true/false + */ + public void setPretty(boolean pretty); + + /** + * Set whether we are doing multirefs. + * @param shouldDo true/false + */ + public void setDoMultiRefs (boolean shouldDo); + /** - * Set whether we are doing multirefs + * Set whether or not we should write XML declarations. + * @param sendDecl true/false */ - public void setDoMultiRefs (boolean shouldDo) - { - doMultiRefs = shouldDo; - } + public void setSendDecl(boolean sendDecl); /** - * Set whether or not we should write XML declarations + * Get whether or not to write xsi:type attributes. + * @return true/false */ - public void setSendDecl(boolean sendDecl) - { - sendXMLDecl = sendDecl; - } + public boolean shouldSendXSIType(); /** - * Set whether or not to write xsi:type attributes + * Get the TypeMapping we're using. + * @return TypeMapping or null */ - public boolean shouldSendXSIType() { - return sendXSIType; - } + public TypeMapping getTypeMapping(); /** - * Obtain a copy of the TypeMappingRegistry we're using + * Get the TypeMappingRegistry we're using. + * @return TypeMapping or null */ - public TypeMappingRegistry getTypeMappingRegistry() - { - if (msgContext == null) - return null; - - return msgContext.getTypeMappingRegistry(); - } + public TypeMappingRegistry getTypeMappingRegistry(); /** * Get a prefix for a namespace URI. This method will ALWAYS @@ -247,435 +166,100 @@ * serialization, we return the previous prefix. If it is not mapped, * we will add a new mapping and return a generated prefix of the form * "ns". + * @param uri is the namespace uri + * @param defaultPrefix optional parameter which is the default prefix + * @return prefix */ - public String getPrefixForURI(String uri) - { - return getPrefixForURI(uri, null); - } - + public String getPrefixForURI(String uri); + public String getPrefixForURI(String uri, String defaultPrefix); + /** - * Return the current message - */ - public Message getCurrentMessage() - { - if (msgContext == null) - return null; - return msgContext.getCurrentMessage(); - } + * Register prefix for the indicated uri + * @param prefix + * @param uri is the namespace uri + */ + public void registerPrefixForURI(String prefix, String uri); /** - * Get a prefix for the given namespace URI. If one has already been - * defined in this serialization, use that. Otherwise, map the passed - * default prefix to the URI, and return that. If a null default prefix - * is passed, use one of the form "ns" - */ - public String getPrefixForURI(String uri, String defaultPrefix) - { - if ((uri == null) || (uri.equals(""))) - return null; - - String prefix = nsStack.getPrefix(uri); - - if (prefix == null && uri.equals(Constants.URI_SOAP_ENC)) { - prefix = Constants.NSPREFIX_SOAP_ENC; - registerPrefixForURI(prefix, uri); - } - - if (prefix == null) { - if (defaultPrefix == null) { - prefix = "ns" + lastPrefixIndex++; - } else { - prefix = defaultPrefix; - } - registerPrefixForURI(prefix, uri); - } - - return prefix; - } - - public void registerPrefixForURI(String prefix, String uri) - { - if (category.isDebugEnabled()) { - category.debug(JavaUtils.getMessage("register00", prefix, uri)); - } - - if ((uri != null) && (prefix != null)) { - nsStack.add(uri, prefix); - } - } - - public void endPrefix(String prefix) - { - // Do we need to do anything here? - } - - public String qName2String(QName qName) - { - String prefix = getPrefixForURI(qName.getNamespaceURI()); - return (((prefix != null)&&(!prefix.equals(""))) ? prefix + ":" : "") + - qName.getLocalPart(); - } - - public QName getQNameForClass(Class cls) - { - return getTypeMappingRegistry().getTypeQName(cls); - } - - /** - * Classes which are known to not require multi-ref. As multi-ref - * requires additional parsing overhead and not all implementations - * support this, only use this function when there is a possibility - * of circular references. - */ - public boolean isPrimitive(Object value) - { - if (value == null) return true; - - Class type = value.getClass(); - if (type.isArray()) type = type.getComponentType(); - - if (String.class.isAssignableFrom(type)) return true; - if (Number.class.isAssignableFrom(type)) return true; - if (Boolean.class.isAssignableFrom(type)) return true; - if (Date.class.isAssignableFrom(type)) return true; - if (Element.class.isAssignableFrom(type)) return true; - if (Hex.class.isAssignableFrom(type)) return true; - if (type.isPrimitive()) return true; - return false; - } - - public void serialize(QName qName, Attributes attributes, Object value) - throws IOException - { - if (value == null) { - // If the value is null, the element is - // passed with xsi:nil="true" to indicate that no object is present. - // - // There are three approaches that could be taken... - // 1) (Currently Implemented) Use xsi:nil="true". - // 2) Emit an empty element. (This would be deserialized incorrectly.) - // 3) Don't emit an element. (This could also cause deserialization problems.) - AttributesImpl attrs = new AttributesImpl(); - if (attributes != null) - attrs.setAttributes(attributes); - attrs.addAttribute(Constants.URI_2001_SCHEMA_XSI, "nil", "xsi:nil", - "CDATA", "true"); - startElement(qName, attrs); - endElement(); - } - - Message msg= getCurrentMessage(); - if(null != msg){ - //Get attachments. returns null if no attachment support. - Attachments attachments= getCurrentMessage().getAttachments(); - - if( null != attachments && attachments.isAttachment(value)){ - //Attachment support and this is an object that should be treated as an attachment. - - //Allow an the attachment to do its own serialization. - getTypeMappingRegistry().serialize(qName, attributes, value, this); - - //No need to add to mulitRefs. Attachment data stream handled by - // the message; - return; - } - } - - // If multi-reference is enabled and this object value is not a primitive - // and we are not forcing serialization of the object, then generate - // an element href (and store the object for subsequent outputMultiRef - // processing. - if (doMultiRefs && (value != forceSer) && !isPrimitive(value)) { - if (multiRefIndex == -1) - multiRefValues = new HashMap(); - - String href = (String)multiRefValues.get(value); - if (href == null) { - multiRefIndex++; - href = "id" + multiRefIndex; - multiRefValues.put(value, href); - - /** Problem - if we're in the middle of writing out - * the multi-refs and hit another level of the - * object graph, we need to make sure this object - * will get written. For now, add it to a list - * which we'll check each time we're done with - * outputMultiRefs(). - */ - if (outputMultiRefsFlag) { - if (secondLevelObjects == null) - secondLevelObjects = new HashSet(); - secondLevelObjects.add(value); - } - } - - AttributesImpl attrs = new AttributesImpl(); - if (attributes != null) - attrs.setAttributes(attributes); - attrs.addAttribute("", Constants.ATTR_HREF, "href", - "CDATA", "#" + href); - - startElement(qName, attrs); - endElement(); - return; - } - - // The forceSer variable is set by outputMultiRefs to force - // serialization of this object via the serialize(...) call - // below. However, if the forced object contains a self-refence, we - // get into an infinite loop..which is why it is set back to null - // before the actual serialization. - if (value == forceSer) - forceSer = null; - - getTypeMappingRegistry().serialize(qName, attributes, value, this); - } - - public void outputMultiRefs() throws IOException - { - if (!doMultiRefs || (multiRefValues == null)) - return; - outputMultiRefsFlag = true; - AttributesImpl attrs = new AttributesImpl(); - attrs.addAttribute("","","","",""); - - // explicitly state that this attribute is not a root - String prefix = getPrefixForURI(Constants.URI_SOAP_ENC); - String root = prefix + ":root"; - attrs.addAttribute(Constants.URI_SOAP_ENC, Constants.ATTR_ROOT, root, - "CDATA", "0"); - - Iterator i = ((HashMap)multiRefValues.clone()).keySet().iterator(); - while (i.hasNext()) { - while (i.hasNext()) { - Object val = i.next(); - String id = (String)multiRefValues.get(val); - attrs.setAttribute(0, "", Constants.ATTR_ID, "id", "CDATA", - id); - forceSer = val; - serialize(new QName("","multiRef"), attrs, val); - } - - if (secondLevelObjects != null) { - i = secondLevelObjects.iterator(); - secondLevelObjects = null; - } - } - forceSer = null; - outputMultiRefsFlag = false; - } - - public void startElement(QName qName, Attributes attributes) - throws IOException - { - if (category.isDebugEnabled()) { - category.debug(JavaUtils.getMessage("startElem00", - "[" + qName.getNamespaceURI() + "]:" + qName.getLocalPart())); - } - - if (startOfDocument && sendXMLDecl) { - writer.write("\n"); - startOfDocument = false; - } - - if (writingStartTag) { - writer.write(">"); - if (pretty) writer.write("\n"); - indent++; - } - - if (pretty) for (int i=0; i -1) { - prefix = qname.substring(0, idx); - prefix = getPrefixForURI(uri, - prefix); - } - } - if (!prefix.equals("")) { - qname = prefix + ":" + attributes.getLocalName(i); - } else { - qname = attributes.getLocalName(i); - } - } else { - qname = attributes.getLocalName(i); - if(qname == null) - qname = attributes.getQName(i); - } - - writer.write(qname); - writer.write("=\""); - writer.write(XMLUtils.xmlEncodeString(attributes.getValue(i))); - writer.write("\""); - } - } - - ArrayList currentMappings = nsStack.peek(); - for (int i = 0; i < currentMappings.size(); i++) { - Mapping map = (Mapping)currentMappings.get(i); - writer.write(" xmlns"); - if (!map.getPrefix().equals("")) { - writer.write(":"); - writer.write(map.getPrefix()); - } - writer.write("=\""); - writer.write(map.getNamespaceURI()); - writer.write("\""); - } - - writingStartTag = true; - - elementStack.push(elementQName); - nsStack.push(); - - writer.flush(); - onlyXML=true; - } - - /** - * Convenience method for writing an element with no structure inside it. - * (this could be optimzed later to share logic with startElement()) - * - * @param qName the qualified name of the new element - * @param attributes any attributes which should be written on the element - * @exception IOException if there is any trouble - */ - public void writeElement(QName qName, Attributes attributes) - throws IOException - { - startElement(qName, attributes); - endElement(); - } - - public void endElement() - throws IOException - { - String elementQName = (String)elementStack.pop(); - - if (category.isDebugEnabled()) { - category.debug(JavaUtils.getMessage("endElem00", "" + elementQName)); - } - - nsStack.pop(); - nsStack.peek().clear(); - - if (writingStartTag) { - writer.write("/>"); - if (pretty) writer.write("\n"); - writingStartTag = false; - return; - } - - if (onlyXML) { - indent--; - if (pretty) for (int i=0; i'); - if (pretty) if (indent>0) writer.write('\n'); - writer.flush(); - onlyXML=true; - } - - public void writeChars(char [] p1, int p2, int p3) - throws IOException - { - if (writingStartTag) { - writer.write(">"); - writingStartTag = false; - } - writeSafeString(String.valueOf(p1,p2,p3)); - writer.flush(); - onlyXML=false; - } - - public void writeString(String string) - throws IOException - { - if (writingStartTag) { - writer.write(">"); - writingStartTag = false; - } - writer.write(string); - writer.flush(); - onlyXML=false; - } - - public void writeSafeString(String string) - throws IOException - { - writeString(XMLUtils.xmlEncodeString(string)); - } - - /** Output a DOM representation to a SerializationContext - */ - public void writeDOMElement(Element el) - throws IOException - { - AttributesImpl attributes = null; - NamedNodeMap attrMap = el.getAttributes(); - - if (attrMap.getLength() > 0) { - attributes = new AttributesImpl(); - for (int i = 0; i < attrMap.getLength(); i++) { - Attr attr = (Attr)attrMap.item(i); - String tmp = attr.getNamespaceURI(); - if ( tmp != null && tmp.equals(Constants.NS_URI_XMLNS) ) { - String prefix = attr.getLocalName(); - if (prefix != null) { - if (prefix.equals("xmlns")) - prefix = ""; - String nsURI = attr.getValue(); - registerPrefixForURI(prefix, nsURI); - } - continue; - } - - attributes.addAttribute(attr.getNamespaceURI(), - attr.getLocalName(), - attr.getName(), - "CDATA", attr.getValue()); - } - } - - String namespaceURI = el.getNamespaceURI(); - String localPart = el.getLocalName(); - if(namespaceURI == null || namespaceURI.length()==0) - localPart = el.getNodeName(); - QName qName = new QName(namespaceURI, localPart); - - startElement(qName, attributes); - - NodeList children = el.getChildNodes(); - for (int i = 0; i < children.getLength(); i++) { - Node child = children.item(i); - if (child instanceof Element) { - writeDOMElement((Element)child); - } else if (child instanceof Text) { - writeSafeString(((Text)child).getData()); - } - } + * Get the current message. + * @return Message + */ + public Message getCurrentMessage(); - endElement(); - } + /** + * Convert QName to a string of the form : + * @param QName + * @return prefixed qname representation for serialization. + */ + public String qName2String(QName qName); + /** + * Get the QName associated with the specified class. + * @param Class of an object requiring serialization. + * @return appropriate QName associated with the class. + */ + public QName getQNameForClass(Class cls); + + /** + * Indicates whether the object should be interpretted as a primitive + * for the purposes of multi-ref processing. A primitive value + * is serialized directly instead of using id/href pairs. Thus + * primitive serialization/deserialization is slightly faster. + * @param value to be serialized + * @param javaType is the "real" java type of value. Used to distinguish + * between java primitives and their wrapper classes. + * @return true/false + */ + public boolean isPrimitive(Object value, Class javaType); + + /** + * The serialize method uses hrefs to reference all non-primitive + * values. These values are stored and serialized by calling + * outputMultiRefs after the serialize method completes. + */ + public void outputMultiRefs() throws IOException; + + /** + * Writes (using the Writer) the start tag for element QName along with the + * indicated attributes and namespace mappings. + * @param qName is the name of the element + * @param attributes are the attributes to write + */ + public void startElement(QName qName, Attributes attributes) throws IOException; + + /** + * Writes the end element tag for the open element. + **/ + public void endElement() throws IOException; + + /** + * Convenience operation to write out (to Writer) the characters + * in p1 starting at index p2 for length p3. + * @param p1 character array to write + * @param p2 starting index in array + * @param p3 length to write + */ + public void writeChars(char [] p1, int p2, int p3) throws IOException;; + + /** + * Convenience operation to write out (to Writer) the String + * @param string is the String to write. + */ + public void writeString(String string) throws IOException; + + /** + * Convenience operation to write out (to Writer) the String + * properly encoded with xml entities (like &) + * @param string is the String to write. + */ + public void writeSafeString(String string) throws IOException; + + /** + * Output a DOM representation to a SerializationContext + * @param el is a DOM Element + */ + public void writeDOMElement(Element el) throws IOException; + } + + 1.13.4.1 +25 -8 xml-axis/java/src/org/apache/axis/encoding/Serializer.java Index: Serializer.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/Serializer.java,v retrieving revision 1.13 retrieving revision 1.13.4.1 diff -u -r1.13 -r1.13.4.1 --- Serializer.java 30 Oct 2001 16:46:37 -0000 1.13 +++ Serializer.java 28 Jan 2002 06:43:01 -0000 1.13.4.1 @@ -10,7 +10,7 @@ * are met: * * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. + * 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 @@ -18,7 +18,7 @@ * distribution. * * 3. The end-user documentation included with the redistribution, - * if any, must include the following acknowledgment: + * 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, @@ -26,7 +26,7 @@ * * 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 + * software without prior written permission. For written * permission, please contact apache@apache.org. * * 5. Products derived from this software may not be called "Apache", @@ -53,21 +53,38 @@ * . */ + package org.apache.axis.encoding; -//import org.apache.axis.message.Message; -//import org.apache.axis.message.MessageElement; -//import org.apache.axis.utils.NSStack; import org.xml.sax.Attributes; import javax.xml.rpc.namespace.QName; import java.io.IOException; /** - * @author James Snell (jasnell@us.ibm.com) + * This interface describes the AXIS Serializer. + * An Axis compliant Serializer must provide one or more + * of the following methods: + * + * public (Class javaType, QName xmlType) + * public () + * + * This will allow for construction of generic factories that introspect the class + * to determine how to construct a deserializer. + * The xmlType, javaType arguments are filled in with the values known by the factory. */ -public interface Serializer extends java.io.Serializable { +public interface Serializer extends javax.xml.rpc.encoding.Serializer { + /** + * Serialize an element named name, with the indicated attributes + * and value. + * @param name is the element name + * @param attributes are the attributes...serialize is free to add more. + * @param value is the value + * @param context is the SerializationContext + */ public void serialize(QName name, Attributes attributes, Object value, SerializationContext context) throws IOException; } + + 1.16.4.1 +1 -1 xml-axis/java/src/org/apache/axis/encoding/ServiceDescription.java Index: ServiceDescription.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ServiceDescription.java,v retrieving revision 1.16 retrieving revision 1.16.4.1 diff -u -r1.16 -r1.16.4.1 --- ServiceDescription.java 30 Oct 2001 14:19:29 -0000 1.16 +++ ServiceDescription.java 28 Jan 2002 06:43:01 -0000 1.16.4.1 @@ -109,7 +109,7 @@ this.serviceIsRPC = isRPC; // For RPC, default to section 5 encoding - if (isRPC) encodingStyleURI = Constants.URI_SOAP_ENC; + if (isRPC) encodingStyleURI = Constants.URI_CURRENT_SOAP_ENC; } public boolean isRPC() 1.47.2.1 +12 -333 xml-axis/java/src/org/apache/axis/encoding/TypeMappingRegistry.java Index: TypeMappingRegistry.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/TypeMappingRegistry.java,v retrieving revision 1.47 retrieving revision 1.47.2.1 diff -u -r1.47 -r1.47.2.1 --- TypeMappingRegistry.java 14 Jan 2002 17:31:36 -0000 1.47 +++ TypeMappingRegistry.java 28 Jan 2002 06:43:01 -0000 1.47.2.1 @@ -10,7 +10,7 @@ * are met: * * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. + * 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 @@ -18,7 +18,7 @@ * distribution. * * 3. The end-user documentation included with the redistribution, - * if any, must include the following acknowledgment: + * 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, @@ -26,7 +26,7 @@ * * 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 + * software without prior written permission. For written * permission, please contact apache@apache.org. * * 5. Products derived from this software may not be called "Apache", @@ -53,340 +53,19 @@ * . */ -package org.apache.axis.encoding; - -import org.apache.axis.Constants; -import org.apache.axis.deployment.wsdd.WSDDConstants; -import org.apache.axis.utils.JavaUtils; -import org.w3c.dom.Document; -import org.w3c.dom.Element; -import org.xml.sax.Attributes; -import org.xml.sax.helpers.AttributesImpl; -import javax.xml.rpc.namespace.QName; -import java.beans.IntrospectionException; -import java.io.IOException; -import java.io.PrintStream; -import java.io.Serializable; -import java.util.Enumeration; -import java.util.Hashtable; -import java.util.ArrayList; +package org.apache.axis.encoding; /** - * @author James Snell (jasnell@us.ibm.com) - * @author Sam Ruby (rubys@us.ibm.com) + * This interface describes the AXIS TypeMappingRegistry. */ -public class TypeMappingRegistry implements Serializer { - /** - * Default constructor (transient registry) - */ - public TypeMappingRegistry() {} - - static class SerializerDescriptor implements Serializable { - QName typeQName; - Serializer serializer; - SerializerDescriptor(QName typeQName, Serializer serializer) - { - this.typeQName = typeQName; - this.serializer = serializer; - } - } - - static class DeserializerDescriptor implements Serializable { - Class cls; - DeserializerFactory factory; - DeserializerDescriptor(Class cls, DeserializerFactory factory) - throws IntrospectionException - { - this.cls = cls; - this.factory = factory; - factory.setJavaClass(cls); - } - } - - TypeMappingRegistry parent = null; - Hashtable s; - Hashtable d; - - public boolean isEmpty() - { - return (d == null || d.isEmpty()); - } - +public interface TypeMappingRegistry extends javax.xml.rpc.encoding.TypeMappingRegistry { /** - * Define a "parent" TypeMappingRegistry that will be used to service - * any requests that are not satisfied by this this instance. This - * enables a chain of TypeMappingRegistries to be employed that contain, - * say, a transient set of types, followed by a persistent set of - * deployed types, followed by the system defined SOAPTypes - */ - public void setParent(TypeMappingRegistry parent) { - this.parent = parent; - - // debug assertions: every tmr must have exactly one - // SOAPTypeMappingRegistry at the top. - if (parent == null) - new Exception(JavaUtils.getMessage("nullParent00")).printStackTrace(); - if (this instanceof SOAPTypeMappingRegistry) - new Exception(JavaUtils.getMessage("withParent00")).printStackTrace(); - for (TypeMappingRegistry t = parent; t!=null; t=t.getParent()) - if (t instanceof SOAPTypeMappingRegistry) return; - new Exception(JavaUtils.getMessage("noParent00")).printStackTrace(); - } - - public TypeMappingRegistry getParent() { - return parent; - } - - public void addSerializer(Class _class, - QName qName, - Serializer serializer) { - if (s == null) s = new Hashtable(); - if (serializer instanceof BeanSerializer) { - ((BeanSerializer)serializer).setCls(_class); - } - s.put(_class, new SerializerDescriptor(qName, serializer)); - } - - public void addDeserializerFactory(QName qname, - Class _class, - DeserializerFactory deserializerFactory) - throws IntrospectionException - { - if (d == null) d= new Hashtable(); - d.put(qname, new DeserializerDescriptor(_class, deserializerFactory)); - } - - public Serializer getSerializer(Class _class) { - if (s != null) { - SerializerDescriptor desc = (SerializerDescriptor)s.get(_class); - if (desc != null) return desc.serializer; - } - if (parent != null) return parent.getSerializer(_class); - return null; - } - - public QName getTypeQName(Class _class) { - if (s != null) { - SerializerDescriptor desc = (SerializerDescriptor)s.get(_class); - if (desc != null) return desc.typeQName; - } - if (parent != null) return parent.getTypeQName(_class); - return null; - } - - public Class getClassForQName(QName type) { - if (d != null) { - DeserializerDescriptor desc = (DeserializerDescriptor)d.get(type); - if (desc != null) return desc.cls; - } - if (parent != null) return parent.getClassForQName(type); - return null; - } - - public Deserializer getDeserializer(QName qname) { - if (qname == null) - return null; - - if (d != null) { - DeserializerDescriptor desc = (DeserializerDescriptor)d.get(qname); - if ((desc != null) && (desc.factory != null)) - return desc.factory.getDeserializer(); - } - if (parent != null) return parent.getDeserializer(qname); - return null; - } - - public void removeSerializer(Class _class) { - if (s != null) s.remove(_class); - } - - public void removeDeserializer(QName qname) { - if (d != null) d.remove(qname); - } - - public boolean hasSerializer(Class _class) { - if (s != null && s.containsKey(_class)) return true; - if (parent != null) return parent.hasSerializer(_class); - return false; - } - - public boolean hasDeserializer(QName qname) { - if (d != null && d.containsKey(qname)) return true; - if (parent != null) return parent.hasDeserializer(qname); - return false; - } - - public Attributes setTypeAttribute(Attributes attributes, QName type, - SerializationContext context) - { - if (type == null || - !context.shouldSendXSIType() || - ((attributes != null) && - (attributes.getIndex(Constants.URI_CURRENT_SCHEMA_XSI, - "type") != -1))) - return attributes; - - AttributesImpl attrs = new AttributesImpl(); - if (attributes != null) - attrs.setAttributes(attributes); - - String prefix = context. - getPrefixForURI(Constants.URI_CURRENT_SCHEMA_XSI, - "xsi"); - - attrs.addAttribute(Constants.URI_CURRENT_SCHEMA_XSI, - "type", - prefix + ":type", - "CDATA", context.qName2String(type)); - return attrs; - } - - public void serialize(QName name, Attributes attributes, - Object value, SerializationContext context) - throws IOException - { - if (value != null) { - Serializer ser = null ; - Class _class = value.getClass(); - - // Use an ArrayList and remove(0) because it MUST be - // first-in-first-out - ArrayList classes = null; - - while( _class != null ) { - if ( (ser = getSerializer(_class)) != null ) break ; - if ( classes == null ) classes = new ArrayList(); - Class[] ifaces = _class.getInterfaces(); - for (int i = 0 ; i < ifaces.length ; i++ ) - classes.add( ifaces[i] ); - _class = _class.getSuperclass(); - - // Add any non-null (and non-Object) class. We skip - // the Object class because if we reach that then - // there's an error and this error message return - // here is better than the one returned by the - // ObjSerializer. - if ( _class != null && - !_class.getName().equals("java.lang.Object")) - classes.add( _class ); - - _class = (!classes.isEmpty()) ? (Class) classes.remove( 0 ) : - null; - } - - if ( ser != null ) { - QName type = getTypeQName(_class); - attributes = setTypeAttribute(attributes, type, context); - ser.serialize(name, attributes, value, context); - return; - } - - throw new IOException(JavaUtils.getMessage("noSerializer00", - value.getClass().getName(), "" + this)); - } - // !!! Write out a generic null, or get type info from somewhere else? - } - - public void dump(PrintStream out, String header) { - out.println(header); - out.println(" Deserializers:"); - if (d != null) { - java.util.Enumeration e = d.keys(); - while (e.hasMoreElements()) { - Object key = e.nextElement(); - DeserializerDescriptor desc = (DeserializerDescriptor)d.get(key); - String classname = (desc.cls != null) ? desc.cls.getName() : "null"; - out.println(" " + key + " => " + classname); - } - } - if (parent != null) - parent.dump(out, "Parent"); - } - - public void dumpToSerializationContext(SerializationContext ctx) - throws IOException - { - if (d == null) { - return; - } - - Enumeration enum = d.keys(); - while (enum.hasMoreElements()) { - QName typeQName = (QName)enum.nextElement(); - DeserializerDescriptor desc = - (DeserializerDescriptor)d.get(typeQName); - if (desc.cls == null) - continue; - - AttributesImpl attrs = new AttributesImpl(); - attrs.addAttribute("", "qname", "qname", - "CDATA", ctx.qName2String(typeQName)); - attrs.addAttribute("", "languageSpecificType", - "languageSpecificType", - "CDATA", "java:" + desc.cls.getName()); - - QName elementQName; - - if (desc.factory.getClass() == - BeanSerializer.BeanDeserFactory.class) { - elementQName = WSDDConstants.BEANMAPPING_QNAME; - } else { - elementQName = WSDDConstants.TYPE_QNAME; - - String dser = desc.factory.getClass().getName(); - attrs.addAttribute("", "deserializer", "deserializer", - "CDATA", dser); - - SerializerDescriptor serDesc = - (SerializerDescriptor)s.get(desc.cls); - if (serDesc != null) { - attrs.addAttribute("", "serializer", "serializer", - "CDATA", - serDesc.serializer. - getClass().getName()); - } - } - - ctx.startElement(elementQName, attrs); - ctx.endElement(); - } - } - - public void dumpToElement(Element root) - { - if ((d == null) || (parent == null)) { - return; - } - - Document doc = root.getOwnerDocument(); - - Enumeration enum = d.keys(); - while (enum.hasMoreElements()) { - QName typeQName = (QName)enum.nextElement(); - DeserializerDescriptor desc = - (DeserializerDescriptor)d.get(typeQName); - if (desc.cls == null) - continue; - - Element mapEl = doc.createElementNS("", "typeMapping"); + * Return the default TypeMapping + * (According to the JAX-RPC rep, this will be in javax.xml.rpc.encoding.TypeMappingRegistry for version 0.7) + * @return TypeMapping or null + **/ + public javax.xml.rpc.encoding.TypeMapping getDefaultTypeMapping(); +} - mapEl.setAttribute("type", "ns:" + typeQName.getLocalPart()); - mapEl.setAttribute("xmlns:ns", typeQName.getNamespaceURI()); - - mapEl.setAttribute("classname", desc.cls.getName()); - - String dser = desc.factory.getClass().getName(); - mapEl.setAttribute("deserializerFactory", dser); - - SerializerDescriptor serDesc = - (SerializerDescriptor)s.get(desc.cls); - if (serDesc != null) { - mapEl.setAttribute("serializer", serDesc.serializer. - getClass().getName()); - } - root.appendChild(mapEl); - } - } -} 1.12.2.1 +28 -29 xml-axis/java/src/org/apache/axis/encoding/XMLType.java Index: XMLType.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/XMLType.java,v retrieving revision 1.12 retrieving revision 1.12.2.1 diff -u -r1.12 -r1.12.2.1 --- XMLType.java 4 Jan 2002 22:30:03 -0000 1.12 +++ XMLType.java 28 Jan 2002 06:43:01 -0000 1.12.2.1 @@ -66,45 +66,44 @@ public class XMLType { - public static final QName XSD_STRING = new QName(Constants.URI_CURRENT_SCHEMA_XSD, "string"); - public static final QName XSD_BOOLEAN = new QName(Constants.URI_CURRENT_SCHEMA_XSD, "boolean"); - public static final QName XSD_DOUBLE = new QName(Constants.URI_CURRENT_SCHEMA_XSD, "double"); - public static final QName XSD_FLOAT = new QName(Constants.URI_CURRENT_SCHEMA_XSD, "float"); - public static final QName XSD_INT = new QName(Constants.URI_CURRENT_SCHEMA_XSD, "int"); - public static final QName XSD_LONG = new QName(Constants.URI_CURRENT_SCHEMA_XSD, "long"); - public static final QName XSD_SHORT = new QName(Constants.URI_CURRENT_SCHEMA_XSD, "short"); - public static final QName XSD_BYTE = new QName(Constants.URI_CURRENT_SCHEMA_XSD, "byte"); - public static final QName XSD_DECIMAL = new QName(Constants.URI_CURRENT_SCHEMA_XSD, "decimal"); - public static final QName XSD_BASE64 = new QName(Constants.URI_2001_SCHEMA_XSD, "base64Binary"); -// public static final QName XSD_HEXBIN = new QName(Constants.URI_2001_SCHEMA_XSD, "hexBinary"); - public static final QName XSD_ANYTYPE = new QName(Constants.URI_2001_SCHEMA_XSD, "anyType"); - public static final QName SOAP_BASE64 = new QName(Constants.URI_SOAP_ENC, "base64"); + // Rich Scheuerle Note: Shouldn't this class be phased out...The constants in Constants + // should be used. + public static final QName XSD_STRING = Constants.XSD_STRING; + public static final QName XSD_BOOLEAN = Constants.XSD_BOOLEAN; + public static final QName XSD_DOUBLE = Constants.XSD_DOUBLE; + public static final QName XSD_FLOAT = Constants.XSD_FLOAT; + public static final QName XSD_INT = Constants.XSD_INT; + public static final QName XSD_LONG = Constants.XSD_LONG; + public static final QName XSD_SHORT = Constants.XSD_SHORT; + public static final QName XSD_BYTE = Constants.XSD_BYTE; + public static final QName XSD_DECIMAL = Constants.XSD_DECIMAL; + public static final QName XSD_BASE64 = Constants.XSD_BASE64; + public static final QName XSD_ANYTYPE = Constants.XSD_ANYTYPE; + public static final QName SOAP_BASE64 = Constants.SOAP_BASE64; - public static final QName SOAP_STRING = new QName(Constants.URI_SOAP_ENC, "string"); - public static final QName SOAP_BOOLEAN = new QName(Constants.URI_SOAP_ENC, "boolean"); - public static final QName SOAP_DOUBLE = new QName(Constants.URI_SOAP_ENC, "double"); - public static final QName SOAP_FLOAT = new QName(Constants.URI_SOAP_ENC, "float"); - public static final QName SOAP_INT = new QName(Constants.URI_SOAP_ENC, "int"); - public static final QName SOAP_LONG = new QName(Constants.URI_SOAP_ENC, "long"); - public static final QName SOAP_SHORT = new QName(Constants.URI_SOAP_ENC, "short"); - public static final QName SOAP_BYTE = new QName(Constants.URI_SOAP_ENC, "byte"); - public static final QName SOAP_ARRAY = new QName(Constants.URI_SOAP_ENC, "Array"); + public static final QName SOAP_STRING = Constants.SOAP_STRING; + public static final QName SOAP_BOOLEAN = Constants.SOAP_BOOLEAN; + public static final QName SOAP_DOUBLE = Constants.SOAP_DOUBLE; + public static final QName SOAP_FLOAT = Constants.SOAP_FLOAT; + public static final QName SOAP_INT = Constants.SOAP_INT; + public static final QName SOAP_LONG = Constants.SOAP_LONG; + public static final QName SOAP_SHORT = Constants.SOAP_SHORT; + public static final QName SOAP_BYTE = Constants.SOAP_BYTE; + public static final QName SOAP_ARRAY = Constants.SOAP_ARRAY; - public static final QName TYPE_MAP = new QName("http://xml.apache.org/xml-soap", "Map"); - public static final QName TYPE_ELEMENT = new QName("http://xml.apache.org/xml-soap", "Element"); + public static final QName SOAP_MAP = Constants.SOAP_MAP; + public static final QName SOAP_ELEMENT = Constants.SOAP_ELEMENT; public static QName XSD_DATE; static { if (Constants.URI_CURRENT_SCHEMA_XSD.equals( Constants.URI_1999_SCHEMA_XSD)) - XSD_DATE = - new QName(Constants.URI_CURRENT_SCHEMA_XSD, "timeInstant"); + XSD_DATE = Constants.XSD_DATE2; else if (Constants.URI_CURRENT_SCHEMA_XSD.equals( Constants.URI_2000_SCHEMA_XSD)) - XSD_DATE = - new QName(Constants.URI_CURRENT_SCHEMA_XSD, "timeInstant"); + XSD_DATE = Constants.XSD_DATE3; else - XSD_DATE = new QName(Constants.URI_CURRENT_SCHEMA_XSD, "dateTime"); + XSD_DATE = Constants.XSD_DATE; } } No revision No revision 1.1.2.1 +0 -0 xml-axis/java/src/org/apache/axis/encoding/Callback.java Index: Callback.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/Callback.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/org/apache/axis/encoding/CallbackTarget.java Index: CallbackTarget.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/CallbackTarget.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/org/apache/axis/encoding/DefaultTypeMappingImpl.java Index: DefaultTypeMappingImpl.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/DefaultTypeMappingImpl.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +2 -1 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.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 --- DeserializationContextImpl.java 26 Jan 2002 02:40:33 -0000 1.1 +++ DeserializationContextImpl.java 28 Jan 2002 06:43:00 -0000 1.1.2.1 @@ -398,7 +398,8 @@ */ public TypeMapping getTypeMapping() { - return (TypeMapping) msgContext.getTypeMappingRegistry().getTypeMapping(Constants.URI_CURRENT_SOAP_ENC); + TypeMappingRegistry tmr = msgContext.getTypeMappingRegistry(); + return (TypeMapping) tmr.getTypeMapping(Constants.URI_CURRENT_SOAP_ENC); } /** 1.1.2.1 +0 -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.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/org/apache/axis/encoding/DeserializerTarget.java Index: DeserializerTarget.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/DeserializerTarget.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/org/apache/axis/encoding/FieldTarget.java Index: FieldTarget.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/FieldTarget.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/org/apache/axis/encoding/MethodTarget.java Index: MethodTarget.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/MethodTarget.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/org/apache/axis/encoding/SerializationContextImpl.java Index: SerializationContextImpl.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/SerializationContextImpl.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/org/apache/axis/encoding/SerializerFactory.java Index: SerializerFactory.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/SerializerFactory.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/org/apache/axis/encoding/Target.java Index: Target.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/Target.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/org/apache/axis/encoding/TypeMapping.java Index: TypeMapping.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/TypeMapping.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/org/apache/axis/encoding/TypeMappingImpl.java Index: TypeMappingImpl.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/TypeMappingImpl.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/org/apache/axis/encoding/TypeMappingRegistryImpl.java Index: TypeMappingRegistryImpl.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/TypeMappingRegistryImpl.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 No revision No revision 1.1.2.1 +0 -0 xml-axis/java/src/org/apache/axis/encoding/ser/ArrayDeserializer.java Index: ArrayDeserializer.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/ArrayDeserializer.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/org/apache/axis/encoding/ser/ArrayDeserializerFactory.java Index: ArrayDeserializerFactory.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/ArrayDeserializerFactory.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/org/apache/axis/encoding/ser/ArraySerializer.java Index: ArraySerializer.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/ArraySerializer.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/org/apache/axis/encoding/ser/ArraySerializerFactory.java Index: ArraySerializerFactory.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/ArraySerializerFactory.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/org/apache/axis/encoding/ser/Base64Deserializer.java Index: Base64Deserializer.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/Base64Deserializer.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/org/apache/axis/encoding/ser/Base64DeserializerFactory.java Index: Base64DeserializerFactory.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/Base64DeserializerFactory.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/org/apache/axis/encoding/ser/Base64Serializer.java Index: Base64Serializer.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/Base64Serializer.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/org/apache/axis/encoding/ser/Base64SerializerFactory.java Index: Base64SerializerFactory.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/Base64SerializerFactory.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/org/apache/axis/encoding/ser/BaseDeserializerFactory.java Index: BaseDeserializerFactory.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/BaseDeserializerFactory.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/org/apache/axis/encoding/ser/BaseSerializerFactory.java Index: BaseSerializerFactory.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/BaseSerializerFactory.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/org/apache/axis/encoding/ser/BeanDeserializer.java Index: BeanDeserializer.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/BeanDeserializer.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/org/apache/axis/encoding/ser/BeanDeserializerFactory.java Index: BeanDeserializerFactory.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/BeanDeserializerFactory.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/org/apache/axis/encoding/ser/BeanPropertyDescriptor.java Index: BeanPropertyDescriptor.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/BeanPropertyDescriptor.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/org/apache/axis/encoding/ser/BeanPropertyTarget.java Index: BeanPropertyTarget.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/BeanPropertyTarget.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/org/apache/axis/encoding/ser/BeanSerializer.java Index: BeanSerializer.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/BeanSerializer.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/org/apache/axis/encoding/ser/BeanSerializerFactory.java Index: BeanSerializerFactory.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/BeanSerializerFactory.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/org/apache/axis/encoding/ser/DateDeserializer.java Index: DateDeserializer.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/DateDeserializer.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/org/apache/axis/encoding/ser/DateDeserializerFactory.java Index: DateDeserializerFactory.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/DateDeserializerFactory.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/org/apache/axis/encoding/ser/DateSerializer.java Index: DateSerializer.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/DateSerializer.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/org/apache/axis/encoding/ser/DateSerializerFactory.java Index: DateSerializerFactory.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/DateSerializerFactory.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/org/apache/axis/encoding/ser/ElementDeserializer.java Index: ElementDeserializer.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/ElementDeserializer.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/org/apache/axis/encoding/ser/ElementDeserializerFactory.java Index: ElementDeserializerFactory.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/ElementDeserializerFactory.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/org/apache/axis/encoding/ser/ElementSerializer.java Index: ElementSerializer.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/ElementSerializer.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/org/apache/axis/encoding/ser/ElementSerializerFactory.java Index: ElementSerializerFactory.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/ElementSerializerFactory.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/org/apache/axis/encoding/ser/EnumDeserializer.java Index: EnumDeserializer.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/EnumDeserializer.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/org/apache/axis/encoding/ser/EnumDeserializerFactory.java Index: EnumDeserializerFactory.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/EnumDeserializerFactory.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/org/apache/axis/encoding/ser/EnumSerializer.java Index: EnumSerializer.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/EnumSerializer.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/org/apache/axis/encoding/ser/EnumSerializerFactory.java Index: EnumSerializerFactory.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/EnumSerializerFactory.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/org/apache/axis/encoding/ser/HexDeserializer.java Index: HexDeserializer.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/HexDeserializer.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/org/apache/axis/encoding/ser/HexDeserializerFactory.java Index: HexDeserializerFactory.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/HexDeserializerFactory.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/org/apache/axis/encoding/ser/HexSerializer.java Index: HexSerializer.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/HexSerializer.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/org/apache/axis/encoding/ser/HexSerializerFactory.java Index: HexSerializerFactory.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/HexSerializerFactory.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/org/apache/axis/encoding/ser/JAFDataHandlerDeserializer.java Index: JAFDataHandlerDeserializer.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/JAFDataHandlerDeserializer.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/org/apache/axis/encoding/ser/JAFDataHandlerDeserializerFactory.java Index: JAFDataHandlerDeserializerFactory.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/JAFDataHandlerDeserializerFactory.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/org/apache/axis/encoding/ser/JAFDataHandlerSerializer.java Index: JAFDataHandlerSerializer.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/JAFDataHandlerSerializer.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/org/apache/axis/encoding/ser/JAFDataHandlerSerializerFactory.java Index: JAFDataHandlerSerializerFactory.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/JAFDataHandlerSerializerFactory.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/org/apache/axis/encoding/ser/MapDeserializer.java Index: MapDeserializer.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/MapDeserializer.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/org/apache/axis/encoding/ser/MapDeserializerFactory.java Index: MapDeserializerFactory.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/MapDeserializerFactory.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/org/apache/axis/encoding/ser/MapSerializer.java Index: MapSerializer.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/MapSerializer.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/org/apache/axis/encoding/ser/MapSerializerFactory.java Index: MapSerializerFactory.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/MapSerializerFactory.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/org/apache/axis/encoding/ser/SimpleDeserializer.java Index: SimpleDeserializer.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/SimpleDeserializer.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/org/apache/axis/encoding/ser/SimpleDeserializerFactory.java Index: SimpleDeserializerFactory.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/SimpleDeserializerFactory.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/org/apache/axis/encoding/ser/SimpleNonPrimitiveSerializerFactory.java Index: SimpleNonPrimitiveSerializerFactory.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/SimpleNonPrimitiveSerializerFactory.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/org/apache/axis/encoding/ser/SimplePrimitiveSerializerFactory.java Index: SimplePrimitiveSerializerFactory.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/SimplePrimitiveSerializerFactory.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/org/apache/axis/encoding/ser/SimpleSerializer.java Index: SimpleSerializer.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/SimpleSerializer.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/org/apache/axis/encoding/ser/VectorDeserializer.java Index: VectorDeserializer.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/VectorDeserializer.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/src/org/apache/axis/encoding/ser/VectorDeserializerFactory.java Index: VectorDeserializerFactory.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/VectorDeserializerFactory.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 No revision No revision 1.28.2.1 +1 -2 xml-axis/java/src/org/apache/axis/handlers/DebugHandler.java Index: DebugHandler.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/handlers/DebugHandler.java,v retrieving revision 1.28 retrieving revision 1.28.2.1 diff -u -r1.28 -r1.28.2.1 --- DebugHandler.java 10 Jan 2002 20:00:59 -0000 1.28 +++ DebugHandler.java 28 Jan 2002 06:43:04 -0000 1.28.2.1 @@ -59,7 +59,6 @@ import org.apache.axis.Constants; import org.apache.axis.Message; import org.apache.axis.MessageContext; -import org.apache.axis.encoding.SOAPTypeMappingRegistry; import org.apache.axis.message.SOAPEnvelope; import org.apache.axis.message.SOAPHeader; import org.apache.axis.utils.JavaUtils; @@ -84,7 +83,7 @@ if (header != null) { Integer i = ((Integer)header - .getValueAsType(SOAPTypeMappingRegistry.XSD_INT)); + .getValueAsType(Constants.XSD_INT)); if (i == null) throw new AxisFault(JavaUtils.getMessage("cantConvert03")); 1.11.2.1 +3 -3 xml-axis/java/src/org/apache/axis/handlers/SimpleSessionHandler.java Index: SimpleSessionHandler.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/handlers/SimpleSessionHandler.java,v retrieving revision 1.11 retrieving revision 1.11.2.1 diff -u -r1.11 -r1.11.2.1 --- SimpleSessionHandler.java 10 Jan 2002 20:00:59 -0000 1.11 +++ SimpleSessionHandler.java 28 Jan 2002 06:43:04 -0000 1.11.2.1 @@ -57,9 +57,9 @@ import org.apache.axis.AxisEngine; import org.apache.axis.AxisFault; +import org.apache.axis.Constants; import org.apache.axis.Message; import org.apache.axis.MessageContext; -import org.apache.axis.encoding.SOAPTypeMappingRegistry; import org.apache.axis.message.SOAPEnvelope; import org.apache.axis.message.SOAPHeader; import org.apache.axis.session.SimpleSession; @@ -198,7 +198,7 @@ // Got one! try { Long id = (Long)header. - getValueAsType(SOAPTypeMappingRegistry.XSD_LONG); + getValueAsType(Constants.XSD_LONG); // Store it away. AxisEngine engine = context.getAxisEngine(); engine.setOption(SESSION_ID, id); @@ -259,7 +259,7 @@ // Got one! try { id = (Long)header. - getValueAsType(SOAPTypeMappingRegistry.XSD_LONG); + getValueAsType(Constants.XSD_LONG); } catch (Exception e) { throw AxisFault.makeFault(e); } No revision No revision 1.42.2.1 +8 -33 xml-axis/java/src/org/apache/axis/handlers/soap/SOAPService.java Index: SOAPService.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/handlers/soap/SOAPService.java,v retrieving revision 1.42 retrieving revision 1.42.2.1 diff -u -r1.42 -r1.42.2.1 --- SOAPService.java 10 Jan 2002 20:01:00 -0000 1.42 +++ SOAPService.java 28 Jan 2002 06:43:04 -0000 1.42.2.1 @@ -64,9 +64,9 @@ import org.apache.axis.SimpleTargetedChain; import org.apache.axis.providers.java.MsgProvider; import org.apache.axis.encoding.DeserializerFactory; -import org.apache.axis.encoding.SOAPTypeMappingRegistry; import org.apache.axis.encoding.Serializer; import org.apache.axis.encoding.TypeMappingRegistry; +import org.apache.axis.encoding.TypeMappingRegistryImpl; import org.apache.axis.message.SOAPEnvelope; import org.apache.axis.message.SOAPHeader; import org.apache.axis.utils.JavaUtils; @@ -102,7 +102,7 @@ /** Service-specific type mappings */ - private TypeMappingRegistry typeMap; + private TypeMappingRegistry tmr; /** * SOAPRequestHandler is used to inject SOAP semantics just before @@ -189,18 +189,19 @@ } private void initTypeMappingRegistry() { - typeMap = new TypeMappingRegistry(); - typeMap.setParent(SOAPTypeMappingRegistry.getSingleton()); + tmr = new TypeMappingRegistryImpl(); + // The TMR has the SOAP/XSD in the default TypeMapping + //tmr.setParent(SOAPTypeMappingRegistry.getSingleton()); } public TypeMappingRegistry getTypeMappingRegistry() { - return typeMap; + return tmr; } public void setTypeMappingRegistry(TypeMappingRegistry map) { - typeMap = map; + tmr = map; } /** Convenience constructor for wrapping SOAP semantics around @@ -214,12 +215,10 @@ /** Tell this service which engine it's deployed to. * - * The main result of this right now is to set up type mapping - * relationships. */ public void setEngine(AxisEngine engine) { - typeMap.setParent(engine.getTypeMappingRegistry()); + tmr = engine.getTypeMappingRegistry(); } /** @@ -267,30 +266,6 @@ */ public void stop() { - } - - /** - * Register a new service type mapping - */ - public void registerTypeMapping(QName qName, - Class cls, - DeserializerFactory deserFactory, - Serializer serializer) - throws IntrospectionException - { - if (deserFactory != null) - typeMap.addDeserializerFactory(qName, cls, deserFactory); - if (serializer != null) - typeMap.addSerializer(cls, qName, serializer); - } - - /** - * Unregister a service type mapping - */ - public void unregisterTypeMapping(QName qName, Class cls) - { - typeMap.removeDeserializer(qName); - typeMap.removeSerializer(cls); } /** No revision No revision 1.13.2.1 +2 -2 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.13 retrieving revision 1.13.2.1 diff -u -r1.13 -r1.13.2.1 --- BodyBuilder.java 6 Dec 2001 17:09:41 -0000 1.13 +++ BodyBuilder.java 28 Jan 2002 06:43:04 -0000 1.13.2.1 @@ -106,7 +106,7 @@ * description, which can then tell us what to create. */ boolean isRoot = true; - String root = attributes.getValue(Constants.URI_SOAP_ENC, + String root = attributes.getValue(Constants.URI_CURRENT_SOAP_ENC, Constants.ATTR_ROOT); if ((root != null) && root.equals("0")) isRoot = false; @@ -147,7 +147,7 @@ element = new SOAPBodyElement(namespace, localName, prefix, attributes, context); if (element.getFixupDeserializer() != null) - handler = element.getFixupDeserializer(); + handler = (SOAPHandler) element.getFixupDeserializer(); } if (handler == null) 1.71.2.1 +11 -14 xml-axis/java/src/org/apache/axis/message/MessageElement.java Index: MessageElement.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/message/MessageElement.java,v retrieving revision 1.71 retrieving revision 1.71.2.1 diff -u -r1.71 -r1.71.2.1 --- MessageElement.java 16 Jan 2002 16:25:42 -0000 1.71 +++ MessageElement.java 28 Jan 2002 06:43:04 -0000 1.71.2.1 @@ -57,12 +57,10 @@ import org.apache.axis.Constants; import org.apache.axis.MessageContext; -import org.apache.axis.configuration.NullProvider; import org.apache.axis.encoding.DeserializationContext; import org.apache.axis.encoding.Deserializer; -import org.apache.axis.encoding.SOAPTypeMappingRegistry; import org.apache.axis.encoding.SerializationContext; -import org.apache.axis.encoding.TypeMappingRegistry; +import org.apache.axis.encoding.SerializationContextImpl; import org.apache.axis.utils.Mapping; import org.apache.axis.utils.JavaUtils; import org.apache.axis.utils.XMLUtils; @@ -163,7 +161,7 @@ this.attributes = new AttributesImpl(); } else { this.attributes = new AttributesImpl(attributes); - String rootVal = attributes.getValue(Constants.URI_SOAP_ENC, Constants.ATTR_ROOT); + String rootVal = attributes.getValue(Constants.URI_CURRENT_SOAP_ENC, Constants.ATTR_ROOT); if (rootVal != null) _isRoot = rootVal.equals("1"); @@ -176,8 +174,8 @@ href = attributes.getValue(Constants.ATTR_HREF); // If there's an arrayType attribute, we can pretty well guess that we're an Array??? - if (attributes.getValue(Constants.URI_SOAP_ENC, Constants.ATTR_ARRAY_TYPE) != null) - typeQName = SOAPTypeMappingRegistry.SOAP_ARRAY; + if (attributes.getValue(Constants.URI_CURRENT_SOAP_ENC, Constants.ATTR_ARRAY_TYPE) != null) + typeQName = Constants.SOAP_ARRAY; } } @@ -313,14 +311,13 @@ if (context == null) throw new Exception(JavaUtils.getMessage("noContext00")); - TypeMappingRegistry tmr = context.getTypeMappingRegistry(); - Deserializer dser = tmr.getDeserializer(type); + Deserializer dser = context.getDeserializerForType(type); if (dser == null) throw new Exception(JavaUtils.getMessage("noDeser00", "" + type)); - context.pushElementHandler(new EnvelopeHandler(dser)); + context.pushElementHandler(new EnvelopeHandler((SOAPHandler)dser)); - publishToHandler(context); + publishToHandler((org.xml.sax.ContentHandler) context); return dser.getValue(); } @@ -419,9 +416,9 @@ if(context != null) { MessageContext msgContext = context.getMessageContext(); - serializeContext = new SerializationContext(writer, msgContext); + serializeContext = new SerializationContextImpl(writer, msgContext); } else { - serializeContext = new SerializationContext(writer); + serializeContext = new SerializationContextImpl(writer); } output(serializeContext); writer.close(); @@ -506,8 +503,8 @@ public String toString() { try { StringWriter writer = new StringWriter(); - SerializationContext serContext = new SerializationContext(writer, - null); + SerializationContext serContext = new SerializationContextImpl(writer, + null); serContext.setSendDecl(false); this.output(serContext); return( writer.toString() ); 1.29.2.1 +4 -5 xml-axis/java/src/org/apache/axis/message/RPCElement.java Index: RPCElement.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/message/RPCElement.java,v retrieving revision 1.29 retrieving revision 1.29.2.1 diff -u -r1.29 -r1.29.2.1 --- RPCElement.java 18 Jan 2002 17:45:26 -0000 1.29 +++ RPCElement.java 28 Jan 2002 06:43:04 -0000 1.29.2.1 @@ -115,7 +115,7 @@ needDeser = false; - publishToHandler(context); + publishToHandler((org.xml.sax.ContentHandler) context); } /** This gets the FIRST param whose name matches. @@ -167,13 +167,12 @@ { /* if (encodingStyle != null) { - QName qn = new QName(Constants.URI_SOAP_ENC, + QName qn = new QName(Constants.URI_CURRENT_SOAP_ENC, Constants.ATTR_ENCODING_STYLE); if (attributes == null) attributes = new AttributesImpl(); - - attributes.addAttribute(Constants.URI_SOAP_ENC, + attributes.addAttribute(Constants.URI_CURRENT_SOAP_ENC, Constants.ATTR_ENCODING_STYLE, context.qName2String(qn), "CDATA", @@ -181,7 +180,7 @@ } */ if (encodingStyle != null) { - setAttribute(Constants.URI_SOAP_ENC, + setAttribute(Constants.URI_CURRENT_SOAP_ENC, Constants.ATTR_ENCODING_STYLE, encodingStyle); } 1.22.2.1 +9 -7 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.22 retrieving revision 1.22.2.1 diff -u -r1.22 -r1.22.2.1 --- RPCHandler.java 4 Jan 2002 22:30:03 -0000 1.22 +++ RPCHandler.java 28 Jan 2002 06:43:04 -0000 1.22.2.1 @@ -67,7 +67,9 @@ import org.apache.axis.client.Call; import org.apache.axis.encoding.DeserializationContext; import org.apache.axis.encoding.Deserializer; -import org.apache.axis.encoding.TypeMappingRegistry; +import org.apache.axis.encoding.DeserializerImpl; +import org.apache.axis.encoding.TypeMapping; +import org.apache.axis.encoding.FieldTarget; import org.apache.axis.utils.AxisClassLoader; import org.apache.axis.utils.JavaUtils; import org.apache.axis.utils.cache.JavaClass; @@ -176,7 +178,7 @@ String isNil = attributes.getValue(Constants.URI_2001_SCHEMA_XSI,"nil"); if ( isNil != null && isNil.equals("true") ) - return( new Deserializer() ); + return( (SOAPHandler) new DeserializerImpl() ); // xsi:type always overrides everything else if (type == null) { @@ -206,7 +208,7 @@ if (type == null && defaultParamTypes!=null && params.size()<=defaultParamTypes.length) { - TypeMappingRegistry typeMap = context.getTypeMappingRegistry(); + TypeMapping typeMap = context.getTypeMapping(); int index = params.size()-1; if (index+1= 0) { - parmName = mName + "Result" + i; + if (rpcParams != null && rpcParams.size() > i) { + parmName = ((RPCParam)rpcParams.get(i)).getName(); + } else { + parmName = mName + "Result" + i; + } } else { parmName = mName + "Result"; } No revision No revision 1.8.2.1 +5 -0 xml-axis/java/src/org/apache/axis/server/server-config.wsdd Index: server-config.wsdd =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/server/server-config.wsdd,v retrieving revision 1.8 retrieving revision 1.8.2.1 diff -u -r1.8 -r1.8.2.1 --- server-config.wsdd 15 Jan 2002 17:57:03 -0000 1.8 +++ server-config.wsdd 28 Jan 2002 06:43:05 -0000 1.8.2.1 @@ -21,6 +21,11 @@ + + + + + No revision No revision 1.92.2.3 +71 -187 xml-axis/java/src/org/apache/axis/utils/Admin.java Index: Admin.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/utils/Admin.java,v retrieving revision 1.92.2.2 retrieving revision 1.92.2.3 diff -u -r1.92.2.2 -r1.92.2.3 --- Admin.java 25 Jan 2002 14:55:48 -0000 1.92.2.2 +++ Admin.java 28 Jan 2002 06:43:05 -0000 1.92.2.3 @@ -55,13 +55,7 @@ package org.apache.axis.utils ; -import org.apache.axis.AxisEngine; -import org.apache.axis.AxisFault; -import org.apache.axis.Chain; -import org.apache.axis.Constants; -import org.apache.axis.Handler; -import org.apache.axis.MessageContext; -import org.apache.axis.SimpleChain; +import org.apache.axis.*; import org.apache.axis.providers.java.RPCProvider; import org.apache.axis.providers.java.MsgProvider; import org.apache.axis.deployment.wsdd.*; @@ -70,6 +64,7 @@ import org.apache.axis.client.AxisClient; import org.apache.axis.configuration.FileProvider; import org.apache.axis.encoding.*; +import org.apache.axis.encoding.ser.*; import org.apache.axis.handlers.soap.SOAPService; import org.apache.axis.handlers.BasicHandler; import org.apache.axis.server.AxisServer; @@ -145,26 +140,25 @@ NodeList list = root.getElementsByTagName("beanMappings"); for (int i = 0; list != null && i < list.getLength(); i++) { Element el = (Element)list.item(i); - registerTypes(el, service, true, null); + registerTypes(el, service, true); } list = root.getElementsByTagName("typeMappings"); for (int i = 0; list != null && i < list.getLength(); i++) { Element el = (Element)list.item(i); - registerTypes(el, service, false, null); + registerTypes(el, service, false); } } private static void registerTypes(Element root, WSDDTypeMappingContainer container, - boolean isBean, - DeploymentRegistry registry) + boolean isBean) throws Exception { NodeList list = root.getChildNodes(); for (int i = 0; (list != null) && (i < list.getLength()); i++) { if (!(list.item(i) instanceof Element)) continue; - registerTypeMapping((Element)list.item(i), container, isBean, registry); + registerTypeMapping((Element)list.item(i), container, isBean); } } @@ -182,131 +176,18 @@ return( result ); } - /** Process an engine configuration file by deploying appropriate stuff - * into the specified AxisEngine, and then telling it to save itself - * when we're done. - * - * @param doc an XML document containing an Axis engine configuration - * @param engine the AxisEngine in which to deploy - * @exception Exception (should be DeploymentException?) - */ - public static void processEngineConfig(Document doc, AxisEngine engine) - throws Exception - { - Element el = doc.getDocumentElement(); - String namespace = el.getNamespaceURI(); - - // If this is WSDD, process it correctly. - if (namespace != null && namespace.equals(WSDDConstants.WSDD_NS)) { - processWSDD(engine, el); - return; - } - - if (!el.getTagName().equals("engineConfig")) - throw new Exception( - JavaUtils.getMessage("noEngineConfig00", el.getTagName())); - - NodeList nl = el.getElementsByTagName("handlers"); - deploy(nl, engine); - - nl = el.getElementsByTagName("services"); - deploy(nl, engine); - - nl = el.getElementsByTagName("transports"); - deploy(nl, engine); - - nl = el.getElementsByTagName("typeMappings"); - deploy(nl, engine); - - //engine.saveConfiguration(); - } - - private static final int - TYPE_UNKNOWN = 0, - TYPE_HANDLER = 1, - TYPE_CHAIN = 2, - TYPE_SERVICE = 3, - TYPE_TRANSPORT = 4, - TYPE_TYPEMAPPING = 5; - private static final Hashtable typeTable = new Hashtable(); - static { - typeTable.put("handler", new Integer(TYPE_HANDLER)); - typeTable.put("chain", new Integer(TYPE_CHAIN)); - typeTable.put("service", new Integer(TYPE_SERVICE)); - typeTable.put("transport", new Integer(TYPE_TRANSPORT)); - typeTable.put("typeMapping", new Integer(TYPE_TYPEMAPPING)); - } - private static int getType(String tagName) { - Integer i; - if ((i = (Integer)typeTable.get(tagName)) == null) - return TYPE_UNKNOWN; - return i.intValue(); - } - - /** Deploy a set of individual items. - * - * NOTE: as it stands this doesn't care about the relationship between - * these items and the enclosing tag. We shouldn't really allow - * deployment underneath the tag, for instance. Since this - * is going to mutate some more, this is the simple way to do it for now. - * - * @param nl a DOM NodeList of deployable items. - * @param engine the AxisEngine into which we deploy. - * @exception Exception (should be DeploymentException?) - */ - static void deploy(NodeList nl, AxisEngine engine) throws Exception - { - WSDDDocument wd = (WSDDDocument)engine.getDeploymentRegistry().getConfigDocument(); - WSDDDeployment dep = wd.getDeployment(); - - int lenI = nl.getLength(); - for (int i = 0; i < lenI; i++) { - Element el = (Element)nl.item(i); - - NodeList children = el.getChildNodes(); - int lenJ = children.getLength(); - for (int j = 0; j < lenJ; j++) { - if (!(children.item(j) instanceof Element)) continue; - - Element item = (Element)children.item(j); - - int type; - switch (type = getType(item.getTagName())) { - case TYPE_HANDLER: - registerHandler(item, engine); - break; - case TYPE_CHAIN: - registerChain(item, engine); - break; - case TYPE_SERVICE: - registerService(item, engine); - break; - case TYPE_TRANSPORT: - registerTransport(item, engine); - break; - case TYPE_TYPEMAPPING: - registerTypeMapping(item, dep, false, null); - break; - case TYPE_UNKNOWN: - // ignore it - break; - default: - throw new UnknownError(JavaUtils.getMessage( - "never00", - "org.apache.axis.utils.Admin", - "type = " + type)); - } - } - } - } - protected static Document processWSDD(AxisEngine engine, Element root) throws Exception { Document doc = null ; WSDDDocument wsddDoc = new WSDDDocument(root); - engine.getDeploymentRegistry().deploy(wsddDoc); + EngineConfiguration config = engine.getConfig(); + if (config instanceof FileProvider) { + FileProvider wsddProvider = (FileProvider)config; + WSDDDeployment deployment = wsddProvider.getDeployment(); + wsddDoc.getDeployment().deployToRegistry(deployment); + } engine.refreshGlobalOptions(); engine.saveConfiguration(); @@ -433,8 +314,14 @@ engine = engine.getClientEngine(); } - WSDDDocument wd = (WSDDDocument)engine.getDeploymentRegistry().getConfigDocument(); - WSDDDeployment dep = wd.getDeployment(); + WSDDDeployment dep = null; + try { + FileProvider config = (FileProvider)engine.getConfig(); + dep = config.getDeployment(); + } catch (Exception e) { + // This will catch NPEs and ClassCastExceptions, either of + // which means the engine isn't configurable. + } NodeList list = root.getChildNodes(); for ( int loop = 0 ; loop < list.getLength() ; loop++ ) { @@ -449,11 +336,11 @@ if ( action.equals( "undeploy" ) ) { if ( type.equals("service") ) { category.info( JavaUtils.getMessage("undeploy00", type + ": " + name) ); - engine.undeployService( name ); + dep.undeployService( new QName(null,name) ); } else if ( type.equals("handler") || type.equals("chain") ) { category.info( JavaUtils.getMessage("undeploy00", type + ": " + name) ); - engine.undeployHandler( name ); + dep.undeployHandler( new QName(null,name) ); } else throw new AxisFault( "Admin.error", @@ -463,25 +350,25 @@ } if ( type.equals( "handler" ) ) { - registerHandler(elem, engine); + registerHandler(elem, dep); } else if ( type.equals( "chain" ) ) { - registerChain(elem, engine); + registerChain(elem, dep); } else if ( type.equals( "service" ) ) { - registerService(elem, engine); + registerService(elem, dep, engine instanceof AxisServer); } else if (type.equals("transport")) { - registerTransport(elem, engine); + registerTransport(elem, dep); } // A streamlined means of deploying both a serializer and a deserializer // for a bean at the same time. else if ( type.equals( "beanMappings" ) ) { - registerTypes(elem, dep, true, engine.getDeploymentRegistry()); + registerTypes(elem, dep, true); } else if (type.equals("typeMappings")) { - registerTypes(elem, dep, false, engine.getDeploymentRegistry()); + registerTypes(elem, dep, false); } else throw new AxisFault( "Admin.error", JavaUtils.getMessage("unknownType01", action + ": " + type), @@ -514,13 +401,19 @@ throws AxisFault { StringWriter writer = new StringWriter(); - SerializationContext context = new SerializationContext(writer, null); + SerializationContext context = new SerializationContextImpl(writer, null); context.setPretty(true); try { - engine.getDeploymentRegistry().writeToContext(context); + FileProvider config = (FileProvider)engine.getConfig(); + WSDDDeployment deployment = config.getDeployment(); + deployment.writeToContext(context); } catch (Exception e) { - e.printStackTrace(); + // If the engine config isn't a FileProvider, or we have no + // engine config for some odd reason, we'll end up here. + + throw new AxisFault(JavaUtils.getMessage("noEngineWSDD")); } + try { writer.close(); return XMLUtils.newDocument(new InputSource(new StringReader(writer.getBuffer().toString()))); @@ -535,7 +428,8 @@ * @param elem the element * @param engine the AxisEngine in which to deploy */ - public static void registerChain(Element elem, AxisEngine engine) + public static void registerChain(Element elem, + WSDDDeployment deployment) throws Exception { Handler tmpH = null; @@ -560,9 +454,6 @@ getOptions( elem, options ); - WSDDDocument wsddDoc = (WSDDDocument)engine. - getDeploymentRegistry().getConfigDocument(); - WSDDChain chain = new WSDDChain(); chain.setName(name); chain.setOptionsHashtable(options); @@ -576,7 +467,7 @@ chain.addHandler(handler); } - engine.getDeploymentRegistry().deployHandler(chain); + deployment.deployHandler(chain); } } @@ -586,7 +477,9 @@ * @param elem the element * @param engine the AxisEngine in which to deploy */ - public static void registerService(Element elem, AxisEngine engine) + public static void registerService(Element elem, + WSDDDeployment deployment, + boolean isServer) throws Exception { String name = elem.getAttribute( "name" ); @@ -632,8 +525,8 @@ /** * Pivots only make sense on the server. */ - if (engine instanceof AxisServer) { - Handler pivotHandler = engine.getHandler(pivot); + if (isServer) { + Handler pivotHandler = deployment.getHandler(new QName("", pivot)); if (pivotHandler == null) throw new AxisFault(JavaUtils.getMessage("noPivot00", pivot)); Class pivotClass = pivotHandler.getClass(); @@ -665,49 +558,44 @@ throw AxisFault.makeFault(e); } - engine.getDeploymentRegistry().deployService(serv); + deployment.deployService(serv); } /** * Deploy a handler described in XML into an AxisEngine. * * @param elem the element - * @param engine the AxisEngine in which to deploy */ - public static void registerHandler(Element elem, AxisEngine engine) + public static void registerHandler(Element elem, + WSDDDeployment deployment) throws Exception { - try { - AxisClassLoader cl = AxisClassLoader.getClassLoader(); - String name = elem.getAttribute( "name" ); - Handler h = null; + AxisClassLoader cl = AxisClassLoader.getClassLoader(); + String name = elem.getAttribute( "name" ); - if ( name != null && name.equals("") ) name = null ; + WSDDHandler handler; - String cls = elem.getAttribute( "class" ); - if ( cls != null && cls.equals("") ) cls = null ; - category.info( JavaUtils.getMessage("deployHandler00", name) ); - - h = engine.getHandler( name ); - if ( h == null ) h = (Handler) cl.loadClass(cls).newInstance(); - getOptions( elem, h ); - engine.deployHandler( name, h ); - } catch (ClassNotFoundException e) { - throw AxisFault.makeFault(e); - } catch (InstantiationException e) { - throw AxisFault.makeFault(e); - } catch (IllegalAccessException e) { - throw AxisFault.makeFault(e); - } + if ( name != null && name.equals("") ) name = null ; + + String cls = elem.getAttribute( "class" ); + if ( cls != null && cls.equals("") ) cls = null ; + category.info( JavaUtils.getMessage("deployHandler00", name) ); + + handler = new WSDDHandler(); + + handler.setQName(new QName(null, name)); + getOptions( elem, handler.getParametersTable() ); + + deployment.deployHandler(handler); } /** * Deploy a transport described in XML into an AxisEngine. * * @param elem the element - * @param engine the AxisEngine in which to deploy */ - public static void registerTransport(Element elem, AxisEngine engine) + public static void registerTransport(Element elem, + WSDDDeployment deployment) throws Exception { String name = elem.getAttribute( "name" ); @@ -726,7 +614,6 @@ Vector reqNames = new Vector(); Vector respNames = new Vector(); - WSDDDocument wd = (WSDDDocument)engine.getDeploymentRegistry().getConfigDocument(); WSDDTransport transport = new WSDDTransport(); transport.setName(name); @@ -756,7 +643,7 @@ getOptions( elem, options ); transport.setOptionsHashtable(options); - engine.getDeploymentRegistry().deployTransport(transport); + deployment.deployTransport(transport); } /** @@ -767,8 +654,7 @@ */ private static void registerTypeMapping(Element elem, WSDDTypeMappingContainer container, - boolean isBean, - DeploymentRegistry registry) + boolean isBean) throws Exception { WSDDTypeMapping mapping = new WSDDTypeMapping(); @@ -806,8 +692,8 @@ // register both serializers and deserializers for this bean mapping.setQName(qn); - mapping.setSerializer(BeanSerializer.class); - mapping.setDeserializer(BeanSerializer.getFactory().getClass()); + mapping.setSerializer(BeanSerializerFactory.class); + mapping.setDeserializer(BeanDeserializerFactory.class); } else { String typeName = elem.getAttribute("type"); int idx = typeName.indexOf(':'); @@ -838,10 +724,8 @@ null, null); } } - - if (registry != null) { - WSDDDeployment.deployMappingToRegistry(mapping, registry); - } + + container.deployTypeMapping(mapping); } public static void main(String args[]) throws Exception { 1.21.2.1 +29 -0 xml-axis/java/src/org/apache/axis/utils/JavaUtils.java Index: JavaUtils.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/utils/JavaUtils.java,v retrieving revision 1.21 retrieving revision 1.21.2.1 diff -u -r1.21 -r1.21.2.1 --- JavaUtils.java 14 Jan 2002 21:27:14 -0000 1.21 +++ JavaUtils.java 28 Jan 2002 06:43:05 -0000 1.21.2.1 @@ -481,4 +481,33 @@ { public HolderException () {} }; + + + /** + * Determine if the class is a JAX-RPC enum class. + * An enumeration class is recognized by + * a getValue() method, a toString() method, a fromString(String) method + * a fromValue(type) method and the lack + * of a setValue(type) method + */ + public static boolean isEnumClass(Class cls) { + try { + java.lang.reflect.Method m = cls.getMethod("getValue", null); + java.lang.reflect.Method m2 = cls.getMethod("toString", null); + java.lang.reflect.Method m3 = cls.getMethod("fromString", + new Class[] {java.lang.String.class}); + + if (m != null && m2 != null && m3 != null && + cls.getMethod("fromValue", new Class[] {m.getReturnType()}) != null) { + try { + if (cls.getMethod("setValue", new Class[] {m.getReturnType()}) == null) + return true; + return false; + } catch (java.lang.NoSuchMethodException e) { + return true; // getValue & fromValue exist. setValue does not exist. Thus return true. + } + } + } catch (java.lang.NoSuchMethodException e) {} + return false; + } } 1.42.2.1 +5 -3 xml-axis/java/src/org/apache/axis/utils/resources.properties Index: resources.properties =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/utils/resources.properties,v retrieving revision 1.42 retrieving revision 1.42.2.1 diff -u -r1.42 -r1.42.2.1 --- resources.properties 16 Jan 2002 19:14:02 -0000 1.42 +++ resources.properties 28 Jan 2002 06:43:05 -0000 1.42.2.1 @@ -290,6 +290,8 @@ # NOTE: in noEngineConfig00, do not translate "engineConfig" noEngineConfig00=Wanted ''engineConfig'' element, got ''{0}'' +noEngineWSDD=Engine configuration is not present or not WSDD! + noHandler00=Cannot locate handler: {0} # NOTE: in noHandler01, do not translate "QName" @@ -593,7 +595,7 @@ deserPutValueDebug00=Put of deserialized value= {0} for id= {1} j2wemitter00=emitter j2wusage00=Usage: {0} -j2woptions00=Options: +j2woptions00=Options: j2wdetails00=Details:\n portType name= \n binding name= <--service value>SoapBinding\n service name= <--service value>Service\n port name= <--service value>\n address location= <--location value> j2wopthelp00=print this message and exit j2woptoutput00=output Wsdl filename @@ -610,11 +612,11 @@ j2woptfactory00=name of the Java2WSDLFactory class for extending WSDL generation functions j2woptimplClass00=optional class that contains implementation of methods in class-of-portType. The debug information in the class is used to obtain the method parameter names, which are used to set the WSDL part names. j2werror00=Error: {0} -j2wmodeerror=Error Unrecognized Mode: {0} Use All, Interface or Implementation. Continuing with All. +j2wmodeerror=Error Unrecognized Mode: {0} Use All, Interface or Implementation. Continuing with All. optionSkeletonDeploy00=(true or false) Indicate whether to deploy skeleton or implementation class. j2wMissingLocation00=The -l option must be specified if the full wsdl or the implementation wsdl is requested. invalidSolResp00={0} is a solicit-response style operation and is unsupported. invalidNotif00={0} is a notification style operation and is unsupported. -multipleBindings00=Error: Multiple bindings use the same portType, and I can not handle this case. Giving up in shame. +multipleBindings00=Warning: Multiple bindings use the same portType: {0}. Only one interface is currently generated, which may not be what you want. No revision No revision 1.9.2.1 +6 -6 xml-axis/java/src/org/apache/axis/wsdl/fromJava/Emitter.java Index: Emitter.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/fromJava/Emitter.java,v retrieving revision 1.9 retrieving revision 1.9.2.1 diff -u -r1.9 -r1.9.2.1 --- Emitter.java 18 Jan 2002 16:20:55 -0000 1.9 +++ Emitter.java 28 Jan 2002 06:43:05 -0000 1.9.2.1 @@ -68,8 +68,8 @@ import org.apache.axis.Constants; import org.apache.axis.MessageContext; -import org.apache.axis.encoding.SOAPTypeMappingRegistry; import org.apache.axis.encoding.TypeMappingRegistry; +import org.apache.axis.encoding.TypeMappingRegistryImpl; import org.apache.axis.utils.XMLUtils; import org.w3c.dom.Document; @@ -127,7 +127,7 @@ private String serviceName; private String targetService = null; private String description; - private TypeMappingRegistry reg; + private TypeMappingRegistry reg = null; private Namespaces namespaces; private ArrayList encodingList; @@ -365,10 +365,10 @@ } encodingList = new ArrayList(); - encodingList.add(Constants.URI_SOAP_ENC); + encodingList.add(Constants.URI_CURRENT_SOAP_ENC); if (reg == null) { - reg = new SOAPTypeMappingRegistry(); + reg = new TypeMappingRegistryImpl(); } if (intfNS == null) @@ -405,8 +405,8 @@ Constants.NSPREFIX_WSDL); def.addNamespace(Constants.NSPREFIX_SOAP_ENC, - Constants.URI_SOAP_ENC); - namespaces.putPrefix(Constants.URI_SOAP_ENC, + Constants.URI_CURRENT_SOAP_ENC); + namespaces.putPrefix(Constants.URI_CURRENT_SOAP_ENC, Constants.NSPREFIX_SOAP_ENC); def.addNamespace(Constants.NSPREFIX_SCHEMA_XSD, 1.10.2.1 +11 -9 xml-axis/java/src/org/apache/axis/wsdl/fromJava/Types.java Index: Types.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/fromJava/Types.java,v retrieving revision 1.10 retrieving revision 1.10.2.1 diff -u -r1.10 -r1.10.2.1 --- Types.java 4 Jan 2002 22:52:38 -0000 1.10 +++ Types.java 28 Jan 2002 06:43:05 -0000 1.10.2.1 @@ -57,8 +57,8 @@ package org.apache.axis.wsdl.fromJava; import org.apache.axis.Constants; -import org.apache.axis.encoding.SOAPTypeMappingRegistry; import org.apache.axis.encoding.TypeMappingRegistry; +import org.apache.axis.encoding.TypeMapping; import org.apache.axis.utils.XMLUtils; import org.w3c.dom.Attr; @@ -100,7 +100,7 @@ Definition def; Namespaces namespaces = null; - TypeMappingRegistry reg; + TypeMapping tm; String targetNamespace; Element wsdlTypesElem = null; HashMap schemaTypes = null; @@ -125,7 +125,9 @@ Java2WSDLFactory factory) { this.def = def; createDocumentFragment(); - this.reg = reg; + if (reg != null) { + tm = (TypeMapping) reg.getTypeMapping(Constants.URI_CURRENT_SOAP_ENC); + } this.namespaces = namespaces; this.targetNamespace = targetNamespace; schemaElementNames = new HashMap(); @@ -149,7 +151,7 @@ if (type.getName().equals("void")) return null; if (isSimpleType(type)) { - javax.xml.rpc.namespace.QName qName = reg.getTypeQName(type); + javax.xml.rpc.namespace.QName qName = getTypeQName(type); return getWsdlQName(qName); }else { if (wsdlTypesElem == null) @@ -200,11 +202,11 @@ // Check for Byte[], byte[] and Object[] if (componentType == java.lang.Byte.class) { - qName = new javax.xml.rpc.namespace.QName(Constants.URI_SOAP_ENC, "base64"); + qName = new javax.xml.rpc.namespace.QName(Constants.URI_CURRENT_SOAP_ENC, "base64"); } else if (componentType == java.lang.Byte.TYPE) { qName = new javax.xml.rpc.namespace.QName(Constants.URI_CURRENT_SCHEMA_XSD, "base64Binary"); } else if (componentType == java.lang.Object.class) { - qName = new javax.xml.rpc.namespace.QName(Constants.URI_SOAP_ENC, "Array"); + qName = new javax.xml.rpc.namespace.QName(Constants.URI_CURRENT_SOAP_ENC, "Array"); } else { // Construct ArrayOf in targetNamespace javax.xml.rpc.namespace.QName cqName = getTypeQName(componentType); @@ -215,7 +217,7 @@ } } else { // Get the QName from the registry, or create our own. - qName = reg.getTypeQName(type); + qName = tm.getTypeQName(type); if (qName == null) { String pkg = getPackageNameFromFullName(type.getName()); String lcl = getLocalNameFromFullName(type.getName()); @@ -306,9 +308,9 @@ // Quick return if schema type if (isSimpleSchemaType(type)) - return Constants.NSPREFIX_SCHEMA_XSD + ":" + reg.getTypeQName(type).getLocalPart(); + return Constants.NSPREFIX_SCHEMA_XSD + ":" + getTypeQName(type).getLocalPart(); if (isSimpleSoapEncodingType(type)) - return Constants.NSPREFIX_SOAP_ENC + ":" + reg.getTypeQName(type).getLocalPart(); + return Constants.NSPREFIX_SOAP_ENC + ":" + getTypeQName(type).getLocalPart(); // Write the namespace QName qName = writeTypeNamespace(type); 1.5.2.1 +1 -0 xml-axis/java/src/org/apache/axis/wsdl/fromJava/todo.txt Index: todo.txt =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/fromJava/todo.txt,v retrieving revision 1.5 retrieving revision 1.5.2.1 diff -u -r1.5 -r1.5.2.1 --- todo.txt 3 Jan 2002 20:33:43 -0000 1.5 +++ todo.txt 28 Jan 2002 06:43:05 -0000 1.5.2.1 @@ -14,6 +14,7 @@ * Make PackageName=Namespace configurable using a properties file * Generate JAX-RPC style stub, skeleton and optionally refactor exporting class as the impl class *** (see Note 1) *** +* Need to generate information. Group 2 ------- No revision No revision 1.1.2.1 +23 -0 xml-axis/java/src/org/apache/axis/wsdl/toJava/BindingEntry.java Index: BindingEntry.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/BindingEntry.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 --- BindingEntry.java 11 Dec 2001 15:08:47 -0000 1.1 +++ BindingEntry.java 28 Jan 2002 06:43:05 -0000 1.1.2.1 @@ -85,6 +85,8 @@ private int bindingType; private int bindingStyle; private HashMap attributes; + private HashMap parameters = new HashMap (); + /** * Construct a BindingEntry from a WSDL4J Binding object and the additional binding info: @@ -98,6 +100,27 @@ this.bindingStyle = bindingStyle; this.attributes = attributes; } // ctor + + /** + * Get the Parameters object for the given operation. + */ + public Parameters getParameters(String operationName) { + return (Parameters) parameters.get(operationName); + } // getParameters + + /** + * Get all of the parameters for all operations. + */ + public HashMap getParameters() { + return parameters; + } // getParameters + + /** + * Set the parameters for all operations + */ + public void setParameters(HashMap parameters) { + this.parameters = parameters; + } /** * Get this entry's WSDL4J Binding object. 1.8.2.1 +7 -3 xml-axis/java/src/org/apache/axis/wsdl/toJava/Emitter.java Index: Emitter.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/Emitter.java,v retrieving revision 1.8 retrieving revision 1.8.2.1 diff -u -r1.8 -r1.8.2.1 --- Emitter.java 23 Jan 2002 15:45:06 -0000 1.8 +++ Emitter.java 28 Jan 2002 06:43:05 -0000 1.8.2.1 @@ -124,6 +124,7 @@ this.writerFactory = writerFactory; } // ctor + public SymbolTable getSymbolTable() { return symbolTable;} /** * Call this method if you have a uri for the WSDL document * @param String wsdlURI the location of the WSDL file. @@ -133,10 +134,12 @@ System.out.println(JavaUtils.getMessage("parsing00", uri)); // calculate baseURI so that imported relative URI's work + int lastSeparator = uri.lastIndexOf(File.separatorChar); int lastSlash = uri.lastIndexOf('/'); + int index = (lastSlash > lastSeparator) ? lastSlash : lastSeparator; String baseURI = null; - if (lastSlash > 0) { - baseURI = uri.substring(0, lastSlash + 1); + if (index > 0) { + baseURI = uri.substring(0, index + 1); } emit(baseURI, XMLUtils.newDocument(uri)); } // emit @@ -148,7 +151,8 @@ */ public void emit(String context, Document doc) throws IOException, WSDLException { WSDLReader reader = WSDLFactory.newInstance().newWSDLReader(); - reader.setFeature("verbose", bVerbose); + // The verbose option is no longer supported. + //reader.setFeature("verbose", bVerbose); def = reader.readWSDL(context, doc); this.doc = doc; namespaces = new Namespaces(outputDir); 1.1.2.1 +14 -0 xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaBindingWriter.java Index: JavaBindingWriter.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaBindingWriter.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 --- JavaBindingWriter.java 11 Dec 2001 15:08:47 -0000 1.1 +++ JavaBindingWriter.java 28 Jan 2002 06:43:05 -0000 1.1.2.1 @@ -71,6 +71,7 @@ Writer stubWriter = null; Writer skelWriter = null; Writer implWriter = null; + Writer interfaceWriter = null; /** * Constructor. @@ -79,9 +80,19 @@ Emitter emitter, Binding binding, SymbolTable symbolTable) { + BindingEntry bEntry = symbolTable.getBindingEntry(binding.getQName()); if (bEntry.isReferenced()) { + // Interface writer + PortTypeEntry ptEntry = + symbolTable.getPortTypeEntry(binding.getPortType().getQName()); + interfaceWriter = + new JavaInterfaceWriter(emitter, ptEntry, bEntry, symbolTable); + + // Stub writer stubWriter = new JavaStubWriter(emitter, bEntry, symbolTable); + + // Skeleton and Impl writers if (emitter.bEmitSkeleton) { skelWriter = new JavaSkelWriter(emitter, bEntry, symbolTable); String fileName = Utils.getJavaLocalName(bEntry.getName()) @@ -106,6 +117,9 @@ * Write all the binding bindnigs: stub, skeleton, and impl. */ public void write() throws IOException { + if (interfaceWriter != null) { + interfaceWriter.write(); + } if (stubWriter != null) { stubWriter.write(); } 1.10.2.1 +1 -0 xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaDeployWriter.java Index: JavaDeployWriter.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaDeployWriter.java,v retrieving revision 1.10 retrieving revision 1.10.2.1 diff -u -r1.10 -r1.10.2.1 --- JavaDeployWriter.java 18 Jan 2002 20:11:36 -0000 1.10 +++ JavaDeployWriter.java 28 Jan 2002 06:43:05 -0000 1.10.2.1 @@ -148,6 +148,7 @@ for (int i = 0; i < types.size(); ++i) { TypeEntry type = (TypeEntry) types.elementAt(i); if (type.getBaseType() == null && type.isReferenced() + && !type.isOnlyLiteralReferenced() && !type.getName().endsWith("[]")) { pw.println(" String soapAction = ""; 1.19.2.1 +20 -22 xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaStubWriter.java Index: JavaStubWriter.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaStubWriter.java,v retrieving revision 1.19 retrieving revision 1.19.2.1 diff -u -r1.19 -r1.19.2.1 --- JavaStubWriter.java 18 Jan 2002 21:05:46 -0000 1.19 +++ JavaStubWriter.java 28 Jan 2002 06:43:05 -0000 1.19.2.1 @@ -141,7 +141,7 @@ if (types.size() > 0) { pw.println(" private java.util.Vector cachedSerClasses = new java.util.Vector();"); pw.println(" private java.util.Vector cachedSerQNames = new java.util.Vector();"); - pw.println(" private java.util.Vector cachedSerializers = new java.util.Vector();"); + pw.println(" private java.util.Vector cachedSerFactories = new java.util.Vector();"); pw.println(" private java.util.Vector cachedDeserFactories = new java.util.Vector();"); } pw.println(); @@ -240,17 +240,15 @@ pw.println(" call.setProperty(key, cachedProperties.get(key));"); pw.println(" }"); if (types.size() > 0) { - pw.println(" for (int i = 0; i < cachedSerializers.size(); ++i) {"); + pw.println(" for (int i = 0; i < cachedSerFactories.size(); ++i) {"); pw.println(" Class cls = (Class) cachedSerClasses.get(i);"); pw.println(" javax.xml.rpc.namespace.QName qname ="); pw.println(" (javax.xml.rpc.namespace.QName) cachedSerQNames.get(i);"); - pw.println(" org.apache.axis.encoding.Serializer ser ="); - pw.println(" (org.apache.axis.encoding.Serializer) cachedSerializers.get(i);"); - pw.println(" org.apache.axis.encoding.DeserializerFactory deserFac ="); - pw.println(" (org.apache.axis.encoding.DeserializerFactory)"); + pw.println(" Class sf = (Class)"); + pw.println(" cachedSerFactories.get(i);"); + pw.println(" Class df = (Class)"); pw.println(" cachedDeserFactories.get(i);"); - pw.println(" call.addSerializer(cls, qname, ser);"); - pw.println(" call.addDeserializerFactory(qname, cls, deserFac);"); + pw.println(" call.registerTypeMapping(cls, qname, sf, df, false);"); pw.println(" }"); } pw.println(" return call;"); @@ -266,7 +264,7 @@ for (int i = 0; i < operations.size(); ++i) { BindingOperation operation = (BindingOperation) operations.get(i); Parameters parameters = - ptEntry.getParameters(operation.getOperation().getName()); + bEntry.getParameters(operation.getOperation().getName()); // Get the soapAction from the String soapAction = ""; @@ -336,14 +334,12 @@ HashSet types = new HashSet(); HashSet firstPassTypes = new HashSet(); - PortTypeEntry pe = symbolTable.getPortTypeEntry(portType.getQName()); - // Get all the types from all the operations List operations = portType.getOperations(); for (int i = 0; i < operations.size(); ++i) { Operation op = (Operation) operations.get(i); - firstPassTypes.addAll(getTypesInOperation(op, pe)); + firstPassTypes.addAll(getTypesInOperation(op)); } // Extract those types which are complex types. @@ -365,11 +361,11 @@ * This method returns a set of all the TypeEntry in a given Operation. * The elements of the returned HashSet are TypeEntry. */ - private HashSet getTypesInOperation(Operation operation, PortTypeEntry portEntry) { + private HashSet getTypesInOperation(Operation operation) { HashSet types = new HashSet(); Vector v = new Vector(); - Parameters params = portEntry.getParameters(operation.getName()); + Parameters params = bEntry.getParameters(operation.getName()); // Loop over parameter types for this operation for (int i=0; i < params.list.size(); i++) { @@ -434,19 +430,21 @@ } if ( firstSer ) { pw.println(" Class cls;" ); - pw.println(" org.apache.axis.encoding.Serializer ser;"); - pw.println(" org.apache.axis.encoding.DeserializerFactory deserFac;"); + pw.println(" javax.xml.rpc.namespace.QName qName;" ); + pw.println(" Class sf = org.apache.axis.encoding.ser.BeanSerializerFactory.class;"); + pw.println(" Class df = org.apache.axis.encoding.ser.BeanDeserializerFactory.class;"); } firstSer = false ; QName qname = type.getQName(); - pw.println(" cachedSerQNames.add(new javax.xml.rpc.namespace.QName(\"" - + qname.getNamespaceURI() + "\", \"" + qname.getLocalPart() - + "\"));"); + pw.println(" qName = new javax.xml.rpc.namespace.QName(\"" + + qname.getNamespaceURI() + "\", \"" + qname.getLocalPart() + + "\");"); + pw.println(" cachedSerQNames.add(qName);"); pw.println(" cls = " + type.getName() + ".class;"); pw.println(" cachedSerClasses.add(cls);"); - pw.println(" cachedSerializers.add(new org.apache.axis.encoding.BeanSerializer(cls));"); - pw.println(" cachedDeserFactories.add(org.apache.axis.encoding.BeanSerializer.getFactory());"); + pw.println(" cachedSerFactories.add(sf);"); + pw.println(" cachedDeserFactories.add(df);"); pw.println(); } // writeSerializationInit @@ -520,7 +518,7 @@ // turn off multirefs pw.println(" call.setProperty(org.apache.axis.AxisEngine.PROP_DOMULTIREFS, Boolean.FALSE);"); // turn off XSI types - pw.println(" call.setProperty(org.apache.axis.AxisEngine.PROP_SEND_XSI, Boolean.FALSE);"); + pw.println(" call.setProperty(org.apache.axis.client.Call.SEND_TYPE_ATTR, Boolean.FALSE);"); } // Operation name 1.9.2.1 +16 -24 xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaTestCaseWriter.java Index: JavaTestCaseWriter.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaTestCaseWriter.java,v retrieving revision 1.9 retrieving revision 1.9.2.1 diff -u -r1.9 -r1.9.2.1 --- JavaTestCaseWriter.java 17 Jan 2002 16:18:28 -0000 1.9 +++ JavaTestCaseWriter.java 28 Jan 2002 06:43:05 -0000 1.9.2.1 @@ -153,28 +153,35 @@ pw.println(" public void test" + portName + "() {"); pw.print(" "); pw.print(bindingType); - pw.print(" binding = new "); + pw.println(" binding;"); + pw.println(" try {"); + pw.print(" binding = new "); pw.print(this.className.substring(0, this.className.length() - "TestCase".length())); pw.print("().get"); pw.print(portName); pw.println("();"); + pw.println(" }"); + pw.println(" catch (javax.xml.rpc.JAXRPCException jre) {"); + pw.print(" "); + pw.println("throw new junit.framework.AssertionFailedError(\"JAX-RPC Exception caught: \" + jre);"); + pw.println(" }"); pw.println(" assertTrue(\"" + JavaUtils.getMessage("null00", "binding") + "\", binding != null);"); - this.writePortTestCode(portType); + this.writePortTestCode(portType, bEntry); pw.println(" }"); } // writeServiceTestCode - private final void writePortTestCode(PortType port) throws IOException { + private final void writePortTestCode(PortType port, BindingEntry bEntry) throws IOException { PortTypeEntry ptEntry = symbolTable.getPortTypeEntry(port.getQName()); Iterator ops = port.getOperations().iterator(); while (ops.hasNext()) { Operation op = (Operation) ops.next(); OperationType type = op.getStyle(); - Parameters params = ptEntry.getParameters(op.getName()); + Parameters params = bEntry.getParameters(op.getName()); // These operation types are not supported. The signature // will be a string stating that fact. @@ -290,22 +297,7 @@ pw.println(");"); -/* I'm not sure why we'd do this... - if ( !"void".equals(params.returnType) ) { - pw.print(" "); - - if ( this.emitter.isPrimitiveType( params.returnType ) ) { - if ( "boolean".equals( params.returnType ) ) { - pw.println("assertTrue(\"Value is still false\", value != false);"); - } else { - pw.println("assertTrue(\"Value is still -3\", value != -3);"); - } - } else { - pw.println("assertTrue(\"Value is null\", value != null);"); - } - } -*/ - pw.print(" }"); + pw.println(" }"); Map faultMap = op.getFaults(); @@ -317,18 +309,18 @@ count++; Fault f = (Fault) i.next(); String namespace = port.getQName().getNamespaceURI(); - pw.print(" catch ("); + pw.print(" catch ("); pw.print(Utils.getFullExceptionName( f, symbolTable, namespace)); pw.println(" e" + count + ") {"); pw.print(" "); pw.println("throw new junit.framework.AssertionFailedError(\"" + f.getName() + " Exception caught: \" + e" + count + ");"); - pw.print(" }"); + pw.println(" }"); } } - pw.println(" catch (java.rmi.RemoteException re) {"); + pw.println(" catch (java.rmi.RemoteException re) {"); pw.print(" "); - pw.println("throw new junit.framework.AssertionFailedError(\"Remote Exception caught: \" + re );"); + pw.println("throw new junit.framework.AssertionFailedError(\"Remote Exception caught: \" + re);"); pw.println(" }"); } } // writePortTestCode 1.3.2.1 +1 -1 xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaTypeWriter.java Index: JavaTypeWriter.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaTypeWriter.java,v retrieving revision 1.3 retrieving revision 1.3.2.1 diff -u -r1.3 -r1.3.2.1 --- JavaTypeWriter.java 13 Dec 2001 17:33:17 -0000 1.3 +++ JavaTypeWriter.java 28 Jan 2002 06:43:05 -0000 1.3.2.1 @@ -82,7 +82,7 @@ Emitter emitter, TypeEntry type, SymbolTable symbolTable) { - if (type.isReferenced()) { + if (type.isReferenced() && !type.isOnlyLiteralReferenced()) { // Determine what sort of type this is and instantiate the appropriate Writer. Node node = type.getNode(); 1.7.2.1 +16 -17 xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaWriterFactory.java Index: JavaWriterFactory.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaWriterFactory.java,v retrieving revision 1.7 retrieving revision 1.7.2.1 diff -u -r1.7 -r1.7.2.1 --- JavaWriterFactory.java 15 Jan 2002 16:00:45 -0000 1.7 +++ JavaWriterFactory.java 28 Jan 2002 06:43:05 -0000 1.7.2.1 @@ -118,7 +118,7 @@ * Return Wsdl2java's JavaPortTypeWriter object. */ public Writer getWriter(PortType portType, SymbolTable symbolTable) { - return new JavaPortTypeWriter(emitter, portType, symbolTable); + return new NoopWriter(); } // getWriter /** @@ -361,21 +361,18 @@ Vector v = (Vector) it.next(); for (int i = 0; i < v.size(); ++i) { SymTabEntry entry = (SymTabEntry) v.elementAt(i); - if (entry instanceof PortTypeEntry) { - PortTypeEntry ptEntry = (PortTypeEntry) entry; + if (entry instanceof BindingEntry) { + BindingEntry bEntry = (BindingEntry) entry; + Binding binding = bEntry.getBinding(); + PortTypeEntry ptEntry = + symbolTable.getPortTypeEntry(binding.getPortType().getQName()); PortType portType = ptEntry.getPortType(); - // Remove Duplicates - happens with only a few WSDL's. No idea why!!! - // (like http://www.xmethods.net/tmodels/InteropTest.wsdl) - // TODO: Remove this patch... - // NOTE from RJB: this is a WSDL4J bug and the WSDL4J guys have been - // notified. - Iterator operations = - new HashSet(portType.getOperations()).iterator(); + Iterator operations = portType.getOperations().iterator(); while(operations.hasNext()) { Operation operation = (Operation) operations.next(); OperationType type = operation.getStyle(); String name = operation.getName(); - Parameters parameters = ptEntry.getParameters(name); + Parameters parameters = bEntry.getParameters(name); if (type == OperationType.SOLICIT_RESPONSE) { parameters.signature = " // " + JavaUtils.getMessage( "invalidSolResp00", name); @@ -443,18 +440,20 @@ while (it.hasNext()) { Vector v = (Vector) it.next(); for (int i = 0; i < v.size(); ++i) { - if (v.get(i) instanceof PortTypeEntry) { - - // If entry is a portTypeEntry, look at all the Parameters - PortTypeEntry ptEntry = (PortTypeEntry) v.get(i); + if (v.get(i) instanceof BindingEntry) { + // If entry is a BindingEntry, look at all the Parameters + // in its portType + BindingEntry bEntry = (BindingEntry) v.get(i); + PortTypeEntry ptEntry = + symbolTable.getPortTypeEntry(bEntry.getBinding().getPortType().getQName()); Iterator operations = - ptEntry.getParameters().values().iterator(); + bEntry.getParameters().values().iterator(); while (operations.hasNext()) { Parameters parms = (Parameters) operations.next(); for (int j = 0; j < parms.list.size(); ++j) { Parameter p = (Parameter)parms.list.get(j); - + // If the given parameter is an inout or out parameter, then // set a HOLDER_IS_NEEDED flag using the dynamicVar design. if (p.mode != Parameter.IN) { 1.1.2.1 +1 -16 xml-axis/java/src/org/apache/axis/wsdl/toJava/PortTypeEntry.java Index: PortTypeEntry.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/PortTypeEntry.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 --- PortTypeEntry.java 11 Dec 2001 15:08:47 -0000 1.1 +++ PortTypeEntry.java 28 Jan 2002 06:43:05 -0000 1.1.2.1 @@ -67,16 +67,14 @@ */ public class PortTypeEntry extends SymTabEntry { private PortType portType; - private HashMap parameters = new HashMap (); /** * Construct a PortTypeEntry from a WSDL4J PortType object and a HashMap of Parameters objects, * keyed off of the operation name. */ - public PortTypeEntry(PortType portType, HashMap parameters) { + public PortTypeEntry(PortType portType) { super(portType.getQName()); this.portType = portType; - this.parameters = parameters; } // ctor /** @@ -86,18 +84,5 @@ return portType; } // getPortType - /** - * Get the Parameters object for the given operation. - */ - public Parameters getParameters(String operationName) { - return (Parameters) parameters.get(operationName); - } // getParameters - - /** - * Get all of the parameters for all operations. - */ - public HashMap getParameters() { - return parameters; - } // getParameters } // class PortTypeEntry 1.14.2.1 +96 -71 xml-axis/java/src/org/apache/axis/wsdl/toJava/SymbolTable.java Index: SymbolTable.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/SymbolTable.java,v retrieving revision 1.14 retrieving revision 1.14.2.1 diff -u -r1.14 -r1.14.2.1 --- SymbolTable.java 18 Jan 2002 21:05:46 -0000 1.14 +++ SymbolTable.java 28 Jan 2002 06:43:05 -0000 1.14.2.1 @@ -306,6 +306,7 @@ populate(contextURL, def, doc); setReferences(def, doc); checkForUndefined(); + populateParameters(); } // add /** @@ -404,11 +405,8 @@ } } populateMessages(def); - // XXX binding must be before portType so we collect use info. - // XXX This will change when we generate parameters after the symbol - // XXX table is populated. - populateBindings(def); populatePortTypes(def); + populateBindings(def); populateServices(def); } } // populate @@ -745,35 +743,53 @@ // that didn't contain a portType, merely a binding that referred // to a non-existent port type. Don't bother with it. if (!portType.isUndefined()) { - HashMap parameters = new HashMap(); - - // Remove Duplicates - happens with only a few WSDL's. No idea why!!! - // (like http://www.xmethods.net/tmodels/InteropTest.wsdl) - // TODO: Remove this patch... - // NOTE from RJB: this is a WSDL4J bug and the WSDL4J guys have been notified. - Iterator operations = (new HashSet(portType.getOperations())).iterator(); - - while(operations.hasNext()) { - Operation operation = (Operation) operations.next(); - String namespace = portType.getQName().getNamespaceURI(); - Parameters parms = parameters(operation, - namespace, - getBindingEntryForPortType(def, portType)); - parameters.put(operation.getName(), parms); - } - PortTypeEntry ptEntry = new PortTypeEntry(portType, parameters); + PortTypeEntry ptEntry = new PortTypeEntry(portType); symbolTablePut(ptEntry); } } } // populatePortTypes /** + * Create the parameters and store them in the bindingEntry. + */ + private void populateParameters() throws IOException { + Iterator it = symbolTable.values().iterator(); + while (it.hasNext()) { + Vector v = (Vector) it.next(); + for (int i = 0; i < v.size(); ++i) { + if (v.get(i) instanceof BindingEntry) { + BindingEntry bEntry = (BindingEntry) v.get(i); + + Binding binding = bEntry.getBinding(); + PortType portType = binding.getPortType(); + + HashMap parameters = new HashMap(); + Iterator operations = portType.getOperations().iterator(); + + // get parameters + while(operations.hasNext()) { + Operation operation = (Operation) operations.next(); + String namespace = portType.getQName().getNamespaceURI(); + Parameters parms = getOperationParameters(operation, + namespace, + bEntry); + parameters.put(operation.getName(), parms); + } + bEntry.setParameters(parameters); + } + } + } + } // populate Parameters + + /** * For the given operation, this method returns the parameter info conveniently collated. * There is a bit of processing that is needed to write the interface, stub, and skeleton. * Rather than do that processing 3 times, it is done once, here, and stored in the * Parameters object. */ - private Parameters parameters(Operation operation, String namespace, BindingEntry bindingEntry) throws IOException { + private Parameters getOperationParameters(Operation operation, + String namespace, + BindingEntry bindingEntry) throws IOException { Parameters parameters = new Parameters(); // The input and output Vectors, when filled in, will be of the form: @@ -966,19 +982,23 @@ // Get the Element Element e = getElement((elementName)); + Node node = getTypeEntry(elementName, true).getNode(); + + // Check if this element is of the form: + // + QName type = Utils.getNodeTypeRefQName(e.getNode(), "type"); + if (type != null) + node = getTypeEntry(type, false).getNode(); // Get the nested type entries. Vector vTypes = SchemaUtils.getComplexElementTypesAndNames( - getTypeEntry(elementName, true).getNode(), + //getTypeEntry(elementName, true).getNode(), + node, this); if (vTypes != null) { // add the elements in this list v.addAll(vTypes); - // turn off generation of the element type - // XXX is there a better way to do this? - symbolTable.remove(elementName); - types.remove(e); } else { // XXX - This should be a SOAPElement/SOAPBodyElement v.add(getElement(elementName)); @@ -1130,7 +1150,7 @@ if (stuff.isEmpty()) { for (int i = 0; i < types.size(); ++i) { TypeEntry type = (TypeEntry) types.get(i); - setTypeReferences(type, doc); + setTypeReferences(type, doc, false); } } else { @@ -1139,7 +1159,7 @@ Message message = (Message) i.next(); MessageEntry mEntry = getMessageEntry(message.getQName()); - setMessageReferences(mEntry, def, doc); + setMessageReferences(mEntry, def, doc, false); } } } @@ -1149,7 +1169,7 @@ PortType portType = (PortType) i.next(); PortTypeEntry ptEntry = getPortTypeEntry(portType.getQName()); - setPortTypeReferences(ptEntry, def, doc); + setPortTypeReferences(ptEntry, null, def, doc); } } } @@ -1172,7 +1192,21 @@ } } // setReferences - private void setTypeReferences(TypeEntry entry, Document doc) { + private void setTypeReferences(TypeEntry entry, Document doc, + boolean literal) { + + // If this type is ONLY referenced from a literal usage in a binding, + // then isOnlyLiteralReferenced should return true. + if (!entry.isReferenced() && literal) { + entry.setOnlyLiteralReference(true); + } + // If this type was previously only referenced as a literal type, + // but now it is referenced in a non-literal manner, turn off the + // onlyLiteralReference flag. + else if (entry.isOnlyLiteralReferenced() && !literal) { + entry.setOnlyLiteralReference(false); + } + // If we don't want to emit stuff from imported files, only set the // isReferenced flag if this entry exists in the immediate WSDL file. Node node = entry.getNode(); @@ -1184,7 +1218,8 @@ if (referentName != null) { TypeEntry referent = getTypeEntry(referentName, forElement.value); if (referent != null) { - setTypeReferences(referent, doc); + //setTypeReferences(referent, doc, literal); + setTypeReferences(referent, doc, false); } } } @@ -1195,7 +1230,8 @@ while (it.hasNext()) { TypeEntry nestedType = (TypeEntry) it.next(); if (!nestedType.isReferenced()) { - setTypeReferences(nestedType, doc); + //setTypeReferences(nestedType, doc, literal); + setTypeReferences(nestedType, doc, false); } } } // setTypeReferences @@ -1204,7 +1240,7 @@ * Set the isReferenced flag to true on all SymTabEntries that the given Meesage refers to. */ private void setMessageReferences( - MessageEntry entry, Definition def, Document doc) { + MessageEntry entry, Definition def, Document doc, boolean literal) { // If we don't want to emit stuff from imported files, only set the // isReferenced flag if this entry exists in the immediate WSDL file. Message message = entry.getMessage(); @@ -1227,11 +1263,16 @@ Part part = (Part) parts.next(); TypeEntry type = getType(part.getTypeName()); if (type != null) { - setTypeReferences(type, doc); + setTypeReferences(type, doc, literal); } type = getElement(part.getElementName()); if (type != null) { - setTypeReferences(type, doc); + setTypeReferences(type, doc, literal); + //QName ref = Utils.getNodeTypeRefQName(type.getNode(), "type"); + TypeEntry refType = type.getRefType(); + if (refType != null) { + setTypeReferences(refType, doc, literal); + } } } } // setMessageReference @@ -1240,7 +1281,8 @@ * Set the isReferenced flag to true on all SymTabEntries that the given PortType refers to. */ private void setPortTypeReferences( - PortTypeEntry entry, Definition def, Document doc) { + PortTypeEntry entry, BindingEntry bEntry, + Definition def, Document doc) { // If we don't want to emit stuff from imported files, only set the // isReferenced flag if this entry exists in the immediate WSDL file. PortType portType = entry.getPortType(); @@ -1264,26 +1306,37 @@ while (operations.hasNext()) { Operation operation = (Operation) operations.next(); - // Query the input message Input input = operation.getInput(); + Output output = operation.getOutput(); + + // Find out if this reference is a literal reference or not. + boolean literalInput = false; + boolean literalOutput = false; + if (bEntry != null) { + literalInput = bEntry.getInputBodyType(operation) == + BindingEntry.USE_LITERAL; + literalOutput = bEntry.getOutputBodyType(operation) == + BindingEntry.USE_LITERAL; + } + + // Query the input message if (input != null) { Message message = input.getMessage(); if (message != null) { MessageEntry mEntry = getMessageEntry(message.getQName()); if (mEntry != null) { - setMessageReferences(mEntry, def, doc); + setMessageReferences(mEntry, def, doc, literalInput); } } } // Query the output message - Output output = operation.getOutput(); if (output != null) { Message message = output.getMessage(); if (message != null) { MessageEntry mEntry = getMessageEntry(message.getQName()); if (mEntry != null) { - setMessageReferences(mEntry, def, doc); + setMessageReferences(mEntry, def, doc, literalOutput); } } } @@ -1296,7 +1349,7 @@ if (message != null) { MessageEntry mEntry = getMessageEntry(message.getQName()); if (mEntry != null) { - setMessageReferences(mEntry, def, doc); + setMessageReferences(mEntry, def, doc, false); } } } @@ -1328,7 +1381,7 @@ PortType portType = binding.getPortType(); PortTypeEntry ptEntry = getPortTypeEntry(portType.getQName()); if (ptEntry != null) { - setPortTypeReferences(ptEntry, def, doc); + setPortTypeReferences(ptEntry, entry, def, doc); } } // setBindingReferences @@ -1447,33 +1500,5 @@ JavaUtils.getMessage("alreadyExists00", "" + name)); } } // symbolTablePut - - /** - * Utility function to get the BindingEntry for the given portType. - * Does a reverse lookup of the portType in all the bindings. - */ - public BindingEntry getBindingEntryForPortType(Definition def, PortType port) throws IOException { - BindingEntry b = null; - Iterator i = def.getBindings().values().iterator(); - while (i.hasNext()) { - Binding binding = ((Binding) i.next()); - QName bindingPort = binding.getPortType().getQName(); - if (bindingPort.equals(port.getQName())) { - if (b != null) { - // XXX - if more than one binding matches the portType - // we can't do the right thing since interfaces are generated - // from portTypes and the literal/encoded switch is in the - // binding. - throw new IOException(JavaUtils.getMessage("multipleBindings00")); - } - b = getBindingEntry(binding.getQName()); - } - } - // DEBUG -// if ( b == null) { -// System.out.println("Lookup: can't find binding for portType " + port.getQName()); -// } - return b; - } } // class SymbolTable 1.5.2.1 +23 -0 xml-axis/java/src/org/apache/axis/wsdl/toJava/TypeEntry.java Index: TypeEntry.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/TypeEntry.java,v retrieving revision 1.5 retrieving revision 1.5.2.1 diff -u -r1.5 -r1.5.2.1 --- TypeEntry.java 14 Dec 2001 20:01:16 -0000 1.5 +++ TypeEntry.java 28 Jan 2002 06:43:05 -0000 1.5.2.1 @@ -125,6 +125,9 @@ // until the Undefined type is found. protected boolean isBaseType;// Indicates if represented by a // java primitive or util class + protected boolean onlyLiteralReference = false; // Indicates + // whether this type is only referenced + // via a binding's literal use. /** * Create a TypeEntry object for an xml construct that references another type. @@ -199,6 +202,26 @@ return null; } } + + /** + * Is this type references ONLY as a literal type? If a binding's + * message's soapBody says: use="literal", then a type is referenced + * literally. Note that that type's contained types (ie., an address + * contains a phone#) are not referenced literally. Since a type + * that is ONLY referenced as a literal may cause a generator to act + * differently (like WSDL2Java), this extra reference distinction is + * needed. + */ + public boolean isOnlyLiteralReferenced() { + return onlyLiteralReference; + } // isOnlyLiteralReferenced + + /** + * Set the isOnlyLiteralReference flag. + */ + public void setOnlyLiteralReference(boolean set) { + onlyLiteralReference = set; + } // setOnlyLiteralRefeerence /** * getUndefinedTypeRef returns the Undefined TypeEntry that this entry depends on or NULL. 1.10.2.1 +5 -1 xml-axis/java/src/org/apache/axis/wsdl/toJava/Utils.java Index: Utils.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/Utils.java,v retrieving revision 1.10 retrieving revision 1.10.2.1 diff -u -r1.10 -r1.10.2.1 --- Utils.java 7 Jan 2002 22:25:58 -0000 1.10 +++ Utils.java 28 Jan 2002 06:43:05 -0000 1.10.2.1 @@ -538,7 +538,11 @@ } // Anything else with [] gets its holder from the qname else if (typeValue.endsWith("[]")) { - return symbolTable.getJavaName(type.getQName()) + "Holder"; + String name = symbolTable.getJavaName(type.getQName()); + // This could be a special QName for a indexed property. + // If so, change the [] to Array. + name = JavaUtils.replace(name, "[]", "Array"); + return name + "Holder"; } // String also has a reserved holder else if (typeValue.equals("String")) { No revision No revision 1.31.2.1 +17 -20 xml-axis/java/test/RPCDispatch/TestRPC.java Index: TestRPC.java =================================================================== RCS file: /home/cvs/xml-axis/java/test/RPCDispatch/TestRPC.java,v retrieving revision 1.31 retrieving revision 1.31.2.1 diff -u -r1.31 -r1.31.2.1 --- TestRPC.java 15 Jan 2002 17:57:03 -0000 1.31 +++ TestRPC.java 28 Jan 2002 06:43:06 -0000 1.31.2.1 @@ -6,6 +6,8 @@ import org.apache.axis.Handler; import org.apache.axis.Message; import org.apache.axis.MessageContext; +import org.apache.axis.providers.java.RPCProvider; +import org.apache.axis.configuration.SimpleProvider; import org.apache.axis.handlers.soap.SOAPService; import org.apache.axis.message.RPCElement; import org.apache.axis.message.RPCParam; @@ -17,6 +19,7 @@ import org.w3c.dom.Element; import org.w3c.dom.Text; +import javax.xml.rpc.namespace.QName; import java.util.Vector; /** @@ -39,20 +42,14 @@ "\n" + "\n"; - private AxisServer engine = new AxisServer(); - private Handler RPCDispatcher; + private SimpleProvider provider = new SimpleProvider(); + private AxisServer engine = new AxisServer(provider); private String SOAPAction = "urn:reverse"; public TestRPC(String name) { super(name); engine.init(); - try { - RPCDispatcher = engine.getHandler("RPCDispatcher"); - } catch (AxisFault fault) { - // ??? - } - // Debug.setDebugLevel(5); } /** @@ -109,10 +106,10 @@ */ public void testReverseString() throws Exception { // Register the reverseString service - SOAPService reverse = new SOAPService(RPCDispatcher); + SOAPService reverse = new SOAPService(new RPCProvider()); reverse.setOption("className", "test.RPCDispatch.Service"); reverse.setOption("allowedMethods", "reverseString"); - engine.deployService(SOAPAction, reverse); + provider.deployService(new QName(null,SOAPAction), reverse); // invoke the service and verify the result assertEquals("Did not reverse the string correctly.", "cba", rpc("reverseString", new Object[] {"abc"})); @@ -123,10 +120,10 @@ */ public void testReverseData() throws Exception { // Register the reverseData service - SOAPService reverse = new SOAPService(RPCDispatcher); + SOAPService reverse = new SOAPService(new RPCProvider()); reverse.setOption("className", "test.RPCDispatch.Service"); reverse.setOption("allowedMethods", "reverseData"); - engine.deployService(SOAPAction, reverse); + provider.deployService(new QName(null, SOAPAction), reverse); // invoke the service and verify the result Data input = new Data(5, "abc", 3); @@ -139,10 +136,10 @@ */ public void testMessageContextImplicit() throws Exception { // Register the targetService service - SOAPService tgtSvc = new SOAPService(RPCDispatcher); + SOAPService tgtSvc = new SOAPService(new RPCProvider()); tgtSvc.setOption("className", "test.RPCDispatch.Service"); tgtSvc.setOption("allowedMethods", "targetServiceImplicit"); - engine.deployService(SOAPAction, tgtSvc); + provider.deployService(new QName(null, SOAPAction), tgtSvc); // invoke the service and verify the result assertEquals("SOAP Action did not equal the targetService.", @@ -154,10 +151,10 @@ */ public void testMessageContextExplicit() throws Exception { // Register the targetService service - SOAPService tgtSvc = new SOAPService(RPCDispatcher); + SOAPService tgtSvc = new SOAPService(new RPCProvider()); tgtSvc.setOption("className", "test.RPCDispatch.Service"); tgtSvc.setOption("allowedMethods", "targetServiceExplicit"); - engine.deployService(SOAPAction, tgtSvc); + provider.deployService(new QName(null, SOAPAction), tgtSvc); // invoke the service and verify the result assertEquals("SOAP Action did not equal the targetService.", @@ -169,10 +166,10 @@ */ public void testNull() throws Exception { // Register the echoInt service - SOAPService echoInt = new SOAPService(RPCDispatcher); + SOAPService echoInt = new SOAPService(new RPCProvider()); echoInt.setOption("className", "test.RPCDispatch.Service"); echoInt.setOption("allowedMethods", "echoInt"); - engine.deployService(SOAPAction, echoInt); + provider.deployService(new QName(null, SOAPAction), echoInt); // invoke the service and verify the result assertNull("The result was not null as expected.", rpc("echoInt", new Object[] {null})); @@ -183,10 +180,10 @@ */ public void testSimpleFault() throws Exception { // Register the reverseData service - SOAPService simpleFault = new SOAPService(RPCDispatcher); + SOAPService simpleFault = new SOAPService(new RPCProvider()); simpleFault.setOption("className", "test.RPCDispatch.Service"); simpleFault.setOption("allowedMethods", "simpleFault"); - engine.deployService(SOAPAction, simpleFault); + provider.deployService(new QName(null, SOAPAction), simpleFault); Object result = rpc("simpleFault", new Object[] {"foobar"}); assertTrue("Did not get a fault as expected.", 1.22.2.1 +47 -23 xml-axis/java/test/RPCDispatch/TestSerializedRPC.java Index: TestSerializedRPC.java =================================================================== RCS file: /home/cvs/xml-axis/java/test/RPCDispatch/TestSerializedRPC.java,v retrieving revision 1.22 retrieving revision 1.22.2.1 diff -u -r1.22 -r1.22.2.1 --- TestSerializedRPC.java 15 Jan 2002 17:57:03 -0000 1.22 +++ TestSerializedRPC.java 28 Jan 2002 06:43:06 -0000 1.22.2.1 @@ -6,8 +6,12 @@ import org.apache.axis.Handler; import org.apache.axis.Message; import org.apache.axis.MessageContext; -import org.apache.axis.encoding.BeanSerializer; -import org.apache.axis.encoding.DeserializerFactory; +import org.apache.axis.providers.java.RPCProvider; +import org.apache.axis.configuration.SimpleProvider; +import org.apache.axis.encoding.ser.BeanSerializerFactory; +import org.apache.axis.encoding.ser.BeanDeserializerFactory; +import org.apache.axis.encoding.TypeMappingRegistry; +import org.apache.axis.encoding.TypeMapping; import org.apache.axis.handlers.soap.SOAPService; import org.apache.axis.message.RPCElement; import org.apache.axis.message.RPCParam; @@ -39,21 +43,20 @@ "\n" + "\n"; - private AxisServer engine = new AxisServer(); - private Handler RPCDispatcher; + private SimpleProvider provider = new SimpleProvider(); + private AxisServer engine = new AxisServer(provider); private String SOAPAction = "urn:reverse"; public TestSerializedRPC(String name) throws Exception { super(name); engine.init(); - RPCDispatcher = engine.getHandler("RPCDispatcher"); - + // Register the reverseString service - SOAPService reverse = new SOAPService(RPCDispatcher); + SOAPService reverse = new SOAPService(new RPCProvider()); reverse.setOption("className", "test.RPCDispatch.Service"); reverse.setOption("allowedMethods", "*"); - engine.deployService(SOAPAction, reverse); + provider.deployService(SOAPAction, reverse); } /** @@ -132,11 +135,18 @@ * Test a method that reverses a data structure */ public void testSerReverseData() throws Exception { - BeanSerializer ser = new BeanSerializer(Data.class); - DeserializerFactory dSerFactory = BeanSerializer.getFactory(); - QName qName = new QName("urn:foo", "Data"); - engine.registerTypeMapping(qName, Data.class, dSerFactory, - ser); + Class javaType = Data.class; + QName xmlType = new QName("urn:foo", "Data"); + BeanSerializerFactory sf = new BeanSerializerFactory(javaType, xmlType); + BeanDeserializerFactory df = new BeanDeserializerFactory(javaType, xmlType); + + TypeMappingRegistry tmr = engine.getTypeMappingRegistry(); + TypeMapping tm = (TypeMapping) tmr.getTypeMapping(Constants.URI_SOAP_ENC); + if (tm == null) { + tm = (TypeMapping) tmr.createTypeMapping(); + tmr.register(tm, new String[] {Constants.URI_SOAP_ENC}); + } + tm.register(javaType, xmlType, sf, df); // invoke the service and verify the result String arg = ""; @@ -150,11 +160,18 @@ * Test a method that reverses a data structure */ public void testReverseDataWithUntypedParam() throws Exception { - BeanSerializer ser = new BeanSerializer(Data.class); - DeserializerFactory dSerFactory = BeanSerializer.getFactory(); - QName qName = new QName("urn:foo", "Data"); - engine.registerTypeMapping(qName, Data.class, dSerFactory, - ser); + Class javaType = Data.class; + QName xmlType = new QName("urn:foo", "Data"); + BeanSerializerFactory sf = new BeanSerializerFactory(javaType, xmlType); + BeanDeserializerFactory df = new BeanDeserializerFactory(javaType, xmlType); + + TypeMappingRegistry tmr = engine.getTypeMappingRegistry(); + TypeMapping tm = (TypeMapping) tmr.getTypeMapping(Constants.URI_SOAP_ENC); + if (tm == null) { + tm = (TypeMapping) tmr.createTypeMapping(); + tmr.register(tm, new String[] {Constants.URI_SOAP_ENC}); + } + tm.register(javaType, xmlType, sf, df); // invoke the service and verify the result String arg = ""; @@ -168,11 +185,18 @@ * Test DOM round tripping */ public void testArgAsDOM() throws Exception { - BeanSerializer ser = new BeanSerializer(Data.class); - DeserializerFactory dSerFactory = BeanSerializer.getFactory(); - QName qName = new QName("urn:foo", "Data"); - engine.registerTypeMapping(qName, Data.class, dSerFactory, - ser); + Class javaType = Data.class; + QName xmlType = new QName("urn:foo", "Data"); + BeanSerializerFactory sf = new BeanSerializerFactory(javaType, xmlType); + BeanDeserializerFactory df = new BeanDeserializerFactory(javaType, xmlType); + + TypeMappingRegistry tmr = engine.getTypeMappingRegistry(); + TypeMapping tm = (TypeMapping) tmr.getTypeMapping(Constants.URI_SOAP_ENC); + if (tm == null) { + tm = (TypeMapping) tmr.createTypeMapping(); + tmr.register(tm, new String[] {Constants.URI_SOAP_ENC}); + } + tm.register(javaType, xmlType, sf, df); // invoke the service and verify the result String arg = ""; No revision No revision 1.10.2.1 +14 -72 xml-axis/java/test/encoding/DataSer.java Index: DataSer.java =================================================================== RCS file: /home/cvs/xml-axis/java/test/encoding/DataSer.java,v retrieving revision 1.10 retrieving revision 1.10.2.1 diff -u -r1.10 -r1.10.2.1 --- DataSer.java 23 Dec 2001 12:33:32 -0000 1.10 +++ DataSer.java 28 Jan 2002 06:43:06 -0000 1.10.2.1 @@ -1,91 +1,32 @@ package test.encoding; -import org.apache.axis.encoding.DeserializationContext; -import org.apache.axis.encoding.Deserializer; -import org.apache.axis.encoding.DeserializerFactory; -import org.apache.axis.encoding.SOAPTypeMappingRegistry; import org.apache.axis.encoding.SerializationContext; import org.apache.axis.encoding.Serializer; import org.apache.axis.message.SOAPHandler; +import org.apache.axis.Constants; import org.xml.sax.Attributes; import org.xml.sax.SAXException; +import org.apache.axis.Constants; import javax.xml.rpc.namespace.QName; import java.io.IOException; import java.util.Hashtable; -public class DataSer extends Deserializer implements Serializer +public class DataSer implements Serializer { public static final String STRINGMEMBER = "stringMember"; public static final String FLOATMEMBER = "floatMember"; - public static class DataSerFactory implements DeserializerFactory { - public void setJavaClass(Class cls) {}; - public Deserializer getDeserializer() { - return new DataSer(); - } - } - public static DeserializerFactory getFactory() - { - return new DataSerFactory(); - } - - private Hashtable typesByMemberName = new Hashtable(); - - public DataSer() - { - typesByMemberName.put(STRINGMEMBER, SOAPTypeMappingRegistry.XSD_STRING); - typesByMemberName.put(FLOATMEMBER, SOAPTypeMappingRegistry.XSD_FLOAT); - value = new Data(); - } - - /** DESERIALIZER STUFF - event handlers - */ - - public SOAPHandler onStartChild(String namespace, - String localName, - String prefix, - Attributes attributes, - DeserializationContext context) - throws SAXException - { - QName typeQName = (QName)typesByMemberName.get(localName); - if (typeQName == null) - throw new SAXException("Invalid element in Data struct - " + - localName); - - // These can come in either order. - Deserializer dSer = context.getTypeMappingRegistry(). - getDeserializer(typeQName); - - if (dSer == null) - throw new SAXException("No deserializer for a " + typeQName + "???"); - - try { - dSer.registerValueTarget(new Deserializer.FieldTarget(value, - localName)); - } catch (NoSuchFieldException e) { - throw new SAXException(e); - } - - return dSer; - } - - public void onEndChild(String localName, Deserializer deserializer) - throws SAXException - { - if (STRINGMEMBER.equals(localName)) { - ((Data)value).stringMember = (String)deserializer.getValue(); - } else if (FLOATMEMBER.equals(localName)) { - ((Data)value).floatMember = (Float)deserializer.getValue(); - } else { - throw new SAXException("No such child - " + localName); - } - } - /** SERIALIZER STUFF */ - + /** + * Serialize an element named name, with the indicated attributes + * and value. + * @param name is the element name + * @param attributes are the attributes...serialize is free to add more. + * @param value is the value + * @param context is the SerializationContext + */ public void serialize(QName name, Attributes attributes, Object value, SerializationContext context) throws IOException @@ -95,8 +36,9 @@ Data data = (Data)value; context.startElement(name, attributes); - context.serialize(new QName("", STRINGMEMBER), null, data.stringMember); - context.serialize(new QName("", FLOATMEMBER), null, data.floatMember); + context.serialize(new QName("", STRINGMEMBER), null, data.stringMember, String.class); + context.serialize(new QName("", FLOATMEMBER), null, data.floatMember, float.class); context.endElement(); } + public String getMechanismType() { return Constants.AXIS_SAX; } } 1.13.2.1 +111 -122 xml-axis/java/test/encoding/TestArrayListConversions.java Index: TestArrayListConversions.java =================================================================== RCS file: /home/cvs/xml-axis/java/test/encoding/TestArrayListConversions.java,v retrieving revision 1.13 retrieving revision 1.13.2.1 diff -u -r1.13 -r1.13.2.1 --- TestArrayListConversions.java 15 Jan 2002 17:57:03 -0000 1.13 +++ TestArrayListConversions.java 28 Jan 2002 06:43:06 -0000 1.13.2.1 @@ -1,12 +1,13 @@ package test.encoding; import junit.framework.TestCase; -import org.apache.axis.Handler; import org.apache.axis.client.Call; import org.apache.axis.client.Service; import org.apache.axis.handlers.soap.SOAPService; +import org.apache.axis.providers.java.RPCProvider; import org.apache.axis.server.AxisServer; import org.apache.axis.transport.local.LocalTransport; +import org.apache.axis.configuration.SimpleProvider; import javax.xml.rpc.namespace.QName; import java.util.Iterator; @@ -15,125 +16,113 @@ import java.util.Vector; public class TestArrayListConversions extends TestCase { - private static final String SERVICE_NAME = "TestArrayConversions"; - - private Call call; - - public TestArrayListConversions() - { - super("service"); - } - - public TestArrayListConversions(String name) - { - super(name); - init(); - } - - private static boolean equals(List list, Object obj) - { - if ((list == null) || (obj == null)) - return false; - - if (!obj.getClass().isArray()) return false; - - Object [] array = (Object [])obj; - Iterator iter = list.iterator(); - - for (int i=0; i < array.length; i++) { - if (!(array[i].equals(iter.next()))) { - return false; - } - } - - return true; - } - - public void init() - { - try { - Service ss = new Service(); - AxisServer server = new AxisServer(); - Handler disp = server.getHandler("RPCDispatcher"); - SOAPService service = new SOAPService(disp); - service.setOption("className", "test.encoding.TestArrayListConversions"); - service.setOption("allowedMethods", "*"); - - server.deployService(SERVICE_NAME, service); - - call = (Call) ss.createCall(); - call.setTransport( new LocalTransport(server) ); - } - catch( Exception exp ) { - exp.printStackTrace(); - } - - } - - public void testVectorConversion() throws Exception - { - Vector v = new Vector(); - v.addElement("Hi there!"); - v.addElement("This'll be a SOAP Array and then a LinkedList!"); - call.setOperationName( new QName(SERVICE_NAME, "echoLinkedList") ); - Object ret = call.invoke( new Object[] { v } ); - if (!equals(v, ret)) assertEquals("Echo LinkedList mangled the result. Result is underneath.\n" + ret, v, ret); - } - - public void testLinkedListConversion() throws Exception - { - LinkedList l = new LinkedList(); - l.add("Linked list item #1"); - l.add("Second linked list item"); - l.add("This will be a SOAP Array then a Vector!"); - - call.setOperationName( new QName(SERVICE_NAME, "echoVector") ); - Object ret = call.invoke( new Object[] { l } ); - if (!equals(l, ret)) assertEquals("Echo Vector mangled the result. Result is underneath.\n" + ret, l, ret); - } - - public void testArrayConversion() throws Exception - { - Vector v = new Vector(); - v.addElement("Hi there!"); - v.addElement("This'll be a SOAP Array"); - - call.setOperationName( new QName(SERVICE_NAME, "echoArray") ); - Object ret = call.invoke( new Object[] { v } ); - if (!equals(v, ret)) assertEquals("Echo Array mangled the result. Result is underneath\n" + ret, v, ret); - } - - public static void main(String [] args) - { - TestArrayListConversions tester = - new TestArrayListConversions("TestArrayListConversions"); - try { - tester.testArrayConversion(); - tester.testLinkedListConversion(); - tester.testVectorConversion(); - } catch (Exception e) { - e.printStackTrace(); - } - } - - /**************************************************************** - * - * Service methods - this class is also deployed as an Axis RPC - * service for convenience. These guys just echo various things. - * - */ - public LinkedList echoLinkedList(LinkedList l) - { - return l; - } - - public Vector echoVector(Vector v) - { - return v; - } - - public Object [] echoArray(Object [] array) - { - return array; - } + private static final String SERVICE_NAME = "TestArrayConversions"; + + private Call call; + + public TestArrayListConversions() { + super("service"); + } + + public TestArrayListConversions(String name) { + super(name); + init(); + } + + private static boolean equals(List list, Object obj) { + if ((list == null) || (obj == null)) + return false; + + if (!obj.getClass().isArray()) return false; + + Object[] array = (Object[]) obj; + Iterator iter = list.iterator(); + + for (int i = 0; i < array.length; i++) { + if (!(array[i].equals(iter.next()))) { + return false; + } + } + + return true; + } + + public void init() { + try { + Service ss = new Service(); + + SimpleProvider provider = new SimpleProvider(); + AxisServer server = new AxisServer(provider); + SOAPService service = new SOAPService(new RPCProvider()); + service.setOption("className", "test.encoding.TestArrayListConversions"); + service.setOption("allowedMethods", "*"); + + provider.deployService(SERVICE_NAME, service); + + call = (Call) ss.createCall(); + call.setTransport(new LocalTransport(server)); + } catch (Exception exp) { + exp.printStackTrace(); + } + + } + + public void testVectorConversion() throws Exception { + Vector v = new Vector(); + v.addElement("Hi there!"); + v.addElement("This'll be a SOAP Array and then a LinkedList!"); + call.setOperationName(new QName(SERVICE_NAME, "echoLinkedList")); + Object ret = call.invoke(new Object[]{v}); + if (!equals(v, ret)) assertEquals("Echo LinkedList mangled the result. Result is underneath.\n" + ret, v, ret); + } + + public void testLinkedListConversion() throws Exception { + LinkedList l = new LinkedList(); + l.add("Linked list item #1"); + l.add("Second linked list item"); + l.add("This will be a SOAP Array then a Vector!"); + + call.setOperationName(new QName(SERVICE_NAME, "echoVector")); + Object ret = call.invoke(new Object[]{l}); + if (!equals(l, ret)) assertEquals("Echo Vector mangled the result. Result is underneath.\n" + ret, l, ret); + } + + public void testArrayConversion() throws Exception { + Vector v = new Vector(); + v.addElement("Hi there!"); + v.addElement("This'll be a SOAP Array"); + + call.setOperationName(new QName(SERVICE_NAME, "echoArray")); + Object ret = call.invoke(new Object[]{v}); + if (!equals(v, ret)) assertEquals("Echo Array mangled the result. Result is underneath\n" + ret, v, ret); + } + + public static void main(String[] args) { + TestArrayListConversions tester = new TestArrayListConversions("TestArrayListConversions"); + try { + tester.testArrayConversion(); + tester.testLinkedListConversion(); + tester.testVectorConversion(); + } catch (Exception e) { + e.printStackTrace(); + } + } + + /**************************************************************** + * + * Service methods - this class is also deployed as an Axis RPC + * service for convenience. These guys just echo various things. + * + */ + public LinkedList echoLinkedList(LinkedList l) { + return l; + } + + public Vector echoVector(Vector v) { + return v; + } + + public Object[] echoArray(Object[] array) { + return array; + } } 1.7.4.1 +31 -32 xml-axis/java/test/encoding/TestBody.java Index: TestBody.java =================================================================== RCS file: /home/cvs/xml-axis/java/test/encoding/TestBody.java,v retrieving revision 1.7 retrieving revision 1.7.4.1 diff -u -r1.7 -r1.7.4.1 --- TestBody.java 2 Nov 2001 03:07:42 -0000 1.7 +++ TestBody.java 28 Jan 2002 06:43:06 -0000 1.7.4.1 @@ -5,11 +5,15 @@ import org.apache.axis.Handler; import org.apache.axis.Message; import org.apache.axis.MessageContext; +import org.apache.axis.providers.java.RPCProvider; +import org.apache.axis.configuration.SimpleProvider; import org.apache.axis.handlers.soap.SOAPService; import org.apache.axis.message.RPCElement; import org.apache.axis.message.SOAPEnvelope; import org.apache.axis.server.AxisServer; +import javax.xml.rpc.namespace.QName; + /** * Verify that deserialization actually can cause the soap service * to be set... @@ -22,40 +26,35 @@ private String namespace = "http://xml.apache.org/axis/TestBody"; - private String request = - "\n" + - "" + - "\n" + - "\n" + - "5" + - "\n" + - "\n" + - "\n"; + private String request = "\n" + "" + "\n" + "\n" + "5" + "\n" + "\n" + "\n"; public void testBodyNamespace() throws Exception { + SimpleProvider provider = new SimpleProvider(); + + // register the service with the engine + SOAPService target = new SOAPService(new RPCProvider()); + provider.deployService(new QName(null,namespace), target); + + // setup + AxisEngine engine = new AxisServer(provider); + engine.init(); + + // create a message in context + MessageContext msgContext = new MessageContext(engine); + Message message = new Message(request); + message.setMessageContext(msgContext); + + // ensure that the message is parsed + SOAPEnvelope envelope = message.getSOAPPart().getAsSOAPEnvelope(); + RPCElement body = (RPCElement) envelope.getFirstBody(); + + // verify the service is set + assertEquals("Namespace does not equal the message context target service.", namespace, msgContext.getTargetService()); + assertEquals("The target is not the same as the message context service handler", target, msgContext.getServiceHandler()); + } - // setup - AxisEngine engine = new AxisServer(); - engine.init(); - - // register the service with the engine - Handler RPCDispatcher = engine.getHandler("RPCDispatcher"); - SOAPService target = new SOAPService(RPCDispatcher); - engine.deployService(namespace, target); - - // create a message in context - MessageContext msgContext = new MessageContext(engine); - Message message = new Message(request); - message.setMessageContext(msgContext); - - // ensure that the message is parsed - SOAPEnvelope envelope = message.getSOAPPart().getAsSOAPEnvelope(); - RPCElement body = (RPCElement)envelope.getFirstBody(); - - // verify the service is set - assertEquals("Namespace does not equal the message context target service.", namespace, msgContext.getTargetService()); - assertEquals("The target is not the same as the message context service handler", target, msgContext.getServiceHandler()); + public static void main(String[] args) throws Exception { + TestBody tester = new TestBody("test"); + tester.testBodyNamespace(); } } 1.21.4.1 +1 -1 xml-axis/java/test/encoding/TestDeser.java Index: TestDeser.java =================================================================== RCS file: /home/cvs/xml-axis/java/test/encoding/TestDeser.java,v retrieving revision 1.21 retrieving revision 1.21.4.1 diff -u -r1.21 -r1.21.4.1 --- TestDeser.java 29 Nov 2001 11:11:31 -0000 1.21 +++ TestDeser.java 28 Jan 2002 06:43:06 -0000 1.21.4.1 @@ -274,6 +274,6 @@ public static void main(String [] args) throws Exception { TestDeser tester = new TestDeser("test"); - tester.testUntyped(); + tester.testString(); } } 1.17.4.1 +12 -6 xml-axis/java/test/encoding/TestSer.java Index: TestSer.java =================================================================== RCS file: /home/cvs/xml-axis/java/test/encoding/TestSer.java,v retrieving revision 1.17 retrieving revision 1.17.4.1 diff -u -r1.17 -r1.17.4.1 --- TestSer.java 2 Nov 2001 03:07:42 -0000 1.17 +++ TestSer.java 28 Jan 2002 06:43:06 -0000 1.17.4.1 @@ -3,8 +3,12 @@ import junit.framework.TestCase; import org.apache.axis.MessageContext; import org.apache.axis.encoding.DeserializationContext; +import org.apache.axis.encoding.DeserializationContextImpl; import org.apache.axis.encoding.SerializationContext; +import org.apache.axis.encoding.SerializationContextImpl; import org.apache.axis.encoding.TypeMappingRegistry; +import org.apache.axis.encoding.TypeMapping; +import org.apache.axis.Constants; import org.apache.axis.message.RPCElement; import org.apache.axis.message.RPCParam; import org.apache.axis.message.SOAPEnvelope; @@ -58,13 +62,17 @@ msg.addBodyElement(body); Writer stringWriter = new StringWriter(); - SerializationContext context = new SerializationContext(stringWriter, msgContext); + SerializationContext context = new SerializationContextImpl(stringWriter, msgContext); context.setDoMultiRefs(multiref); TypeMappingRegistry reg = context.getTypeMappingRegistry(); + TypeMapping tm = (TypeMapping) reg.getTypeMapping(Constants.URI_SOAP_ENC); + if (tm == null) { + tm = (TypeMapping) reg.createTypeMapping(); + reg.register(tm, new String[] {Constants.URI_SOAP_ENC}); + } QName dataQName = new QName("typeNS", "Data"); - - reg.addSerializer(Data.class, dataQName, new DataSer()); + tm.register(Data.class, dataQName, new DataSerFactory(), new DataDeserFactory()); msg.output(context); @@ -76,10 +84,8 @@ StringReader reader = new StringReader(msgString); - DeserializationContext dser = new DeserializationContext( + DeserializationContext dser = new DeserializationContextImpl( new InputSource(reader), msgContext, org.apache.axis.Message.REQUEST); - reg = dser.getTypeMappingRegistry(); - reg.addDeserializerFactory(dataQName, Data.class, DataSer.getFactory()); dser.parse(); SOAPEnvelope env = dser.getEnvelope(); 1.11.4.1 +4 -2 xml-axis/java/test/encoding/TestString.java Index: TestString.java =================================================================== RCS file: /home/cvs/xml-axis/java/test/encoding/TestString.java,v retrieving revision 1.11 retrieving revision 1.11.4.1 diff -u -r1.11 -r1.11.4.1 --- TestString.java 18 Oct 2001 13:28:38 -0000 1.11 +++ TestString.java 28 Jan 2002 06:43:06 -0000 1.11.4.1 @@ -3,7 +3,9 @@ import junit.framework.TestCase; import org.apache.axis.MessageContext; import org.apache.axis.encoding.DeserializationContext; +import org.apache.axis.encoding.DeserializationContextImpl; import org.apache.axis.encoding.SerializationContext; +import org.apache.axis.encoding.SerializationContextImpl; import org.apache.axis.message.RPCElement; import org.apache.axis.message.RPCParam; import org.apache.axis.message.SOAPEnvelope; @@ -33,7 +35,7 @@ msg.addBodyElement(body); Writer stringWriter = new StringWriter(); - SerializationContext context = new SerializationContext(stringWriter, msgContext); + SerializationContext context = new SerializationContextImpl(stringWriter, msgContext); msg.output(context); @@ -41,7 +43,7 @@ StringReader reader = new StringReader(msgString); - DeserializationContext dser = new DeserializationContext( + DeserializationContext dser = new DeserializationContextImpl( new InputSource(reader), msgContext, org.apache.axis.Message.REQUEST); dser.parse(); 1.9.2.1 +8 -9 xml-axis/java/test/encoding/TestXsiType.java Index: TestXsiType.java =================================================================== RCS file: /home/cvs/xml-axis/java/test/encoding/TestXsiType.java,v retrieving revision 1.9 retrieving revision 1.9.2.1 diff -u -r1.9 -r1.9.2.1 --- TestXsiType.java 15 Jan 2002 17:57:03 -0000 1.9 +++ TestXsiType.java 28 Jan 2002 06:43:06 -0000 1.9.2.1 @@ -3,12 +3,14 @@ import junit.framework.TestCase; import org.apache.axis.MessageContext; import org.apache.axis.AxisEngine; +import org.apache.axis.configuration.SimpleProvider; import org.apache.axis.transport.local.LocalTransport; import org.apache.axis.providers.java.RPCProvider; import org.apache.axis.handlers.soap.SOAPService; import org.apache.axis.client.Call; import org.apache.axis.client.Service; import org.apache.axis.encoding.SerializationContext; +import org.apache.axis.encoding.SerializationContextImpl; import org.apache.axis.encoding.XMLType; import org.apache.axis.message.RPCElement; import org.apache.axis.message.RPCParam; @@ -26,7 +28,8 @@ private String header; private String footer; - private AxisServer server = new AxisServer(); + private SimpleProvider provider = new SimpleProvider(); + private AxisServer server = new AxisServer(provider); public TestXsiType() { @@ -43,7 +46,7 @@ public void testNoXsiTypes() throws Exception { - MessageContext msgContext = new MessageContext(new AxisServer()); + MessageContext msgContext = new MessageContext(server); // Don't serialize xsi:type attributes msgContext.setProperty(Call.SEND_TYPE_ATTR, "false" ); @@ -58,8 +61,8 @@ msg.addBodyElement(body); Writer stringWriter = new StringWriter(); - SerializationContext context = new SerializationContext(stringWriter, - msgContext); + SerializationContext context = new SerializationContextImpl(stringWriter, + msgContext); msg.output(context); @@ -74,16 +77,12 @@ */ public void testTypelessDeserialization() throws Exception { - // Set up a server to NOT send XSI types, and deploy - // this class as a service there. - - AxisServer server = new AxisServer(); server.setOption(AxisEngine.PROP_SEND_XSI, Boolean.FALSE); SOAPService service = new SOAPService(new RPCProvider()); service.setOption("className", "test.encoding.TestXsiType"); service.setOption("allowedMethods", "*"); - server.deployService("TestService", service); + provider.deployService("TestService", service); // Call that same server, accessing a method we know returns // a double. We should figure this out and deserialize it No revision No revision 1.1.2.1 +0 -0 xml-axis/java/test/encoding/DataDeser.java Index: DataDeser.java =================================================================== RCS file: /home/cvs/xml-axis/java/test/encoding/DataDeser.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/test/encoding/DataDeserFactory.java Index: DataDeserFactory.java =================================================================== RCS file: /home/cvs/xml-axis/java/test/encoding/DataDeserFactory.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.1.2.1 +0 -0 xml-axis/java/test/encoding/DataSerFactory.java Index: DataSerFactory.java =================================================================== RCS file: /home/cvs/xml-axis/java/test/encoding/DataSerFactory.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 No revision No revision 1.19.2.1 +11 -5 xml-axis/java/test/functional/TestTCPTransportSample.java Index: TestTCPTransportSample.java =================================================================== RCS file: /home/cvs/xml-axis/java/test/functional/TestTCPTransportSample.java,v retrieving revision 1.19 retrieving revision 1.19.2.1 diff -u -r1.19 -r1.19.2.1 --- TestTCPTransportSample.java 11 Jan 2002 21:42:11 -0000 1.19 +++ TestTCPTransportSample.java 28 Jan 2002 06:43:07 -0000 1.19.2.1 @@ -59,6 +59,9 @@ import junit.framework.TestCase; import org.apache.axis.AxisFault; import org.apache.axis.SimpleTargetedChain; +import org.apache.axis.Constants; +import org.apache.axis.configuration.SimpleProvider; +import org.apache.axis.configuration.FileProvider; import org.apache.axis.client.Call; import org.apache.axis.client.Service; import org.apache.axis.encoding.XMLType; @@ -83,7 +86,7 @@ } public void doTestDeploy () throws Exception { - String[] args = { "-ltcp://localhost:8088", "samples/transport/deploy.xml" }; + String[] args = { "-ltcp://localhost:8088", "samples/transport/deploy.wsdd" }; AdminClient.main(args); } @@ -99,11 +102,14 @@ tester.getQuote(new String [] { "-ltcp://localhost:8088", "XXX" }); String symbol = "XXX"; // args[0] ; - Service service = new Service(); - Call call = (Call) service.createCall(); - + SimpleProvider provider = + new SimpleProvider( + new FileProvider(Constants.CLIENT_CONFIG_FILE)); SimpleTargetedChain c = new SimpleTargetedChain(new TCPSender()); - service.getEngine().deployTransport("tcp", c); + provider.deployTransport("tcp", c); + + Service service = new Service(provider); + Call call = (Call) service.createCall(); call.setTargetEndpointAddress( new URL("tcp://localhost:8088") ); call.setOperationName( new QName("urn:xmltoday-delayed-quotes", "getQuote") ); 1.17.4.1 +1 -1 xml-axis/java/test/functional/TestTransportSample.java Index: TestTransportSample.java =================================================================== RCS file: /home/cvs/xml-axis/java/test/functional/TestTransportSample.java,v retrieving revision 1.17 retrieving revision 1.17.4.1 diff -u -r1.17 -r1.17.4.1 --- TestTransportSample.java 31 Oct 2001 23:50:22 -0000 1.17 +++ TestTransportSample.java 28 Jan 2002 06:43:07 -0000 1.17.4.1 @@ -72,7 +72,7 @@ } public void doTestDeploy () throws Exception { - String[] args = { "-llocal:", "samples/transport/deploy.xml" }; + String[] args = { "-llocal:", "samples/transport/deploy.wsdd" }; AdminClient.main(args); } No revision No revision 1.8.2.1 +4 -2 xml-axis/java/test/outparams/TestOutParams.java Index: TestOutParams.java =================================================================== RCS file: /home/cvs/xml-axis/java/test/outparams/TestOutParams.java,v retrieving revision 1.8 retrieving revision 1.8.2.1 diff -u -r1.8 -r1.8.2.1 --- TestOutParams.java 4 Jan 2002 22:30:04 -0000 1.8 +++ TestOutParams.java 28 Jan 2002 06:43:07 -0000 1.8.2.1 @@ -5,6 +5,7 @@ import org.apache.axis.Handler; import org.apache.axis.Message; import org.apache.axis.MessageContext; +import org.apache.axis.configuration.SimpleProvider; import org.apache.axis.client.Call; import org.apache.axis.client.Service; import org.apache.axis.encoding.XMLType; @@ -40,7 +41,8 @@ private Service s_service = null ; private Call client = null ; - private AxisServer server = new AxisServer(); + private SimpleProvider provider = new SimpleProvider(); + private AxisServer server = new AxisServer(provider); public TestOutParams(String name) { super(name); @@ -59,7 +61,7 @@ // ??? Do we need to register the handler? SOAPService service = new SOAPService(h); - server.deployService(serviceURN, service); + provider.deployService(serviceURN, service); // Make sure the local transport uses the server we just configured client.setTransport(new LocalTransport(server)); No revision No revision 1.8.2.1 +11 -5 xml-axis/java/test/session/TestSimpleSession.java Index: TestSimpleSession.java =================================================================== RCS file: /home/cvs/xml-axis/java/test/session/TestSimpleSession.java,v retrieving revision 1.8 retrieving revision 1.8.2.1 diff -u -r1.8 -r1.8.2.1 --- TestSimpleSession.java 15 Jan 2002 17:57:03 -0000 1.8 +++ TestSimpleSession.java 28 Jan 2002 06:43:07 -0000 1.8.2.1 @@ -11,7 +11,10 @@ import org.apache.axis.transport.local.LocalTransport; import org.apache.axis.server.AxisServer; import org.apache.axis.MessageContext; +import org.apache.axis.Constants; import org.apache.axis.configuration.XMLStringProvider; +import org.apache.axis.configuration.SimpleProvider; +import org.apache.axis.configuration.FileProvider; import org.apache.axis.deployment.wsdd.WSDDConstants; import org.apache.axis.providers.java.RPCProvider; @@ -31,7 +34,7 @@ " \n" + ""; - static XMLStringProvider provider = new XMLStringProvider(clientWSDD); + static XMLStringProvider clientProvider = new XMLStringProvider(clientWSDD); /** * Default constructor for use as service @@ -84,11 +87,14 @@ service.setOption("className", "test.session.TestSimpleSession"); service.setOption("allowedMethods", "counter"); - AxisServer server = new AxisServer(); - server.deployService("sessionTest", service); + SimpleProvider simpleProvider = + new SimpleProvider( + new FileProvider(Constants.SERVER_CONFIG_FILE)); + AxisServer server = new AxisServer(simpleProvider); + simpleProvider.deployService("sessionTest", service); // Set up the client side (using the WSDD above) - Service svc = new Service(provider); + Service svc = new Service(clientProvider); Call call = (Call)svc.createCall(); svc.setMaintainSession(true); call.setTransport(new LocalTransport(server)); @@ -106,7 +112,7 @@ 2); // Now start fresh and confirm a new session - Service svc2 = new Service(provider); + Service svc2 = new Service(clientProvider); Call call2 = (Call)svc2.createCall(); svc2.setMaintainSession(true); call2.setTransport(new LocalTransport(server)); No revision No revision 1.2.2.1 +6 -4 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.2 retrieving revision 1.2.2.1 diff -u -r1.2 -r1.2.2.1 --- TestHeaderAttrs.java 15 Jan 2002 17:57:03 -0000 1.2 +++ TestHeaderAttrs.java 28 Jan 2002 06:43:07 -0000 1.2.2.1 @@ -8,6 +8,8 @@ import org.apache.axis.Handler; import org.apache.axis.Message; import org.apache.axis.MessageContext; +import org.apache.axis.configuration.SimpleProvider; +import org.apache.axis.providers.java.RPCProvider; import org.apache.axis.transport.local.LocalTransport; import org.apache.axis.client.Call; import org.apache.axis.handlers.soap.SOAPService; @@ -52,7 +54,8 @@ static SOAPHeader badHeader = new SOAPHeader(BAD_HEADER_NS, BAD_HEADER_NAME); - private AxisServer engine = new AxisServer(); + private SimpleProvider provider = new SimpleProvider(); + private AxisServer engine = new AxisServer(provider); private LocalTransport localTransport = new LocalTransport(engine); private Handler RPCDispatcher; @@ -74,15 +77,14 @@ engine.init(); localTransport.setUrl(localURL); - Handler dispatcher = engine.getHandler("RPCDispatcher"); SOAPService service = new SOAPService(new TestHandler(), - dispatcher, + new RPCProvider(), null); service.setOption("className", TestService.class.getName()); service.setOption("allowedMethods", "*"); - engine.deployService("testService", service); + provider.deployService("testService", service); } /** No revision No revision 1.2.4.2 +4 -1 xml-axis/java/test/wsdd/TestUndeployment.java Index: TestUndeployment.java =================================================================== RCS file: /home/cvs/xml-axis/java/test/wsdd/TestUndeployment.java,v retrieving revision 1.2.4.1 retrieving revision 1.2.4.2 diff -u -r1.2.4.1 -r1.2.4.2 --- TestUndeployment.java 23 Jan 2002 17:57:08 -0000 1.2.4.1 +++ TestUndeployment.java 28 Jan 2002 06:43:07 -0000 1.2.4.2 @@ -72,7 +72,10 @@ InputStream is = new StringBufferInputStream(undeployDoc); WSDDDocument doc = new WSDDDocument(XMLUtils.newDocument(is)); - server.getDeploymentRegistry().deploy(doc); + + WSDDDeployment dep = provider.getDeployment(); + doc.deploy(dep); + server.refreshGlobalOptions(); handler = server.getHandler("other"); No revision No revision 1.3.2.1 +1 -0 xml-axis/java/test/wsdl/Java2WsdlAntTask.java Index: Java2WsdlAntTask.java =================================================================== RCS file: /home/cvs/xml-axis/java/test/wsdl/Java2WsdlAntTask.java,v retrieving revision 1.3 retrieving revision 1.3.2.1 diff -u -r1.3 -r1.3.2.1 --- Java2WsdlAntTask.java 3 Jan 2002 20:33:43 -0000 1.3 +++ Java2WsdlAntTask.java 28 Jan 2002 06:43:07 -0000 1.3.2.1 @@ -97,6 +97,7 @@ } if (service != null) emitter.setServiceName(service); + log("Java2WSDL " + className, Project.MSG_INFO); emitter.setCls(className); if (implClass != null) emitter.setImplCls(implClass); 1.13.2.1 +2 -0 xml-axis/java/test/wsdl/Wsdl2javaAntTask.java Index: Wsdl2javaAntTask.java =================================================================== RCS file: /home/cvs/xml-axis/java/test/wsdl/Wsdl2javaAntTask.java,v retrieving revision 1.13 retrieving revision 1.13.2.1 diff -u -r1.13 -r1.13.2.1 --- Wsdl2javaAntTask.java 19 Dec 2001 14:57:41 -0000 1.13 +++ Wsdl2javaAntTask.java 28 Jan 2002 06:43:07 -0000 1.13.2.1 @@ -124,6 +124,7 @@ Document doc; + log("WSDL2Java " + url, Project.MSG_INFO); try { doc = XMLUtils.newDocument(url); doc.getDocumentElement().getTagName(); @@ -143,6 +144,7 @@ // emitter.emit(doc); } catch (Throwable t) { + t.printStackTrace(); throw new BuildException("Error while running " + getClass().getName(), t); } } 1.57.2.1 +15 -6 xml-axis/java/test/wsdl/Wsdl2javaTestSuite.xml Index: Wsdl2javaTestSuite.xml =================================================================== RCS file: /home/cvs/xml-axis/java/test/wsdl/Wsdl2javaTestSuite.xml,v retrieving revision 1.57 retrieving revision 1.57.2.1 diff -u -r1.57 -r1.57.2.1 --- Wsdl2javaTestSuite.xml 16 Jan 2002 14:07:58 -0000 1.57 +++ Wsdl2javaTestSuite.xml 28 Jan 2002 06:43:07 -0000 1.57.2.1 @@ -27,7 +27,7 @@ --> - + - - + + @@ -261,18 +261,16 @@ - + + + + + + + No revision No revision 1.1.2.1 +7 -1 xml-axis/java/test/wsdl/arrays/PersonalInfoBookServiceTestCase.java Index: PersonalInfoBookServiceTestCase.java =================================================================== RCS file: /home/cvs/xml-axis/java/test/wsdl/arrays/PersonalInfoBookServiceTestCase.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 --- PersonalInfoBookServiceTestCase.java 4 Jan 2002 19:09:41 -0000 1.1 +++ PersonalInfoBookServiceTestCase.java 28 Jan 2002 06:43:07 -0000 1.1.2.1 @@ -31,7 +31,13 @@ nickName); // Get the stub and set Session - test.wsdl.arrays.PersonalInfoBook binding = new PersonalInfoBookService().getPersonalInfoBook(); + test.wsdl.arrays.PersonalInfoBook binding; + try { + binding = new PersonalInfoBookService().getPersonalInfoBook(); + } + catch (javax.xml.rpc.JAXRPCException jre) { + throw new junit.framework.AssertionFailedError("JAX-RPC Exception caught: " + jre ); + } assertTrue("binding is null", binding != null); ((PersonalInfoBookSOAPBindingStub) binding).setMaintainSession (true); No revision No revision 1.1.2.1 +8 -1 xml-axis/java/test/wsdl/faults/FaultServiceTestCase.java Index: FaultServiceTestCase.java =================================================================== RCS file: /home/cvs/xml-axis/java/test/wsdl/faults/FaultServiceTestCase.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 --- FaultServiceTestCase.java 7 Jan 2002 15:54:20 -0000 1.1 +++ FaultServiceTestCase.java 28 Jan 2002 06:43:07 -0000 1.1.2.1 @@ -23,7 +23,14 @@ } public void testFaultService() { - test.wsdl.faults.FaultServicePortType binding = new FaultService().getFaultService(); + test.wsdl.faults.FaultServicePortType binding; + try { + binding = new FaultService().getFaultService(); + } + catch (javax.xml.rpc.JAXRPCException jre) { + throw new junit.framework. + AssertionFailedError("JAX-RPC Exception caught: " + jre); + } assertTrue("binding is null", binding != null); String symbol = new String("MACR"); try { No revision No revision 1.1.2.1 +10 -1 xml-axis/java/test/wsdl/inout/DetailedInoutTestCase.java Index: DetailedInoutTestCase.java =================================================================== RCS file: /home/cvs/xml-axis/java/test/wsdl/inout/DetailedInoutTestCase.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 --- DetailedInoutTestCase.java 16 Jan 2002 14:07:59 -0000 1.1 +++ DetailedInoutTestCase.java 28 Jan 2002 06:43:07 -0000 1.1.2.1 @@ -3,8 +3,11 @@ import junit.framework.AssertionFailedError; import junit.framework.TestCase; import junit.swingui.TestRunner; + import org.apache.axis.utils.Options; +import javax.xml.rpc.JAXRPCException; + import javax.xml.rpc.holders.IntHolder; import javax.xml.rpc.holders.StringHolder; @@ -17,10 +20,16 @@ */ public class DetailedInoutTestCase extends TestCase { - private static Inout io = new InoutService().getInoutService(); + private static Inout io; public DetailedInoutTestCase(String name) { super(name); + try { + io = new InoutService().getInoutService(); + } + catch (JAXRPCException jre) { + throw new AssertionFailedError("JAX-RPC Exception: " + jre); + } } private String printAddress (Address ad) { No revision No revision 1.1.2.1 +0 -0 xml-axis/java/test/wsdl/literal/SalesRankNPrice.wsdl Index: SalesRankNPrice.wsdl =================================================================== RCS file: /home/cvs/xml-axis/java/test/wsdl/literal/SalesRankNPrice.wsdl,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 1.2.2.1 +0 -0 xml-axis/java/test/wsdl/literal/SalesRankNPrice_ServiceTestCase.java Index: SalesRankNPrice_ServiceTestCase.java =================================================================== RCS file: /home/cvs/xml-axis/java/test/wsdl/literal/SalesRankNPrice_ServiceTestCase.java,v retrieving revision 1.2 retrieving revision 1.2.2.1 diff -u -r1.2 -r1.2.2.1 No revision No revision 1.1.2.1 +7 -1 xml-axis/java/test/wsdl/marrays/MArrayTestsServiceTestCase.java Index: MArrayTestsServiceTestCase.java =================================================================== RCS file: /home/cvs/xml-axis/java/test/wsdl/marrays/MArrayTestsServiceTestCase.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 --- MArrayTestsServiceTestCase.java 18 Dec 2001 21:29:04 -0000 1.1 +++ MArrayTestsServiceTestCase.java 28 Jan 2002 06:43:08 -0000 1.1.2.1 @@ -13,7 +13,13 @@ } public void testMArrayTests() { - test.wsdl.marrays.MArrayTests binding = new MArrayTestsService().getMArrayTests(); + test.wsdl.marrays.MArrayTests binding; + try { + binding = new MArrayTestsService().getMArrayTests(); + } + catch (javax.xml.rpc.JAXRPCException jre) { + throw new junit.framework.AssertionFailedError("JAX-RPC Exception caught: " + jre ); + } assertTrue("binding is null", binding != null); // In each case below, the elements of the array are either nill, -1 or No revision No revision 1.1.2.1 +4 -4 xml-axis/java/test/wsdl/multithread/AddressBook.wsdl Index: AddressBook.wsdl =================================================================== RCS file: /home/cvs/xml-axis/java/test/wsdl/multithread/AddressBook.wsdl,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 --- AddressBook.wsdl 11 Jan 2002 21:28:23 -0000 1.1 +++ AddressBook.wsdl 28 Jan 2002 06:43:08 -0000 1.1.2.1 @@ -1,16 +1,16 @@ - 1.2.2.1 +8 -1 xml-axis/java/test/wsdl/multithread/MultithreadTestCase.java Index: MultithreadTestCase.java =================================================================== RCS file: /home/cvs/xml-axis/java/test/wsdl/multithread/MultithreadTestCase.java,v retrieving revision 1.2 retrieving revision 1.2.2.1 diff -u -r1.2 -r1.2.2.1 --- MultithreadTestCase.java 15 Jan 2002 16:19:29 -0000 1.2 +++ MultithreadTestCase.java 28 Jan 2002 06:43:08 -0000 1.2.2.1 @@ -4,6 +4,8 @@ import java.rmi.RemoteException; +import javax.xml.rpc.JAXRPCException; + import junit.framework.AssertionFailedError; import junit.framework.TestCase; @@ -84,7 +86,12 @@ } // class Run public void testMultithreading() { - binding = new AddressBookService().getAddressBook(); + try { + binding = new AddressBookService().getAddressBook(); + } + catch (JAXRPCException jre) { + throw new AssertionFailedError("JAXRPCException caught: " + jre); + } assertTrue("binding is null", binding != null); ((AddressBookSOAPBindingStub) binding).setMaintainSession(true); Thread[] threads = new Thread[100]; No revision No revision 1.1.2.1 +6 -1 xml-axis/java/test/wsdl/parameterOrder/VerifyTestCase.java Index: VerifyTestCase.java =================================================================== RCS file: /home/cvs/xml-axis/java/test/wsdl/parameterOrder/VerifyTestCase.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 --- VerifyTestCase.java 10 Jan 2002 19:12:08 -0000 1.1 +++ VerifyTestCase.java 28 Jan 2002 06:43:08 -0000 1.1.2.1 @@ -18,7 +18,12 @@ } public void testParameterOrder() { - test.wsdl.parameterOrder.ParameterOrderTest binding = new ParameterOrderService().getParameterOrder(); + test.wsdl.parameterOrder.ParameterOrderTest binding; + try { + binding = new ParameterOrderService().getParameterOrder(); + } catch (javax.xml.rpc.JAXRPCException jre) { + throw new junit.framework.AssertionFailedError("JAX-RPC Exception caught: " + jre); + } assertTrue("binding is null", binding != null); try { binding.oneIn(0); No revision No revision 1.1.2.1 +7 -1 xml-axis/java/test/wsdl/refattr/RefTestServiceTestCase.java Index: RefTestServiceTestCase.java =================================================================== RCS file: /home/cvs/xml-axis/java/test/wsdl/refattr/RefTestServiceTestCase.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 --- RefTestServiceTestCase.java 4 Jan 2002 19:09:41 -0000 1.1 +++ RefTestServiceTestCase.java 28 Jan 2002 06:43:08 -0000 1.1.2.1 @@ -14,7 +14,13 @@ } public void testRefTest() { - test.wsdl.refattr.RefTest binding = new RefTestService().getRefTest(); + test.wsdl.refattr.RefTest binding; + try { + binding = new RefTestService().getRefTest(); + } + catch (javax.xml.rpc.JAXRPCException jre) { + throw new junit.framework.AssertionFailedError("JAX-RPC Exception caught: " + jre ); + } // The following declarations are used to verify that unmangled classes // are generated by Wsdl2Java (not a mangled class like Phone_Type). 1.2.2.1 +4 -4 xml-axis/java/test/wsdl/refattr/refattr.wsdl Index: refattr.wsdl =================================================================== RCS file: /home/cvs/xml-axis/java/test/wsdl/refattr/refattr.wsdl,v retrieving revision 1.2 retrieving revision 1.2.2.1 diff -u -r1.2 -r1.2.2.1 --- refattr.wsdl 15 Jan 2002 01:33:24 -0000 1.2 +++ refattr.wsdl 28 Jan 2002 06:43:08 -0000 1.2.2.1 @@ -2,9 +2,9 @@ No revision No revision 1.1.2.1 +7 -2 xml-axis/java/test/wsdl/sequence/SequenceTestServiceTestCase.java Index: SequenceTestServiceTestCase.java =================================================================== RCS file: /home/cvs/xml-axis/java/test/wsdl/sequence/SequenceTestServiceTestCase.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 --- SequenceTestServiceTestCase.java 4 Jan 2002 19:09:41 -0000 1.1 +++ SequenceTestServiceTestCase.java 28 Jan 2002 06:43:08 -0000 1.1.2.1 @@ -12,8 +12,13 @@ } public void testSequenceTest() { - test.wsdl.sequence.SequenceTestPortType binding = - new SequenceTest().getSequenceTest(); + test.wsdl.sequence.SequenceTestPortType binding; + try { + binding = new SequenceTest().getSequenceTest(); + } + catch (javax.xml.rpc.JAXRPCException jre) { + throw new junit.framework.AssertionFailedError("JAX-RPC Exception caught: " + jre ); + } assertTrue("binding is null", binding != null); try { int value = -3; No revision No revision 1.10.2.1 +148 -6 xml-axis/java/test/wsdl/types/ComprehensiveTypes.wsdl Index: ComprehensiveTypes.wsdl =================================================================== RCS file: /home/cvs/xml-axis/java/test/wsdl/types/ComprehensiveTypes.wsdl,v retrieving revision 1.10 retrieving revision 1.10.2.1 diff -u -r1.10 -r1.10.2.1 --- ComprehensiveTypes.wsdl 17 Jan 2002 16:18:28 -0000 1.10 +++ ComprehensiveTypes.wsdl 28 Jan 2002 06:43:08 -0000 1.10.2.1 @@ -2,10 +2,10 @@ @@ -111,6 +111,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -165,7 +185,7 @@ @@ -255,6 +275,14 @@ + + + + + + + + @@ -367,6 +395,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + @@ -767,6 +819,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +