You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2011/06/27 22:20:46 UTC

svn commit: r1140298 - in /incubator/isis/trunk: examples/claims/quickrun/ examples/quickstart/viewer-json/ src/docbkx/guide/images/release/bdd-concordion-output.png src/docbkx/guide/isis-contributors-guide.xml

Author: danhaywood
Date: Mon Jun 27 20:20:46 2011
New Revision: 1140298

URL: http://svn.apache.org/viewvc?rev=1140298&view=rev
Log:
further updates to the contributors guide (material on how to test the quickstart app prior to building the archetype copied down from wiki and adapted)

Added:
    incubator/isis/trunk/src/docbkx/guide/images/release/bdd-concordion-output.png   (with props)
Modified:
    incubator/isis/trunk/examples/claims/quickrun/   (props changed)
    incubator/isis/trunk/examples/quickstart/viewer-json/   (props changed)
    incubator/isis/trunk/src/docbkx/guide/isis-contributors-guide.xml

Propchange: incubator/isis/trunk/examples/claims/quickrun/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Mon Jun 27 20:20:46 2011
@@ -1,6 +1,6 @@
 .classpath
 .project
 .settings
-nakedobjects.log
+*.log
 target
 xml

Propchange: incubator/isis/trunk/examples/quickstart/viewer-json/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Mon Jun 27 20:20:46 2011
@@ -1,2 +1,3 @@
 .settings
 .project
+target

Added: incubator/isis/trunk/src/docbkx/guide/images/release/bdd-concordion-output.png
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/src/docbkx/guide/images/release/bdd-concordion-output.png?rev=1140298&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/isis/trunk/src/docbkx/guide/images/release/bdd-concordion-output.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Modified: incubator/isis/trunk/src/docbkx/guide/isis-contributors-guide.xml
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/src/docbkx/guide/isis-contributors-guide.xml?rev=1140298&r1=1140297&r2=1140298&view=diff
==============================================================================
--- incubator/isis/trunk/src/docbkx/guide/isis-contributors-guide.xml (original)
+++ incubator/isis/trunk/src/docbkx/guide/isis-contributors-guide.xml Mon Jun 27 20:20:46 2011
@@ -5542,353 +5542,625 @@ gpg --armor --export nnnnnnnn >>KE
         <para>The quickstart archetype is created by "reverse-engineering" the
         quickstart prototype application that resides in
         <filename>trunk/framework/examples/quickstart</filename>. Therefore a
-        prerequisite is to ensure that this application works
-        correctly.</para>
+        prerequisite is to ensure that this application works correctly. The
+        steps described here are to test both the prototype app (used to
+        generate the archetype) and also the resultant app (from the generated
+        archetype, prior to commit).</para>
+
+        <para>In the quickstart application, there are multiple ways of
+        running the application, each corresponding to using the application
+        with a specific viewer. Those viewers which are webapps will have a
+        <filename>web.xml</filename> specifying the required
+        servlets/filters/context listeners. For these webapps you can use one
+        of three approaches, all of which are equivalent, either:</para>
 
