09 July 2009 - 3.0 user guide eclipse intellij netbeans maven download nightly forum bugs blog sf.net eviware


Eviware Logo

Building soapUI

soapUI is more or less a "standard" Java Swing application. It is built around a core object model defined in the com.eviware.soapui.core.* packages and its WSDL implementation in the com.eviware.soapui.impl.wsdl.* packages. The Javadocs give a short description of all packages and classes, they are a good start to get an overview.

soapUI is built with Maven 1.0.2 (Maven 2 will be supported in an upcoming release) and related project tools/methodologies/patterns.

To compile and run soapUI from the source do as follows:

  1. Download the source distribution from SourceForge
  2. Unzip the file to some folder.
  3. Start a command prompt and type maven soapui:compile-and-run. This will compile, test and run soapUI if everything goes OK

Building soapUI from SVN

If you want to build the latest version of soapUI, you need to get the soapUI sources from its SourceForge subversion repository located at svn://svn.eviware.com/soapui/trunk/core. Once you have checked out the sources you should rebuild the XMLBeans classes used by soapUI to make sure you have up-to-date versions on your local system; open a command-prompt in the soapUI directory and type maven soapui:generate-xml-beans, which will create all required classes for you. Now you can move on from step 3 in the above "Building soapUI" section.

the soapUI Core Object Model

The core object model com.eviware.soapui.core.* packages define all soapUI model objects (Projects, Interfaces, Operations, etc..) as abstract interfaces. The interfaces are generally "read-only", modification of objects is implementation-dependant through actions that the implementations provide (for example for renaming a request).

The com.eviware.soapui.model.tree defines the TreeModel used by the soapUI navigator and its contained SoapUITreeNodes.

soapUI currently has no builder/factory mechanism for adding new implementations of the core model, the usage of the core-implementation for WSDL 1.1 (see below) is "hard coded" into the current Workspace implementation class (this should obviously be fixed).

soapUI WSDL implementation

The WSDL/SOAP/HTTP-Binding implementation of the core object model is available in the com.eviware.soapui.impl.wsdl.* packages;

  • com.eviware.soapui.impl.wsdl.* : contains implementations for the core object model. Each implementation class is "bound" to a configuration-file element using the corresponding XMLBeans class as described below (under "Configuration Files").
  • com.eviware.soapui.impl.wsdl.actions.* : contains all actions for model item implementations
  • com.eviware.soapui.impl.wsdl.panels.* : contains all panels for model item implementations
  • com.eviware.soapui.impl.wsdl.support : contains WSDL/SOAP related support classes (validation, importing, etc)
  • com.eviware.soapui.impl.wsdl.teststeps.* : contains available TestStep extensions together with assertion-related classes

Libraries Used in soapUI

The following major libraries are used in soapUI:

  • XMLBeans 2.4.0 (ASL V2) is used for all XML/Schema processing/validation and SOAP message parsing/generation.
  • WSDL4J 1.6.2 (CPL) is used for WSDL parsing
  • HttpClient 3.1 (ASL V2) is used for the posting of SOAP messages
  • JGoodies Looks/Forms (BSD) are used for UI-enhancement (together with custom extensions)
  • log4j (ASL V2) is used for logging
  • a number of Jakarta-commons (ASL V2) libraries are used for general functionality

See a complete list of dependencies in the Maven dependencies report.

Configuration Files

The 2 configuration file formats for workspaces and projects are defined in the src/xsd/soapui.xsd schema and the corresponding XMLBeans objects are created using the custom Maven goal maven soapui:generate-xml-beans. The generated classes are available in the com.eviware.soapui.config package and all have their names extended with the Config suffix to distinguish them from soapUI interfaces/classes.

XML Editor

The XMLEditor component used in soapUI is an extension of the jEdit Syntax package adding mouse-wheel, undo/redo and find/replace functionality. The extension class JXmlTextArea is available in the com.eviware.soapui.support package.

Extension Points in soapUI

If you want to add new functionality, you could:

  • create new Assertions by extending the WsdlAssertion abstract base class (look at SimpleContainsAssertion for an example) and adding the extension to WsdlTestRequest
  • create new Test Steps by extending the WsdlTestStep abstract base class (look at TransferResponseValuesTestStep for an example) and adding the extension to WsdlTestCase
  • improve the WsdlInterfaceDesktopPanel with improved browsing/searching facilities.
  • improve the xml-editor by extending the JEditTextPane class.
  • etc...