incubator-isis-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From danhayw...@apache.org
Subject svn commit: r1043972 [3/4] - in /incubator/isis/trunk: core/commons/src/main/java/org/apache/isis/core/commons/lang/ core/commons/src/test/java/org/apache/isis/core/commons/lang/ core/progmodel/src/main/java/org/apache/isis/core/progmodel/facets/action...
Date Thu, 09 Dec 2010 14:22:12 GMT
Added: incubator/isis/trunk/support/prototype/viewer-bdd/src/test/resources/dtd/xhtml1-strict.dtd
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/support/prototype/viewer-bdd/src/test/resources/dtd/xhtml1-strict.dtd?rev=1043972&view=auto
==============================================================================
--- incubator/isis/trunk/support/prototype/viewer-bdd/src/test/resources/dtd/xhtml1-strict.dtd (added)
+++ incubator/isis/trunk/support/prototype/viewer-bdd/src/test/resources/dtd/xhtml1-strict.dtd Thu Dec  9 14:22:09 2010
@@ -0,0 +1,980 @@
+<!--
+   Extensible HTML version 1.0 Strict DTD
+
+   This is the same as HTML 4 Strict except for
+   changes due to the differences between XML and SGML.
+
+   Namespace = http://www.w3.org/1999/xhtml
+
+   For further information, see: http://www.w3.org/TR/xhtml1
+
+   Copyright (c) 1998-2002 W3C (MIT, INRIA, Keio),
+   All Rights Reserved. 
+
+   This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+   PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+   SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
+
+   $Revision: 1.1 $
+   $Date: 2002/08/01 13:56:03 $
+
+-->
+
+<!--================ Character mnemonic entities =========================-->
+
+<!ENTITY % HTMLlat1 PUBLIC
+   "-//W3C//ENTITIES Latin 1 for XHTML//EN"
+   "xhtml-lat1.ent">
+%HTMLlat1;
+
+<!ENTITY % HTMLsymbol PUBLIC
+   "-//W3C//ENTITIES Symbols for XHTML//EN"
+   "xhtml-symbol.ent">
+%HTMLsymbol;
+
+<!ENTITY % HTMLspecial PUBLIC
+   "-//W3C//ENTITIES Special for XHTML//EN"
+   "xhtml-special.ent">
+%HTMLspecial;
+
+<!--================== Imported Names ====================================-->
+
+<!ENTITY % ContentType "CDATA">
+    <!-- media type, as per [RFC2045] -->
+
+<!ENTITY % ContentTypes "CDATA">
+    <!-- comma-separated list of media types, as per [RFC2045] -->
+
+<!ENTITY % Charset "CDATA">
+    <!-- a character encoding, as per [RFC2045] -->
+
+<!ENTITY % Charsets "CDATA">
+    <!-- a space separated list of character encodings, as per [RFC2045] -->
+
+<!ENTITY % LanguageCode "NMTOKEN">
+    <!-- a language code, as per [RFC3066] -->
+
+<!ENTITY % Character "CDATA">
+    <!-- a single character, as per section 2.2 of [XML] -->
+
+<!ENTITY % Number "CDATA">
+    <!-- one or more digits -->
+
+<!ENTITY % LinkTypes "CDATA">
+    <!-- space-separated list of link types -->
+
+<!ENTITY % MediaDesc "CDATA">
+    <!-- single or comma-separated list of media descriptors -->
+
+<!ENTITY % URI "CDATA">
+    <!-- a Uniform Resource Identifier, see [RFC2396] -->
+
+<!ENTITY % UriList "CDATA">
+    <!-- a space separated list of Uniform Resource Identifiers -->
+
+<!ENTITY % Datetime "CDATA">
+    <!-- date and time information. ISO date format -->
+
+<!ENTITY % Script "CDATA">
+    <!-- script expression -->
+
+<!ENTITY % StyleSheet "CDATA">
+    <!-- style sheet data -->
+
+<!ENTITY % Text "CDATA">
+    <!-- used for titles etc. -->
+
+<!ENTITY % Length "CDATA">
+    <!-- nn for pixels or nn% for percentage length -->
+
+<!ENTITY % MultiLength "CDATA">
+    <!-- pixel, percentage, or relative -->
+
+<!ENTITY % Pixels "CDATA">
+    <!-- integer representing length in pixels -->
+
+<!-- these are used for image maps -->
+
+<!ENTITY % Shape "(rect|circle|poly|default)">
+
+<!ENTITY % Coords "CDATA">
+    <!-- comma separated list of lengths -->
+
+<!--=================== Generic Attributes ===============================-->
+
+<!-- core attributes common to most elements
+  id       document-wide unique id
+  class    space separated list of classes
+  style    associated style info
+  title    advisory title/amplification
+-->
+<!ENTITY % coreattrs
+ "id          ID             #IMPLIED
+  class       CDATA          #IMPLIED
+  style       %StyleSheet;   #IMPLIED
+  title       %Text;         #IMPLIED"
+  >
+
+<!-- internationalization attributes
+  lang        language code (backwards compatible)
+  xml:lang    language code (as per XML 1.0 spec)
+  dir         direction for weak/neutral text
+-->
+<!ENTITY % i18n
+ "lang        %LanguageCode; #IMPLIED
+  xml:lang    %LanguageCode; #IMPLIED
+  dir         (ltr|rtl)      #IMPLIED"
+  >
+
+<!-- attributes for common UI events
+  onclick     a pointer button was clicked
+  ondblclick  a pointer button was double clicked
+  onmousedown a pointer button was pressed down
+  onmouseup   a pointer button was released
+  onmousemove a pointer was moved onto the element
+  onmouseout  a pointer was moved away from the element
+  onkeypress  a key was pressed and released
+  onkeydown   a key was pressed down
+  onkeyup     a key was released
+-->
+<!ENTITY % events
+ "onclick     %Script;       #IMPLIED
+  ondblclick  %Script;       #IMPLIED
+  onmousedown %Script;       #IMPLIED
+  onmouseup   %Script;       #IMPLIED
+  onmouseover %Script;       #IMPLIED
+  onmousemove %Script;       #IMPLIED
+  onmouseout  %Script;       #IMPLIED
+  onkeypress  %Script;       #IMPLIED
+  onkeydown   %Script;       #IMPLIED
+  onkeyup     %Script;       #IMPLIED"
+  >
+
+<!-- attributes for elements that can get the focus
+  accesskey   accessibility key character
+  tabindex    position in tabbing order
+  onfocus     the element got the focus
+  onblur      the element lost the focus
+-->
+<!ENTITY % focus
+ "accesskey   %Character;    #IMPLIED
+  tabindex    %Number;       #IMPLIED
+  onfocus     %Script;       #IMPLIED
+  onblur      %Script;       #IMPLIED"
+  >
+
+<!ENTITY % attrs "%coreattrs; %i18n; %events;">
+
+<!--=================== Text Elements ====================================-->
+
+<!ENTITY % special.pre
+   "br | span | bdo | map">
+
+
+<!ENTITY % special
+   "%special.pre; | object | img ">
+
+<!ENTITY % fontstyle "tt | i | b | big | small ">
+
+<!ENTITY % phrase "em | strong | dfn | code | q |
+                   samp | kbd | var | cite | abbr | acronym | sub | sup ">
+
+<!ENTITY % inline.forms "input | select | textarea | label | button">
+
+<!-- these can occur at block or inline level -->
+<!ENTITY % misc.inline "ins | del | script">
+
+<!-- these can only occur at block level -->
+<!ENTITY % misc "noscript | %misc.inline;">
+
+<!ENTITY % inline "a | %special; | %fontstyle; | %phrase; | %inline.forms;">
+
+<!-- %Inline; covers inline or "text-level" elements -->
+<!ENTITY % Inline "(#PCDATA | %inline; | %misc.inline;)*">
+
+<!--================== Block level elements ==============================-->
+
+<!ENTITY % heading "h1|h2|h3|h4|h5|h6">
+<!ENTITY % lists "ul | ol | dl">
+<!ENTITY % blocktext "pre | hr | blockquote | address">
+
+<!ENTITY % block
+     "p | %heading; | div | %lists; | %blocktext; | fieldset | table">
+
+<!ENTITY % Block "(%block; | form | %misc;)*">
+
+<!-- %Flow; mixes block and inline and is used for list items etc. -->
+<!ENTITY % Flow "(#PCDATA | %block; | form | %inline; | %misc;)*">
+
+<!--================== Content models for exclusions =====================-->
+
+<!-- a elements use %Inline; excluding a -->
+
+<!ENTITY % a.content
+   "(#PCDATA | %special; | %fontstyle; | %phrase; | %inline.forms; | %misc.inline;)*">
+
+<!-- pre uses %Inline excluding big, small, sup or sup -->
+
+<!ENTITY % pre.content
+   "(#PCDATA | a | %fontstyle; | %phrase; | %special.pre; | %misc.inline;
+      | %inline.forms;)*">
+
+<!-- form uses %Block; excluding form -->
+
+<!ENTITY % form.content "(%block; | %misc;)*">
+
+<!-- button uses %Flow; but excludes a, form and form controls -->
+
+<!ENTITY % button.content
+   "(#PCDATA | p | %heading; | div | %lists; | %blocktext; |
+    table | %special; | %fontstyle; | %phrase; | %misc;)*">
+
+<!--================ Document Structure ==================================-->
+
+<!-- the namespace URI designates the document profile -->
+
+<!ELEMENT html (head, body)>
+<!ATTLIST html
+  %i18n;
+  id          ID             #IMPLIED
+  xmlns       %URI;          #FIXED 'http://www.w3.org/1999/xhtml'
+  xmlns:concordion   %URI;          #FIXED 'http://www.concordion.org/2007/concordion'
+  xmlns:isis         %URI;          #FIXED 'http://isis.apache.org/2010/concordion'
+  >
+
+<!--================ Document Head =======================================-->
+
+<!ENTITY % head.misc "(script|style|meta|link|object)*">
+
+<!-- content model is %head.misc; combined with a single
+     title and an optional base element in any order -->
+
+<!ELEMENT head (%head.misc;,
+     ((title, %head.misc;, (base, %head.misc;)?) |
+      (base, %head.misc;, (title, %head.misc;))))>
+
+<!ATTLIST head
+  %i18n;
+  id          ID             #IMPLIED
+  profile     %URI;          #IMPLIED
+  >
+
+<!-- The title element is not considered part of the flow of text.
+       It should be displayed, for example as the page header or
+       window title. Exactly one title is required per document.
+    -->
+<!ELEMENT title (#PCDATA)>
+<!ATTLIST title 
+  %i18n;
+  id          ID             #IMPLIED
+  >
+
+<!-- document base URI -->
+
+<!ELEMENT base EMPTY>
+<!ATTLIST base
+  href        %URI;          #REQUIRED
+  id          ID             #IMPLIED
+  >
+
+<!-- generic metainformation -->
+<!ELEMENT meta EMPTY>
+<!ATTLIST meta
+  %i18n;
+  id          ID             #IMPLIED
+  http-equiv  CDATA          #IMPLIED
+  name        CDATA          #IMPLIED
+  content     CDATA          #REQUIRED
+  scheme      CDATA          #IMPLIED
+  >
+
+<!--
+  Relationship values can be used in principle:
+
+   a) for document specific toolbars/menus when used
+      with the link element in document head e.g.
+        start, contents, previous, next, index, end, help
+   b) to link to a separate style sheet (rel="stylesheet")
+   c) to make a link to a script (rel="script")
+   d) by stylesheets to control how collections of
+      html nodes are rendered into printed documents
+   e) to make a link to a printable version of this document
+      e.g. a PostScript or PDF version (rel="alternate" media="print")
+-->
+
+<!ELEMENT link EMPTY>
+<!ATTLIST link
+  %attrs;
+  charset     %Charset;      #IMPLIED
+  href        %URI;          #IMPLIED
+  hreflang    %LanguageCode; #IMPLIED
+  type        %ContentType;  #IMPLIED
+  rel         %LinkTypes;    #IMPLIED
+  rev         %LinkTypes;    #IMPLIED
+  media       %MediaDesc;    #IMPLIED
+  >
+
+<!-- style info, which may include CDATA sections -->
+<!ELEMENT style (#PCDATA)>
+<!ATTLIST style
+  %i18n;
+  id          ID             #IMPLIED
+  type        %ContentType;  #REQUIRED
+  media       %MediaDesc;    #IMPLIED
+  title       %Text;         #IMPLIED
+  xml:space   (preserve)     #FIXED 'preserve'
+  >
+
+<!-- script statements, which may include CDATA sections -->
+<!ELEMENT script (#PCDATA)>
+<!ATTLIST script
+  id          ID             #IMPLIED
+  charset     %Charset;      #IMPLIED
+  type        %ContentType;  #REQUIRED
+  src         %URI;          #IMPLIED
+  defer       (defer)        #IMPLIED
+  xml:space   (preserve)     #FIXED 'preserve'
+  >
+
+<!-- alternate content container for non script-based rendering -->
+
+<!ELEMENT noscript %Block;>
+<!ATTLIST noscript
+  %attrs;
+  >
+
+<!--=================== Document Body ====================================-->
+
+<!ELEMENT body %Block;>
+<!ATTLIST body
+  %attrs;
+  onload          %Script;   #IMPLIED
+  onunload        %Script;   #IMPLIED
+  >
+
+<!ELEMENT div %Flow;>  <!-- generic language/style container -->
+<!ATTLIST div
+  %attrs;
+  >
+
+<!--=================== Paragraphs =======================================-->
+
+<!ELEMENT p %Inline;>
+<!ATTLIST p
+  %attrs;
+  >
+
+<!--=================== Headings =========================================-->
+
+<!--
+  There are six levels of headings from h1 (the most important)
+  to h6 (the least important).
+-->
+
+<!ELEMENT h1  %Inline;>
+<!ATTLIST h1
+   %attrs;
+   >
+
+<!ELEMENT h2 %Inline;>
+<!ATTLIST h2
+   %attrs;
+   >
+
+<!ELEMENT h3 %Inline;>
+<!ATTLIST h3
+   %attrs;
+   >
+
+<!ELEMENT h4 %Inline;>
+<!ATTLIST h4
+   %attrs;
+   >
+
+<!ELEMENT h5 %Inline;>
+<!ATTLIST h5
+   %attrs;
+   >
+
+<!ELEMENT h6 %Inline;>
+<!ATTLIST h6
+   %attrs;
+   >
+
+<!--=================== Lists ============================================-->
+
+<!-- Unordered list -->
+
+<!ELEMENT ul (li)+>
+<!ATTLIST ul
+  %attrs;
+  >
+
+<!-- Ordered (numbered) list -->
+
+<!ELEMENT ol (li)+>
+<!ATTLIST ol
+  %attrs;
+  >
+
+<!-- list item -->
+
+<!ELEMENT li %Flow;>
+<!ATTLIST li
+  %attrs;
+  >
+
+<!-- definition lists - dt for term, dd for its definition -->
+
+<!ELEMENT dl (dt|dd)+>
+<!ATTLIST dl
+  %attrs;
+  >
+
+<!ELEMENT dt %Inline;>
+<!ATTLIST dt
+  %attrs;
+  >
+
+<!ELEMENT dd %Flow;>
+<!ATTLIST dd
+  %attrs;
+  >
+
+<!--=================== Address ==========================================-->
+
+<!-- information on author -->
+
+<!ELEMENT address %Inline;>
+<!ATTLIST address
+  %attrs;
+  >
+
+<!--=================== Horizontal Rule ==================================-->
+
+<!ELEMENT hr EMPTY>
+<!ATTLIST hr
+  %attrs;
+  >
+
+<!--=================== Preformatted Text ================================-->
+
+<!-- content is %Inline; excluding "img|object|big|small|sub|sup" -->
+
+<!ELEMENT pre %pre.content;>
+<!ATTLIST pre
+  %attrs;
+  xml:space (preserve) #FIXED 'preserve'
+  >
+
+<!--=================== Block-like Quotes ================================-->
+
+<!ELEMENT blockquote %Block;>
+<!ATTLIST blockquote
+  %attrs;
+  cite        %URI;          #IMPLIED
+  >
+
+<!--=================== Inserted/Deleted Text ============================-->
+
+<!--
+  ins/del are allowed in block and inline content, but its
+  inappropriate to include block content within an ins element
+  occurring in inline content.
+-->
+<!ELEMENT ins %Flow;>
+<!ATTLIST ins
+  %attrs;
+  cite        %URI;          #IMPLIED
+  datetime    %Datetime;     #IMPLIED
+  >
+
+<!ELEMENT del %Flow;>
+<!ATTLIST del
+  %attrs;
+  cite        %URI;          #IMPLIED
+  datetime    %Datetime;     #IMPLIED
+  >
+
+<!--================== The Anchor Element ================================-->
+
+<!-- content is %Inline; except that anchors shouldn't be nested -->
+
+<!ELEMENT a %a.content;>
+<!ATTLIST a
+  %attrs;
+  %focus;
+  charset     %Charset;      #IMPLIED
+  type        %ContentType;  #IMPLIED
+  name        NMTOKEN        #IMPLIED
+  href        %URI;          #IMPLIED
+  hreflang    %LanguageCode; #IMPLIED
+  rel         %LinkTypes;    #IMPLIED
+  rev         %LinkTypes;    #IMPLIED
+  shape       %Shape;        "rect"
+  coords      %Coords;       #IMPLIED
+  >
+
+<!--===================== Inline Elements ================================-->
+
+<!ELEMENT span %Inline;> <!-- generic language/style container -->
+<!ATTLIST span
+  %attrs;
+  >
+
+<!ELEMENT bdo %Inline;>  <!-- I18N BiDi over-ride -->
+<!ATTLIST bdo
+  %coreattrs;
+  %events;
+  lang        %LanguageCode; #IMPLIED
+  xml:lang    %LanguageCode; #IMPLIED
+  dir         (ltr|rtl)      #REQUIRED
+  >
+
+<!ELEMENT br EMPTY>   <!-- forced line break -->
+<!ATTLIST br
+  %coreattrs;
+  >
+
+<!ELEMENT em %Inline;>   <!-- emphasis -->
+<!ATTLIST em %attrs;>
+
+<!ELEMENT strong %Inline;>   <!-- strong emphasis -->
+<!ATTLIST strong %attrs;>
+
+<!ELEMENT dfn %Inline;>   <!-- definitional -->
+<!ATTLIST dfn %attrs;>
+
+<!ELEMENT code %Inline;>   <!-- program code -->
+<!ATTLIST code %attrs;>
+
+<!ELEMENT samp %Inline;>   <!-- sample -->
+<!ATTLIST samp %attrs;>
+
+<!ELEMENT kbd %Inline;>  <!-- something user would type -->
+<!ATTLIST kbd %attrs;>
+
+<!ELEMENT var %Inline;>   <!-- variable -->
+<!ATTLIST var %attrs;>
+
+<!ELEMENT cite %Inline;>   <!-- citation -->
+<!ATTLIST cite %attrs;>
+
+<!ELEMENT abbr %Inline;>   <!-- abbreviation -->
+<!ATTLIST abbr %attrs;>
+
+<!ELEMENT acronym %Inline;>   <!-- acronym -->
+<!ATTLIST acronym %attrs;>
+
+<!ELEMENT q %Inline;>   <!-- inlined quote -->
+<!ATTLIST q
+  %attrs;
+  cite        %URI;          #IMPLIED
+  >
+
+<!ELEMENT sub %Inline;> <!-- subscript -->
+<!ATTLIST sub %attrs;>
+
+<!ELEMENT sup %Inline;> <!-- superscript -->
+<!ATTLIST sup %attrs;>
+
+<!ELEMENT tt %Inline;>   <!-- fixed pitch font -->
+<!ATTLIST tt %attrs;>
+
+<!ELEMENT i %Inline;>   <!-- italic font -->
+<!ATTLIST i %attrs;>
+
+<!ELEMENT b %Inline;>   <!-- bold font -->
+<!ATTLIST b %attrs;>
+
+<!ELEMENT big %Inline;>   <!-- bigger font -->
+<!ATTLIST big %attrs;>
+
+<!ELEMENT small %Inline;>   <!-- smaller font -->
+<!ATTLIST small %attrs;>
+
+<!--==================== Object ======================================-->
+<!--
+  object is used to embed objects as part of HTML pages.
+  param elements should precede other content. Parameters
+  can also be expressed as attribute/value pairs on the
+  object element itself when brevity is desired.
+-->
+
+<!ELEMENT object (#PCDATA | param | %block; | form | %inline; | %misc;)*>
+<!ATTLIST object
+  %attrs;
+  declare     (declare)      #IMPLIED
+  classid     %URI;          #IMPLIED
+  codebase    %URI;          #IMPLIED
+  data        %URI;          #IMPLIED
+  type        %ContentType;  #IMPLIED
+  codetype    %ContentType;  #IMPLIED
+  archive     %UriList;      #IMPLIED
+  standby     %Text;         #IMPLIED
+  height      %Length;       #IMPLIED
+  width       %Length;       #IMPLIED
+  usemap      %URI;          #IMPLIED
+  name        NMTOKEN        #IMPLIED
+  tabindex    %Number;       #IMPLIED
+  >
+
+<!--
+  param is used to supply a named property value.
+  In XML it would seem natural to follow RDF and support an
+  abbreviated syntax where the param elements are replaced
+  by attribute value pairs on the object start tag.
+-->
+<!ELEMENT param EMPTY>
+<!ATTLIST param
+  id          ID             #IMPLIED
+  name        CDATA          #IMPLIED
+  value       CDATA          #IMPLIED
+  valuetype   (data|ref|object) "data"
+  type        %ContentType;  #IMPLIED
+  >
+
+<!--=================== Images ===========================================-->
+
+<!--
+   To avoid accessibility problems for people who aren't
+   able to see the image, you should provide a text
+   description using the alt and longdesc attributes.
+   In addition, avoid the use of server-side image maps.
+   Note that in this DTD there is no name attribute. That
+   is only available in the transitional and frameset DTD.
+-->
+
+<!ELEMENT img EMPTY>
+<!ATTLIST img
+  %attrs;
+  src         %URI;          #REQUIRED
+  alt         %Text;         #REQUIRED
+  longdesc    %URI;          #IMPLIED
+  height      %Length;       #IMPLIED
+  width       %Length;       #IMPLIED
+  usemap      %URI;          #IMPLIED
+  ismap       (ismap)        #IMPLIED
+  >
+
+<!-- usemap points to a map element which may be in this document
+  or an external document, although the latter is not widely supported -->
+
+<!--================== Client-side image maps ============================-->
+
+<!-- These can be placed in the same document or grouped in a
+     separate document although this isn't yet widely supported -->
+
+<!ELEMENT map ((%block; | form | %misc;)+ | area+)>
+<!ATTLIST map
+  %i18n;
+  %events;
+  id          ID             #REQUIRED
+  class       CDATA          #IMPLIED
+  style       %StyleSheet;   #IMPLIED
+  title       %Text;         #IMPLIED
+  name        NMTOKEN        #IMPLIED
+  >
+
+<!ELEMENT area EMPTY>
+<!ATTLIST area
+  %attrs;
+  %focus;
+  shape       %Shape;        "rect"
+  coords      %Coords;       #IMPLIED
+  href        %URI;          #IMPLIED
+  nohref      (nohref)       #IMPLIED
+  alt         %Text;         #REQUIRED
+  >
+
+<!--================ Forms ===============================================-->
+<!ELEMENT form %form.content;>   <!-- forms shouldn't be nested -->
+
+<!ATTLIST form
+  %attrs;
+  action      %URI;          #REQUIRED
+  method      (get|post)     "get"
+  enctype     %ContentType;  "application/x-www-form-urlencoded"
+  onsubmit    %Script;       #IMPLIED
+  onreset     %Script;       #IMPLIED
+  accept      %ContentTypes; #IMPLIED
+  accept-charset %Charsets;  #IMPLIED
+  >
+
+<!--
+  Each label must not contain more than ONE field
+  Label elements shouldn't be nested.
+-->
+<!ELEMENT label %Inline;>
+<!ATTLIST label
+  %attrs;
+  for         IDREF          #IMPLIED
+  accesskey   %Character;    #IMPLIED
+  onfocus     %Script;       #IMPLIED
+  onblur      %Script;       #IMPLIED
+  >
+
+<!ENTITY % InputType
+  "(text | password | checkbox |
+    radio | submit | reset |
+    file | hidden | image | button)"
+   >
+
+<!-- the name attribute is required for all but submit & reset -->
+
+<!ELEMENT input EMPTY>     <!-- form control -->
+<!ATTLIST input
+  %attrs;
+  %focus;
+  type        %InputType;    "text"
+  name        CDATA          #IMPLIED
+  value       CDATA          #IMPLIED
+  checked     (checked)      #IMPLIED
+  disabled    (disabled)     #IMPLIED
+  readonly    (readonly)     #IMPLIED
+  size        CDATA          #IMPLIED
+  maxlength   %Number;       #IMPLIED
+  src         %URI;          #IMPLIED
+  alt         CDATA          #IMPLIED
+  usemap      %URI;          #IMPLIED
+  onselect    %Script;       #IMPLIED
+  onchange    %Script;       #IMPLIED
+  accept      %ContentTypes; #IMPLIED
+  >
+
+<!ELEMENT select (optgroup|option)+>  <!-- option selector -->
+<!ATTLIST select
+  %attrs;
+  name        CDATA          #IMPLIED
+  size        %Number;       #IMPLIED
+  multiple    (multiple)     #IMPLIED
+  disabled    (disabled)     #IMPLIED
+  tabindex    %Number;       #IMPLIED
+  onfocus     %Script;       #IMPLIED
+  onblur      %Script;       #IMPLIED
+  onchange    %Script;       #IMPLIED
+  >
+
+<!ELEMENT optgroup (option)+>   <!-- option group -->
+<!ATTLIST optgroup
+  %attrs;
+  disabled    (disabled)     #IMPLIED
+  label       %Text;         #REQUIRED
+  >
+
+<!ELEMENT option (#PCDATA)>     <!-- selectable choice -->
+<!ATTLIST option
+  %attrs;
+  selected    (selected)     #IMPLIED
+  disabled    (disabled)     #IMPLIED
+  label       %Text;         #IMPLIED
+  value       CDATA          #IMPLIED
+  >
+
+<!ELEMENT textarea (#PCDATA)>     <!-- multi-line text field -->
+<!ATTLIST textarea
+  %attrs;
+  %focus;
+  name        CDATA          #IMPLIED
+  rows        %Number;       #REQUIRED
+  cols        %Number;       #REQUIRED
+  disabled    (disabled)     #IMPLIED
+  readonly    (readonly)     #IMPLIED
+  onselect    %Script;       #IMPLIED
+  onchange    %Script;       #IMPLIED
+  >
+
+<!--
+  The fieldset element is used to group form fields.
+  Only one legend element should occur in the content
+  and if present should only be preceded by whitespace.
+-->
+<!ELEMENT fieldset (#PCDATA | legend | %block; | form | %inline; | %misc;)*>
+<!ATTLIST fieldset
+  %attrs;
+  >
+
+<!ELEMENT legend %Inline;>     <!-- fieldset label -->
+<!ATTLIST legend
+  %attrs;
+  accesskey   %Character;    #IMPLIED
+  >
+
+<!--
+ Content is %Flow; excluding a, form and form controls
+--> 
+<!ELEMENT button %button.content;>  <!-- push button -->
+<!ATTLIST button
+  %attrs;
+  %focus;
+  name        CDATA          #IMPLIED
+  value       CDATA          #IMPLIED
+  type        (button|submit|reset) "submit"
+  disabled    (disabled)     #IMPLIED
+  >
+
+<!--======================= Tables =======================================-->
+
+<!-- Derived from IETF HTML table standard, see [RFC1942] -->
+
+<!--
+ The border attribute sets the thickness of the frame around the
+ table. The default units are screen pixels.
+
+ The frame attribute specifies which parts of the frame around
+ the table should be rendered. The values are not the same as
+ CALS to avoid a name clash with the valign attribute.
+-->
+<!ENTITY % TFrame "(void|above|below|hsides|lhs|rhs|vsides|box|border)">
+
+<!--
+ The rules attribute defines which rules to draw between cells:
+
+ If rules is absent then assume:
+     "none" if border is absent or border="0" otherwise "all"
+-->
+
+<!ENTITY % TRules "(none | groups | rows | cols | all)">
+  
+<!-- horizontal alignment attributes for cell contents
+
+  char        alignment char, e.g. char=':'
+  charoff     offset for alignment char
+-->
+<!ENTITY % cellhalign
+  "align      (left|center|right|justify|char) #IMPLIED
+   char       %Character;    #IMPLIED
+   charoff    %Length;       #IMPLIED"
+  >
+
+<!-- vertical alignment attributes for cell contents -->
+<!ENTITY % cellvalign
+  "valign     (top|middle|bottom|baseline) #IMPLIED"
+  >
+
+<!ELEMENT table
+     (caption?, (col*|colgroup*), thead?, tfoot?, (tbody+|tr+))>
+<!ELEMENT caption  %Inline;>
+<!ELEMENT thead    (tr)+>
+<!ELEMENT tfoot    (tr)+>
+<!ELEMENT tbody    (tr)+>
+<!ELEMENT colgroup (col)*>
+<!ELEMENT col      EMPTY>
+<!ELEMENT tr       (th|td)+>
+<!ELEMENT th       %Flow;>
+<!ELEMENT td       %Flow;>
+
+<!ATTLIST table
+  %attrs;
+  summary     %Text;         #IMPLIED
+  width       %Length;       #IMPLIED
+  border      %Pixels;       #IMPLIED
+  frame       %TFrame;       #IMPLIED
+  rules       %TRules;       #IMPLIED
+  cellspacing %Length;       #IMPLIED
+  cellpadding %Length;       #IMPLIED
+  >
+
+<!ATTLIST caption
+  %attrs;
+  >
+
+<!--
+colgroup groups a set of col elements. It allows you to group
+several semantically related columns together.
+-->
+<!ATTLIST colgroup
+  %attrs;
+  span        %Number;       "1"
+  width       %MultiLength;  #IMPLIED
+  %cellhalign;
+  %cellvalign;
+  >
+
+<!--
+ col elements define the alignment properties for cells in
+ one or more columns.
+
+ The width attribute specifies the width of the columns, e.g.
+
+     width=64        width in screen pixels
+     width=0.5*      relative width of 0.5
+
+ The span attribute causes the attributes of one
+ col element to apply to more than one column.
+-->
+<!ATTLIST col
+  %attrs;
+  span        %Number;       "1"
+  width       %MultiLength;  #IMPLIED
+  %cellhalign;
+  %cellvalign;
+  >
+
+<!--
+    Use thead to duplicate headers when breaking table
+    across page boundaries, or for static headers when
+    tbody sections are rendered in scrolling panel.
+
+    Use tfoot to duplicate footers when breaking table
+    across page boundaries, or for static footers when
+    tbody sections are rendered in scrolling panel.
+
+    Use multiple tbody sections when rules are needed
+    between groups of table rows.
+-->
+<!ATTLIST thead
+  %attrs;
+  %cellhalign;
+  %cellvalign;
+  >
+
+<!ATTLIST tfoot
+  %attrs;
+  %cellhalign;
+  %cellvalign;
+  >
+
+<!ATTLIST tbody
+  %attrs;
+  %cellhalign;
+  %cellvalign;
+  >
+
+<!ATTLIST tr
+  %attrs;
+  %cellhalign;
+  %cellvalign;
+  >
+
+
+<!-- Scope is simpler than headers attribute for common tables -->
+<!ENTITY % Scope "(row|col|rowgroup|colgroup)">
+
+<!-- th is for headers, td for data and for cells acting as both -->
+
+<!ATTLIST th
+  %attrs;
+  abbr        %Text;         #IMPLIED
+  axis        CDATA          #IMPLIED
+  headers     IDREFS         #IMPLIED
+  scope       %Scope;        #IMPLIED
+  rowspan     %Number;       "1"
+  colspan     %Number;       "1"
+  %cellhalign;
+  %cellvalign;
+  >
+
+<!ATTLIST td
+  %attrs;
+  abbr        %Text;         #IMPLIED
+  axis        CDATA          #IMPLIED
+  headers     IDREFS         #IMPLIED
+  scope       %Scope;        #IMPLIED
+  rowspan     %Number;       "1"
+  colspan     %Number;       "1"
+  %cellhalign;
+  %cellvalign;
+  >
+

Modified: incubator/isis/trunk/support/prototype/viewer-bdd/src/test/resources/org/apache/isis/support/prototype/concordion.css
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/support/prototype/viewer-bdd/src/test/resources/org/apache/isis/support/prototype/concordion.css?rev=1043972&r1=1043971&r2=1043972&view=diff
==============================================================================
--- incubator/isis/trunk/support/prototype/viewer-bdd/src/test/resources/org/apache/isis/support/prototype/concordion.css (original)
+++ incubator/isis/trunk/support/prototype/viewer-bdd/src/test/resources/org/apache/isis/support/prototype/concordion.css Thu Dec  9 14:22:09 2010
@@ -14,7 +14,6 @@ pre, pre *, code, code *, kbd {
 }
 h1, h1 * {
   font-size: 24pt;
-  font-family: Courier New;	
 }
 p, td, th, li, .breadcrumbs {
   font-size: 10pt;

Added: incubator/isis/trunk/support/prototype/viewer-bdd/src/test/resources/org/apache/isis/support/prototype/stories/StorySuite.html
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/support/prototype/viewer-bdd/src/test/resources/org/apache/isis/support/prototype/stories/StorySuite.html?rev=1043972&view=auto
==============================================================================
--- incubator/isis/trunk/support/prototype/viewer-bdd/src/test/resources/org/apache/isis/support/prototype/stories/StorySuite.html (added)
+++ incubator/isis/trunk/support/prototype/viewer-bdd/src/test/resources/org/apache/isis/support/prototype/stories/StorySuite.html Thu Dec  9 14:22:09 2010
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "file:src/test/resources/dtd/xhtml1-strict.dtd">
+<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:concordion="http://www.concordion.org/2007/concordion"
+    xmlns:isis="http://isis.apache.org/2010/concordion">
+<link href="../concordion.css" rel="stylesheet" type="text/css" />
+<body>
+
+<h1>Stories</h1>
+
+<ul>
+	<li>
+	<p><a concordion:run="concordion"
+		href="newClaim/Index.html">New Claim Stories</a></p>
+	</li>
+</ul>
+
+</body>
+</html>
\ No newline at end of file

Added: incubator/isis/trunk/support/prototype/viewer-bdd/src/test/resources/org/apache/isis/support/prototype/stories/newClaim/Fixture.html
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/support/prototype/viewer-bdd/src/test/resources/org/apache/isis/support/prototype/stories/newClaim/Fixture.html?rev=1043972&view=auto
==============================================================================
--- incubator/isis/trunk/support/prototype/viewer-bdd/src/test/resources/org/apache/isis/support/prototype/stories/newClaim/Fixture.html (added)
+++ incubator/isis/trunk/support/prototype/viewer-bdd/src/test/resources/org/apache/isis/support/prototype/stories/newClaim/Fixture.html Thu Dec  9 14:22:09 2010
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "file:src/test/resources/dtd/xhtml1-strict.dtd">
+<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:concordion="http://www.concordion.org/2007/concordion"
+    xmlns:isis="http://isis.apache.org/2010/concordion">
+<link href="../../concordion.css" rel="stylesheet" type="text/css" />
+<body>
+
+<h2>Given</h2>
+<ul>
+	<li>
+	<p>bootstrapped in <a concordion:run="concordion"
+		href="../../common/BootstrapInExplorationMode.html">exploration</a> mode</p>
+	</li>
+    <li>
+    <p concordion:execute="#result=usingDateFormat(#format)"><span
+        concordion:assertTrue="#result">using a date format</span> of <span
+        concordion:set="#format">dd-MMM-yyyy</span>, and</p>
+    </li>
+	<li>
+	<p concordion:execute="#result=timeIs(#dateTime)"><span
+		concordion:assertTrue="#result">date/time</span> being <span
+		concordion:set="#dateTime">02-Mar-2007 09:20</span>, and</p>
+	</li>
+	<li>
+	<p concordion:execute="#result=logonAs(#userName)"><span
+		concordion:assertTrue="#result">logged on</span> as <span
+		concordion:set="#userName">fsmith</span></p>
+	</li>
+	<li>
+	<p>with <a concordion:run="concordion"
+		href="../../common/Employees.html">Employees</a>.</p>
+	</li>
+</ul>
+
+</body>
+</html>
\ No newline at end of file

Added: incubator/isis/trunk/support/prototype/viewer-bdd/src/test/resources/org/apache/isis/support/prototype/stories/newClaim/Index.html
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/support/prototype/viewer-bdd/src/test/resources/org/apache/isis/support/prototype/stories/newClaim/Index.html?rev=1043972&view=auto
==============================================================================
--- incubator/isis/trunk/support/prototype/viewer-bdd/src/test/resources/org/apache/isis/support/prototype/stories/newClaim/Index.html (added)
+++ incubator/isis/trunk/support/prototype/viewer-bdd/src/test/resources/org/apache/isis/support/prototype/stories/newClaim/Index.html Thu Dec  9 14:22:09 2010
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "file:src/test/resources/dtd/xhtml1-strict.dtd">
+<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:concordion="http://www.concordion.org/2007/concordion"
+    xmlns:isis="http://isis.apache.org/2010/concordion">
+<link href="../../concordion.css" rel="stylesheet" type="text/css" />
+<body>
+
+<h1>New Claim Stories</h1>
+
+<ul>
+    <li>
+    <p><a concordion:run="concordion"
+        href="StoryDefaultsOk.html">new claim defaults ok</a></p>
+    </li>
+	<li>
+	<p><a concordion:run="concordion"
+		href="StoryOnceCreatedShowsUpForClaimant.html">new claim shows up for claimant</a></p>
+	</li>
+</ul>
+
+
+
+</body>
+</html>
\ No newline at end of file

Copied: incubator/isis/trunk/support/prototype/viewer-bdd/src/test/resources/org/apache/isis/support/prototype/stories/newClaim/StoryDefaultsOk.html (from r1043019, incubator/isis/trunk/support/prototype/viewer-bdd/src/test/resources/org/apache/isis/support/prototype/stories/NewClaimDefaultsOkStory.html)
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/support/prototype/viewer-bdd/src/test/resources/org/apache/isis/support/prototype/stories/newClaim/StoryDefaultsOk.html?p2=incubator/isis/trunk/support/prototype/viewer-bdd/src/test/resources/org/apache/isis/support/prototype/stories/newClaim/StoryDefaultsOk.html&p1=incubator/isis/trunk/support/prototype/viewer-bdd/src/test/resources/org/apache/isis/support/prototype/stories/NewClaimDefaultsOkStory.html&r1=1043019&r2=1043972&rev=1043972&view=diff
==============================================================================
--- incubator/isis/trunk/support/prototype/viewer-bdd/src/test/resources/org/apache/isis/support/prototype/stories/NewClaimDefaultsOkStory.html (original)
+++ incubator/isis/trunk/support/prototype/viewer-bdd/src/test/resources/org/apache/isis/support/prototype/stories/newClaim/StoryDefaultsOk.html Thu Dec  9 14:22:09 2010
@@ -1,38 +1,19 @@
-<html xmlns:concordion="http://www.concordion.org/2007/concordion"
-	xmlns:isis="http://isis.apache.org/2010/concordion">
-<link href="../concordion.css" rel="stylesheet" type="text/css" />
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "file:src/test/resources/dtd/xhtml1-strict.dtd">
+<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:concordion="http://www.concordion.org/2007/concordion"
+    xmlns:isis="http://isis.apache.org/2010/concordion">
+<link href="../../concordion.css" rel="stylesheet" type="text/css" />
 <body>
 
-<h1>Apache Isis with Concordion</h1>
+<h1>New Claim Defaults OK</h1>
 
 <div class="example">
 
 <h2>Given</h2>
-<ul>
-	<li>
-	<p>bootstrapped in <a concordion:run="concordion"
-		href="../common/BootstrapInExplorationMode.html">exploration</a> mode</p>
-	</li>
-    <li>
-    <p concordion:execute="#result=usingDateFormat(#format)"><span
-        concordion:assertTrue="#result">using a date format</span> of <span
-        concordion:set="#format">dd-MMM-yyyy</span>, and</p>
-    </li>
-	<li>
-	<p concordion:execute="#result=timeIs(#dateTime)"><span
-		concordion:assertTrue="#result">date/time</span> being <span
-		concordion:set="#dateTime">02-Mar-2007 09:20</span>, and</p>
-	</li>
-	<li>
-	<p concordion:execute="#result=logonAs(#userName)"><span
-		concordion:assertTrue="#result">logged on</span> as <span
-		concordion:set="#userName">fsmith</span></p>
-	</li>
-	<li>
-	<p>with <a concordion:run="concordion"
-		href="../common/Employees.html">Employees</a>.</p>
-	</li>
-</ul>
+<p>
+Given <a concordion:run="concordion"
+        href="Fixture.html">this fixture</a></p>
 
 
 <p>Locate and alias Tom and his approver:</p>

Added: incubator/isis/trunk/support/prototype/viewer-bdd/src/test/resources/org/apache/isis/support/prototype/stories/newClaim/StoryOnceCreatedShowsUpForClaimant.html
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/support/prototype/viewer-bdd/src/test/resources/org/apache/isis/support/prototype/stories/newClaim/StoryOnceCreatedShowsUpForClaimant.html?rev=1043972&view=auto
==============================================================================
--- incubator/isis/trunk/support/prototype/viewer-bdd/src/test/resources/org/apache/isis/support/prototype/stories/newClaim/StoryOnceCreatedShowsUpForClaimant.html (added)
+++ incubator/isis/trunk/support/prototype/viewer-bdd/src/test/resources/org/apache/isis/support/prototype/stories/newClaim/StoryOnceCreatedShowsUpForClaimant.html Thu Dec  9 14:22:09 2010
@@ -0,0 +1,337 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+"file:src/test/resources/dtd/xhtml1-strict.dtd">
+<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
+  <link href="../../concordion.css" rel="stylesheet" type="text/css" />
+
+  <body>
+    <h1>New Claim once created shows up for claimant</h1>
+
+    <div class="example">
+      <h2>Given</h2>
+
+      <p>Given <a href="Fixture.html" concordion:run="concordion"
+      xmlns:concordion="http://www.concordion.org/2007/concordion">this
+      fixture</a>:</p>
+
+      <p>Locate and alias Tom:</p>
+
+      <ul>
+        <li>
+          <p
+          isis:execute="#result=usingIsisViewer(#onObject,#aliasResultAs, #perform, #usingMember)"
+          xmlns:isis="http://isis.apache.org/2010/concordion">With the <span
+          concordion:set="#onObject"
+          xmlns:concordion="http://www.concordion.org/2007/concordion">employees</span>
+          service, <span concordion:set="#perform"
+          xmlns:concordion="http://www.concordion.org/2007/concordion">invoke
+          action</span> <span concordion:set="#usingMember"
+          xmlns:concordion="http://www.concordion.org/2007/concordion">All
+          Employees</span> and alias the resulting list as <span
+          concordion:set="#aliasResultAs"
+          xmlns:concordion="http://www.concordion.org/2007/concordion">list1</span>;
+          <span concordion:assertEquals="#result"
+          xmlns:concordion="http://www.concordion.org/2007/concordion">ok</span></p>
+        </li>
+
+        <li>
+          <p
+          concordion:execute="#result=aliasItemsInList(#listAlias, #title, #aliasAs)"
+          xmlns:concordion="http://www.concordion.org/2007/concordion">Alias
+          <span concordion:set="#title">Tom Brown</span> in <span
+          concordion:set="#listAlias">list1</span> as <span
+          concordion:set="#aliasAs">tomEmployee</span>; <span
+          concordion:assertEquals="#result">ok</span>.</p>
+        </li>
+      </ul>
+
+      <p>Initially Tom has no claims:</p>
+
+      <ul>
+        <li>
+          <p
+          isis:execute="#result=usingIsisViewer(#onObject,#aliasResultAs, #perform, #usingMember)"
+          xmlns:isis="http://isis.apache.org/2010/concordion">Using <span
+          concordion:set="#onObject"
+          xmlns:concordion="http://www.concordion.org/2007/concordion">tomEmployee</span>,
+          <span concordion:set="#perform"
+          xmlns:concordion="http://www.concordion.org/2007/concordion">invoke
+          action</span> <span concordion:set="#usingMember"
+          xmlns:concordion="http://www.concordion.org/2007/concordion">Claims
+          For</span> and alias the resulting list as <span
+          concordion:set="#aliasResultAs"
+          xmlns:concordion="http://www.concordion.org/2007/concordion">tomsClaimsInitially</span>;
+          <span concordion:assertEquals="#result"
+          xmlns:concordion="http://www.concordion.org/2007/concordion">ok</span>.</p>
+        </li>
+
+        <li>
+          <p>Confirm that <span
+          concordion:execute="#result=checkListIsEmpty(#TEXT)"
+          xmlns:concordion="http://www.concordion.org/2007/concordion">tomsClaimsInitially</span>
+          has no claims; <span concordion:assertEquals="#result"
+          xmlns:concordion="http://www.concordion.org/2007/concordion">ok</span>.</p>
+        </li>
+      </ul>
+
+      <h2>When</h2>
+
+      <p>Create new claims, and save:</p>
+
+      <table isis:execute="#result=usingIsisViewerArgs(#onObject, #aliasResultAs, #perform, #onMember, #value)"
+             xmlns:isis="http://isis.apache.org/2010/concordion">
+        <tr>
+          <th concordion:set="#onObject"
+          xmlns:concordion="http://www.concordion.org/2007/concordion">on
+          object</th>
+
+          <th concordion:set="#aliasResultAs"
+          xmlns:concordion="http://www.concordion.org/2007/concordion">alias
+          result as</th>
+
+          <th concordion:set="#perform"
+          xmlns:concordion="http://www.concordion.org/2007/concordion">perform</th>
+
+          <th concordion:set="#onMember"
+          xmlns:concordion="http://www.concordion.org/2007/concordion">on
+          member</th>
+
+          <th concordion:set="#value"
+          xmlns:concordion="http://www.concordion.org/2007/concordion">value</th>
+
+          <th concordion:assertEquals="#result"
+              xmlns:concordion="http://www.concordion.org/2007/concordion" />
+        </tr>
+
+        <tr>
+          <td>tomEmployee</td>
+
+          <td>tomsClaim1</td>
+
+          <td>invoke action</td>
+
+          <td>New Claim</td>
+
+          <td />
+
+          <td>ok</td>
+        </tr>
+
+        <tr>
+          <td>tomsClaim1</td>
+
+          <td />
+
+          <td>set property</td>
+
+          <td>Description</td>
+
+          <td>claim 1</td>
+
+          <td>ok</td>
+        </tr>
+
+        <tr>
+          <td>tomsClaim1</td>
+
+          <td />
+
+          <td>set property</td>
+
+          <td>Date</td>
+
+          <td>14-Feb-2007</td>
+
+          <td>ok</td>
+        </tr>
+
+        <tr>
+          <td>tomsClaim1</td>
+
+          <td />
+
+          <td>save</td>
+
+          <td />
+
+          <td />
+
+          <td>ok</td>
+        </tr>
+
+        <tr>
+          <td>tomEmployee</td>
+
+          <td>tomsClaim2</td>
+
+          <td>invoke action</td>
+
+          <td>New Claim</td>
+
+          <td />
+
+          <td>ok</td>
+        </tr>
+
+        <tr>
+          <td>tomsClaim2</td>
+
+          <td />
+
+          <td>set property</td>
+
+          <td>Description</td>
+
+          <td>claim 2</td>
+
+          <td>ok</td>
+        </tr>
+
+        <tr>
+          <td>tomsClaim2</td>
+
+          <td />
+
+          <td>set property</td>
+
+          <td>Date</td>
+
+          <td>18-Feb-2007</td>
+
+          <td>ok</td>
+        </tr>
+
+        <tr>
+          <td>tomsClaim2</td>
+
+          <td />
+
+          <td>save</td>
+
+          <td />
+
+          <td />
+
+          <td>ok</td>
+        </tr>
+      </table>
+
+      <p>run viewer</p>
+
+      <h2>Then</h2>
+
+      <p>Tom now has claims:</p>
+
+      <ul>
+        <li>
+          <p
+          isis:execute="#result=usingIsisViewer(#onObject,#tomsClaimsAfterwards, #perform, #usingMember)"
+          xmlns:isis="http://isis.apache.org/2010/concordion">Using <span
+          concordion:set="#onObject"
+          xmlns:concordion="http://www.concordion.org/2007/concordion">tomEmployee</span>,
+          <span concordion:set="#perform"
+          xmlns:concordion="http://www.concordion.org/2007/concordion">invoke
+          action</span> <span concordion:set="#usingMember"
+          xmlns:concordion="http://www.concordion.org/2007/concordion">Claims
+          For</span> and alias the resulting list as <span
+          concordion:set="#tomsClaimsAfterwards"
+          xmlns:concordion="http://www.concordion.org/2007/concordion">tomsClaimsAfterwards</span>;
+          <span concordion:assertEquals="#result"
+          xmlns:concordion="http://www.concordion.org/2007/concordion">ok</span>.</p>
+        </li>
+
+        <li>
+          <p
+          concordion:execute="#result=checkListIsNotEmpty(#tomsClaimsAfterwards)"
+          xmlns:concordion="http://www.concordion.org/2007/concordion">Confirm
+          that the tom's claims afterwards is not empty; <span
+          concordion:assertEquals="#result">ok</span>.</p>
+        </li>
+
+        <li>
+          <p
+          concordion:execute="#result=checkListSize(#tomsClaimsAfterwards,#expectedSize)"
+          xmlns:concordion="http://www.concordion.org/2007/concordion">Confirm
+          that tom has <span concordion:set="#expectedSize">2</span> claims;
+          <span concordion:assertEquals="#result">ok</span>.</p>
+        </li>
+
+        <li>
+          <p
+          concordion:execute="#result=checkListContains(#tomsClaimsAfterwards,#tomsClaim1)"
+          xmlns:concordion="http://www.concordion.org/2007/concordion">Confirm
+          that tom's set of claims contains <span
+          concordion:set="#tomsClaim1">tomsClaim1</span>; <span
+          concordion:assertEquals="#result">ok</span>.</p>
+        </li>
+
+        <li>
+          <p
+          concordion:execute="#result=checkListDoesNotContain(#tomsClaimsAfterwards,#tomEmployee)"
+          xmlns:concordion="http://www.concordion.org/2007/concordion">Confirm
+          that tom's set of claims does NOT contain <span
+          concordion:set="#tomEmployee">tomEmployee</span>; himself (duh!);
+          <span concordion:assertEquals="#result">ok</span>.</p>
+        </li>
+
+        <li>
+          <p>Tom has these claims (checking using Isis' checkList):</p>
+
+          <table isis:execute="#result=checkList(#tomsClaimsAfterwards, #title)"
+                 xmlns:isis="http://isis.apache.org/2010/concordion">
+            <tr>
+              <th concordion:set="#title"
+              xmlns:concordion="http://www.concordion.org/2007/concordion">title</th>
+
+              <th concordion:assertEquals="#result"
+                  xmlns:concordion="http://www.concordion.org/2007/concordion" />
+            </tr>
+
+            <tr>
+              <td>New - 2007-2-18</td>
+
+              <td>ok</td>
+            </tr>
+
+            <tr>
+              <td>New - 2007-2-14</td>
+
+              <td>ok</td>
+            </tr>
+          </table>
+        </li>
+
+        <li>
+          <p>Tom has these claims (checking using Concordion's
+          verifyRows):</p>
+
+          <table concordion:verifyRows="#claimPojo: getListContents(#tomsClaimsAfterwards)"
+                 xmlns:concordion="http://www.concordion.org/2007/concordion">
+            <tr>
+              <th
+              concordion:assertEquals="#claimPojo.description">Description</th>
+
+              <th concordion:assertEquals="#claimPojo.date">Date</th>
+            </tr>
+
+            <tr>
+              <td>claim 2</td>
+
+              <td>2007-2-18</td>
+            </tr>
+
+            <tr>
+              <td>claim 1</td>
+
+              <td>2007-2-14</td>
+            </tr>
+          </table>
+        </li>
+      </ul>
+
+      <!-- 
+<p concordion:execute="runViewer()">run viewer</p>
+ -->
+    </div>
+  </body>
+</html>

Modified: incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/AliasRegistry.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/AliasRegistry.java?rev=1043972&r1=1043971&r2=1043972&view=diff
==============================================================================
--- incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/AliasRegistry.java (original)
+++ incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/AliasRegistry.java Thu Dec  9 14:22:09 2010
@@ -22,4 +22,6 @@ public interface AliasRegistry extends I
 
     void aliasService(final String aliasAs, final String className) throws StoryValueException;
 
+    public void clear();
+
 }

Modified: incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/CellBinding.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/CellBinding.java?rev=1043972&r1=1043971&r2=1043972&view=diff
==============================================================================
--- incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/CellBinding.java (original)
+++ incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/CellBinding.java Thu Dec  9 14:22:09 2010
@@ -3,7 +3,7 @@ package org.apache.isis.viewer.bdd.commo
 import java.util.ArrayList;
 import java.util.List;
 
-import org.apache.isis.viewer.bdd.common.util.Strings;
+import org.apache.isis.core.commons.lang.StringUtils;
 
 public abstract class CellBinding {
 
@@ -34,7 +34,7 @@ public abstract class CellBinding {
         }
         final List<String> headTextList = new ArrayList<String>();
         for (final String headText : headTexts) {
-            headTextList.add(Strings.camel(headText).toLowerCase());
+            headTextList.add(StringUtils.camel(headText).toLowerCase());
         }
         this.headTexts = headTextList;
     }
@@ -72,7 +72,7 @@ public abstract class CellBinding {
      * particular head text.
      */
     public boolean matches(final String candidateText) {
-        final String candidateTextCamelLower = Strings.camel(candidateText).toLowerCase();
+        final String candidateTextCamelLower = StringUtils.camel(candidateText).toLowerCase();
         for (final String headText : getHeadTexts()) {
             if (headText.equalsIgnoreCase(candidateTextCamelLower)) {
                 return true;
@@ -176,7 +176,7 @@ public abstract class CellBinding {
     public void captureCurrent(final StoryCell cell) {
         final StoryCell previousCell = getCurrentCell();
         setCurrentCell(cell);
-        boolean shouldDitto = Strings.emptyString(cell.getText());
+        boolean shouldDitto = StringUtils.emptyString(cell.getText());
         boolean canDitto = isDitto() && previousCell != null;
         if (shouldDitto && canDitto) {
             ditto(previousCell);

Modified: incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/Constants.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/Constants.java?rev=1043972&r1=1043971&r2=1043972&view=diff
==============================================================================
--- incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/Constants.java (original)
+++ incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/Constants.java Thu Dec  9 14:22:09 2010
@@ -6,78 +6,6 @@ public final class Constants {
 
     public static final String CONFIG_DIR = "config";
     public static final String LOGGING_CONFIG_FILE = "logging.properties";
-    public static final String NAKEDOBJECTS_CONFIG_FILE = "nakedobjects.properties";
+    public static final String ISIS_CONFIG_FILE = "isi.properties";
     
-    public static final String ON_OBJECT_HEAD = "on object";
-    public static final String ON_OBJECT_HEAD_ALT1 = "object";
-    public static final String ON_OBJECT_HEAD_ALT2 = "on";
-    public static final String[] ON_OBJECT_HEAD_SET = {
-            Constants.ON_OBJECT_HEAD, Constants.ON_OBJECT_HEAD_ALT1,
-            Constants.ON_OBJECT_HEAD_ALT2 };
-    public static final String ON_OBJECT_NAME = Constants.ON_OBJECT_HEAD;
-
-    public static final String ALIAS_RESULT_HEAD = "alias result as";
-    public static final String ALIAS_RESULT_HEAD_ALT1 = "result=";
-    public static final String ALIAS_RESULT_HEAD_ALT2 = "alias=";
-    public static final String ALIAS_RESULT_HEAD_ALT3 = "alias as";
-    public static final String[] ALIAS_RESULT_HEAD_SET = {
-            Constants.ALIAS_RESULT_HEAD, Constants.ALIAS_RESULT_HEAD_ALT1,
-            Constants.ALIAS_RESULT_HEAD_ALT2, Constants.ALIAS_RESULT_HEAD_ALT3 };
-    public static final String ALIAS_RESULT_NAME = Constants.ALIAS_RESULT_HEAD;
-
-    public static final String TITLE_NAME = "Title";
-    public static final String TITLE_HEAD = "title";
-
-    public static final String TYPE_NAME = "Type";
-    public static final String TYPE_HEAD = "type";
-
-    public static final String VALUE_NAME = "Title";
-    public static final String VALUE_HEAD = "value";
-
-    public static final String PERFORM_HEAD = "perform";
-    public static final String PERFORM_HEAD_ALT1 = "do";
-    public static final String PERFORM_HEAD_ALT2 = "interaction";
-    public static final String PERFORM_HEAD_ALT3 = "interaction type";
-    public static final String[] PERFORM_HEAD_SET = { Constants.PERFORM_HEAD,
-            Constants.PERFORM_HEAD_ALT1, Constants.PERFORM_HEAD_ALT2,
-            Constants.PERFORM_HEAD_ALT3 };
-    public static final String PERFORM_NAME = Constants.PERFORM_HEAD;
-
-    public static final String ON_MEMBER_HEAD = "on member";
-    public static final String ON_MEMBER_HEAD_ALT1 = "using member";
-    public static final String ON_MEMBER_HEAD_ALT2 = "using";
-    public static final String ON_MEMBER_HEAD_ALT3 = "member";
-    public static final String[] ON_MEMBER_HEAD_SET = {
-            Constants.ON_MEMBER_HEAD, Constants.ON_MEMBER_HEAD_ALT1,
-            Constants.ON_MEMBER_HEAD_ALT2, Constants.ON_MEMBER_HEAD_ALT3 };
-    public static final String ON_MEMBER_NAME = Constants.ON_MEMBER_HEAD;
-
-    public static final String THAT_IT_HEAD = "that it";
-    public static final String THAT_IT_HEAD_ALT1 = "that";
-    public static final String THAT_IT_HEAD_ALT2 = "verb";
-    public static final String[] THAT_IT_HEAD_SET = { Constants.THAT_IT_HEAD,
-            Constants.THAT_IT_HEAD_ALT1, Constants.THAT_IT_HEAD_ALT2 };
-    public static final String THAT_IT_NAME = Constants.THAT_IT_HEAD;
-
-    public static final String WITH_ARGUMENTS_HEAD = "with arguments";
-    public static final String WITH_ARGUMENTS_HEAD_ALT1 = "with";
-    public static final String WITH_ARGUMENTS_HEAD_ALT2 = "arguments";
-    public static final String WITH_ARGUMENTS_HEAD_ALT3 = "parameters";
-    public static final String WITH_ARGUMENTS_HEAD_ALT4 = "with parameters";
-    public static final String WITH_ARGUMENTS_HEAD_ALT5 = "for";
-    public static final String WITH_ARGUMENTS_HEAD_ALT6 = "for arguments";
-    public static final String WITH_ARGUMENTS_HEAD_ALT7 = "for parameters";
-    public static final String WITH_ARGUMENTS_HEAD_ALT8 = "value";
-    public static final String WITH_ARGUMENTS_HEAD_ALT9 = "reference";
-    public static final String[] WITH_ARGUMENTS_HEAD_SET = {
-            Constants.WITH_ARGUMENTS_HEAD, Constants.WITH_ARGUMENTS_HEAD_ALT1,
-            Constants.WITH_ARGUMENTS_HEAD_ALT2,
-            Constants.WITH_ARGUMENTS_HEAD_ALT3,
-            Constants.WITH_ARGUMENTS_HEAD_ALT4,
-            Constants.WITH_ARGUMENTS_HEAD_ALT5,
-            Constants.WITH_ARGUMENTS_HEAD_ALT6,
-            Constants.WITH_ARGUMENTS_HEAD_ALT7,
-            Constants.WITH_ARGUMENTS_HEAD_ALT8,
-            Constants.WITH_ARGUMENTS_HEAD_ALT9 };
-    public static final String WITH_ARGUMENTS_NAME = Constants.WITH_ARGUMENTS_HEAD;
 }

Added: incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/IsisViewerConstants.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/IsisViewerConstants.java?rev=1043972&view=auto
==============================================================================
--- incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/IsisViewerConstants.java (added)
+++ incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/IsisViewerConstants.java Thu Dec  9 14:22:09 2010
@@ -0,0 +1,80 @@
+package org.apache.isis.viewer.bdd.common;
+
+public final class IsisViewerConstants {
+
+    private IsisViewerConstants() {}
+
+    public static final String ON_OBJECT_HEAD = "on object";
+    public static final String ON_OBJECT_HEAD_ALT1 = "object";
+    public static final String ON_OBJECT_HEAD_ALT2 = "on";
+    public static final String[] ON_OBJECT_HEAD_SET = {
+            ON_OBJECT_HEAD, ON_OBJECT_HEAD_ALT1,
+            ON_OBJECT_HEAD_ALT2 };
+    public static final String ON_OBJECT_NAME = ON_OBJECT_HEAD;
+
+    public static final String ALIAS_RESULT_HEAD = "alias result as";
+    public static final String ALIAS_RESULT_HEAD_ALT1 = "result=";
+    public static final String ALIAS_RESULT_HEAD_ALT2 = "alias=";
+    public static final String ALIAS_RESULT_HEAD_ALT3 = "alias as";
+    public static final String[] ALIAS_RESULT_HEAD_SET = {
+            ALIAS_RESULT_HEAD, ALIAS_RESULT_HEAD_ALT1,
+            ALIAS_RESULT_HEAD_ALT2, ALIAS_RESULT_HEAD_ALT3 };
+    public static final String ALIAS_RESULT_NAME = ALIAS_RESULT_HEAD;
+
+    public static final String TITLE_NAME = "Title";
+    public static final String TITLE_HEAD = "title";
+
+    public static final String TYPE_NAME = "Type";
+    public static final String TYPE_HEAD = "type";
+
+    public static final String VALUE_NAME = "Title";
+    public static final String VALUE_HEAD = "value";
+
+    public static final String PERFORM_HEAD = "perform";
+    public static final String PERFORM_HEAD_ALT1 = "do";
+    public static final String PERFORM_HEAD_ALT2 = "interaction";
+    public static final String PERFORM_HEAD_ALT3 = "interaction type";
+    public static final String[] PERFORM_HEAD_SET = { PERFORM_HEAD,
+            PERFORM_HEAD_ALT1, PERFORM_HEAD_ALT2,
+            PERFORM_HEAD_ALT3 };
+    public static final String PERFORM_NAME = PERFORM_HEAD;
+
+    public static final String ON_MEMBER_HEAD = "on member";
+    public static final String ON_MEMBER_HEAD_ALT1 = "using member";
+    public static final String ON_MEMBER_HEAD_ALT2 = "using";
+    public static final String ON_MEMBER_HEAD_ALT3 = "member";
+    public static final String[] ON_MEMBER_HEAD_SET = {
+            ON_MEMBER_HEAD, ON_MEMBER_HEAD_ALT1,
+            ON_MEMBER_HEAD_ALT2, ON_MEMBER_HEAD_ALT3 };
+    public static final String ON_MEMBER_NAME = ON_MEMBER_HEAD;
+
+    public static final String THAT_IT_HEAD = "that it";
+    public static final String THAT_IT_HEAD_ALT1 = "that";
+    public static final String THAT_IT_HEAD_ALT2 = "verb";
+    public static final String[] THAT_IT_HEAD_SET = { THAT_IT_HEAD,
+            THAT_IT_HEAD_ALT1, THAT_IT_HEAD_ALT2 };
+    public static final String THAT_IT_NAME = THAT_IT_HEAD;
+
+    public static final String WITH_ARGUMENTS_HEAD = "with arguments";
+    public static final String WITH_ARGUMENTS_HEAD_ALT1 = "with";
+    public static final String WITH_ARGUMENTS_HEAD_ALT2 = "arguments";
+    public static final String WITH_ARGUMENTS_HEAD_ALT3 = "parameters";
+    public static final String WITH_ARGUMENTS_HEAD_ALT4 = "with parameters";
+    public static final String WITH_ARGUMENTS_HEAD_ALT5 = "for";
+    public static final String WITH_ARGUMENTS_HEAD_ALT6 = "for arguments";
+    public static final String WITH_ARGUMENTS_HEAD_ALT7 = "for parameters";
+    public static final String WITH_ARGUMENTS_HEAD_ALT8 = "value";
+    public static final String WITH_ARGUMENTS_HEAD_ALT9 = "reference";
+    public static final String[] WITH_ARGUMENTS_HEAD_SET = {
+            WITH_ARGUMENTS_HEAD, WITH_ARGUMENTS_HEAD_ALT1,
+            WITH_ARGUMENTS_HEAD_ALT2,
+            WITH_ARGUMENTS_HEAD_ALT3,
+            WITH_ARGUMENTS_HEAD_ALT4,
+            WITH_ARGUMENTS_HEAD_ALT5,
+            WITH_ARGUMENTS_HEAD_ALT6,
+            WITH_ARGUMENTS_HEAD_ALT7,
+            WITH_ARGUMENTS_HEAD_ALT8,
+            WITH_ARGUMENTS_HEAD_ALT9 };
+    public static final String WITH_ARGUMENTS_NAME = WITH_ARGUMENTS_HEAD;
+
+}

Modified: incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/Story.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/Story.java?rev=1043972&r1=1043971&r2=1043972&view=diff
==============================================================================
--- incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/Story.java (original)
+++ incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/Story.java Thu Dec  9 14:22:09 2010
@@ -97,6 +97,8 @@ public class Story implements AliasRegis
         configurationBuilder.add(SystemConstants.DEPLOYMENT_TYPE_KEY, deploymentType.name());
         defaultStoryComponentsInto(configurationBuilder);
 
+        getAliasRegistry().clear();
+        
         try {
             // create system...
             isisSystem = createSystem(deploymentType, configurationBuilder);

Modified: incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/AbstractFixturePeer.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/AbstractFixturePeer.java?rev=1043972&r1=1043971&r2=1043972&view=diff
==============================================================================
--- incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/AbstractFixturePeer.java (original)
+++ incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/AbstractFixturePeer.java Thu Dec  9 14:22:09 2010
@@ -16,22 +16,22 @@ import org.apache.isis.viewer.bdd.common
 
 public abstract class AbstractFixturePeer {
 
-	private final AliasRegistry storyRegistries;
+	private final AliasRegistry aliasRegistry;
     private final List<CellBinding> cellBindings;
 
-    public AbstractFixturePeer(AliasRegistry storyRegistries,
+    public AbstractFixturePeer(AliasRegistry aliasRegistry,
     		CellBinding... cellBindings) {
-    	this(storyRegistries, Arrays.asList(cellBindings));
+    	this(aliasRegistry, Arrays.asList(cellBindings));
     }
 
     public AbstractFixturePeer(AliasRegistry storyRegistries,
     		List<CellBinding> cellBindings) {
-    	this.storyRegistries = storyRegistries;
+    	this.aliasRegistry = storyRegistries;
     	this.cellBindings = cellBindings;
     }
-
-	public AliasRegistry getAliasRegistry() {
-        return storyRegistries;
+    
+    public AliasRegistry getAliasRegistry() {
+        return aliasRegistry;
 	}
 
 	public List<CellBinding> getCellBindings() {
@@ -68,5 +68,9 @@ public abstract class AbstractFixturePee
         return IsisContext.getTransactionManager();
     }
 
+    public boolean isValidAlias(String alias) {
+        return getAliasRegistry().getAliased(alias) != null;
+    }
+
 	
 }

Added: incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/AbstractListFixturePeer.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/AbstractListFixturePeer.java?rev=1043972&view=auto
==============================================================================
--- incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/AbstractListFixturePeer.java (added)
+++ incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/AbstractListFixturePeer.java Thu Dec  9 14:22:09 2010
@@ -0,0 +1,74 @@
+package org.apache.isis.viewer.bdd.common.fixtures;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacet;
+import org.apache.isis.viewer.bdd.common.AliasRegistry;
+import org.apache.isis.viewer.bdd.common.CellBinding;
+import org.apache.isis.viewer.bdd.common.StoryValueException;
+
+import com.google.common.collect.Iterables;
+
+public class AbstractListFixturePeer extends AbstractFixturePeer {
+
+	private final String listAlias;
+
+   /**
+     * @see #collectionAdapters()
+     */
+    private List<ObjectAdapter> objects;
+
+
+    public AbstractListFixturePeer(final AliasRegistry aliasesRegistry,
+            final String listAlias, final CellBinding... cellBindings) {
+    	super(aliasesRegistry, cellBindings);
+
+        this.listAlias = listAlias;
+    }
+
+    protected boolean isValidListAlias() {
+        return getListAdapter() != null && isList();
+    }
+
+    protected ObjectAdapter getListAdapter() {
+        return getAliasRegistry().getAliased(listAlias);
+    }
+
+
+	public void assertIsList() throws StoryValueException {
+		if (!(getListAdapter() != null)) {
+			throw new StoryValueException("no such alias");
+		}
+		if (!isList()) {
+			throw new StoryValueException("not a list");
+		}
+	}
+
+	public boolean isList() {
+		return getCollectionFacet() != null;
+	}
+
+    /**
+     * Lazily populated, and populated only once.
+     */
+    protected List<ObjectAdapter> collectionAdapters() {
+        if(objects==null){
+            objects = new ArrayList<ObjectAdapter>();
+            Iterables.addAll(objects, collectionContents());
+        }
+        return objects;
+    }
+
+    private Iterable<ObjectAdapter> collectionContents() {
+        return getCollectionFacet().iterable(getListAdapter());
+    }
+
+	private CollectionFacet getCollectionFacet() {
+        return getListAdapter() != null ? getListAdapter()
+                .getSpecification().getFacet(CollectionFacet.class) : null;
+	}
+
+
+}

Modified: incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/AliasItemsInListPeer.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/AliasItemsInListPeer.java?rev=1043972&r1=1043971&r2=1043972&view=diff
==============================================================================
--- incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/AliasItemsInListPeer.java (original)
+++ incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/AliasItemsInListPeer.java Thu Dec  9 14:22:09 2010
@@ -1,18 +1,15 @@
 package org.apache.isis.viewer.bdd.common.fixtures;
 
+import org.apache.isis.core.commons.lang.StringUtils;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacet;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.viewer.bdd.common.AliasRegistry;
 import org.apache.isis.viewer.bdd.common.CellBinding;
 import org.apache.isis.viewer.bdd.common.StoryBoundValueException;
 import org.apache.isis.viewer.bdd.common.StoryCell;
-import org.apache.isis.viewer.bdd.common.StoryValueException;
-import org.apache.isis.viewer.bdd.common.util.Strings;
 
-public class AliasItemsInListPeer extends AbstractFixturePeer {
+public class AliasItemsInListPeer extends AbstractListFixturePeer {
 
-	private final String listAlias;
     private final CellBinding titleBinding;
     private final CellBinding typeBinding;
     private final CellBinding aliasBinding;
@@ -22,27 +19,13 @@ public class AliasItemsInListPeer extend
             final String listAlias, 
             final CellBinding titleBinding,
             final CellBinding typeBinding, final CellBinding aliasBinding) {
-    	super(aliasesRegistry, titleBinding, typeBinding, aliasBinding);
+    	super(aliasesRegistry, listAlias, titleBinding, typeBinding, aliasBinding);
 
     	this.titleBinding = titleBinding;
         this.typeBinding = typeBinding;
         this.aliasBinding = aliasBinding;
-        this.listAlias = listAlias;
     }
 
-	public void assertIsList() throws StoryValueException {
-		if (!isAliasedAdapter()) {
-			throw new StoryValueException("no such alias");
-		}
-		if (!isList()) {
-			throw new StoryValueException("not a list");
-		}
-	}
-
-	public boolean isList() {
-		return getCollectionFacet() != null;
-	}
-
 	public CellBinding getTitleBinding() {
 		return titleBinding;
 	}
@@ -68,7 +51,7 @@ public class AliasItemsInListPeer extend
 	}
 
 	private ObjectAdapter findAdapter() {
-        for (final ObjectAdapter adapter : getCollectionFacet().iterable(getListAdapter())) {
+        for (final ObjectAdapter adapter : collectionAdapters()) {
         	
             if (!titleMatches(adapter)) {
                 continue; // keep looking
@@ -85,7 +68,7 @@ public class AliasItemsInListPeer extend
     private boolean titleMatches(final ObjectAdapter adapter) {
         final String adapterTitle = adapter.titleString();
         final String requiredTitle = titleBinding.getCurrentCell().getText();
-        return Strings.nullSafeEquals(adapterTitle, requiredTitle);
+        return StringUtils.nullSafeEquals(adapterTitle, requiredTitle);
     }
 
     private boolean typeMatches(final ObjectAdapter adapter) {
@@ -100,24 +83,10 @@ public class AliasItemsInListPeer extend
             return true;
         }
 
-        final String simpleSpecName = Strings.simpleName(specFullName);
-        final String simpleRequiredType = Strings
+        final String simpleSpecName = StringUtils.simpleName(specFullName);
+        final String simpleRequiredType = StringUtils
                 .simpleName(requiredTypeName);
         return simpleSpecName.equalsIgnoreCase(simpleRequiredType);
     }
 
-	private boolean isAliasedAdapter() {
-		return getListAdapter() != null;
-	}
-
-    private ObjectAdapter getListAdapter() {
-		return getAliasRegistry().getAliased(listAlias);
-	}
-
-	private CollectionFacet getCollectionFacet() {
-        return getListAdapter() != null ? getListAdapter()
-                .getSpecification().getFacet(CollectionFacet.class) : null;
-	}
-
-
 }

Added: incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/CheckListConstants.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/CheckListConstants.java?rev=1043972&view=auto
==============================================================================
--- incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/CheckListConstants.java (added)
+++ incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/CheckListConstants.java Thu Dec  9 14:22:09 2010
@@ -0,0 +1,13 @@
+package org.apache.isis.viewer.bdd.common.fixtures;
+
+public final class CheckListConstants {
+
+    private CheckListConstants() {}
+
+    public static final String TITLE_HEAD = "title";
+    public static final String[] TITLE_HEAD_SET = {
+            TITLE_HEAD };
+    public static final String TITLE_NAME = TITLE_HEAD;
+
+
+}

Added: incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/CheckListContainsPeer.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/CheckListContainsPeer.java?rev=1043972&view=auto
==============================================================================
--- incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/CheckListContainsPeer.java (added)
+++ incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/CheckListContainsPeer.java Thu Dec  9 14:22:09 2010
@@ -0,0 +1,34 @@
+package org.apache.isis.viewer.bdd.common.fixtures;
+
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.viewer.bdd.common.AliasRegistry;
+
+public class CheckListContainsPeer  extends AbstractListFixturePeer {
+
+
+    public CheckListContainsPeer(final AliasRegistry aliasesRegistry,
+            final String listAlias) {
+        super(aliasesRegistry, listAlias);
+    }
+
+
+    /**
+     * Returns <tt>true</tt> if collection contains specified alias.
+     * 
+     * <p>
+     * If either the list alias is invalid, or the provided alias is 
+     * {@link #isValidAlias(String) invalid}, will return <tt>false</tt>.
+     */
+    public boolean execute(String alias) {
+        if(!isValidListAlias()) {
+            return false;
+        }
+
+        ObjectAdapter adapter = getAliasRegistry().getAliased(alias);
+        if(adapter == null) {
+            return false;
+        }
+        return collectionAdapters().contains(adapter);
+    }
+    
+}

Added: incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/CheckListDoesNotContainPeer.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/CheckListDoesNotContainPeer.java?rev=1043972&view=auto
==============================================================================
--- incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/CheckListDoesNotContainPeer.java (added)
+++ incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/CheckListDoesNotContainPeer.java Thu Dec  9 14:22:09 2010
@@ -0,0 +1,32 @@
+package org.apache.isis.viewer.bdd.common.fixtures;
+
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.viewer.bdd.common.AliasRegistry;
+
+public class CheckListDoesNotContainPeer  extends AbstractListFixturePeer {
+
+    public CheckListDoesNotContainPeer(final AliasRegistry aliasesRegistry,
+            final String listAlias) {
+        super(aliasesRegistry, listAlias);
+    }
+
+
+    /**
+     * Returns <tt>true</tt> if collection does not contain specified alias.
+     * 
+     * <p>
+     * If either the list alias is invalid, or the provided alias is 
+     * {@link #isValidAlias(String) invalid}, will return <tt>false</tt>.
+     */
+    public boolean execute(String alias) {
+        if(!isValidListAlias()) {
+            return false;
+        }
+        ObjectAdapter adapter = getAliasRegistry().getAliased(alias);
+        if(adapter == null) {
+            return false;
+        }
+        return !collectionAdapters().contains(adapter);
+    }
+    
+}

Added: incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/CheckListIsEmptyPeer.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/CheckListIsEmptyPeer.java?rev=1043972&view=auto
==============================================================================
--- incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/CheckListIsEmptyPeer.java (added)
+++ incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/CheckListIsEmptyPeer.java Thu Dec  9 14:22:09 2010
@@ -0,0 +1,27 @@
+package org.apache.isis.viewer.bdd.common.fixtures;
+
+import org.apache.isis.viewer.bdd.common.AliasRegistry;
+
+public class CheckListIsEmptyPeer  extends AbstractListFixturePeer {
+
+    public CheckListIsEmptyPeer(final AliasRegistry aliasesRegistry,
+            final String listAlias) {
+        super(aliasesRegistry, listAlias);
+    }
+
+
+    /**
+     * Returns <tt>true</tt> if is empty.
+     * 
+     * @return <tt>false</tt> if the alias is invalid or does not represent a list
+     */
+    public boolean execute() {
+        if(!isValidListAlias()) {
+            return false;
+        }
+        return collectionAdapters().size() == 0;
+    }
+
+
+
+}

Added: incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/CheckListIsNotEmptyPeer.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/CheckListIsNotEmptyPeer.java?rev=1043972&view=auto
==============================================================================
--- incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/CheckListIsNotEmptyPeer.java (added)
+++ incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/CheckListIsNotEmptyPeer.java Thu Dec  9 14:22:09 2010
@@ -0,0 +1,26 @@
+package org.apache.isis.viewer.bdd.common.fixtures;
+
+import org.apache.isis.viewer.bdd.common.AliasRegistry;
+
+public class CheckListIsNotEmptyPeer  extends AbstractListFixturePeer {
+
+    public CheckListIsNotEmptyPeer(final AliasRegistry aliasesRegistry,
+            final String listAlias) {
+        super(aliasesRegistry, listAlias);
+    }
+
+
+    /**
+     * Returns <tt>true</tt> if is not empty.
+     * 
+     * @return <tt>false</tt> if the alias is invalid or does not represent a list
+     */
+    public boolean execute() {
+        if(!isValidListAlias()) {
+            return false;
+        }
+
+        return collectionAdapters().size() != 0;
+    }
+
+}

Modified: incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/CheckListPeer.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/CheckListPeer.java?rev=1043972&r1=1043971&r2=1043972&view=diff
==============================================================================
--- incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/CheckListPeer.java (original)
+++ incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/CheckListPeer.java Thu Dec  9 14:22:09 2010
@@ -3,15 +3,13 @@ package org.apache.isis.viewer.bdd.commo
 import java.util.ArrayList;
 import java.util.List;
 
+import org.apache.isis.core.commons.lang.StringUtils;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacet;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.viewer.bdd.common.AliasRegistry;
 import org.apache.isis.viewer.bdd.common.CellBinding;
-import org.apache.isis.viewer.bdd.common.StoryValueException;
-import org.apache.isis.viewer.bdd.common.util.Strings;
 
-public class CheckListPeer extends AbstractFixturePeer {
+public class CheckListPeer extends AbstractListFixturePeer {
 
     public static enum CheckMode {
         EXACT {
@@ -29,11 +27,13 @@ public class CheckListPeer extends Abstr
         public abstract boolean isExact();
     }
 
-    private final String listAlias;
+    private final CheckMode checkMode;
 
     private final CellBinding titleBinding;
+    /**
+     * Can be set to null, indicating that no type checking is performed.
+     */
     private final CellBinding typeBinding;
-    private final CheckMode checkMode;
 
     /**
      * Objects found while processing table.
@@ -43,44 +43,34 @@ public class CheckListPeer extends Abstr
 
     public CheckListPeer(final AliasRegistry aliasesRegistry,
             String listAlias, final CheckMode checkMode,
-            final CellBinding titleBinding, final CellBinding typeBinding) {
-        super(aliasesRegistry, titleBinding, typeBinding);
-        this.titleBinding = titleBinding;
-        this.typeBinding = typeBinding;
-        this.listAlias = listAlias;
-        this.checkMode = checkMode;
+            final CellBinding titleBinding) {
+        this(aliasesRegistry, listAlias, checkMode, titleBinding, null);
     }
 
-	public void assertIsList() throws StoryValueException {
-		if (!isAliasedAdapter()) {
-			throw new StoryValueException("no such alias");
-		}
-		if (!isList()) {
-			throw new StoryValueException("not a list");
-		}
-	}
-
-	public boolean isList() {
-		return getCollectionFacet() != null;
-	}
-
-	private boolean isAliasedAdapter() {
-		return getListAdapter() != null;
-	}
-
-    private ObjectAdapter getListAdapter() {
-		return getAliasRegistry().getAliased(listAlias);
-	}
-
-	private CollectionFacet getCollectionFacet() {
-        return getListAdapter() != null ? getListAdapter()
-                .getSpecification().getFacet(CollectionFacet.class) : null;
-	}
+    public CheckListPeer(final AliasRegistry aliasesRegistry,
+        String listAlias, final CheckMode checkMode,
+        final CellBinding titleBinding, final CellBinding typeBinding) {
+    super(aliasesRegistry, listAlias, titleBinding, typeBinding);
+    this.checkMode = checkMode;
+    this.titleBinding = titleBinding;
+    this.typeBinding = typeBinding;
+}
 
 	public boolean isCheckModeExact() {
 		return getCheckMode().isExact();
 	}
 
+    public CellBinding getTitleBinding() {
+        return titleBinding;
+    }
+
+    /**
+     * May be <tt>null</tt> (indicating that no type checking to be performed.
+     */
+    public CellBinding getTypeBinding() {
+        return typeBinding;
+    }
+
 	private CheckMode getCheckMode() {
 		return checkMode;
 	}
@@ -90,12 +80,8 @@ public class CheckListPeer extends Abstr
 	}
 
 	public List<ObjectAdapter> getNotFoundAdapters() {
-		final List<ObjectAdapter> allAdapters = new ArrayList<ObjectAdapter>();
-		
-		for (final ObjectAdapter adapter : getCollectionFacet().iterable(getListAdapter())) {
-			allAdapters.add(adapter);
-		}
-		
+		final List<ObjectAdapter> allAdapters = 
+		    new ArrayList<ObjectAdapter>(collectionAdapters());
 		allAdapters.removeAll(foundAdapters);
 		return allAdapters;
 	}
@@ -110,7 +96,7 @@ public class CheckListPeer extends Abstr
 	}
 
 	private ObjectAdapter findAdapter() {
-        for (final ObjectAdapter adapter : getCollectionFacet().iterable(getListAdapter())) {
+        for (final ObjectAdapter adapter : collectionAdapters()) {
 
             if (!titleMatches(adapter)) {
                 continue; // keep looking
@@ -127,11 +113,11 @@ public class CheckListPeer extends Abstr
     private boolean titleMatches(final ObjectAdapter adapter) {
         final String adapterTitle = adapter.titleString();
         final String requiredTitle = titleBinding.getCurrentCell().getText();
-        return Strings.nullSafeEquals(adapterTitle, requiredTitle);
+        return StringUtils.nullSafeEquals(adapterTitle, requiredTitle);
     }
 
     private boolean typeMatches(final ObjectAdapter adapter) {
-        if (!typeBinding.isFound()) {
+        if (typeBinding == null || !typeBinding.isFound()) {
             return true;
         }
 
@@ -142,14 +128,11 @@ public class CheckListPeer extends Abstr
             return true;
         }
 
-        final String simpleSpecName = Strings.simpleName(specFullName);
-        final String simpleRequiredType = Strings
+        final String simpleSpecName = StringUtils.simpleName(specFullName);
+        final String simpleRequiredType = StringUtils
                 .simpleName(requiredTypeName);
         return simpleSpecName.equalsIgnoreCase(simpleRequiredType);
     }
 
-	public CellBinding getTitleBinding() {
-		return titleBinding;
-	}
 
-}
+}
\ No newline at end of file

Added: incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/CheckListSizePeer.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/CheckListSizePeer.java?rev=1043972&view=auto
==============================================================================
--- incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/CheckListSizePeer.java (added)
+++ incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/CheckListSizePeer.java Thu Dec  9 14:22:09 2010
@@ -0,0 +1,39 @@
+package org.apache.isis.viewer.bdd.common.fixtures;
+
+import org.apache.isis.viewer.bdd.common.AliasRegistry;
+
+public class CheckListSizePeer  extends AbstractListFixturePeer {
+
+    public CheckListSizePeer(final AliasRegistry aliasesRegistry,
+            final String listAlias) {
+        super(aliasesRegistry, listAlias);
+    }
+
+
+    /**
+     * Returns <tt>true</tt> if collection has specified size.
+     * 
+     * @return <tt>false</tt> if the alias is invalid or does not represent a list
+     */
+    public boolean execute(int size) {
+        if(!isValidListAlias()) {
+            return false;
+        }
+        return getSize() == size;
+    }
+
+
+    /**
+     * Returns the size of the collection.
+     * 
+     * @return <tt>-1</tt> if the alias is invalid or does not represent a list.
+     */
+    public int getSize() {
+        if(!isValidListAlias()) {
+            return -1;
+        }
+
+        return collectionAdapters().size();
+    }
+   
+}

Modified: incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/SetUpObjectsPeer.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/SetUpObjectsPeer.java?rev=1043972&r1=1043971&r2=1043972&view=diff
==============================================================================
--- incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/SetUpObjectsPeer.java (original)
+++ incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/SetUpObjectsPeer.java Thu Dec  9 14:22:09 2010
@@ -4,6 +4,7 @@ import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.isis.core.commons.exceptions.IsisException;
+import org.apache.isis.core.commons.lang.StringUtils;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facets.object.parseable.ParseableFacet;
 import org.apache.isis.core.metamodel.facets.properties.modify.PropertyClearFacet;
@@ -14,7 +15,6 @@ import org.apache.isis.core.metamodel.sp
 import org.apache.isis.viewer.bdd.common.AliasRegistry;
 import org.apache.isis.viewer.bdd.common.CellBinding;
 import org.apache.isis.viewer.bdd.common.StoryBoundValueException;
-import org.apache.isis.viewer.bdd.common.util.Strings;
 
 public class SetUpObjectsPeer extends AbstractFixturePeer {
 
@@ -122,7 +122,7 @@ public class SetUpObjectsPeer extends Ab
 
             ObjectAssociation association = null;
             try {
-                final String memberName = Strings.memberIdFor(heading);
+                final String memberName = StringUtils.memberIdFor(heading);
                 association = spec.getAssociation(memberName);
             } catch (final Exception ex) {
                 return PropertyResult.NO_SUCH_PROPERTY;
@@ -259,7 +259,7 @@ public class SetUpObjectsPeer extends Ab
         if (alias != null) {
             return alias;
         } else {
-            String specShortName = Strings.lowerLeading(spec.getShortName());
+            String specShortName = StringUtils.lowerLeading(spec.getShortName());
             return getAliasRegistry().aliasPrefixedAs(specShortName, adapter);
         }
     }



Mime
View raw message