So the EndpointReferenceUtils.getSchema( serviceInfo ) approach is only for @WebService classes and not @WebServiceProvider classes?
Andrew. 2009/2/19 Benson Margulies <bimargul...@gmail.com>: > CXF does not precisely have a 'copy' of the WSDL. It has a wsdl4j > representation. > > On the 2.2 branch, there is an XmlSchemaCollection of the schemas. In > earlier branches, it has a DOM copy of them. > > We could, I suppose, expose. I'm hoping that Dan will wade in at this point. > > > On Thu, Feb 19, 2009 at 5:42 AM, Andrew Clegg <and...@nervechannel.com> wrote: >> Followup... >> >> So I've got this working by reading the WSDL myself in the provider >> class's constructor: >> >> >> // First read WSDL >> ClassLoader loader = this.getClass().getClassLoader(); >> InputStream wsdlFile = loader.getResourceAsStream( WSDL_NAME ); >> Document wsdl = org.apache.cxf.helpers.DOMUtils.readXml( wsdlFile ); >> >> // Then get schema body from WSDL -- TODO tighten up query using namespaces >> String schemaQuery = >> "//*[local-name()='definitions']/*[local-name()='types']/*[local-name()='schema']"; >> XPathExpression schemaPath = xp.compile( schemaQuery ); >> Node schemaNode = ( Node ) schemaPath.evaluate( wsdl, XPathConstants.NODE ); >> >> // Then compile it and store it >> String language = XMLConstants.W3C_XML_SCHEMA_NS_URI; >> SchemaFactory sf = SchemaFactory.newInstance( language ); >> DOMSource ds = new DOMSource( schemaNode ); >> this.schema = sf.newSchema( ds ); >> >> >> This lets me easily validate messages in the invoke() method, for example: >> >> >> schema.newValidator().validate( domRequest ); >> >> >> where domRequest is the DOMSource of the message payload. >> >> However it still seems a little inelegant to read the WSDL myself when >> CXF must have a copy. >> >> I've found the getSchema() method of the EndpointReferenceUtils class >> via an old thread on here, but that requires a ServiceInfo object -- >> is there any way to acquire one of these for a Provider service? >> >> Thanks, >> >> Andrew. >> >> 2009/2/16 Andrew Clegg <and...@nervechannel.com>: >>> Hi folks, >>> >>> From inside a Provider implementation, how can I obtain the schema of >>> the service's request/response messages, short of reading the WSDL >>> myself and extracting the schema from it? >>> >>> Thanks, >>> >>> Andrew. >>> >>> -- >>> :: http://biotext.org.uk/ :: >>> >> >> >> >> -- >> :: http://biotext.org.uk/ :: >> > -- :: http://biotext.org.uk/ ::