Package org.activiti.engine.impl.webservice

Source Code of org.activiti.engine.impl.webservice.WSDLImporterTest

/* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*      http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.activiti.engine.impl.webservice;

import java.net.URL;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

import junit.framework.Assert;

import org.activiti.engine.impl.bpmn.data.SimpleStructureDefinition;
import org.activiti.engine.impl.bpmn.data.StructureDefinition;
import org.activiti.engine.impl.util.ReflectUtil;
import org.junit.Before;
import org.junit.Test;

/**
* @author Esteban Robles Luna
*/
public class WSDLImporterTest {

  private CxfWSDLImporter importer;

  @Before
  public void setUp() {
    importer = new CxfWSDLImporter();
  }
 
  @Test
  public void testImportCounter() throws Exception {
    URL url = ReflectUtil.getResource("org/activiti/engine/impl/webservice/counter.wsdl");
    importer.importFrom(url.toString());
   
    List<WSService> services = new ArrayList<WSService>(importer.getServices());
    Assert.assertEquals(1, services.size());
    WSService service = services.get(0);
   
    Assert.assertEquals("Counter", service.getName());
    Assert.assertEquals("http://localhost:63081/counter", service.getLocation());
   
    List<StructureDefinition> structures = sortStructures();
    List<WSOperation> operations = sortOperations();

    Assert.assertEquals(5, operations.size());
    this.assertOperation(operations.get(0), "getCount", service);
    this.assertOperation(operations.get(1), "inc", service);
    this.assertOperation(operations.get(2), "prettyPrintCount", service);
    this.assertOperation(operations.get(3), "reset", service);
    this.assertOperation(operations.get(4), "setTo", service);
   
    Assert.assertEquals(10, structures.size());
    this.assertStructure(structures.get(0), "getCount", new String[] {}, new Class<?>[] {});
    this.assertStructure(structures.get(1), "getCountResponse", new String[] {"count"}, new Class<?>[] {Integer.class});
    this.assertStructure(structures.get(2), "inc", new String[] {}, new Class<?>[] {});
    this.assertStructure(structures.get(3), "incResponse", new String[] {}, new Class<?>[] {});
    this.assertStructure(structures.get(4), "prettyPrintCount", new String[] {"prefix", "suffix"}, new Class<?>[] {String.class, String.class});
    this.assertStructure(structures.get(5), "prettyPrintCountResponse", new String[] {"prettyPrint"}, new Class<?>[] {String.class});
    this.assertStructure(structures.get(6), "reset", new String[] {}, new Class<?>[] {});
    this.assertStructure(structures.get(7), "resetResponse", new String[] {}, new Class<?>[] {});
    this.assertStructure(structures.get(8), "setTo", new String[] {"value"}, new Class<?>[] {Integer.class});
    this.assertStructure(structures.get(9), "setToResponse", new String[] {}, new Class<?>[] {});
  }
 
  @Test
  public void testImportCounterWithImport() throws Exception {
    URL url = ReflectUtil.getResource("org/activiti/engine/impl/webservice/counterWithImport.wsdl");
    importer.importFrom(url.toString());
   
    List<WSService> services = new ArrayList<WSService>(importer.getServices());
    Assert.assertEquals(1, services.size());
    WSService service = services.get(0);
   
    Assert.assertEquals("Counter", service.getName());
    Assert.assertEquals("http://localhost:63081/counter", service.getLocation());
   
    List<StructureDefinition> structures = sortStructures();
    List<WSOperation> operations = sortOperations();

    Assert.assertEquals(5, operations.size());
    this.assertOperation(operations.get(0), "getCount", service);
    this.assertOperation(operations.get(1), "inc", service);
    this.assertOperation(operations.get(2), "prettyPrintCount", service);
    this.assertOperation(operations.get(3), "reset", service);
    this.assertOperation(operations.get(4), "setTo", service);
   
    Assert.assertEquals(10, structures.size());
    this.assertStructure(structures.get(0), "getCount", new String[] {}, new Class<?>[] {});
    this.assertStructure(structures.get(1), "getCountResponse", new String[] {"count"}, new Class<?>[] {Integer.class});
    this.assertStructure(structures.get(2), "inc", new String[] {}, new Class<?>[] {});
    this.assertStructure(structures.get(3), "incResponse", new String[] {}, new Class<?>[] {});
    this.assertStructure(structures.get(4), "prettyPrintCount", new String[] {"prefix", "suffix"}, new Class<?>[] {String.class, String.class});
    this.assertStructure(structures.get(5), "prettyPrintCountResponse", new String[] {"prettyPrint"}, new Class<?>[] {String.class});
    this.assertStructure(structures.get(6), "reset", new String[] {}, new Class<?>[] {});
    this.assertStructure(structures.get(7), "resetResponse", new String[] {}, new Class<?>[] {});
    this.assertStructure(structures.get(8), "setTo", new String[] {"value"}, new Class<?>[] {Integer.class});
    this.assertStructure(structures.get(9), "setToResponse", new String[] {}, new Class<?>[] {});
  }

  private List<WSOperation> sortOperations() {
    List<WSOperation> operations = new ArrayList<WSOperation>(importer.getOperations());
    Collections.sort(operations, new Comparator<WSOperation>() {
      public int compare(WSOperation o1, WSOperation o2) {
        return o1.getName().compareTo(o2.getName());
      }
    });
    return operations;
  }

  private List<StructureDefinition> sortStructures() {
    List<StructureDefinition> structures = new ArrayList<StructureDefinition>(importer.getStructures());
    Collections.sort(structures, new Comparator<StructureDefinition>() {
      public int compare(StructureDefinition o1, StructureDefinition o2) {
        return o1.getId().compareTo(o2.getId());
      }
    });
    return structures;
  }
 
  private void assertOperation(WSOperation wsOperation, String name, WSService service) {
    Assert.assertEquals(name, wsOperation.getName());
    Assert.assertEquals(service, wsOperation.getService());
  }

  private void assertStructure(StructureDefinition structure, String structureId, String[] parameters, Class<?>[] classes) {
    SimpleStructureDefinition simpleStructure = (SimpleStructureDefinition) structure;
   
    Assert.assertEquals(structureId, simpleStructure.getId());
   
    for (int i = 0; i < simpleStructure.getFieldSize(); i++) {
      Assert.assertEquals(parameters[i], simpleStructure.getFieldNameAt(i));
      Assert.assertEquals(classes[i], simpleStructure.getFieldTypeAt(i));
    }
  }
}
TOP

Related Classes of org.activiti.engine.impl.webservice.WSDLImporterTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.