-        <sect2>
-          <title>Prerequisites</title>
+        <itemizedlist>
+          <listitem>
+            <para>mvn jetty:run</para>
+          </listitem>
+
+          <listitem>
+            <para>(if using Eclipse) using the provided Eclipse .launch
+            configurations</para>
+          </listitem>
+
+          <listitem>
+            <para>(if using Eclipse) using Eclipse WTP support ("Run as&gt;
+            Run on server")</para>
+          </listitem>
+        </itemizedlist>
+
+        <para>Running the application using mvn jetty:run is described in
+        <xref linkend="sec.QuickstartTestingFromMaven" />, running from
+        Eclipse is described in <xref
+        linkend="sec.QuickstartTestingFromEclipse" />.</para>
 
-          <para>Eclipse configuration</para>
+        <sect2 id="sec.QuickstartTestingFromMaven">
+          <title>Testing from Maven</title>
+
+          <para>The following steps assume working in the directory that holds
+          the parent module</para>
 
           <itemizedlist>
             <listitem>
-              <para>recommend use JEE edition (rather than standard Java
-              edition) with its WTP (web tools) tooling</para>
-
-              <para>This will allow you to test the Run As...&gt; Run On
-              Server functionality</para>
+              <para>If testing the quickstart prototype app, this is
+              <filename>trunk/framework/examples/quickstart</filename>.</para>
             </listitem>
 
             <listitem>
-              <para>in addition, m2eclipse must be installed (for ease of
-              installing, but also because the .launch files that are used
-              also depend on the m2eclipse classpath provider entry)</para>
-
-              <para>Notes:</para>
-
-              <itemizedlist>
-                <listitem>
-                  <para><ulink
-                  url="http://m2eclipse.sonatype.org/sites/m2e">m2eclipse</ulink>
-                  is now bundled as part of Eclipse 3.7 (indigo)</para>
-                </listitem>
-
-                <listitem>
-                  <para>using earlier distributions you may find that you need
-                  to manually install <ulink
-                  url="http://download.eclipse.org/tools/gef/updates/releases/">Zest</ulink>
-                  first. </para>
-
-                  <para>See this <ulink
-                  url="http://domengrabec.wordpress.com/2010/12/14/installing-maven-on-eclipse/">blog
-                  post</ulink> for an explanation as to why</para>
-                </listitem>
-
-                <listitem>
-                  <para>install m2eclipse from its update site </para>
-                </listitem>
-              </itemizedlist>
+              <para>If testing the application generated from the archetype,
+              then it will be the directory corresponding to the provided
+              artifactId (eg "myapp").</para>
             </listitem>
           </itemizedlist>
 
-          <para>Tomcat (JEE) install:</para>
+          <sect3>
+            <title>Build from the mvn command line</title>
 
-          <itemizedlist>
-            <listitem>
-              <para>Tomcat (7)</para>
+            <para>First, check that that the application builds
+            correctly:</para>
 
-              <itemizedlist>
-                <listitem>
-                  <para>install server (download from <ulink
-                  url="http://tomcat.apache.org/download-70.cgi">here</ulink>)</para>
-                </listitem>
-
-                <listitem>
-                  <para>configure server</para>
-                </listitem>
-              </itemizedlist>
-            </listitem>
-          </itemizedlist>
+            <programlisting>$ mvn clean install</programlisting>
 
-          <para>Groovy is also used in this process and is a
-          prerequisite<itemizedlist>
-              <listitem>
-                <para>1.7.6 was used, but earlier versions are very likely to
-                be ok</para>
-              </listitem>
+            <para>If the build succeeds, you should see something like:</para>
 
-              <listitem>
-                <para>add 'groovy' to $PATH</para>
-              </listitem>
-            </itemizedlist></para>
+            <programlisting>...
+[INFO]
+[INFO] ------------------------------------------------------------------------
+[INFO] Reactor Summary:
+[INFO] ------------------------------------------------------------------------
+[INFO] Quickstart App ........................................ SUCCESS [3.154s]
+[INFO] Quickstart DOM ........................................ SUCCESS [2.867s]
+[INFO] Quickstart Repositories (for ObjectStore Default) ..... SUCCESS [0.742s]
+[INFO] Quickstart Fixtures ................................... SUCCESS [0.634s]
+[INFO] Quickstart Quick Run .................................. SUCCESS [7.138s]
+[INFO] Quickstart HTML Viewer ................................ SUCCESS [6.248s]
+[INFO] Quickstart JSON Viewer ................................ SUCCESS [1.248s]
+[INFO] Quickstart Scimpi Viewer .............................. SUCCESS [1.585s]
+[INFO] Quickstart Wicket Viewer .............................. SUCCESS [2.871s]
+[INFO] Quickstart XHTML Viewer ............................... SUCCESS [1.222s]
+[INFO] Quickstart JUnit Tests ................................ SUCCESS [3.626s]
+[INFO] Quickstart BDD (Concordion) Tests ..................... SUCCESS [4.196s]
+[INFO] ------------------------------------------------------------------------
+[INFO] ------------------------------------------------------------------------
+[INFO] BUILD SUCCESSFUL
+[INFO] ------------------------------------------------------------------------
+...</programlisting>
+
+            <para>This command also runs tests, so a successful build means
+            that the JUnit tests in the <filename>tests-junit</filename> and
+            <filename>tests-bdd</filename> modules have passed. As a
+            side-effect of running the tests, the Concordion BDD tests in
+            tests-bdd will generate a set of annotated <acronym>HTML</acronym>
+            files. These can be found in
+            <filename>tests-bdd/target/concordion</filename>. For example, the
+            <filename>tests-bdd/target/concordion/viewer/bdd/stories/todo/ScenarioMarkItemAsDone.html</filename>
+            should look something like:</para>
+
+            <mediaobject>
+              <imageobject>
+                <imagedata fileref="images/release/bdd-concordion-output.png"
+                           scale="55" />
+              </imageobject>
+            </mediaobject>
+          </sect3>
 
-          <para></para>
-        </sect2>
+          <sect3>
+            <title>Run shaded JARs from mvn command line</title>
 
-        <sect2>
-          <title>Import the Quickstart Project</title>
+            <para>The <filename>quickrun</filename> module provides a number
+            of profiles that allow the application to be run from the command
+            line from a <ulink
+            url="http://maven.apache.org/plugins/maven-shade-plugin/">shaded</ulink>
+            <acronym>JAR</acronym> file. One benefit of this mechanism of is
+            that the shaded JARs are self-contained and so (so long as an
+            in-memory object store is used) can be distributed to business
+            stakeholders.</para>
+
+            <note>
+              <para>Most, though not all, viewers are supported using this
+              mechanism.</para>
+            </note>
+
+            <para>The general command to run the shaded
+            <acronym>JAR</acronym>s is:</para>
+
+            <programlisting>$ cd quickrun
+$ mvn antrun:run -D exec=xxx</programlisting>
+
+            <para>where the exec argument 'xxx' selects the viewer as shown in
+            the table below:</para>
+
+            <table>
+              <title>Testing viewers with mvn antrun:run</title>
+
+              <tgroup cols="2">
+                <colspec align="left" />
+
+                <colspec align="center" />
+
+                <thead>
+                  <row>
+                    <entry align="center">Command</entry>
+
+                    <entry>Viewer</entry>
+                  </row>
+                </thead>
+
+                <tbody>
+                  <row>
+                    <entry><programlisting>$ cd quickstart/
+$ mvn antrun:run -D exec=dnd</programlisting></entry>
+
+                    <entry>DnD</entry>
+                  </row>
+
+                  <row>
+                    <entry><programlisting>$ cd quickstart/
+$ mvn antrun:run -D exec=html</programlisting></entry>
+
+                    <entry>HTML</entry>
+                  </row>
+
+                  <row>
+                    <entry><programlisting>$ cd quickstart/
+$ mvn antrun:run -D exec=json</programlisting></entry>
+
+                    <entry>JSON (Restful)</entry>
+                  </row>
+
+                  <row>
+                    <entry><programlisting>$ cd quickstart/
+$ mvn antrun:run -D exec=xhtml</programlisting></entry>
+
+                    <entry>XHTML (Restful)</entry>
+                  </row>
+                </tbody>
+              </tgroup>
+            </table>
+          </sect3>
 
-          <para>The quickstart app include Eclipse launch configurations (eg
-          <filename>quickstart/quickrun/ide/eclipse/launch/*.launch</filename>.
-          These files have a hard-coded reference to the project file itself,
-          which means that for them to work, the app that will be generated by
-          the eventual quickstart archetype should be imported "in the right
-          way".</para>
-
-          <para>To minimize the chance of confusion by users who may not know
-          every obscure feature of Eclipse, the quickstart prototype app is
-          therefore written in such a way that the app should be imported
-          using the defaults in the 'Import Maven projects' dialogue. </para>
-
-          <note>
-            <para>This is different from the way that we import the rest of
-            the <emphasis>Isis</emphasis> framework (where we use
-            Advanced&gt;Name Template=\[groupId]:\[artifactId].</para>
-          </note>
+          <sect3>
+            <title>Testing webapp viewers using jetty:run</title>
 
-          <para>Therefore, import quickstart prototype app:</para>
+            <para>A number of the viewers are webapps. These can be tested
+            from Maven using the <ulink
+            url="http://docs.codehaus.org/display/JETTY/Maven+Jetty+Plugin">Jetty
+            plugin</ulink>:</para>
 
-          <itemizedlist>
-            <listitem>
-              <para>File&gt;Import&gt;Maven&gt;Existing Maven Projects</para>
-            </listitem>
+            <programlisting>$ cd quickstart-viewer-xxx
+$ mvn jetty:run</programlisting>
 
-            <listitem>
-              <para>Root Directory=trunk/examples/quickstart</para>
-            </listitem>
+            <para>where xxx is the directory as shown in the table
+            below.</para>
 
-            <listitem>
-              <para>Refresh</para>
-            </listitem>
+            <table>
+              <title>Testing webapp viewers with mvn jetty:run</title>
 
-            <listitem>
-              <para>Finish</para>
-            </listitem>
-          </itemizedlist>
+              <tgroup cols="3">
+                <colspec align="center" />
 
-          <para>Then, verify that the prototype app works as expected. Full
-          details are [at the bottom of this page|#testing]</para>
-        </sect2>
+                <colspec align="left" />
 
-        <sect2>
-          <title>Testing</title>
+                <colspec />
 
-          <para>These steps are to test both the prototype app (used to
-          generate the archetype) and also the resultant app (from the
-          generated archetype, prior to commit).</para>
+                <thead>
+                  <row>
+                    <entry>Module</entry>
 
-          <note>
-            <para>If you are going to use Maven to run these tests as
-            explained below, you need to build the quickstart project. To do
-            that, go to the directory where quickstart project's POM file is
-            located (trunk/examples/quickstart) and then run <code>mvn clean
-            install</code>.</para>
-          </note>
+                    <entry align="center">Command</entry>
 
-          <para></para>
+                    <entry>Browse to</entry>
+                  </row>
+                </thead>
 
-          <para>*** to tidy up; the raw information is here, however.</para>
+                <tbody>
+                  <row>
+                    <entry>HTML</entry>
 
-          <para></para>
+                    <entry><programlisting>$ cd quickstart-viewer-html/
+$ mvn jetty:run</programlisting></entry>
 
-          <sect3>
-            <title>Build from the mvn command line</title>
+                    <entry><ulink
+                    url="http://localhost:8080/quickstart-viewer-html/logon.app">http://localhost:8080/quickstart-viewer-html/logon.app</ulink></entry>
+                  </row>
 
-            <para></para>
+                  <row>
+                    <entry>JSON (Restful)</entry>
 
-            <programlisting>* quickstart/
-** mvn clean install</programlisting>
+                    <entry><programlisting>$ cd quickstart-viewer-json/
+$ mvn jetty:run</programlisting></entry>
 
-            <para></para>
+                    <entry><ulink
+                    url="http://localhost:8080/quickstart-viewer-json">http://localhost:8080/quickstart-viewer-json</ulink></entry>
+                  </row>
 
-            <para>This also runs tests.</para>
+                  <row>
+                    <entry>Scimpi</entry>
 
-            <para>*** describe how to view results of tests.</para>
+                    <entry><programlisting>$ cd quickstart-viewer-scimpi/
+$ mvn jetty:run</programlisting></entry>
 
-            <para></para>
-          </sect3>
+                    <entry><ulink
+                    url="http://localhost:8080/quickstart-viewer-scimpi">http://localhost:8080/quickstart-viewer-scimpi</ulink></entry>
+                  </row>
 
-          <sect3>
-            <title>Run shaded JARs from mvn command line</title>
+                  <row>
+                    <entry>Wicket</entry>
+
+                    <entry><programlisting>$ cd quickstart-viewer-wicket/
+$ mvn jetty:run</programlisting></entry>
+
+                    <entry><ulink
+                    url="http://localhost:8080/quickstart-viewer-wicket">http://localhost:8080/quickstart-viewer-wicket</ulink></entry>
+                  </row>
 
-            <para></para>
+                  <row>
+                    <entry>XHTML (Restful)</entry>
 
-            <programlisting>
-* quickstart/quickrun
-** mvn antrun:run -D exec=dnd
-** mvn antrun:run -D exec=html
-** mvn antrun:run -D exec=xhtml
-** mvn antrun:run -D exec=json</programlisting>
+                    <entry><programlisting>$ cd quickstart-viewer-xhtml/
+$ mvn jetty:run</programlisting></entry>
 
-            <para></para>
+                    <entry><ulink
+                    url="http://localhost:8080/quickstart-viewer-xhtml/">http://localhost:8080/quickstart-viewer-xhtml</ulink></entry>
+                  </row>
+                </tbody>
+              </tgroup>
+            </table>
 
-            <para></para>
+            <para>The jetty webserver will continue running until the maven
+            command will cancelled (ctrl-C).</para>
           </sect3>
+        </sect2>
+
+        <sect2 id="sec.QuickstartTestingFromEclipse">
+          <title>Testing from within Eclipse</title>
+
+          <para><emphasis>Apache Isis</emphasis> provides some additional help
+          for developers who use Eclipse as their IDE. The quickstart app
+          configuration that provides this help should also be tested.</para>
 
           <sect3>
-            <title>Quickrun .launch configurations</title>
+            <title>Prerequisites</title>
 
-            <para></para>
+            <para>The correct plugins are required in order to fully test with
+            Eclipse:</para>
 
-            <programlisting>
-** quickrun/
-*** ide/eclipse/launch/quickstart-quickrun-dnd.launch, Run As &gt; ...
-*** ide/eclipse/launch/quickstart-quickrun-html.launch, Run As &gt; ...
-**** browse to http://localhost:8080/logon.app
-***** ideally should be just "/", but haven't figured out a way to make this work yet
-*** ide/eclipse/launch/quickstart_quickrun_json.launch, Run As &gt; ...
-**** browse to http://localhost:8080
-*** ide/eclipse/launch/quickstart_quickrun_xhtml.launch, Run As &gt; ...
-**** browse to http://localhost:8080
+            <itemizedlist>
+              <listitem>
+                <para>We recommend use JEE edition (rather than standard Java
+                edition) with its WTP (web tools) tooling.</para>
 
+                <para>This will allow you to test the Run As...&gt; Run On
+                Server functionality</para>
+              </listitem>
 
-</programlisting>
+              <listitem>
+                <para>In addition, m2eclipse must be installed (for ease of
+                installing, but also because the .launch files that are used
+                also depend on the m2eclipse classpath provider entry)</para>
+
+                <para>Notes:</para>
+
+                <itemizedlist>
+                  <listitem>
+                    <para><ulink
+                    url="http://m2eclipse.sonatype.org/sites/m2e">m2eclipse</ulink>
+                    is now bundled as part of Eclipse 3.7 (indigo)</para>
+                  </listitem>
+
+                  <listitem>
+                    <para>using earlier distributions you may find that you
+                    need to manually install <ulink
+                    url="http://download.eclipse.org/tools/gef/updates/releases/">Zest</ulink>
+                    first.</para>
+
+                    <para>See this <ulink
+                    url="http://domengrabec.wordpress.com/2010/12/14/installing-maven-on-eclipse/">blog
+                    post</ulink> for an explanation as to why</para>
+                  </listitem>
+
+                  <listitem>
+                    <para>install m2eclipse from its update site</para>
+                  </listitem>
+                </itemizedlist>
+              </listitem>
+            </itemizedlist>
 
-            <para></para>
+            <para>In addition, a JEE webserver is required. We recommend
+            Tomcat 7 (downloadable from <ulink
+            url="http://tomcat.apache.org/download-70.cgi">here</ulink>).</para>
           </sect3>
 
           <sect3>
-            <title>Run using web.xml</title>
+            <title>Importing the Quickstart Project</title>
+
+            <para>The quickstart app include Eclipse launch configurations (eg
+            <filename>quickrun/ide/eclipse/launch/*.launch</filename>. These
+            files have a hard-coded reference to the project file itself,
+            which means that for them to work, the app that will be generated
+            by the eventual quickstart archetype should be imported "in the
+            right way".</para>
+
+            <para>To minimize the chance of confusion by users who may not
+            know every obscure feature of Eclipse, the quickstart prototype
+            app is therefore written in such a way that the app should be
+            imported using the defaults in the 'Import Maven projects'
+            dialogue.</para>
+
+            <note>
+              <para>This is different from the way that we import the rest of
+              the <emphasis>Isis</emphasis> framework (where we use
+              Advanced&gt;Name Template=\[groupId]:\[artifactId].</para>
+            </note>
 
-            <para>Three approaches, all of which are equivalent:</para>
+            <para>Therefore, import the quickstart prototype app:</para>
 
             <itemizedlist>
               <listitem>
-                <para>mvn jetty:run</para>
+                <para>File&gt;Import&gt;Maven&gt;Existing Maven
+                Projects</para>
               </listitem>
 
               <listitem>
-                <para>using Eclipse .launch configurations</para>
+                <para>Root
+                Directory=<filename>trunk/framework/examples/quickstart</filename></para>
+              </listitem>
 
-                <para>NB: this is different from the .launch in quickrun,
-                because it uses <code>org.apache.isis.WebServer</code> class
-                (hence <filename>web.xml</filename>) rather than
-                <code>org.apache.isis.Isis</code> command line class.</para>
+              <listitem>
+                <para>Refresh</para>
               </listitem>
 
               <listitem>
-                <para>using Eclipse WTP support ("Run as&gt; Run on
-                server")</para>
+                <para>Finish</para>
               </listitem>
             </itemizedlist>
+          </sect3>
 
-            <para></para>
+          <sect3 id="sec.QuickrunLaunchConfigurations">
+            <title>Quickrun .launch configurations</title>
 
-            <para>To test using <code>mvn jetty:run</code>:</para>
+            <para>Each of the quickrun applications can also be started using
+            an Eclipse <filename>.launch</filename> configuration. Navigate to
+            the quickrun/ide/eclipse/launch directory, and right-click Run As
+            &gt; ...</para>
 
-            <programlisting>
+            <para>The table below summarizes the available launch
+            configurations:</para>
 
-** quickstart-viewer-html/
-*** mvn jetty:run
-*** browse to http://localhost:8080/quickstart-viewer-html/
-** quickstart-viewer-xhtml/
-*** mvn jetty:run
-** quickstart-viewer-json/
-*** mvn jetty:run
-*** browse to http://localhost:8080/quickstart-viewer-restful/
-** quickstart-viewer-scimpi/
-*** mvn jetty:run
-*** browse to http://localhost:8080/quickstart-viewer-scimpi/
-** quickstart-viewer-wicket/
-*** mvn jetty:run
-*** browse to http://localhost:8080/quickstart-viewer-wicket/
-</programlisting>
-
-            <para></para>
-
-            <para>To test using the Eclipse .launch file:</para>
-
-            <programlisting>
-** quickstart-viewer-html/
-*** ide/eclipse/launch/quickstart-viewer-html.launch, Run As &gt; ...
-*** browse to http://localhost:8080/logon.app
-** quickstart-viewer-xhtml/
-*** ide/eclipse/launch/quickstart-viewer-xhtml.launch, Run As &gt; ...
-*** browse to http://localhost:8080/
-** quickstart-viewer-json/
-*** ide/eclipse/launch/quickstart-viewer-json.launch, Run As &gt; ...
-*** browse to http://localhost:8080/
-** quickstart-viewer-scimpi/
-*** ide/eclipse/launch/quickstart-viewer-scimpi.launch, Run As &gt; ...
-*** browse to http://localhost:8080/
-** quickstart-viewer-wicket/
-*** ide/eclipse/launch/quickstart-viewer-wicket.launch, Run As &gt; ...
-*** browse to http://localhost:8080/</programlisting>
-
-            <para></para>
-
-            <para></para>
-
-            <para>If using Eclipse JEE edition, then you can also use "Run as
-            &gt; Run on server" to test the webapps. The prerequisite for this
-            is to configure a Server, eg Tomcat 7.0. Use
-            Windows&gt;Preferences&gt;Server&gt;Runtime
-            Environments&gt;Add</para>
+            <table>
+              <title>Testing webapp viewers with Quickrun launch
+              configs</title>
 
-            <para>Then navigate to each of the web modules, and run using Run
-            &gt; Run As:</para>
+              <tgroup cols="3">
+                <colspec align="center" />
 
-            <itemizedlist>
-              <listitem>
-                <para>quickstart-viewer-html/</para>
+                <colspec align="left" />
 
-                <para>browse to
-                http://localhost:8080/quickstart-viewer-html/</para>
-              </listitem>
+                <colspec />
 
-              <listitem>
-                <para>quickstart-viewer-json/</para>
+                <thead>
+                  <row>
+                    <entry>Viewer</entry>
 
-                <para>browse to
-                http://localhost:8080/quickstart-viewer-json/</para>
-              </listitem>
+                    <entry align="center">Launch Configuration</entry>
 
-              <listitem>
-                <para>quickstart-viewer-scimpi/</para>
+                    <entry>Browse to</entry>
+                  </row>
+                </thead>
 
-                <para>browse to
-                http://localhost:8080/quickstart-viewer-scimpi/</para>
-              </listitem>
+                <tbody>
+                  <row>
+                    <entry>DnD</entry>
+
+                    <entry><filename>quickstart-quickrun-dnd.launch</filename></entry>
+
+                    <entry>n/a</entry>
+                  </row>
+
+                  <row>
+                    <entry>HTML</entry>
+
+                    <entry><filename>quickstart-quickrun-html.launch</filename></entry>
 
+                    <entry><ulink
+                    url="http://localhost:8080/logon.app">http://localhost:8080/logon.app</ulink></entry>
+                  </row>
+
+                  <row>
+                    <entry>JSON (Restful)</entry>
+
+                    <entry><filename>quickstart-quickrun-json.launch</filename></entry>
+
+                    <entry><ulink
+                    url="http://localhost:8080/quickstart-viewer-wicket">http://localhost:8080</ulink></entry>
+                  </row>
+
+                  <row>
+                    <entry>XHTML (Restful)</entry>
+
+                    <entry><filename>quickstart-quickrun-xhtml.launch</filename></entry>
+
+                    <entry><ulink
+                    url="http://localhost:8080">http://localhost:8080</ulink></entry>
+                  </row>
+                </tbody>
+              </tgroup>
+            </table>
+          </sect3>
+
+          <sect3>
+            <title>Testing webapp viewers</title>
+
+            <para>For those viewers that are webapps (ie, as defined by a
+            <filename>web.xml</filename> file), the application can be
+            launched using one of two approaches:</para>
+
+            <itemizedlist>
               <listitem>
-                <para>quickstart-viewer-wicket/</para>
+                <para>either: Eclipse's <acronym>WTP</acronym> (web tool
+                platform) support.</para>
 
-                <para>browse to
-                http://localhost:8080/quickstart-viewer-wicket/</para>
+                <para>The module is run using <filename>Run As &gt; Run on
+                Server</filename>. </para>
+
+                <para>The prerequisite for this is to configure a Server, eg
+                Tomcat 7 (as described in the prerequisites above). Use
+                <code>Windows&gt;Preferences&gt;Server&gt;Runtime
+                Environments&gt;Add</code>.</para>
+
+                <note>
+                  <para>It isn't possible (at least, at the time of writing
+                  this) to deploy multiple WARs at the same time - they will
+                  clash with JMXBean singleton failures:</para>
+                </note>
               </listitem>
 
               <listitem>
-                <para>quickstart-viewer-xhtml/</para>
-
-                <para>browse to
-                http://localhost:8080/quickstart-viewer-xhtml/</para>
+                <para>or: using the <filename>.launch</filename> configuration
+                provided.</para>
+
+                <para>As for the quickrun launches (described in <xref
+                linkend="sec.QuickrunLaunchConfigurations" />), the .launch
+                configuration files reside in ide/eclipse/launch and can be
+                run using <filename>Run As&gt; ...</filename>. However,
+                whereas the quickrun <filename>.launch</filename>
+                configurations bootstrap the application using the
+                <classname>org.apache.isis.Isis</classname> class (which in
+                turn uses the <classname>ViewerInstaller</classname>
+                <acronym>API</acronym> that is proprietary to
+                <emphasis>Isis</emphasis>), the module .launch configurations
+                use the <classname>org.apache.isis.WebServer</classname>,
+                which simply bootstraps the application defined in the
+                <filename>web.xml</filename> file.</para>
               </listitem>
             </itemizedlist>
 
-            <para><note>
-                <para>It isn't possible (at least, at the time of writing
-                this) to deploy multiple WARs at the same time - they will
-                clash with JMXBean singleton failures:</para>
-              </note></para>
+            <para>The table below summarises the modules that can be run using
+            either <acronym>WTP</acronym> or the <filename>.launch</filename>
+            configuration.</para>
+
+            <table>
+              <title>Testing webapp viewers with WTP or module .launch
+              configurations</title>
+
+              <tgroup cols="3">
+                <colspec align="center" />
+
+                <colspec align="left" />
+
+                <colspec />
+
+                <thead>
+                  <row>
+                    <entry>Viewer</entry>
+
+                    <entry align="center">Module</entry>
+
+                    <entry>Browse to</entry>
+                  </row>
+                </thead>
+
+                <tbody>
+                  <row>
+                    <entry>HTML</entry>
+
+                    <entry>viewer-html</entry>
+
+                    <entry><ulink
+                    url="http://localhost:8080/logon.app">http://localhost:8080/logon.app</ulink></entry>
+                  </row>
+
+                  <row>
+                    <entry>JSON (Restful)</entry>
+
+                    <entry>viewer-json</entry>
+
+                    <entry><ulink
+                    url="http://localhost:8080">http://localhost:8080</ulink></entry>
+                  </row>
+
+                  <row>
+                    <entry>Scimpi</entry>
+
+                    <entry>viewer-scimpi</entry>
+
+                    <entry><ulink
+                    url="http://localhost:8080">http://localhost:8080</ulink></entry>
+                  </row>
+
+                  <row>
+                    <entry>Wicket</entry>
+
+                    <entry>viewer-wicket</entry>
+
+                    <entry><ulink
+                    url="http://localhost:8080">http://localhost:8080</ulink></entry>
+                  </row>
+
+                  <row>
+                    <entry>XHTML (Restful)</entry>
+
+                    <entry>viewer-xhtml</entry>
+
+                    <entry><ulink
+                    url="http://localhost:8080">http://localhost:8080</ulink></entry>
+                  </row>
+                </tbody>
+              </tgroup>
+            </table>
           </sect3>
 
           <sect3>
-            <title>Run tests from within IDE</title>
+            <title>Unit testing</title>
+
+            <para>The tests-junit and the tests-bdd modules both contain JUnit
+            test suites. These can be run from within Eclipse using Run As
+            &gt; JUnit Test.</para>
+
+            <table>
+              <title>sTesting webapp viewers with WTP or module .launch
+              configurations</title>
 
-            <para></para>
+              <tgroup cols="2">
+                <colspec align="center" />
 
-            <programlisting>
-** quickstart-tests-bdd/
-*** Run as &gt; Junit Tests
-** quickstart-tests-junit/
-*** Run as &gt; Junit Tests
+                <colspec align="left" />
 
+                <thead>
+                  <row>
+                    <entry>Viewer</entry>
 
-</programlisting>
+                    <entry align="center">Module</entry>
+                  </row>
+                </thead>
 
-            <para></para>
+                <tbody>
+                  <row>
+                    <entry>JUnit tests</entry>
+
+                    <entry>tests-junit</entry>
+                  </row>
+
+                  <row>
+                    <entry>BDD (Concordion) tests</entry>
+
+                    <entry>tests-bdd</entry>
+                  </row>
+                </tbody>
+              </tgroup>
+            </table>
           </sect3>
         </sect2>
+
+        <sect2>
+          <title>Testing from a Tomcat Install</title>
+
+          <para>Optionally, you can also test the webapps by deploying to an
+          external servlet container, for example the webapps directory of
+          Tomcat 7. This is a very quick check that the application can be
+          "deployed" to a production-like environment.</para>
+        </sect2>
       </sect1>
 
       <sect1>