You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by bu...@apache.org on 2014/12/10 08:27:39 UTC
svn commit: r932146 - in /websites/staging/isis/trunk: cgi-bin/ content/
content/more-advanced-topics/ content/more-advanced-topics/images/
content/reference/recognized-annotations/
Author: buildbot
Date: Wed Dec 10 07:27:38 2014
New Revision: 932146
Log:
Staging update by buildbot for isis
Added:
websites/staging/isis/trunk/content/more-advanced-topics/images/fixture-scenarios-choice.png (with props)
websites/staging/isis/trunk/content/more-advanced-topics/images/fixture-scenarios-results.png (with props)
websites/staging/isis/trunk/content/more-advanced-topics/images/fixture-scenarios-run.png (with props)
websites/staging/isis/trunk/content/more-advanced-topics/images/fixture-scenarios.png (with props)
websites/staging/isis/trunk/content/reference/recognized-annotations/DomainObjectLayout.html
Removed:
websites/staging/isis/trunk/content/reference/recognized-annotations/ClassLayout.html
Modified:
websites/staging/isis/trunk/cgi-bin/ (props changed)
websites/staging/isis/trunk/content/ (props changed)
websites/staging/isis/trunk/content/more-advanced-topics/Fixture-Scripts.html
websites/staging/isis/trunk/content/reference/recognized-annotations/ActionLayout.html
websites/staging/isis/trunk/content/reference/recognized-annotations/CollectionLayout.html
websites/staging/isis/trunk/content/reference/recognized-annotations/CssClass-deprecated.html
websites/staging/isis/trunk/content/reference/recognized-annotations/CssClassFa-deprecated.html
websites/staging/isis/trunk/content/reference/recognized-annotations/DescribedAs-deprecated.html
websites/staging/isis/trunk/content/reference/recognized-annotations/Named-deprecated.html
websites/staging/isis/trunk/content/reference/recognized-annotations/ParameterLayout.html
websites/staging/isis/trunk/content/reference/recognized-annotations/Plural-deprecated.html
websites/staging/isis/trunk/content/reference/recognized-annotations/PropertyLayout.html
websites/staging/isis/trunk/content/reference/recognized-annotations/about.html
Propchange: websites/staging/isis/trunk/cgi-bin/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Wed Dec 10 07:27:38 2014
@@ -1 +1 @@
-1643995
+1644342
Propchange: websites/staging/isis/trunk/content/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Wed Dec 10 07:27:38 2014
@@ -1 +1 @@
-1643995
+1644342
Modified: websites/staging/isis/trunk/content/more-advanced-topics/Fixture-Scripts.html
==============================================================================
--- websites/staging/isis/trunk/content/more-advanced-topics/Fixture-Scripts.html (original)
+++ websites/staging/isis/trunk/content/more-advanced-topics/Fixture-Scripts.html Wed Dec 10 07:27:38 2014
@@ -423,15 +423,12 @@
<h1>Fixture Scripts</h1>
-<blockquote>
- <p>not yet complete...</p>
-</blockquote>
-
<p>Fixture scripts are intended to support development and testing, by setting up the system into a known state. A fixture
-script are invoked using the FixtureScriptService, and typically either call business actions on domain objects, or
+script are invoked using a "fixture script" service, and typically either call business actions on domain objects, or
call other fixture scripts (that is, the composite pattern).</p>
-<p>Fixture scripts can assist all through the development lifecycle:</p>
+<p>One simple, but noteworthy point about fixture scripts is that they can be invoked through the UI. This makes them
+useful for more than "just" testing:</p>
<ul>
<li>If working with your domain experts/business analyst, fixture scripts allow you to set up the app in the appropriate
@@ -448,14 +445,49 @@ a known state for the feature being test
can practice using the features of the system.</li>
</ul>
-<p>The apps generated by the <a href="../intro/getting-started/simpleapp-archetype.html">two</a> <a href="../intro/getting-started/todoapp-archetype.html">archetypes</a>
-both use fixture scripts, as surfaced in the "Prototyping menu":</p>
+<p>The "fixture script" service is an application-specific subclass of the abstract <code>FixtureScripts</code> service provided in
+Isis' applib. An example of this can be found in the <a href="../intro/getting-started/simpleapp-archetype.html">simple app</a>
+archetype, which defines <code>SimpleObjectsFixtureService</code>. The <a href="../intro/getting-started/todoapp-archetype.html">todo app</a>
+archetype also does something very similar, defining a <code>ToDoItemsFixtureService</code>.</p>
+
+<h2>Using Fixture Scripts in the UI</h2>
+
+<p>The normal convention is to for the (application's) fixture script service to be surfaced on a "Prototyping" menu. Here's
+how the todoapp defines its fixture script service:</p>
+
+<pre><code>@DomainService
+@DomainServiceLayout(
+ named = "Prototyping",
+ menuBar = DomainServiceLayout.MenuBar.SECONDARY,
+ menuOrder = "10"
+)
+public class ToDoItemsFixturesService extends FixtureScripts {
+ ...
+}
+</code></pre>
+
+<p>On the prototyping menu the fixture script service's "run fixture script" action can be called:</p>
+
+<p><img src="images/fixture-scenarios-run.png" width="800"></img></p>
+
+<p>This brings up an action prompt that lists the available fixture scripts:</p>
-<p>The remainder of this page describes the API and typical usage.</p>
+<p><img src="images/fixture-scenarios-choice.png" width="800"></img></p>
-<h2>API</h2>
+<p>Selecting and running one of these generates a list detailing the results of running the fixture:</p>
-<p>Fixture scripts are implemented by subclassing the <code>FixtureScript</code> class, implementing the <code>execute(ExecutionContext)</code> method:</p>
+<p><img src="images/fixture-scenarios-results.png" width="800"></img></p>
+
+<p>This list acts as a useful transcript of the steps taken by the fixture script. It also allows the user to navigate
+to any of the objects created/updated by the fixture script.</p>
+
+<h2>Using Fixture Scripts in Integration Tests</h2>
+
+<p>TODO</p>
+
+<h2>Writing Fxture Scripts</h2>
+
+<p>Fixture scripts are implemented by subclassing the <code>FixtureScript</code> class, providing an implemention of the <code>execute(ExecutionContext)</code> method:</p>
<pre><code>package org.apache.isis.applib.fixturescripts;
@@ -468,32 +500,286 @@ public abstract class FixtureScript ...
}
</code></pre>
-<p>For example, in the <a href="http://github.com/estatio/estatio">Estatio app</a> the </p>
+<p>The <code>ExecutionContext</code> provides several capabilities to the fixture script:</p>
+
+<ul>
+<li>add results to the</li>
+<li>it allows the script to execute other child fixture scripts</li>
+</ul>
+
+<h2>Example Usage</h2>
+
+<p>The todo app (generated by the <a href="../intro/getting-started/todoapp-archetype.html">todo app archetype</a> uses fixture scripts to create a number of todo items, in different states (some complete, some not).</p>
+
+<p>There are various ways of using the fixture script API, but broadly speaking it's helpful to distinguish (what we call):</p>
+
+<ul>
+<li>action fixture scripts - fine-grained, perform a single action (or create a single object)</li>
+<li>scenario fixture scripts - coarse-grained, accomplish a single business goal (or set up a bunch of related data)</li>
+</ul>
+
+<p>Scenario scripts usually call action scripts, so we'll start by discussing action scripts first.</p>
+
+<h3>Action scripts</h3>
+
+<p>The todo app's <code>ToDoItemForBuyStamps</code> fixture script creates a single, not yet complete todo item:</p>
+
+<pre><code>public class ToDoItemForBuyStamps extends ToDoItemAbstract {
+
+ public static final String DESCRIPTION = "Buy stamps";
+
+ @Override
+ protected void execute(ExecutionContext executionContext) {
+ createToDoItem(
+ DESCRIPTION,
+ Category.Domestic, Subcategory.Shopping,
+ nowPlusDays(0),
+ BD("10.00"),
+ executionContext);
+ }
+}
+</code></pre>
+
+<p>where in turn <code>ToDoItemAbstract</code> inherits from <code>FixtureScript</code>:</p>
+
+<pre><code>public abstract class ToDoItemAbstract extends FixtureScript {
+
+ protected ToDoItem createToDoItem(
+ final String description,
+ final Category category, final Subcategory subcategory,
+ final LocalDate dueBy,
+ final BigDecimal cost,
+ final ExecutionContext executionContext) {
+
+ // validate parameters
+ final String ownedBy = executionContext.getParameter("ownedBy");
+ if(ownedBy == null) {
+ throw new IllegalArgumentException("'ownedBy' must be specified");
+ }
+
+ // execute
+ ToDoItem newToDo = toDoItems.newToDo(
+ description, category, subcategory, ownedBy, dueBy, cost);
+ return executionContext.addResult(this, newToDo);
+ }
+
+ protected LocalDate nowPlusDays(int days) {
+ return clockService.now().plusDays(days);
+ }
+
+ protected BigDecimal BD(String str) {
+ return new BigDecimal(str);
+ }
+
+ @javax.inject.Inject
+ private ToDoItems toDoItems;
+
+ @javax.inject.Inject
+ protected ClockService clockService;
+}
+</code></pre>
+
+<p>In this particular design the "know-how" (to create a todo item) is encapsulated in the <code>ToDoItemAbstract</code> superclass, while the "what" (actual arguments) are in the subclass.</p>
+
+<p>It's also possible for fixture scripts to call prerequisite fixture scripts. So, this fixture script will create the "buy stamps" todo item and then complete it:</p>
+
+<pre><code>public class ToDoItemCompleteForBuyStamps extends ToDoItemCompleteAbstract {
+
+ @Override
+ protected void execute(ExecutionContext executionContext) {
+
+ // prereqs
+ executeChild(new ToDoItemForBuyStamps(), executionContext);
+
+ // this fixture
+ complete(ToDoItemForBuyStamps.DESCRIPTION, executionContext);
+ }
+}
+</code></pre>
+
+<p>where once more the superclass provides the "know-how":</p>
+
+<pre><code>public abstract class ToDoItemCompleteAbstract extends FixtureScript {
+
+ protected void complete(final String description, final ExecutionContext executionContext) {
+ String ownedBy = executionContext.getParameter("ownedBy");
+ final ToDoItem toDoItem = findToDoItem(description, ownedBy);
+ toDoItem.setComplete(true);
+ executionContext.add(this, toDoItem);
+ }
+
+ private ToDoItem findToDoItem(final String description, final String ownedBy) {
+ final Collection<ToDoItem> filtered = Collections2.filter(getContainer().allInstances(ToDoItem.class), new Predicate<ToDoItem>() {
+ @Override
+ public boolean apply(ToDoItem input) {
+ return Objects.equal(description, input.getDescription()) &&
+ Objects.equal(ownedBy, input.getOwnedBy());
+ }
+ });
+ return filtered.isEmpty()? null: filtered.iterator().next();
+ }
+}
+</code></pre>
+
+<h3>Scenario scripts</h3>
+
+<p>Fixture scripts support the composite pattern, meaning that they can also be nested. This allows us to create scenario scripts, to set up a bunch of data.</p>
+
+<p>For example, the <code>ToDoItemsRecreate</code> fixture script sets up a whole set of todo items:</p>
+
+<pre><code>public class ToDoItemsRecreate extends FixtureScript {
+
+ public ToDoItemsRecreate() {
+ withDiscoverability(Discoverability.DISCOVERABLE);
+ }
+ ...
+ @Override
+ protected void execute(ExecutionContext executionContext) {
+ ...
+
+ // prereqs
+ executeChild(new ToDoItemsDelete(), executionContext);
+
+ // create items
+ executeChild(new ToDoItemForBuyMilk(), executionContext);
+ executeChild(new ToDoItemForBuyBread(), executionContext);
+ executeChild(new ToDoItemForBuyStamps(), executionContext);
+ executeChild(new ToDoItemForPickUpLaundry(), executionContext);
+ executeChild(new ToDoItemForMowLawn(), executionContext);
+ executeChild(new ToDoItemForVacuumHouse(), executionContext);
+ executeChild(new ToDoItemForSharpenKnives(), executionContext);
+ executeChild(new ToDoItemForWriteToPenPal(), executionContext);
+ executeChild(new ToDoItemForWriteBlogPost(), executionContext);
+ executeChild(new ToDoItemForOrganizeBrownBag(), executionContext);
+ executeChild(new ToDoItemForSubmitConferenceSession(), executionContext);
+ executeChild(new ToDoItemForStageIsisRelease(), executionContext);
+ }
+}
+</code></pre>
+
+<p>There's a couple of things worth pointing out here. First, in the <code>execute(...)</code> method, note the call to the <code>ToDoItemsDelete</code> fixture script. This is responsible for tearing down all relevant data first:</p>
-<pre><code> /**
- * Subclasses should <b>implement this</b> but SHOULD <i>NOT</i> CALL DIRECTLY.
- *
- * <p>
- * Instead call sub fixture scripts using {@link #executeChild(FixtureScript, org.apache.isis.applib.fixturescripts.FixtureScript.ExecutionContext)} or
- * {@link #executeChild(String, org.apache.isis.applib.fixturescripts.FixtureScript, org.apache.isis.applib.fixturescripts.FixtureScript.ExecutionContext)}.
- * </p>
- */
+<pre><code>public class ToDoItemsDelete extends FixtureScript {
+
+ protected void execute(ExecutionContext executionContext) {
+ final String ownedBy = executionContext.getParameter("ownedBy");
+ isisJdoSupport.executeUpdate("delete from \"ToDoItem\" where \"ownedBy\" = '" + ownedBy + "'");
+ }
+
+ @javax.inject.Inject
+ private IsisJdoSupport isisJdoSupport;
+}
+</code></pre>
+
+<p>Usually tear down fixture scripts will delete some logic partition of data that is under the exclusive control of the test; in the case the fact that every todo item has an owner is exploited.</p>
+
+<p>Second, the scenario script is made available in the UI through the call to <code>withDiscoverability(...)</code> in its constructor:</p>
+
+<pre><code>public class ToDoItemsRecreate extends FixtureScript {
+
+ public ToDoItemsRecreate() {
+ withDiscoverability(Discoverability.DISCOVERABLE);
+ }
+ ...
+}
</code></pre>
-<p>Registering </p>
+<p>This tells the fixture script framework that the fixture script should be listed as a choice in the UI:</p>
+
+<p><img src="images/fixture-scenarios.png" width="800"></img></p>
+
+<h3>Skip if encountered more than once</h3>
+
+<pre><code>public class ToDoItemsRecreateAndCompleteSeveral extends FixtureScript {
+ ...
+
+ private String ownedBy;
+ public String getOwnedBy() { return ownedBy; }
+ public void setOwnedBy(String ownedBy) { this.ownedBy = ownedBy; }
+
+ @Override
+ protected void execute(ExecutionContext executionContext) {
+
+ // defaults
+ executionContext.setParameterIfNotPresent(
+ "ownedBy",
+ Util.coalesce(getOwnedBy(), getContainer().getUser().getName()));
+
+ // prereqs
+ executeChild(new ToDoItemsRecreate(), executionContext);
+
+ // this fixture
+ executeChild(new ToDoItemCompleteForBuyStamps(), executionContext);
+ executeChild(new ToDoItemCompleteForWriteBlogPost(), executionContext);
+ }
+}
+</code></pre>
<p>lookup(...)</p>
-<pre><code>/**
- * Looks up item from execution context, and completes.
- */
-protected void complete2(final String fixtureResultKey, final ExecutionContext executionContext) {
- final ToDoItem toDoItem = lookup(fixtureResultKey, ToDoItem.class);
- if(toDoItem == null) {
- executionContext.add(this, "Cannot find item with key '" + fixtureResultKey + "'");
+<pre><code>public class ToDoItemsRecreate extends FixtureScript {
+</code></pre>
+
+<h3>Parameters</h3>
+
+<p>When a fixture script is called</p>
+
+<pre><code> private final static Pattern keyEqualsValuePattern = Pattern.compile("([^=]*)=(.*)");
+
+
+
+ public String getParameter(String parameterName) {
+
+ public String getParameters() {
+ return parameters;
+ }
+
+ public String getParameter(String parameterName) {
+ return parameterMap.get(parameterName);
+ }
+
+ public Map<String,String> getParameterMap() {
+ return Collections.unmodifiableMap(parameterMap);
+ }
+
+ public void setParameterIfNotPresent(String parameterName, String parameterValue) {
+ if(parameterName == null) {
+ throw new IllegalArgumentException("parameterName required");
+ }
+ if(parameterValue == null) {
+ // ignore
+ return;
+ }
+ if(parameterMap.containsKey(parameterName)) {
+ // ignore; the existing parameter take precedence
+ return;
+ }
+ parameterMap.put(parameterName, parameterValue);
+ }
+</code></pre>
+
+<p>Overriding defaults</p>
+
+<pre><code>public class ToDoItemsRecreate extends FixtureScript {
+
+ public ToDoItemsRecreate() {
+ withDiscoverability(Discoverability.DISCOVERABLE);
+ }
+
+ private String ownedBy;
+ public String getOwnedBy() { return ownedBy; }
+ public void setOwnedBy(String ownedBy) { this.ownedBy = ownedBy; }
+
+ @Override
+ protected void execute(ExecutionContext executionContext) {
+
+ // defaults
+ executionContext.setParameterIfNotPresent(
+ "ownedBy",
+ Util.coalesce(getOwnedBy(), getContainer().getUser().getName()));
+
+ ...
}
- toDoItem.setComplete(true);
- executionContext.add(this, toDoItem);
}
</code></pre>
Added: websites/staging/isis/trunk/content/more-advanced-topics/images/fixture-scenarios-choice.png
==============================================================================
Binary file - no diff available.
Propchange: websites/staging/isis/trunk/content/more-advanced-topics/images/fixture-scenarios-choice.png
------------------------------------------------------------------------------
svn:mime-type = image/png
Added: websites/staging/isis/trunk/content/more-advanced-topics/images/fixture-scenarios-results.png
==============================================================================
Binary file - no diff available.
Propchange: websites/staging/isis/trunk/content/more-advanced-topics/images/fixture-scenarios-results.png
------------------------------------------------------------------------------
svn:mime-type = image/png
Added: websites/staging/isis/trunk/content/more-advanced-topics/images/fixture-scenarios-run.png
==============================================================================
Binary file - no diff available.
Propchange: websites/staging/isis/trunk/content/more-advanced-topics/images/fixture-scenarios-run.png
------------------------------------------------------------------------------
svn:mime-type = image/png
Added: websites/staging/isis/trunk/content/more-advanced-topics/images/fixture-scenarios.png
==============================================================================
Binary file - no diff available.
Propchange: websites/staging/isis/trunk/content/more-advanced-topics/images/fixture-scenarios.png
------------------------------------------------------------------------------
svn:mime-type = image/png
Modified: websites/staging/isis/trunk/content/reference/recognized-annotations/ActionLayout.html
==============================================================================
--- websites/staging/isis/trunk/content/reference/recognized-annotations/ActionLayout.html (original)
+++ websites/staging/isis/trunk/content/reference/recognized-annotations/ActionLayout.html Wed Dec 10 07:27:38 2014
@@ -429,7 +429,7 @@ annotation.</p>
<p>Similar layout annotations exist for other elements of the metamodel:</p>
<ul>
-<li><a href="./ClassLayout.html">@ClassLayout</a> for domain classes</li>
+<li><a href="./DomainObjectLayout.html">@DomainObjectLayout</a> for domain classes</li>
<li><a href="./CollectionLayout.html">@CollectionLayout</a> for collections</li>
<li><a href="./PropertyLayout.html">@PropertyLayout</a> for properties</li>
<li><a href="./ParameterLayout.html">@ParameterLayout</a> for action parameters</li>
Modified: websites/staging/isis/trunk/content/reference/recognized-annotations/CollectionLayout.html
==============================================================================
--- websites/staging/isis/trunk/content/reference/recognized-annotations/CollectionLayout.html (original)
+++ websites/staging/isis/trunk/content/reference/recognized-annotations/CollectionLayout.html Wed Dec 10 07:27:38 2014
@@ -456,7 +456,7 @@ annotation.</p>
<ul>
<li><a href="./ActionLayout.html">@ActionLayout</a> for actions</li>
-<li><a href="./ClassLayout.html">@ClassLayout</a> for domain classes</li>
+<li><a href="./DomainObjectLayout.html">@DomainObjectLayout</a> for domain classes</li>
<li><a href="./PropertyLayout.html">@PropertyLayout</a> for properties</li>
<li><a href="./ParameterLayout.html">@ParameterLayout</a> for action parameters</li>
</ul>
Modified: websites/staging/isis/trunk/content/reference/recognized-annotations/CssClass-deprecated.html
==============================================================================
--- websites/staging/isis/trunk/content/reference/recognized-annotations/CssClass-deprecated.html (original)
+++ websites/staging/isis/trunk/content/reference/recognized-annotations/CssClass-deprecated.html Wed Dec 10 07:27:38 2014
@@ -422,7 +422,7 @@
</div>
<blockquote>
- <p>Deprecated in 1.8.0-SNAPSHOT, see instead <a href="./ClassLayout.html">@ClassLayout</a>, <a href="./PropertyLayout.html">@PropertyLayout</a>, <a href="./CollectionLayout.html">@CollectionLayout</a>, <a href="./ActionLayout.html">@ActionLayout</a> and <a href="./ParameterLayout.html">@ParameterLayout</a>.</p>
+ <p>Deprecated in 1.8.0-SNAPSHOT, see instead <a href="./DomainObjectLayout.html">@DomainObjectLayout</a>, <a href="./PropertyLayout.html">@PropertyLayout</a>, <a href="./CollectionLayout.html">@CollectionLayout</a>, <a href="./ActionLayout.html">@ActionLayout</a> and <a href="./ParameterLayout.html">@ParameterLayout</a>.</p>
</blockquote>
<p>The <code>CssClass</code> annotation applies to object and also to any object member
Modified: websites/staging/isis/trunk/content/reference/recognized-annotations/CssClassFa-deprecated.html
==============================================================================
--- websites/staging/isis/trunk/content/reference/recognized-annotations/CssClassFa-deprecated.html (original)
+++ websites/staging/isis/trunk/content/reference/recognized-annotations/CssClassFa-deprecated.html Wed Dec 10 07:27:38 2014
@@ -422,7 +422,7 @@
</div>
<blockquote>
- <p>Deprecated in 1.8.0-SNAPSHOT, see instead <a href="./ClassLayout.html">@ClassLayout</a>, <a href="./PropertyLayout.html">@PropertyLayout</a>, <a href="./CollectionLayout.html">@CollectionLayout</a>, <a href="./ActionLayout.html">@ActionLayout</a> and <a href="./ParameterLayout.html">@ParameterLayout</a>.</p>
+ <p>Deprecated in 1.8.0-SNAPSHOT, see instead <a href="./DomainObjectLayout.html">@DomainObjectLayout</a>, <a href="./PropertyLayout.html">@PropertyLayout</a>, <a href="./CollectionLayout.html">@CollectionLayout</a>, <a href="./ActionLayout.html">@ActionLayout</a> and <a href="./ParameterLayout.html">@ParameterLayout</a>.</p>
</blockquote>
<p>The <code>CssClassFa</code> annotation applies to objects and also to object actions,
Modified: websites/staging/isis/trunk/content/reference/recognized-annotations/DescribedAs-deprecated.html
==============================================================================
--- websites/staging/isis/trunk/content/reference/recognized-annotations/DescribedAs-deprecated.html (original)
+++ websites/staging/isis/trunk/content/reference/recognized-annotations/DescribedAs-deprecated.html Wed Dec 10 07:27:38 2014
@@ -422,7 +422,7 @@
</div>
<blockquote>
- <p>Deprecated in 1.8.0-SNAPSHOT, see instead <a href="./ClassLayout.html">@ClassLayout</a>, <a href="./PropertyLayout.html">@PropertyLayout</a>, <a href="./CollectionLayout.html">@CollectionLayout</a>, <a href="./ActionLayout.html">@ActionLayout</a> and <a href="./ParameterLayout.html">@ParameterLayout</a>.</p>
+ <p>Deprecated in 1.8.0-SNAPSHOT, see instead <a href="./DomainObjectLayout.html">@DomainObjectLayout</a>, <a href="./PropertyLayout.html">@PropertyLayout</a>, <a href="./CollectionLayout.html">@CollectionLayout</a>, <a href="./ActionLayout.html">@ActionLayout</a> and <a href="./ParameterLayout.html">@ParameterLayout</a>.</p>
</blockquote>
<p>The <code>@DescribedAs</code> annotation is used to provide a short description of
Added: websites/staging/isis/trunk/content/reference/recognized-annotations/DomainObjectLayout.html
==============================================================================
--- websites/staging/isis/trunk/content/reference/recognized-annotations/DomainObjectLayout.html (added)
+++ websites/staging/isis/trunk/content/reference/recognized-annotations/DomainObjectLayout.html Wed Dec 10 07:27:38 2014
@@ -0,0 +1,500 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+
+ <meta charset="utf-8">
+ <title>@DomainObjectLayout
</title>
+ <meta name="description" content="">
+ <meta name="author" content="">
+
+ <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
+ <!--[if lt IE 9]>
+ <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
+ <![endif]-->
+
+
+ <!-- Le styles -->
+ <link href="./../../bootstrap-3.0.0/css/bootstrap.css" rel="stylesheet">
+ <link href="./../../prettify.css" rel="stylesheet">
+
+ <style type="text/css">
+ body {
+ padding-top: 60px;
+ }
+ .sprite {
+ display: inline-block;
+ height: 20px;
+ margin: 0 auto 4px;
+ outline: medium none;
+ text-indent: -999em;
+ width: 24px;
+ background-image: url('./../../images/sprites.png');
+ background-repeat: no-repeat;
+ overflow: hidden;
+ cursor: pointer;
+ }
+ .edit-page {
+ display: inline-block;
+ height: 20px;
+ margin: 0 auto 4px;
+ outline: medium none;
+ text-indent: -999em;
+ width: 24px;
+ background-image: url('./../../images/edit.png');
+ background-repeat: no-repeat;
+ overflow: hidden;
+ cursor: pointer;
+ }
+ .fb-share {
+ background-position: 0px -40px;
+ }
+ .gp-share {
+ background-position: 0px 0px;
+ }
+ .tw-share {
+ background-position: 0px -80px;
+ }
+ .markdown-content {
+ min-height: 500px;
+ }
+ .book-image img {
+ border: 1px;
+ border-style: solid;
+ }
+ .release-matrix .heading {
+ background-color: #eeeeee;
+ }
+ .release-matrix .new {
+ color: #dd0000;
+ font-weight: bolder;
+ }
+ .stub,.note {
+ position: relative;
+ padding: 7px 15px;
+ margin-bottom: 18px;
+ color: #404040;
+ background-color: #eedc94;
+ background-repeat: repeat-x;
+ background-image: -khtml-gradient(linear, left top, left bottom, from(#fceec1), to(#eedc94));
+ background-image: -moz-linear-gradient(top, #fceec1, #eedc94);
+ background-image: -ms-linear-gradient(top, #fceec1, #eedc94);
+ background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #fceec1), color-stop(100%, #eedc94));
+ background-image: -webkit-linear-gradient(top, #fceec1, #eedc94);
+ background-image: -o-linear-gradient(top, #fceec1, #eedc94);
+ background-image: linear-gradient(top, #fceec1, #eedc94);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fceec1', endColorstr='#eedc94', GradientType=0);
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+ border-color: #eedc94 #eedc94 #e4c652;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+ text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
+ border-width: 1px;
+ border-style: solid;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+ -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
+ -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
+ }
+
+ div.XXXisis-tweak form {
+ margin-top: 6px;
+ margin-bottom: -2px;
+ }
+
+ div.row div.col-md-12 {
+ border-top: 1px solid #eeeeee;
+ }
+
+
+ /* Isis specific stuff */
+
+ div.row div.col-md-12 {
+ margin-top: 20px;
+ }
+
+ .container {
+ width: 940px;
+ }
+
+ .markdown-content .documentation .span-one-third p {
+ margin-bottom: 0px;
+ }
+
+ .container .markdown-content .group,
+ .markdown-content .documentation .group {
+ margin-top: 9px;
+ }
+
+ .container .group h2,
+ .documentation .group h2 {
+ border-bottom: 1px solid #DDD
+ }
+
+ .container h2 a[name],
+ .documentation h2 a[name] {
+ padding-top: 50px;
+ margin-top: -50px;
+ }
+
+ .apacheconeu2014 h2 {
+ margin-top: 80px;
+ }
+
+ .container h2 a[name],
+ .container h3 a[name],
+ .container h4 a[name],
+ .documentation h2 a[name],
+ .documentation h3 a[name],
+ .documentation h4 a[name] {
+ color: black;
+ display: inline-block;
+ }
+ .container h2 a[name]:hover,
+ .container h3 a[name]:hover,
+ .container h4 a[name]:hover,
+ .documentation h2 a[name]:hover,
+ .documentation h3 a[name]:hover,
+ .documentation h4 a[name]:hover {
+ text-decoration: none;
+ }
+
+ .documentation h2 a:not([name]),
+ .documentation h3 a:not([name]),
+ .documentation h4 a:not([name]) {
+ /* same as code style */
+ padding: 0 3px 2px;
+ font-family: Monaco, Andale Mono, Courier New, monospace;
+ font-size: 12px;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+ padding: 1px 3px;
+ }
+
+ .carousel-indicators li {
+ border: 1px solid rgb(192,70,1);
+ }
+
+ .carousel-indicators li.active {
+ background-color: rgb(192,70,1);
+ }
+
+ .carousel-control .icon-prev,
+ .carousel-control .icon-next {
+ color: rgb(192,70,1);
+ font-size: 60px;
+ }
+
+ .page-header {
+ margin-top: 0px;
+ }
+
+ .container blockquote p {
+ font-size: small;
+ }
+
+ .container blockquote p:not([author]) {
+ font-style: italic;
+ }
+
+ .container blockquote p {
+ font-size: small;
+ font-style: italic;
+ font-weight: bold;
+ }
+
+ footer hr {
+ margin-top: 100px;
+ }
+
+ .markdown-content img {
+ margin-top: 10px;
+ margin-bottom: 20px;
+ }
+
+ .markdown-content a img {
+ margin-top: 0px;
+ margin-bottom: 0px;
+ }
+
+
+ #forkongithub a{
+ display: none;
+ background:#090;
+ color:#fff;
+ text-decoration:none;
+ font-family:arial, sans-serif;
+ text-align:center;
+ font-weight:bold;
+ padding:5px 40px;
+ font-size:1rem;
+ line-height:2rem;
+ position:relative;
+ transition:0.5s;
+ }
+ #forkongithub a:hover{
+ background:#0D0;
+ color:#fff;
+ }
+ #forkongithub a::before,
+ #forkongithub a::after{
+ content:"";width:100%;
+ display:block;
+ position:fixed;
+ top:1px;
+ left:0;
+ height:1px;
+ background:#fff;
+ z-index: 9999;
+ }
+ #forkongithub a::after{
+ bottom:1px;
+ top:auto;
+ }
+ @media screen and (min-width:768px){
+ #forkongithub{
+ position:fixed;
+ display:block;
+ top:0;
+ right:0;
+ width:250px;
+ overflow:hidden;
+ height:250px;
+ z-index: 9999;
+ }
+ #forkongithub a{
+ display:inherit;
+ width:250px;
+ position:fixed;
+ font-size:small;
+ top:40px;
+ right:-60px;
+ transform:rotate(45deg);
+ -webkit-transform:rotate(45deg);
+ -ms-transform:rotate(45deg);
+ box-shadow:4px 4px 10px rgba(0,0,0,0.8);
+ }
+ }
+ </style>
+
+ <!-- courtesy of http://codepo8.github.io/css-fork-on-github-ribbon/ -->
+ <span id="forkongithub">
+ <a href="https://github.com/apache/isis">Fork me on GitHub</a>
+ </span>
+
+ <script type="text/javascript">
+ function fbshare () {
+ window.open(
+ "http://www.facebook.com/sharer/sharer.php?u="+document.URL,
+ 'Share on Facebook',
+ 'width=640,height=426');
+ };
+ function gpshare () {
+ window.open(
+ "https://plus.google.com/share?url="+document.URL,
+ 'Share on Google+',
+ 'width=584,height=385');
+ };
+ function twshare () {
+ window.open(
+ "https://twitter.com/intent/tweet?url="+document.URL+"&text=@DomainObjectLayout
",
+ 'Share on Twitter',
+ 'width=800,height=526');
+ };
+ </script>
+
+ <!-- Le fav and touch icons -->
+ <link rel="shortcut icon" href="./../../images/favicon.ico">
+
+ <script src="./../../javascript/prettify.js" type="text/javascript"></script>
+
+ <script src="//code.jquery.com/jquery.js"></script>
+ <script src="./../../javascript/prettyprint.js"></script>
+ <script src="./../../bootstrap-3.0.0/js/bootstrap.js"></script>
+
+
+ <script src="http://platform.twitter.com/widgets.js" type="text/javascript"></script>
+ <!--
+ <DISABLEDscript src="./../../javascript/common.js"></DISABLEDscript>
+ -->
+
+
+
+
+
+ <script>
+ $(function () { prettyPrint() })
+ $().dropdown()
+ </script>
+
+
+ </head>
+
+ <body>
+
+ <nav class="navbar navbar-fixed-top navbar-inverse" role="navigation">
+ <div class="container">
+ <a class="navbar-brand" href="./../../index.html">Apache Isis™</a>
+ <ul class="nav navbar-nav">
+
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">Demos<b class="caret"></b></a>
+ <ul class="dropdown-menu">
+ <li><a href="./../../intro/elevator-pitch/isis-in-pictures.html">Screenshots</a></li>
+ <li><a href="./../../intro/tutorials/screencasts.html">Screencasts<img src="./../../images/tv_show-25.png"></a></li>
+ <li><a href="./../../intro/powered-by/powered-by.html">Powered by</a></li>
+ <li><a href="http://isisdemo.mmyco.co.uk/" target="_blank">Online Demo</a></li>
+ </ul>
+ </li>
+
+ <li><a href="./../../documentation.html">Docs</a></li>
+ <li><a href="http://www.isisaddons.org" target="_blank">Add-ons</a></li>
+
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">Downloads<b class="caret"></b></a>
+ <ul class="dropdown-menu">
+ <li><a href="./../../intro/getting-started/simpleapp-archetype.html">Isis (Maven archetype)</a></li>
+ <li><a href="./../../download.html">Isis (downloads)</a></li>
+ <li><a href="http://www.isisaddons.org" target="_blank">Isis Add-ons</a></li>
+ </ul>
+ </li>
+
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">Help<b class="caret"></b></a>
+ <ul class="dropdown-menu">
+ <li><a href="./../../support.html">Mailing Lists</a></li>
+ <li><a href="http://isis.markmail.org/search/?q=" target="_blank">ML Archives</a></li>
+ <li><a href="https://issues.apache.org/jira/browse/ISIS" target="_blank">JIRA</a></li>
+ <li><a href="http://stackoverflow.com/questions/tagged/isis" target="_blank">Stack Overflow</a></li>
+ <li><a href="http://github.com/apache/isis" target="_blank">Github mirror</a></li>
+ </ul>
+ </li>
+
+ <li class="dropdown navbar-right">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">@ASF<b class="caret"></b></a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="http://www.apache.org/" target="_blank">Apache Homepage <i class="icon-share-alt"></i></a>
+ </li>
+ <li>
+ <a href="http://www.apache.org/licenses/" target="_blank">Licenses <i class="icon-share-alt"></i></a>
+ </li>
+ <li>
+ <a href="http://www.apache.org/security/" target="_blank">Security <i class="icon-share-alt"></i></a>
+ </li>
+ <li>
+ <a href="http://www.apache.org/foundation/sponsorship.html" target="_blank">Sponsorship <i class="icon-share-alt"></i></a>
+ </li>
+ <li>
+ <a href="http://www.apache.org/foundation/thanks.html">Thanks <i class="icon-share-alt"></i></a>
+ </li>
+ <li>
+ <a href="./../../more-thanks.html">More thanks <i class="icon-share-alt"></i></a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+
+ <FORM class="navbar-form navbar-right" id="searchbox_012614087480249044419:dn-q5gtwxya" action="http://www.google.com/cse">
+ <div class="form-group">
+ <input type="hidden" name="cx" value="012614087480249044419:dn-q5gtwxya">
+ <INPUT type="hidden" name="cof" value="FORID:0">
+ <INPUT class="form-control" name="q" type="text" placeholder="Search">
+ </div>
+ </FORM>
+
+
+ </div>
+
+
+ </nav>
+
+ <div class="container">
+ <div class="markdown-content">
+
+
+<div class="page-header">
+<p><a href="./../../documentation.html">Docs</a> » <a href="./../../reference/about.html">Reference</a> » <a href="./../../reference/recognized-annotations/about.html">Recognized Annotations</a></p>
+<h1>@DomainObjectLayout
+
+</h1>
+</div>
+
+<p>The <code>@DomainObjectLayout</code> annotation applies to domain classes, collecting together all UI hints within a single
+annotation.</p>
+
+<ul>
+<li><code>cssClass</code> - the css class that a domain class (type) should have, to allow more targetted styling in <code>application.css</code></li>
+<li><code>describedAs</code> - description of this class, eg to be rendered in a tooltip.</li>
+<li><code>named</code> -the name of this class (overriding the name derived from its name in code)</li>
+<li><code>paged</code> - the page size for instances of this class when rendered within a table.</li>
+<li><code>plural</code> - the plural name of the class</li>
+</ul>
+
+<p>For example:</p>
+
+<pre><code>@DomainObjectLayout(
+ cssClass="x-key",
+ describedAs="Capture a task that you need to do",
+ paged=30)
+)
+public class ToDoItem {
+ ...
+}
+</code></pre>
+
+<h2>See also</h2>
+
+<p>Similar layout annotations exist for other elements of the metamodel:</p>
+
+<ul>
+<li><a href="./ActionLayout.html">@ActionLayout</a> for actions</li>
+<li><a href="./CollectionLayout.html">@CollectionLayout</a> for collections</li>
+<li><a href="./PropertyLayout.html">@PropertyLayout</a> for properties</li>
+<li><a href="./ParameterLayout.html">@ParameterLayout</a> for action parameters</li>
+</ul>
+
+
+
+ </div>
+
+ <div id="edit" class="modal hide fade in" style="xxxdisplay: none; ">
+ <div class="modal-header">
+ <a class="close" data-dismiss="modal">x</a>
+
+ <h3>Thank you for contributing to the documention!</h3>
+ </div>
+ <div class="modal-body">
+ <h4>Any help with the documentation is greatly appreciated.</h4>
+ <p>All edits are reviewed before going live, so feel free to do much more than fix typos or links. If you see a page that could benefit from an entire rewrite, we'd be thrilled to review it. Don't be surprised if we like it so much we ask you for help with other pages :)</p>
+ <small>NOTICE: unless indicated otherwise on the pages in question, all editable content available from apache.org is presumed to be licensed under the Apache License (AL) version 2.0 and hence all submissions to apache.org treated as formal Contributions under the license terms.</small>
+ <!--[if gt IE 6]>
+ <h4>Internet Explorer Users</h4>
+ <p>If you are not an Apache committer, click the Yes link and enter a <i>anonymous</i> for the username and leave the password empty</p>
+ <![endif]-->
+
+ </div>
+ <div class="modal-footer">
+ Do you have an Apache ID?
+ <a href="javascript:void(location.href='https://cms.apache.org/redirect?uri='+escape(location.href))" class="btn">Yes</a>
+ <a href="javascript:void(location.href='https://anonymous:@cms.apache.org/redirect?uri='+escape(location.href))" class="btn">No</a>
+ </div>
+ </div>
+ <!--
+ <script src="./../../javascript/bootstrap-modal.js"></script>
+ -->
+
+ <footer>
+ <hr/>
+ <p>
+ Copyright © 2010~2014 The Apache Software Foundation, Licensed under the Apache License, Version 2.0.
+ <br/>
+ Apache Isis, Isis, Apache, the Apache feather logo, and the Apache Isis project logo are trademarks of The Apache Software Foundation.
+ </p>
+ </footer>
+
+ </div> <!-- /container -->
+
+ </body>
+</html>
Modified: websites/staging/isis/trunk/content/reference/recognized-annotations/Named-deprecated.html
==============================================================================
--- websites/staging/isis/trunk/content/reference/recognized-annotations/Named-deprecated.html (original)
+++ websites/staging/isis/trunk/content/reference/recognized-annotations/Named-deprecated.html Wed Dec 10 07:27:38 2014
@@ -422,7 +422,7 @@
</div>
<blockquote>
- <p>Deprecated in 1.8.0-SNAPSHOT, see instead <a href="./ClassLayout.html">@ClassLayout</a>, <a href="./PropertyLayout.html">@PropertyLayout</a>, <a href="./CollectionLayout.html">@CollectionLayout</a>, <a href="./ActionLayout.html">@ActionLayout</a> and <a href="./ParameterLayout.html">@ParameterLayout</a>.</p>
+ <p>Deprecated in 1.8.0-SNAPSHOT, see instead <a href="./DomainServiceLayout.html">@DomainServiceLayout</a>, <a href="./DomainObjectLayout.html">@DomainObjectLayout</a>, <a href="./PropertyLayout.html">@PropertyLayout</a>, <a href="./CollectionLayout.html">@CollectionLayout</a>, <a href="./ActionLayout.html">@ActionLayout</a> and <a href="./ParameterLayout.html">@ParameterLayout</a>.</p>
</blockquote>
<p>The <code>@Named</code> annotation is used when you want to specify the way
Modified: websites/staging/isis/trunk/content/reference/recognized-annotations/ParameterLayout.html
==============================================================================
--- websites/staging/isis/trunk/content/reference/recognized-annotations/ParameterLayout.html (original)
+++ websites/staging/isis/trunk/content/reference/recognized-annotations/ParameterLayout.html Wed Dec 10 07:27:38 2014
@@ -491,7 +491,7 @@ annotation.</p>
<ul>
<li><a href="./ActionLayout.html">@ActionLayout</a> for actions</li>
-<li><a href="./ClassLayout.html">@ClassLayout</a> for domain classes</li>
+<li><a href="./DomainObjectLayout.html">@DomainObjectLayout</a> for domain classes</li>
<li><a href="./CollectionLayout.html">@CollectionLayout</a> for collections</li>
<li><a href="./PropertyLayout.html">@PropertyLayout</a> for properties</li>
</ul>
Modified: websites/staging/isis/trunk/content/reference/recognized-annotations/Plural-deprecated.html
==============================================================================
--- websites/staging/isis/trunk/content/reference/recognized-annotations/Plural-deprecated.html (original)
+++ websites/staging/isis/trunk/content/reference/recognized-annotations/Plural-deprecated.html Wed Dec 10 07:27:38 2014
@@ -422,7 +422,7 @@
</div>
<blockquote>
- <p>Deprecated in 1.8.0-SNAPSHOT, see instead <a href="./ClassLayout.html">@ClassLayout</a>.</p>
+ <p>Deprecated in 1.8.0-SNAPSHOT, see instead <a href="./DomainObjectLayout.html">@DomainObjectLayout</a>.</p>
</blockquote>
<p>When the framework displays a collection of several objects it may use
Modified: websites/staging/isis/trunk/content/reference/recognized-annotations/PropertyLayout.html
==============================================================================
--- websites/staging/isis/trunk/content/reference/recognized-annotations/PropertyLayout.html (original)
+++ websites/staging/isis/trunk/content/reference/recognized-annotations/PropertyLayout.html Wed Dec 10 07:27:38 2014
@@ -514,7 +514,7 @@ frustrating to have to annotate every pr
<ul>
<li><a href="./ActionLayout.html">@ActionLayout</a> for actions</li>
-<li><a href="./ClassLayout.html">@ClassLayout</a> for domain classes</li>
+<li><a href="./DomainObjectLayout.html">@DomainObjectLayout</a> for domain classes</li>
<li><a href="./CollectionLayout.html">@CollectionLayout</a> for collections</li>
<li><a href="./ParameterLayout.html">@ParameterLayout</a> for action parameters</li>
</ul>
Modified: websites/staging/isis/trunk/content/reference/recognized-annotations/about.html
==============================================================================
--- websites/staging/isis/trunk/content/reference/recognized-annotations/about.html (original)
+++ websites/staging/isis/trunk/content/reference/recognized-annotations/about.html Wed Dec 10 07:27:38 2014
@@ -488,12 +488,6 @@
<td></td>
</tr>
<tr>
- <td><a href="./ClassLayout.html">@ClassLayout</a></td>
- <td>UI</td>
- <td>User interface hints for domain classes</td>
- <td>Yes</td>
- </tr>
- <tr>
<td><a href="./CollectionInteraction.html">@CollectionInteraction</a></td>
<td>Domain</td>
<td>Enable subscribers to either veto, validate or take further steps before/after a collection has been added to or
@@ -533,12 +527,24 @@
<td>Yes</td>
</tr>
<tr>
+ <td><a href="./DomainObjectLayout.html">@DomainObjectLayout</a></td>
+ <td>UI</td>
+ <td>User interface hints for domain object (entities and view models)</td>
+ <td>Yes</td>
+ </tr>
+ <tr>
<td><a href="./DomainService.html">@DomainService</a></td>
<td>Domain</td>
<td>Class is a domain service (rather than an entity or view model)</td>
<td></td>
</tr>
<tr>
+ <td><a href="./DomainServiceLayout.html">@DomainServiceLayout</a></td>
+ <td>UI</td>
+ <td>User interface hints for domain services</td>
+ <td>Yes</td>
+ </tr>
+ <tr>
<td><a href="./Encodable.html">@Encodable</a></td>
<td>Persistence</td>
<td>Indicates that a (value) class can be serialized/encoded.
@@ -759,7 +765,7 @@
<td><a href="./CssClass-deprecated.html">@CssClass</a></td>
<td>UI</td>
<td>Allow visual representation of individual objects or object members layout to be customized by application-specific CSS.
- <br/>Deprecated in 1.8.0-SNAPSHOT, see <code>@ClassLayout</code>, <code>@PropertyLayout</code>, <code>@CollectionLayout</code>, <code>@ActionLayout</code> and <code>@ParameterLayout</code>
+ <br/>Deprecated in 1.8.0-SNAPSHOT, see <code>@DomainObjectLayout</code>, <code>@PropertyLayout</code>, <code>@CollectionLayout</code>, <code>@ActionLayout</code> and <code>@ParameterLayout</code>
</td>
<td>Yes</td>
</tr>
@@ -782,7 +788,7 @@
<td><a href="./DescribedAs-deprecated.html">@DescribedAs</a></td>
<td>UI</td>
<td>Provide a longer description/tool-tip of an object or object member.
- <br/>Deprecated in 1.8.0-SNAPSHOT, see <code>@ClassLayout</code>, <code>@PropertyLayout</code>, <code>@CollectionLayout</code>, <code>@ActionLayout</code> and <code>@ParameterLayout</code>
+ <br/>Deprecated in 1.8.0-SNAPSHOT, see <code>@DomainObjectLayout</code>, <code>@PropertyLayout</code>, <code>@CollectionLayout</code>, <code>@ActionLayout</code> and <code>@ParameterLayout</code>
</td>
<td>Yes</td>
</tr>
@@ -848,7 +854,7 @@
<td><a href="./Named-deprecated.html">@Named</a></td>
<td>UI</td>
<td>Override name inferred from class. Required for parameter names (prior to Java8).
- <br/>Deprecated in 1.8.0-SNAPSHOT, see <code>@ClassLayout</code>, <code>@PropertyLayout</code>, <code>@CollectionLayout</code>, <code>@ActionLayout</code> and <code>@ParameterLayout</code>
+ <br/>Deprecated in 1.8.0-SNAPSHOT, see <code>@DomainServiceLayout</code>, <code>@DomainObjectLayout</code>, <code>@PropertyLayout</code>, <code>@CollectionLayout</code>, <code>@ActionLayout</code> and <code>@ParameterLayout</code>
</td>
<td>Yes</td>
</tr>
@@ -863,7 +869,7 @@
<td><a href="./Plural-deprecated.html">@Plural</a></td>
<td>UI</td>
<td>For the irregular plural form of an entity type.
- <br/>Deprecated in 1.8.0-SNAPSHOT, see <code>@ClassLayout</code>
+ <br/>Deprecated in 1.8.0-SNAPSHOT, see <code>@DomainObjectLayout</code>
</td>
<td></td>
</tr>