+49 228 5552576-0


info@predic8.com

Compare WSDL Java API

The following listing shows how to compare two WSDL documents with Java and Membrane SOA Model.

package sample.wsdl;

import java.util.List;
import com.predic8.wsdl.*;
import com.predic8.wsdl.diff.WsdlDiffGenerator;
import com.predic8.soamodel.Difference;

public class CompareWSDL {

  public static void main(String[] args) {
    compare();
  }
  
  private static void compare(){
    WSDLParser parser = new WSDLParser();

    Definitions wsdl1 = parser.parse("samples/diff/original/article.wsdl");

    Definitions wsdl2 = parser.parse("samples/diff/modified/article.wsdl");

    WsdlDiffGenerator diffGen = new WsdlDiffGenerator(wsdl1, wsdl2);
    List<Difference> lst = diffGen.compare();
    for (Difference diff : lst) {
    	System.out.println(diff.dump());
    }
  }

  private static void dumpDiff(Difference diff, String level) {
    System.out.println(level + diff.getDescription());
    for (Difference localDiff : diff.getDiffs()){
      dumpDiff(localDiff, level + "  ");
    }
  }
}

      
Listing 1: Simple WSDL Diff

After executing you get the output shown in listing 2 listing the differences between the two WSDL documents.

Definitions has changed:
 Types has changed: 
  Schema http://predic8.com/wsdl/material/ArticleService/1/ has changed:
   Element createResponse has changed:
    ComplexType  has changed:
     Sequence has changed:
      Element NewElementForTest added.
   ComplexType GetAllType has changed:
    Annotation removed.
   Imported schema http://predic8.com/material/1/ has changed:
    Element manufacturer added.
    ComplexType ArticleType has changed:
     Annotation added.
     Sequence has changed:
      Position of element name changed from 1 to 2.
      Position of element description changed from 2 to 3.
      Position of element price changed from 3 to 5.
      Position of element id changed from 4 to 1.
      Element availability added.
    Imported schema http://predic8.com/common/1/ has changed:
     ComplexType PersonType has changed:
      Sequence has changed:
       Element id has changed:
        The type of element 'id' has changed from xsd:string to tns:IdentifierType.
 Documentation has changed.
 PortType ArticleServicePT has changed: 
  Operation create-2 removed.
  Operation generate added.
  Operation create has changed: 
   Input has changed:
    Message createRequest has changed: 
     Part parameters has changed: 
      Element create has changed:
       ComplexType CreateType has changed:
        Sequence has changed:
         Element article has changed:
          ComplexType ArticleType has changed:
           Annotation added.
           Sequence has changed:
            Position of element name changed from 1 to 2.
            Position of element description changed from 2 to 3.
            Position of element price changed from 3 to 5.
            Position of element id changed from 4 to 1.
            Element availability added.
   Output has changed:
    Message createResponse has changed: 
     Part parameters has changed: 
      Element createResponse has changed:
       ComplexType  has changed:
        Sequence has changed:
         Element NewElementForTest added.
  Operation get has changed: 
   Output has changed:
    Message getResponse has changed: 
     Part parameters has changed: 
      Element getResponse has changed:
       ComplexType GetResponseType has changed:
        Sequence has changed:
         Element article has changed:
          ComplexType ArticleType has changed:
           Annotation added.
           Sequence has changed:
            Position of element name changed from 1 to 2.
            Position of element description changed from 2 to 3.
            Position of element price changed from 3 to 5.
            Position of element id changed from 4 to 1.
            Element availability added.
  Operation getAll has changed: 
   Input has changed:
    Message getAllRequest has changed: 
     Part parameters has changed: 
      Element getAll has changed:
       ComplexType GetAllType has changed:
        Annotation removed.
 Service ArticleService has changed:
  Port ArticleServicePTPort removed.
  Port ArticleServicePTPort2 added.
    

Compare WSDL online

Upload two versions of a WSDL to the WSDL Analyzer and get a diff report online.