8

We would like to have a setup where when deploying our web services to our staging server, we would get notified if there are any breaking changes in the WSDL contracts by comparing them to the WSDL of our production site.

Are there any tools or services that can help doing this?

Tried Membrane WSDL comparer but this threw java.lang.StackOverflowError when trying it out :)

Asbjørn
  • 1,212
  • 1
  • 11
  • 15
  • What do you define as a non-breaking change? Any change to existing WSDL constructs is likely to have an effect on any program using it. So a non-breaking change is the addition of a new function, and/or a change to existing structures not used any program in your system (is that code part of the input you can provide to answer the question)? – Ira Baxter Jan 09 '12 at 09:15
  • Maybe the definition of breaking change is not clear as it depends on how the client is using the service. However I would expect that e.g. adding a new operation would not break any clients, but renaming of operations/types/parameters are breaking changes. Ideally a tool could list the changes to a contract, then we could decide if the changes are acceptable. The overall purpose is to avoid releasing accidental changes to the contract, like if someone had renamed a type not knowing that it was exposed by web-service. – Asbjørn Jan 09 '12 at 10:05
  • @Ira I also asked [this question](http://stackoverflow.com/questions/8786935/what-are-considered-non-breaking-or-backwards-compatible-changes-to-a-wsdl-contr) following your comment. – Asbjørn Jan 09 '12 at 10:51

1 Answers1

3

First; I'm not aware of any such tools.

I also answered the "other" question. Looking at the guidelines posted there, I would say it should be possible to roll your own (Possible, not easy :).

I did similar work in the past; albeit not for WSDL but for another dialect. My approach was;

  1. Parse the WSDL/Schema as regular XML (They are after all XML dialects themselves) (Schema can be tricky though)
  2. Build an in-memory model
  3. Define rules and apply them

WSDL part is easier since there are a limited number of constructs; Schema would be tricky but still doable I guess.

Selim
  • 1,013
  • 9
  • 15