26 September 2008 - 2.5-beta1 |
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:
maven soapui:compile-and-run
. This will compile, test and
run soapUI if everything goes OKIf 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.
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).
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 implementationscom.eviware.soapui.impl.wsdl.panels.*
: contains all panels for model item implementationscom.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 classesThe following libraries are used in soapUI:
See a complete list of dependencies in the Maven dependencies report.
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.
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.
If you want to add new functionality, you could:
WsdlAssertion
abstract base class (look at
SimpleContainsAssertion
for an example) and adding the extension to
WsdlTestRequest
WsdlTestStep
abstract base class (look at
TransferResponseValuesTestStep
for an example) and adding the extension to
WsdlTestCase
WsdlInterfaceDesktopPanel
with improved browsing/searching facilities.JEditTextPane
class.