06 August 2007 - 1.7.5 | home user-guide eclipse jbossws intellij netbeans maven 1.X/2.X PDF files forums bugs sourceforge

Home

- Feature Overview
  - soapUI Pro comparison
- News and History
  - Snapshot release
  - New and Noteworthy in 1.7.5
  - New and Noteworthy in 1.7
  - New and Noteworthy in 1.6
  - New and Noteworthy in 1.5
- Building
- Integrating
- Future Plans
- FAQ

Getting Started
User Guide
IDE/Tool Plugins
Search soapUI site
Project Documentation

- About soapUI
- Project Info
- Project Reports

## 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 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 `https://svn.sourceforge.net/svnroot/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.

### 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 `SoapUITreeNode`s.

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).

### 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

The following libraries are used in soapUI:

- XMLBeans 2.3.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.0.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

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...