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 <[email protected]> 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 <[email protected]>:
>> 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/ ::
>

Reply via email to